RTC Breakout Boards Issue: Recharging

Hello there,

This issue is related to the small Real Time Clock breakout boards that include a rechargeable Li-ion cell battery on the board, but could also apply to any other Li-ion cell battery recharging applications.
BTW, anyone else notice this? It's hard to believe that this isnt a hot topic on the web.

First let me just state that i have been working with hardware for over 40 years and have studied Li-ion cell recharging in depth in order to understand what it takes to charge a cell like this without damaging the cell.

To start, one of these cells requires a charge current not to exceed the manufacturers recommendation on the data sheet, and limiting the voltage across the cell to 4.200 volts with a max of 4.250 volts.

What i found on the RTC boards like for the DS1307 and DS3231 chips is the batteries are being constantly overcharged. This is because the "charging" circuit consists of ONLY a series resistor and diode. The resistor is 200 ohms, and the diode is type 1N4148 or equivalent.

What this causes is when there is a +5v power supply (typical of the Arduino Uno) the diode causes a voltage drop of about 0.7v when there is significant current flowing, which already puts the battery at 4.300 volts which is already over voltage. But the diode voltage drop lowers somewhat with current, so as the battery charges the voltage can rise even above that. For a real example, i have a voltage of 4.8v and the battery is already at 4.3v. If i increased the voltage to 5v it would rise more.

This is not acceptable for an Li-ion battery and must be corrected or else the battery will be ruined too soon and thus it will not back up the time keeping chip properly, and that's the best possible outcome. The worst is that the battery could get hot and cause a fire. Luckily, the 200 ohm resistor limits the current a max of 25ma with a fully discharged battery.

The solutions would be of many types, but to start the list here we go...

  1. After the battery is charged, remove the 200 ohm resistor from the board.
  2. Remove the resistor, replace the battery with a regular CR2032 battery.
  3. Remove the resistor, connect a well-designed charging circuit made for the LIR2032 battery.
  4. Connect a shunt regulator with sense lead on the battery positive terminal, shunt action lead on the anode of the diode. This is more complicated though and requires a very specific regulator design.

Yes, that is a terrible design. There are other problems with some of those boards, too, like pullups from SQW/INT to the board Vcc, a pullup to the crystal, etc.

See for example Using a $1 DS3231 Real-time Clock Module with Arduino | Underwater Arduino Data Loggers

Yes, this appears to be a problem, and a problem that many may not, well, at least yet, know about.

I am guessing you haven't yet seen and read this thread in this very section which discusses the very issue in more detail. ZS-042 DS3231 RTC module


Paul

when using non rechargeable battery, you are supposed to remove the diode and/or resistor. If you are able to find documentation of the module, you will see it is stated in the docs. FWIW, a regular coin cell battery will probably last longer than useful life of most projects, so not worth going through the trouble of recharging.

Hi,

The problem is not about the CR2032 as much as with the LIR2032 as that board usually has a charging circuit, and the battery over charges when run at 5v as a normal Uno board would have.

One solution is to simply remove the series 200 ohm surface mount resistor. That prevents future charging.

Pass the word around, because over charging a Li-ion battery can cause a fire.

From this thread:

I wish I saw this thread earlier! I've been running this module with the included CR2032 battery at 5V ever since I got it with no issue until today. Today I heard a loud pop noise and looked up to see that the battery exploded and shot across the room. Pretty surprising considering how long it's been operating just fine.

Hello again,

Yes thanks for pointing out that thread. I have read that one too now.

So this issue is known and that is good. Maybe it should be in a 'sticky' section or something.