This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Best practice for monitoring coin cell battery voltage given ESR

I'm using an NRF51 w/ S130 operated directly from a coin cell battery. I use the ADC with a voltage divider to successfully measure analog voltages. One of the challenges of the coin cell is that its ESR is not insignificant and degrades overtime. This means that if I have a substantial current pulse (for example from RF activity) the battery voltage droops in a meaningful way (sometimes ~200 mV). The ESR is not fixed and usually gets worse over time. Suppose my system cannot operate below 2.4V and I want to monitor the battery voltage and [do something] when there's a low battery condition. What's the best way to do this given the ESR? For example with a multimeter I might see "2.6V", but with a healthy current pulse the battery might actually droop to 2.4 momentarily, which could brownout my system. Is there a way to synchronize sampling the ADC with RF activity so I can measure the worst case battery voltage?

Parents
  • An easy solution I could suggest would be to take a simple discharge test using a fully charged coin cell battery. Then, by doing a constant current pulse (e.g. somewhere between 200-300 mA) for a few minutes (say 10 or 20) and then stop the current pulse after the time limit. Then, you should get a graph that is similar to this:

    image description

    This graph was found on Prof. Gregory Plett's homepage in the Chapter 2 PDF file.

    From this graph, you can approximate the R_0 value (i.e. ESR) crudely from Ohm's law: V=R_0*I. Since you can calculate the change in voltage and you know the Delta I (i.e. the difference between the current pulse and 0 A), you can approximate R_0. Like you said, the ESR does increase as the state of health of the battery decreases. So maybe, you could try this on a "used" or multiple used battery, but which still has/have a bit of charge left in it.

    It is always a possibility to do some battery testing & find a better estimate of R_0, but this would take more time & computing resources. I would try this first & if you don't think it's a good idea we can discuss more advanced methods.

  • That's interesting -- the spikes I see are an order of magnitude lower than that, but I suppose I could try the same technique with more realistic currents. I assume your suggestion is that once I have the ESR I can know what my max current spike at some nominal voltage is, and infer a V_drop based off this value and the ESR. I see a few potential problems with this: 1. the battery is user replaceable and different batteries have different ESRs (I've found massive differences between different brands) and 2. it seems like to make this work I'll have to be quite conservative and potentially leave a lot of battery life on the table.

    Is there a way to sample the ADC while the radio is transmitting? It seems to me like this is the cleanest solution.

Reply
  • That's interesting -- the spikes I see are an order of magnitude lower than that, but I suppose I could try the same technique with more realistic currents. I assume your suggestion is that once I have the ESR I can know what my max current spike at some nominal voltage is, and infer a V_drop based off this value and the ESR. I see a few potential problems with this: 1. the battery is user replaceable and different batteries have different ESRs (I've found massive differences between different brands) and 2. it seems like to make this work I'll have to be quite conservative and potentially leave a lot of battery life on the table.

    Is there a way to sample the ADC while the radio is transmitting? It seems to me like this is the cleanest solution.

Children
No Data
Related