Driving Circuits from a CR2032 Lithium Coin Cell

August 29, 2009

in Tinkering

Just another good example of ‘lesson learned’. I often use the very common CR2032 coin cell batteries to drive my circuits. Small, cheap, easy to get and there is a quite a range of good and cheap battery holders.

CR2032 Battery

But recently I have tested an complete over the top design which pushed the poor little CR2032 far beyond its limits. Time to grab a few facts from the datasheet for further reference.

To get a good example I found a quite elaborate CR2032 datasheet from Duracell. I think other batteries behave quite similar to this.

The Issue

The general key fact of an CR2032 are obvious and quite easy to grab from the datasheet:

Voltage: 3V

Capacity: 240mAh (to 2.0V)

If you study the datasheet more closely you will see that the voltages drop sharply after it reaches 2.8V (after it has delivered about 170mAh).

ESR (Equivalent Series Resistor):about 18 to 20 Ohms.

The ESR (Equivalent Series Resistor) or IR (Internal Resistance) is quite flat up to 150mAh of capacitance – there it reaches about 20 Ohms. At 170mAh it reaches something like 30 Ohms. This is quite hefty. In comparison good capacitors have a series resistance from some Ohms to a fraction of an Ohm – so it is always good to put some (even electrolytic) capacitors in parallel to the battery. If you are concerned that switching on or of of your circuits discharges the battery to much by charging up the capacitors – there is a simple trick to prevent it: put the capacitors in front of the ‘on’ switch so that are always charged and will not charge after your circuit is switched on. The leakage current will be so small that it will be neglectable in most cases.

But if you want to calculate how much constant current you can draw from these batteries you have to use Ohm’s law:

V = R * I or I = V /R

If you take the later and say you want no voltage drop higher that 1.2 Volts – because after that your circuit reaches 1.8 Volts which makes your microcontroller most probably going brown out. Applying these with the ESR of 20 Ohms, you will get something like 60 mA you can draw by them (I = 1.2V/20Ohm). You if calculate more conservative and do not want to go below 2.8V – which gives you some 0.2 Volts head room  – you will only be able to draw 10 mA (I = 0.2V/20Ohm) – just enough for an LED. These calculations do not consider the voltage drop of the battery of its life time.

In the bottom line: If you use those batteries you have to consider the 20-30 Ohms series resistance. Especially if you draw some constant current (spikes can be easily removed using capacitors). Yo have to assume 170mAh as maximum capacitance because then the CR2032 reaches 2.8Volts and the ESR goes up to a whopping 30 Ohms – going up from there very steep. Because of the high ESR of the CR2032 you will most probably not be able to draw more than 20-30 mAh safely (as constant current).

Perhaps it is even better to get a boost converter to 3 or 3.3V – to suck out all the juice in the battery. This should should be good for the environment too. Or even better get rechargeable Lithium Cells.

So driving an RGB with an 5V boost op converter is impossible. At white (all three LEDs draw 20mA) it is 60mA current at 5V, considering a efficiency of 80% this will give you more than 120 mAh at 3.3V. Impossible or the CR2032. So my intended design will never work. I wish I had done those calculations before I designed it and not after I saw that the prototype does not work.

You live and learn!

Some Closer Look

As we see the higher the current is the more loss we get by the ESR of 20 Ohms. So the question is how much power we can get from an CR2032. If we want to draw the maximum amount of power over a short time we simply take the power:


And we know that the voltage is


And we get


If we create a little graph from it we get

CR2032 Wattage

So we see that the maximum is somewhere at 75mA and somwhere at 0,1125 Watts. Perhaps the real theoretical value is a bit off – but most real batteries will be a bit off too, so it is a good enough aproximation.

So that is somewhat consistent to our previous calculations to not exceed 80mA to avoid a too big voltage drop.

But how many energy can we draw from an CR2032? For this we simply calculate the watt hour of the battery:

e=P*t and t=0,24A/I

so we get



CR2032 Energy

But this is not very astonishing. The less current you draw the less loss you got at the internal resistor. But I am unsure if there is this resistor, which burns energy to heat. But since the batteries get hot if you draw too much power you will get some loss. But I do not think that the loss is equal to a 20 Ohm resistor. But the main finding is clear – the more current you draw the more loss you have.

What to do?

