nRF52 battery measurement when using regulators to maintain the input voltage

Hi everyone,

I'm trying to measure battery level using nRF52833. Reading previous posts, there are two popular ways to measure battery level with SAADC module 1) battery detection on the VDD pin; 2) having voltage divider and connect the power source to an analog pin.

The following is my power circuit diagram.

For battery detection on the VDD pin, I config the pin as 

NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_VDD);

However, since I'm using a voltage regulator chip to obtain a stable voltage 3V, even the battery is draining during the circuit operation, it still stays stably at 3V. Thus, I'm not sure if this approach is feasible. Please advise!

For battery detection using voltage divider (R1 = R2 = 100kOHM, C = 1nF), since the boost DC-DC regulator requires the min voltage of 0.7V, my circuit can only operate when its battery from 0.7V - 1.5V. Thus, the voltage after going through the voltage divider will be 0.35V to 0.75V and will be fed to an analog pin (AIN). In this case how can I formulate to have 100% battery level at 0.75V and 0% battery level at 0.35V? 

The following guideline was found in app_util.h in the nRF5_SDK. Not sure if I should use this like the way I should do?

 *           The discharge curve for CR2032 is non-linear. In this model it is split into
 *           4 linear sections:
 *           - Section 1: 3.0V - 2.9V = 100% - 42% (58% drop on 100 mV)
 *           - Section 2: 2.9V - 2.74V = 42% - 18% (24% drop on 160 mV)
 *           - Section 3: 2.74V - 2.44V = 18% - 6% (12% drop on 300 mV)
 *           - Section 4: 2.44V - 2.1V = 6% - 0% (6% drop on 340 mV)
 

Parents
  • So I would suggest the answer is neither; instead connect the battery to the nRF52 SAADC input pin which allows measurement over the life of the battery with no static (continuous) current drain due to a potential divider resistor chain. There are some considerations, however, as when the battery is first connected there will be no VDD on the nRF52 until the DCDC starts up and this risks phantom-powering the nRF52 through the internal schottky clamp diode to VDD. Avoid this by using a large-value series resistor from the battery to to SAADC input pin and a capacitor to GND at the SAADC input pin with a long time constant so the DCDC is up before the SAADC pin voltage rises above a few hundred mV.

    Measuring remaining capacity on a battery is not quite so simple; there are some fundamental steps for getting a useful voltage measurement on to infer capacity. Out of interest a used battery can recover to a higher voltage after a significant period where the battery does not supply significant current. One solution is to identify a part of the circuit which presents a predictable load each time it is turned on, perhaps a simple resistor driven by a port but also perhaps a small motor or voice coil or even a fixed code execution sequence such as code CRCC. Applying a fixed sequence of these battery load pulses during battery measurement allows measurement both under a known load and under relatively little load (the latter by sleeping during the SAADC sample). The difference between loaded and unloaded measurements allows inferring the approximate internal resistance of the battery, and thus better estimation of remaining battery life using the temperature and curve fitting. Simply put, the loaded measurement returns a lower battery voltage than the unloaded measurement.

    The DCDC is clearly required from a 1.5 volt battery, but maybe not the LDO, which is both inefficient and has an Iq - have a look at my comments in this post: supply-voltage-1-8v-or-3v-for-microcontroller

Reply
  • So I would suggest the answer is neither; instead connect the battery to the nRF52 SAADC input pin which allows measurement over the life of the battery with no static (continuous) current drain due to a potential divider resistor chain. There are some considerations, however, as when the battery is first connected there will be no VDD on the nRF52 until the DCDC starts up and this risks phantom-powering the nRF52 through the internal schottky clamp diode to VDD. Avoid this by using a large-value series resistor from the battery to to SAADC input pin and a capacitor to GND at the SAADC input pin with a long time constant so the DCDC is up before the SAADC pin voltage rises above a few hundred mV.

    Measuring remaining capacity on a battery is not quite so simple; there are some fundamental steps for getting a useful voltage measurement on to infer capacity. Out of interest a used battery can recover to a higher voltage after a significant period where the battery does not supply significant current. One solution is to identify a part of the circuit which presents a predictable load each time it is turned on, perhaps a simple resistor driven by a port but also perhaps a small motor or voice coil or even a fixed code execution sequence such as code CRCC. Applying a fixed sequence of these battery load pulses during battery measurement allows measurement both under a known load and under relatively little load (the latter by sleeping during the SAADC sample). The difference between loaded and unloaded measurements allows inferring the approximate internal resistance of the battery, and thus better estimation of remaining battery life using the temperature and curve fitting. Simply put, the loaded measurement returns a lower battery voltage than the unloaded measurement.

    The DCDC is clearly required from a 1.5 volt battery, but maybe not the LDO, which is both inefficient and has an Iq - have a look at my comments in this post: supply-voltage-1-8v-or-3v-for-microcontroller

Children
No Data
Related