Is this circuit OK to charge a capacitor from a solar panel?

I’ve asked about this before, I’m sorry, but I’ve come up with a new circuit this time. It is simple, it seems to work, but have I overlooked something?

I have a 6V 1W solar panel from Adafruit:

For an initial test I am charging a 4400µF capacitor.

My plan is to run my low-power Atmega328P board from it. The board consumes around 6µA.

Explanation of parts:

R1 (220 ohm) is designed to current limit the current through D1.

D1 is a 5.6V zener diode. 5.6V is a bit too much for the processor, however the output goes through D2 which would have a forward voltage drop of 0.7V, thus giving the processor around 4.9V.

C1 is a 4400 µF capacitor, which can store 0.0275 coulombs of energy. (See

Work = 1/2 CV2

E = 0.5 * C * V * V
E = 0.5 * 0.0022 * 25
E = 0.0275 C

This should power the processor for:

Time = E / IV
T = 0.0275 / 0.000006 * 5 (6 µA current at 5V)
T = 0.0275 / 0.000030
T = 916 (seconds)

A test shows that after 916 seconds (15.3 minutes) the voltage had dropped from 5V to 2.5V which is rather better than predicted, quite possibly because consumption went down as the voltage dropped.

D2 limits reverse current flow back from the capacitor through D1 or the solar panel, when there is not enough sunlight. (The reverse current through D1 was quite high at 5V).

Testing seems to show that it works OK, in fact in direct sunlight the voltage at the processor 5V pin was getting up to 5.2V.

I’ve seen more complex circuits involving transistors, boost converters, buck-boost converters, voltage regulators and so on, but is there anything fundamentally wrong with the above?

That circuit will work fine.
At 6 ua current draw I guess the processor is asleep all the time.
The only reason people go for batteries is that generally they want the project to work at night as well as day.

Well, if I up the capacitors to 0.47F super capacitors, then the figures are:

E = 0.5 * C * V * V
E = 0.5 * 0.47 * 25 = 
E = 5.875 C

Time = E / IV
T = 5.875 / 0.000006 * 5 (6 µA current at 5V)
T = 5.875 / 0.000030
T = 195833 (seconds)
T = 195833 / 60 / 60 = 54 hours

However I'm not sure they would charge enough during the day.

A 1w panel will take a fair while to bring the voltage up to a useable level. If the sunlight is variable, the voltage may fluctuate at the point of being enough to power the Arduino.

Another way that I have been playing with is to use a Li ion battery to store the power. Reduce the input voltage to 4v. As Li ion batteries need protection, I have used the circuit that is connected to some batteries to protect them. Cells are already available with the circuit connected or you can purchase the board separately.

These are not designed for battery charging (as I have had been told by others!) but at the power you want will be perfect.

At your load current, start with a charged cell and the battery will stay charged.


The panel would be able to supply around 100mA in full sun. In Australia, southern states, that means an average of about 500mAhr a day charge. Give a few overcast days and it should still be ok.


Looks fine to me, but do you have brown out detection enabled, or some other method to prevent erratic processor operation when the voltage is too low?

Linear Technology makes a series of energy harvesting chips for various inputs (thermoelectric, piezo, solar) intended to do just what you are doing. The chips offer a "power good" signal to prevent mishaps. Examples are the LTC3108 and LTC3588 chips.

Testing with the 0.47 F supercapacitor revealed it charged quite quickly in full sun (like, 5 minutes).

However the supercapacitor seems to self-discharge quite quickly too. I'm currently measuring it, it seems to have slowed down a bit. The capacitor was a 5.5V one. It took 5.25 minutes to discharge 100 mV.

... do you have brown out detection enabled ...

Not right now, at present I am testing the operation of the supercapacitor on its own. I agree that brown-out detection would be desirable. It looks like that would come at a cost of 25 µA overhead, however I may have to wear that.

A small variation of your circuit. This should have better charging response and higher efficiency, especially as the capacitor approaches 5V. Note that the solar panel already has internal series resistance and its max current output will not exceed the ratings of D1 or D2. 1N4734A

Thanks for the suggestion, although I must admit that it charged quite fast once the sun hit it. The self discharge is a bigger worry, although I read somewhere that this reduces once the capacitor has been charged for several days (it conditions it or something).

After almost 2 hours with no load, apart from the multimeter, it has discharged to 3.7V, so the rate of discharge seems to have reduced.

use a Li ion battery to store the power energy.

Sorry to be picky.... ;D

Sorry to be picky.... ;D

A fellow pedant! :wink: :wink:


which can store 0.0275 coulombs of energy.

Not too keen on this sentence, for several reasons.

This may be a silly question, but do those diodes in any way detract from the fact that that's an ordibary RC series circuit with T= RC = 220 x 4400E-6 = 0.97 seconds at which time the cap will have reached 3V (63% of 5V)?


which can store 0.0275 coulombs of energy.

Not too keen on this sentence, for several reasons.

I'm guessing that it should be "work" not energy, and coulombs is the wrong unit. Apart from that, please enlighten me. :slight_smile:

This may be a silly question, but do those diodes in any way detract from the fact that that’s an ordibary RC series circuit with T= RC = 220 x 4400E-6 = 0.97 seconds at which time the cap will have reached 3V (63% of 5V)?

I’m not sure. Besides, it won’t be 5V all the time.

Not too keen on this sentence, for several reasons.

Let me tell you about my thought processes, so you can tell me where I went wrong. I was trying to find the “equivalent” capacitor to a certain size battery (say, 1200 mAh), so that it could run with a certain current drain for a certain time.

Now based on (and other web sites I found):

One farad is defined as the capacitance of a capacitor across which, when charged with one coulomb of electricity, there is a potential difference of one volt. … A coulomb is equal to the amount of charge (electrons) produced by a current of one ampere (A) flowing for one second.

So therefore, a farad represents the capacitance that would hold one amp flowing for one second.


1 Farad is 1 Ampere second per Volt.

F = (A * s) / V

Allowing for hours and milliamps:

 1 Farad = 0.2777 mAh/V (ie. 1 / 3600 * 1000)

This claim is made here: Amp hours to Farads conversion | Physics Forums

Working this out for 4400 uF capacitor, 5V charge and 6 uA current drain:

F = 0.2777 mAh / V
F * V = 0.2777 mAh
mAh = F * V / 0.2777

0.004400F * 5V / 0.2777 = 0.079 mAh

ie. 79 uAh / 6 uA = 0.013 hours
0.13 hours * 60 * 60 = 47.5 seconds

However that did not agree with observations. It went for more like 15 minutes, before dropping to 2.5V.

That is more than can be accounted for by observational error.

Let’s try another tack. Looking at what a farad is from the Wikipedia article:

Given 5 volts, 4400 uF capacitor, 5 uA current:

F = (W * s) / V^2
F * V^2 = W * s
s = (F * V^2) / W
s = (0.004400 * 25) / (0.000006 * 5)
s = 3666.6666 (seconds)

Oops, a different answer.

Then, from my earlier post, using Work = 1/2 CV2, I got 916 seconds.

Clearly, I’m confused, and there is something wrong with my logic, my units or something else.

The way I think about capacitors discharging comes from the fundamental relation Q=CV. If you differentiate that, you get I = C dV/dt.

Rearrange to get dt = C dV/I

Plugging in C = 4400 uF, dV = 2.5 V and I = 6 uA, I get 1833 seconds of operation, or about 1/2 hour.

But approximating dV/dt over that range of is not very accurate, and the current draw probably isn't constant either.

Furthermore electrolytic capacitors usually have a very loose tolerances (-50% to +100%), so that 4400 uF could be anywhere from roughly 2000 to 8000 uF.

I measured 2300 µF on that particular one.

In fact, now that I look at it (!) it is a 2200 µF capacitor, not a 4400 µF one.

If I plug in 2.5V into my earlier equation I get the same results as in my first post:

s = (F * V^2) / W
s = (0.004400 * 2.5 * 2.5) / (0.000006 * 5) = 916.66
s = 916.66 (seconds)

Or using 2.5V all through:

 (0.004400 * 2.5 * 2.5) / (0.000006 * 2.5) = 1833.33

Which is what you got.

Except that in my first post I used 2200 µF not 4400.

Using 2200 µF:

 (0.002200 * 2.5) / (0.000006) = 916.66

That appears to agree with measured results, that it dropped from 5V to 2.5V in around 900 seconds.

I just use C.V = I.t

And Q = C.V = I. t is the charge in Coulombs.

This is the basic equation; "F = (A * s) / V" is a version of it with odd symbols.