From the comments I got the tip to put the lithium coin cells in series to get a higher coltage at the current draw. But this will enlarge the voltage swing at different current levels (from 6V at 0mA to 3V at 150mA). This can be dangerous for your circuit. A better approach would be to put the batteries in parallel to half the internal ESR – so you would still get 1.5 Volts at 150mA.

Of course to counter current spikes you should allways put sufficiently sized capacitors in parallel. Sufficiently sized depends on the level of current spikes and there time. Just check out how a Farad is defined and you can derrive the needed value (which is the product of voltage change and time).

But in most of my designs space is a rare good. So no parallel batteries and no big capacitor banks.

Something that could work is sucking the power with a boost converter to get a steady output voltage independent of the current draw. This would of course enhance the loss but at least we get the voltage we want at an expense of the efficiency. Right now the calculations are a bit too complicated for this evening. But updates will follow

Lets see how that works.

{ 28 comments… read them below or add one }

Joost August 30, 2009 at 10:25


very interesting read. Would you mind elaborating on your calculations? I do get simular results (4V required from battery when loaded with 60mA when internal resistance is 20 Ohm which obviously is impossible).



Marcus August 30, 2009 at 10:52

4V? The CR2032 is never able to deliver that – it tops out at 3V max (in real life often 2.8V – see calculations above).
I notified the high internal resistance by using the step up circuit, drawing lots of mA (something like 50-100 mA). The voltage dropped down to something like 1.4V – browning out my ATmega168. And you could actually watch the battery to go empty.
The internal resistance values are taken from the datasheet (see link above). I do not think they are 100% accurate, but they give an impression. The rest of the calculations is applying Ohms law to get the required current for a given voltage drop. I will add a explanation of the calculation.


Joost August 30, 2009 at 11:58

Thanks for the clarification.

Of course I know it can never deliver 4V. it is the theoretical value at which the battery would be able to deliver 60mA with an internal resistance of 20 Ohm and a V-Thev of 2.8V, at least according to my calculations:

Applying Ohm’s law gives an equivalent of 47 Ohm resistance for 2.8V and 60mA. With Ohm’s law again this gives a total required voltage of 60mA * (20 Ohm + 47 Ohm) ~= 4V.

Maybe my calculation is totally flawed though ;)

Fun thing is that I have a circuit here powering 3 leds (40+40+10mA, 2V each) from one CR2032 via an attiny25, and it seems to work fine. I do light them for short ~sec periods only.

I guess I’ll have to do some calculations there to see if this setup is valid.


Marcus August 30, 2009 at 12:30


My calculation goes like this:

I think my calculations are right. But that’s more an opinion than being convinced ;)

But I also suspect that you can draw more current for a short period of time. If you got capacitors on your board things get more complicated.
On the other hand: Working LEDs does not mean they draw the whole 40/10mA. Perhaps they drop their current – but still work flawless.


Joost August 30, 2009 at 13:00

I did some more measurements on my board, my results are still inconclusive.

Your calculation makes perfect sense to me. I don’t think mine are really wrong either though, it’s just another perspective.



Marcus August 30, 2009 at 13:13

Yes, you are right.

If you use the output Voltage of 1.8V for 6mA you get some external resistance of 30 Ohms in contrast to your 47 Ohms. In that case it all sums up to 3V – which is more or less the voltage the CR2032 is able to deliver.

It is always hard to fire at a moving target ;)

I think the real numbers can still be a bit different, since the datasheet will present some simplified numbers.


Joost August 30, 2009 at 13:34

Another interesting tidbit.

I tried the same 3 leds (with a minor 50Ohm resistor in series each) and without the attiny25 in between only my green and red light up, the blue one doesn’t. Now the same leds with the attiny do light up, be it the blue one very dimly. There are no caps involved in both. I guess the attiny does something smart ;)


Kenneth Finnegan, W6KWF September 4, 2009 at 08:49

Personally, if I was designing something, I would put the caps in parallel with the battery, unless I’m missing some new trick for battery sag. /nit-pick


Marcus September 4, 2009 at 09:09

