Proper battery cut-off handling?

Go To Last Post
14 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello,

I am working with rechargeable 3.6v Lithium Ion coin cells for the first time. I have selected an appropriate charging IC, but had not yet considered how to manage the battery so that does not discharge too far.

My cell has a cut-off discharge spec of 3.0v. Can anyone help with solutions to monitor the voltage and proceed to a cut-off routine when appropriate?

Thank you.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Presumably you are using the battery to run an AVR. On startup sample the internal 1.1 volt bandgap using Vcc as a reference and sleep again if the result shows Vcc<3 volts.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I had to do something similar, but I also added a non-volatile flag, so that once the system had decided that the battery cut-off voltage had been reached, it would effectively refuse to run until a certain amount of charging had been completed. My reasoning was that the battery voltage would recover slightly off load, and that by repeatedly turning the thing back on it would be possible to drain more and more power. To be fair, in my case the so-called "smart battery pack" would completely shut down below a certain voltage, at which point my device would simply not respond. I wanted to be able to let the user know what was happening, and to get back to sleep before the high current stuff was turned on. This may not be relevant in your app.

Four legs good, two legs bad, three legs stable.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

dak664 wrote:
Presumably you are using the battery to run an AVR. On startup sample the internal 1.1 volt bandgap using Vcc as a reference and sleep again if the result shows Vcc<3 volts.
Ummm ... did you actually mean to say ...

On startup sample the Vcc using the internal 1.1 volt bandgap as a reference and sleep again if the result shows Vcc<3 volts.

Cheers,

Ross

Ross McKenzie ValuSoft Melbourne Australia

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Well the OP didn't say what AVR. The Tinyx5's have Vbg but not Vcc available to the multiplexer. Advantage of measuring bandgap/Vcc is no external pin or divider needed so sleep current can be minimal. Disadvantage is the division required to get Vcc=1.1*1024/ADC.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Well there you go ... another thing to add to my "lessons learned today".

Thanks,

Ross

Ross McKenzie ValuSoft Melbourne Australia

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for replies. I'm using Mega88, and in the future will move to the newer version of it.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi All.

This may be a stupid question but one that is confusing me.

If I need to measure Vcc<3V and I am using Vcc as my ref then wouldn't any measurement of Vcc result in 0x3FF or the relevant max for the ADC registers?

So if Vcc is 2V and Vref=Vcc=2V then the measurement of Vcc will simply be the ADC Max value, same if Vcc was 3v3 or any other voltage.

Am I missing something here?

BTW. I need to get a measurement of a battery as well in my app and I am running into the same problem.

Best regards
Priyend

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Can't you just step the voltage down with a potential divider? Or does your circuit need to be extremely high efficiency? (i.e. could you not tolerate a potential divider made up of say 2 100k resistors?)

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'd recommend a dedicated part for this - something like the LTC1998: http://www.linear.com/pc/downloa...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Assuming the 1.1 volt bandgap is available to the multiplexer, you measure it using Vcc as a reference. Then 1.1=Vcc*ADC/1024 so Vcc=1.1*1024/ADC.

If all you need is a low voltage sensor you can hardcode the ADC reading above which Vcc is too low. For accuracy program the flash powering with Vcc at the cutoff voltage and have it save the ADC reading in EEPROM on the first startup. The STK500 is good for this as it has programmable Vcc. The setting is approximate, measure what it really is.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi All

Thanks for the replies.

Thanks nleahcim : Regarding LTC chip. The PCB is not mine and I can't change it to accommodate a chip as an ad on. Resistors I can manage.

Thanks neildm : Regarding putting in a voltage divider. That is an option I thought of but the problem is that the resistor path forms a continuous drain on the battery and will eventually damage the battery if the voltage goes to low. The other thing is that 2x100k resistors in a potential divider set up results in an impedance problem that is not less than 10k which is what the AVR data sheets recommend.

Thanks dak664. I will test your technique.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Okay i think what dak664 said is probably the best thing to test. However, if you want really inelegant solution you could try a potential divider with a logic level (something with vgsthmax=2V) n-channel fet at the bottom of it. Then use some intelligent polling and you have a really clunky half-solution to the problem!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Well here is my feedback.

dak664's method

Quote:

Assuming the 1.1 volt bandgap is available to the multiplexer, you measure it using Vcc as a reference. Then 1.1=Vcc*ADC/1024 so Vcc=1.1*1024/ADC.

worked well with the Mega128 tests, except Vbg = 1.23V. :)

Since I am also using the Xmega128A1 I dug through the data sheets a little deeper and found that I could also use the 1.00V ref and measure VCC/10 directly. That also worked well. :)

Many thanks for all the valuable inputs.:D

Best regards
Priyend