As part of my learning of electronics, I'm currently trying to develop my own network of sensors.

So far, I've managed to make myself a satisfying small setup : A few nodes, built with an atmega328p, a set of sensors and a RF emitter, capture data and send it through RF to a central server, which takes care of that data.

This works well, and I'm now trying to get rid of the battery part. My current solution works fine with either a 9v battery or a 5V USB charger, and I'd like to try to get other kind of energy inputs (like solar panels, windmills, etc...).

My circuit requirements are simple : 5v / 65mA. However, these requirements are only necessary for 1 sec every once in a while, since i don't need the circuit to run constantly. a few times a day is largely enough, and it can sleep / power-off the rest of the time.

I got myself what should have been a 0.5W solar panel (5v/100mA). However, when I try to measure the current I get from it, fully facing sunlight, I only get 5v/5mA. This is not enough for my circuit, so I figured I would go and try to store that energy.

So I was thinking that maybe I could use capacitors : After reading a bit on it, I've learned how to charge and discharge it. However, to my knowledge, this always requires some changes on the circuit in order to switch from charging to discharging : Either removing the input battery like Capacitors as a Storage for Electricity, or doing something like this https://www.arduino.cc/en/Tutorial/CapacitanceMeter . I'm not sure if the link could be suitable in my case, because this requires the Microcontroller to be powered, and at this point, it is not.

The other option was to use rechargeable batteries, but I couldn't find really small ones and I would have the same issue as above. I don't want to buy LR44/CR2032 stuff because I would have to change them quite often.

My questions are :

  1. Should I simply replace the solar panel ? Is it normal that the current I read is so low even though the voltage I get is correct ?
  2. Is there a way to make a circuit that charges a capacitor, and when it's reached a sufficient charge, automatically use the energy stored in it in order to power some other part of the circuit until it's emptied, and all over again ?
  3. Same question with a rechargeable battery.
  4. In the case where this would not be possible, which I'm starting to believe, what is the common approach for this ? If possible, I'd like to avoid using classical "AA" or "AAA" batteries, but rather use "in-circuit" batteries (I don't know their name though)

Note : Sorry if anything is unclear or seems stupid. I'm still begining in electronics. Feel free to make any suggestion relative to this project.

Thanks in advance

  • 1
    \$\begingroup\$ What solar panel is this? Measure the short circuit current facing sunlight. \$\endgroup\$
    – winny
    Commented Jun 15, 2016 at 19:57
  • \$\begingroup\$ 5V/100mA spec mean open circuit voltage of 5V, short circuit current of 100mA. It does not mean 0.5W output. At open circuit and short circuit it will deliver no power at all. The power output will occur around its maximum power point (probably in the region of 3-4V). That is also measured at 1kW/m^2 irradiance, which it is probably less than where you are. \$\endgroup\$ Commented Jun 15, 2016 at 22:22
  • \$\begingroup\$ Related info about P-V cell ratings. \$\endgroup\$ Commented Jun 15, 2016 at 22:25
  • \$\begingroup\$ @winny : It's a cheap one bought on ebay. Probably very low quality, but I wanted to give it a try; However maybe my way of measuring the current is wrong : I simply put my AmpMeter directly on the solar cell, set on 200mA at first, and point the cell directly to the sun so that it's facing it at 90°. \$\endgroup\$
    – Antoine
    Commented Jun 16, 2016 at 13:28
  • 2
    \$\begingroup\$ @Antoine I don't think it confirms that at all, the link is describing what all solar panel I-V curves look like. Near the rated OC voltage, there is no current delivered. Near the rated SC current, there is no voltage. You have to operate somewhere in the middle (keyword: MPPT - maximum power point tracking). \$\endgroup\$ Commented Jun 16, 2016 at 13:34

3 Answers 3


1) The first step is to determine your average current consumption
I_AV = (T_ON * I_ON + T_OFF * I_OFF) / (T_ON + T_OFF)

a) T_ON = What percentage of the time is your device active.

b) I_ON = How much current does it draw when active.

c) T_OFF = What percentage of the time is yoru device inactive.

d) I_OFF = How much current does your device draw when inactive.

2) T_RUN = Determine how long your device need to run off the capacitor.

3) V_MIN = Determine minimum allowed operating voltage for your device.

4) V_MAX = Determine minimum allowed operating voltage for your device.

5) C = Size of capacitor you need. C = I_AVG * T_RUN / (V_MAX - V_MIN).

The device consumes 65mA when on and runs for 100ms once every minute and is asleep the rest of the time. While asleep it uses 1mA. We are running on solar power and light is available 10 hours a day and not available for 14 hours a day. The device can operate from 3.0V up to 5.5V at the extremes.

I_ON = 65mA
T_ON = 100ms
I_OFF = 1mA
T_OFF = 59.9s
I_AV = (65mA * 100ms + 1mA * 59.9s) / (59.9s + 100ms) = 1.1067mA

T_RUN = 14hr
V_MIN = 3.0V
V_MAX = 5.5V
C = 1.1067mA * 14hr / (5.5V - 3.0V) = 22F

You can get a 15F, 5.6V super capacitor from Digikey for about $8.93.

Using two of them you may complete your design with some spare margin.

An easy way to make your circuit automatically switch over from capacitor power to solar is to use a diode oring circuit.