Yes, putting caps in parallel to the battery does help to smooth the power – they have much lower internal resistance. But the real problem arises if you draw some major constant current. E.g. driving a RGB LED with something like 50mA for a period of something like one second drops the current significantly – since the amount of energy used will be much more than a capacitor will handle.
If we draw 50mA for one second this will result in a charge of 0.05 coulombs. If we do not want the power to drop less than 0.2 volts we get the farad value by F=C/V = 0.05/0.2 = 0,25F = 250.000.000 µF – those capacitors will be bigger than the battery itself. I confess – I neglected the power provided by the battery to keep the capacitor charged. But even if we assume that we need a 100th of the value – it would still be a significant capacitor bank.


ADam September 10, 2009 at 04:27

Just stumbled across this. Have you thought about putting two CR2032′s in series to boost your voltage to 6V, but your capacity would still remain 240mAh.

At work I have the current dilemma. Trying to write to a Atmel Dataflash that has a minimum voltage rail of 2.7V using a single CR2032. During a read or write or erase the device requires 18mA max. For a page write this only takes 1ms. Not a big deal.

When we send a command to the micro to erase the flash, it could take up to 120 seconds of 18mA to erase the device. What do I do?

I’m thinking about putting two CR2032′s in series and using a buck to knock it down to ~3.0Vdc. I have a dev kit from TI coming with their TPS62240 IC on it. I’m curious to see how the inductor current is going to affect the battery.

Using a current mirror in our lab and pulsing it every 50ms for 10ms drawing 20mA during the pulse would have a voltage delta of160mV during the pulse. Watching the voltage go from 3.2V to ~2.8V in a few minutes was interesting.

I’ve rambled enough.



Marcus September 10, 2009 at 06:55

I was thinking about doing the exact opposite. Since in most of my design space is a premium I have to come up with a solution for a single lithium cell. PErhaps getting an boost converter to take the end voltage to 3 or 3.3V. I still have to do some calculations – about the best current to voltage ratio and the resulting output currents of the up converter. Perhaps it works – stay tuned.


adrian October 14, 2009 at 13:29

If you use an Atmega168V which is a low voltage version, I’m guessing you can run it more stable at lower voltages. Perhaps even turning off all functions when not in use; i.e. ADC, unused pins, etc. should lower power consumption, including using the internal RC 8MHz oscillator. Since it uses runs stable at 1.8V-2.4V, we don’t have to worry excessively about the voltage drop (I think).

I’m hoping to fade an RGB led once every 5-10 seconds using a CR2450 battery (620mAh version, slightly larger). I’m also considering lighting up 6 small 0603 SMD LEDs in certain sequences to do animations. Going to run tests on a breadboard to see how the battery life fares.

Any comments/advice?


Marcus October 14, 2009 at 14:17

I think the worst problem will be the instability of the voltage.
I did similar things myself and it worked fine, I just wondered that the LEDs were so dim. I think the microcontrontroller can cope with the voltage drop quite fine. But the serial resistor for the LEDs is just too big.
Try to check the voltage while all LEDs are on. If you blink them for a short time adding capacitors to your circuit can ease the problems.
On the other hand. There is no point that you cannot live with the voltage drops – if you know them well ;)


Fredrik December 14, 2009 at 02:09

Good discussion. Regarding lithium cells in parallel. Sure there are no issues with this? I am looking at using two 2016 cells to get capacity up (CR2032 is to thick for the app). A friend of mine said he had heard some about it but no more..



Frank June 4, 2010 at 14:38

In your paragraph about ESR, you mentioned putting a cap in series with the battery. Am I missing some basic electronics here? How would current flow if there is a cap in series with the coin cell?


Marcus June 4, 2010 at 14:50

You are right. Putting the cap in series to the battery is complete rubbish. It must be put parrallel to the battery.
Thanks for the correction.


Frank June 6, 2010 at 23:59

Is there any simple way to determine what value capacitor would be ideal for startup conditions. What I find is that when I power up the circuit which draws about 2.2ma, sometimes on some power-ups, the current shoots way up to 20 to 30ma. Is this from the ESR from the cell dropping a bit from it’s 2.8 level? I’ve been using a 10uF cap and for 28 out of 30 “on” cycles, it’s fine, but if on those few times it goes into high current mode, one doesn’t know it and gets depleted batteries pretty quickly. Any way around this problem dealing with coin cells on power-up besides a parallel cap? If not, I guess I’m most interested to find out in layman’s terms how to calculate the ideal value.

