Electronic – Force voltage to 5V or 0V from solar panel

solar energyvoltage

How can I ensure that a circuit powered with a solar panel will always receive 5V or 0V, but not something in between that would damage the circuit ?

I have a linear voltage regulator that ensures the voltage is not more than 5V, but it doesn't protect against undervoltage when the solar panel outputs a voltage lower than 5V + regulator dropout voltage.

Would a Zener diode with a 5V breakdown voltage after the regulator work ?
Are there solar panels that always output a voltage that is 0 or above some voltage (5V + regulator dropout voltage in that case) ?

Edit:

This is a hobby project. What I want to power is an Arduino MKR Wifi 1010. The arduino can already charge a LiPo battery when it is powered via USB. It will never draw more than 150mA.

The solar panel I have is described as 10W 12V, but it seems it can output less than 12V, hence the question about handling lower voltages.

Ideally, this circuit is always on. It will be "asleep" most of the time, only sending sensor data through wifi once an hour. Asleep meaning that it uses the low-power mode of its cpu, disabling everything except RTC.

Best Answer

The solar panel I have is described as 10W 12V, but it seems it can output less than 12V, hence the question about handling lower voltages.

Yes, 10W at 12V is what it's going to produce under ideal conditions -- that means something approaching bright sunlight (if it's properly specified it'll tell you at what irradiance it delivers that amount of power). Moreover, solar panels have an ideal voltage for any given panel, lighting, and temperature (and probably a bazzilion other factors); if you want to get the maximum power out of them you need an MPPT (maximum power point tracking) circuit.

You need a circuit that either only turns on your microprocessor when there's enough power available (hard, because you can only sense the voltage from the panel, and that's dependent on current), or you need some energy storage device.

If you don't mind your circuit coming on and off all the time, the simplest way to do this, what sounds like it's within your capabilities, would be to put a big capacitor, hard-wired in parallel with the solar panel. Make it big enough that whatever you want to get done, you can get done as it discharges from -- say -- 10V down to 6V.

Build a simple analog circuit with a voltage reference (a zener will do, but there's better choices) and a comparator, that turns on the rest of your circuit (including your Arduino) when the capacitor voltage reaches some threshold (e.g. 11 or 12 volts -- even in dim light, you should reach this with no load on the panel, eventually. Experiment around with this, though). Build it with hysteresis so that it turns on at that high threshold, and turns off at whatever low voltage still gives you 5V to the Arduino (presumably 5.5V if you use a true low-dropout regulator; 6.5V to 7.5V if you use a 7805).

Provide a way to monitor the capacitor voltage -- you'll have a mild challenge in doing this so you don't inadvertently power the Arduino when it should be off; tapping off the power to the regulator should solve this problem.

On the Arduino side, have it do whatever you actually want while also monitoring the capacitor voltage. Any time the capacitor voltage drops down enough that you only have enough energy left for one complete WiFi transaction, say "goodby" and go to sleep. With a lot of attention paid to dotting 'i's and crossing 't's you could probably do this with the Arduino live all the time -- but that would require a lot of careful software and hardware work.

Here is an example circuit -- don't trust that it'll just work, hook it up and try it out. Chances are you'll need to play with the resistor values, especially if you don't want to use the 1% values that I called out. I can't guarantee that M1 will turn off all the way with the value of R6 that I call out -- that's for you to figure out.

schematic

simulate this circuit – Schematic created using CircuitLab