Use two diodes. One attaches from the solar pannel to the load and the other attaches from the positive side of the capacitor to the load. Both diodes point to the load. The load will then be powered from whichever source has a higher voltage (either the solar pannel or the capacitor).

To trickle chare the capacitor from the solar pannel you will want to connect the positive side of the capacitor to the positive of the solar pannel through a resistor and a diode. The resistor and diode are in series. The diode points towards the capacitor. The resistor value should be low enough that the capacitor can charge at a reasonable rate, but not so low that you load down the cell. Something in the range of 100 ohms should be about right.

Finally, you should have a zener diode across the positive and negative terminals of the capacitor to make sure it doesn't over charge. The zener diode points from the ground to the positive side of the capacitor. Select a didoe with a breakdown voltage that is less than the capacitor rating. For example, 5V on a 5.5V rated capacitor.

  • \$\begingroup\$ Thanks for this detailed description ! This is exactly what I need; That and the brownout detection from @bruceAbott will do the trick. 22F seems very high though, is it normal ? most of the caps i've seen were at most in mF or uF \$\endgroup\$
    – Antoine
    Commented Jun 16, 2016 at 14:00
  • \$\begingroup\$ @Antoine Remember that 22F was just the result of a made-up example. You should run through my calculation with your own numbers verify what you actually need. Even so, your real answer will probably be somewhere close to the example. To power a device for any significant amount of time you usually need a very large capacitor. In the past a capacitor that was several Farads was not easy to get. Today there is a pretty good selection, but they have limited voltage ranges and relatively high series resistance internally so there is still room for improvement in the technology. \$\endgroup\$
    – user4574
    Commented Jun 16, 2016 at 19:44

The simplest solution is to use a small 4.8V NiMh battery pack (just Google for examples). These are very common for hobby use to run the receiver and servos in radio-control gliders. These can generally be continuously trickle charged at 1/20 their "C" rating. For a very simple charger, you will need a higher voltage solar panel to get current into the battery and a series resistor to limit the charge current.

Example: Let's say you pick a common 600 mAh 4.8V pack. You should set your trickle charge no higher than 1/20 of this to prevent damage, or 30 mA. (Go read various NiMh battery specs.) Let's say you get a solar panel that outputs 9V. You will need (9 - 5) / .030 = 133 Ohm series resistor. 130 Ohms would be the closest standard value. The resistor would be dissipating heat at I^2*R or .030^2 * 130 = .117 Watts of heat, so you should use 1/2 Watt 130 Ohm resistor to give plenty of margin.

Hope that helps. -Vince

  • \$\begingroup\$ Thanks ! I was hoping to be able to avoid using such "big" packs, but I guess it's going to be mandatory... Especially since they are going to cost a lot and I'd like to make a few dozens of nodes. \$\endgroup\$
    – Antoine
    Commented Jun 16, 2016 at 13:55
  • \$\begingroup\$ You can use a small one for your application. The smallest I see on Amazon and Ebay are 150 mAh packs. \$\endgroup\$ Commented Jun 16, 2016 at 16:33
  1. If you truly are giving the panel 'full sunlight' (ie. equivalent to a clear day at noon close to the equator) then it may be faulty or incorrectly specified (AKA fake). However a '100mA' solar panel will probably not deliver that much in normal light - even 65mA might be expecting too much.

  2. (3) Yes, but in practice you won't be able to use all the charge in the capacitor or battery. Both could be charged simply by wiring them directly to the solar panel - provided that the panel can't put out more than a 'trickle' current (otherwise put a resistor in series to limit the charging current).

To get sufficient storage with a capacitor it must be very large. In practice this means using 'super' or 'ultra' capacitors. Most supercaps are only rated for 2.7V, so you may need several in series/parallel to get the voltage and capacity you need.

A battery is more compact than a capacitor of the same capacity, and will hold its voltage more constant during discharge, but doesn't like being fully drained and will wear out in a few hundred cycles if deeply discharged.

You could use the MCU itself to control usage. Measure the raw capacitor/battery voltage via a resistor divider and ADC or comparator input, and transmit only when it gets close to full charge (peak voltage). Set the MCU's brownout voltage so it will reset if the voltage goes too low.

  1. pre-assembled NiMH packs are readily available. For your application a 4.8V AAA pack should be more than enough.
  • \$\begingroup\$ Thanks ! I always thought capacitors were smaller; Is there a difference if the supercaps/batteries are mounted in parallel or in series ? The brownout setting is very interesting, but i'm not familiar with it. I'll read some doc about it. When enough current is available, will the MCU automatically start again ? (I guess the reset won't let it operate when voltage goes too low) \$\endgroup\$
    – Antoine
    Commented Jun 16, 2016 at 13:53
  • \$\begingroup\$ In parallel the capacitance adds, but in series it divides. So if you want 10F at 5.4V using 10F 2.7V supercaps, you need 4 of them. 10F is equivalent to about 8mAh. The CPU will come out of reset whenever the MCU voltage exceeds the brownout level (2.7V at BOD level 101). But there may not be enough charge stored for a transmission burst at that point, so you read the cap/battery voltage to check the level of stored charge. If it isn't high enough then sleep for a bit and try again until it is. \$\endgroup\$ Commented Jun 16, 2016 at 19:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.