Thanks, Frank :)


Marcus June 7, 2010 at 10:57

As a rough estimation I simply use the definition of Farad: ‘A farad is the charge in coulombs a capacitor will accept for the potential across it to change 1 volt. A coulomb is 1 ampere second.’
If you know how much voltage drop you want and how much current you draw for how much time you can simply estimate the needed value and adapt it to reality (adding a little extra margin, downsizing it to a usable value – or whatever). I do not really know how accurate this is. But from the theoretical point it is perfect. And in theory there is no difference between theory and practice ;)
If I m working with battery operated devices with big power supply capacitors and a power switch I allways put the capacitor before the power switch so that it is allways charged and does not need to be charged at startup.
Hope that helps.


elkin November 18, 2010 at 03:25

hello. Can i deliver 8V@1A with a boost from a CR2032?


Marcus November 18, 2010 at 06:52

I tried the same with 3.3V @ 0.1A from a single Button cell with a step up regulator. Results where very discouraging. The button cell looses voltage really fast and recovers after some minutes. If you do not use a lot of button cells, no!


Augusto August 26, 2011 at 00:56

is possible to run an infrared led at 100ma from a cr2032.I am doing a tv b gone


Marcus August 27, 2011 at 06:50

Yes and no:
The voltage drop would be very high if you draw 100mA from a CR2032. It is possible but would deplete it quite fast. The Blinken Button draws about 80-90mA from a CR2032 and this is more or less the maximum.
But if you add enough capacitance it is no problem I think. Since the IR LEDs will not draw 100mA all the time, just for short bursts to send the signal.


Augusto August 27, 2011 at 13:38

Thank you. What value of capacitor you suggest? i have to put in parallel with the led or the battery?


ddalskov November 24, 2011 at 23:01

Great article!
I’m building project myself which includes cr2032′s, but I’m also using an SD-card, that only works down to around 2.7 V, which means I’ll probably need at boost converter. Unfortunately I’ll get current-draws up to 40-50mA, and I can’t seem to make at boost converter that can hold the voltage at those current-draws. Do you have any suggestions ?


Marcus November 25, 2011 at 07:54

Yes, lithium batteries and a step up are a sad story. I tried it myself to get more power out of a CR2023 with a step up circuit. It did not work at all.
It seems that the chemistry of the lithium batteries is very slow. So the step up depletes the areas around the internal connectors and the voltage goes down. It seems like the battery is empty after a few seconds. But it recovers after some minutes again. But it does not feel god, nor does it help.

I think in your case you can perhaps decrease your current consumption or reduce it to some bigger bursts (like reading from SD or blinking LEDs). Especially the current saving modes of normal microcontrollers help a lot. To provide current for the burst you can simply add some capacitance which proviedes the power for the bursts.


Madhavan October 22, 2012 at 10:26

Hi All,
I am using BR2330-1HE RTC battery for my hand held device design, Here i am facing 2 Issues.
1. Battery is getting draining when the system is in Off condition ( When the system is in on state date & Time get’s updated properly.
2.Ground discontinuity between RTC battery Gnd Pin to PCB Common ground Pin.
Let me know the reason for the above two issues ,
Thanks in advance,


Jonathan June 21, 2013 at 07:44

Very fascinating reads and I feel like I know a lot more about CR2032′s.
Clearly everyone knows a lot more about building circuits here than I do so if I sound like I don’t know what I’m doing its because I’m still getting my feet wet.

I’ve been asked to build a circuit to power 5 white LED’s for a greeting card, I of course went right to a CR2032 3V and of course can get 1 LED powered by it but even testing it with 2 LED’s it won’t work. I figure its the amps and that I need to consider using 2 CR2032′s in a line not stacked to up the amps to power the others. Joost mentioned that he/she was able to power 3 colored LED’s and I am going to look up the attiny25 to figure out what it is and how it would be used. If you have any advice on how I can make this circuit I would love to hear it. I am trying to keep it low cost because the woman I’m making this for needs around 100 circuits so she’s buying all of these parts in bulk.

Thanks. =)


Solenoid December 17, 2013 at 12:21

Thank for explaining it so that I don’t make the same mistake, I was basically set to start PCB drawing… Can you perhaps add some labels and units to the axes of your graphs?


Leave a Comment

{ 2 trackbacks }