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

Battery level measurement without SAADC

Hi!

The nRF52820 chip does not have the SAADC module used to estimate the battery life in its larger counterparts (nrf52840 and nrf52833).
Is there a different way to estimate battery life without an SAADC?
I'm hoping for a method which does not include adding external components, and is measurement based rather then estimation based.

We had considered an estimation method which is a summation of the current estimate per 'time used', 'advertisement cycles' passed, 'connection cycles passed' etc. The problem here is that a. I would need to estimate all possible parameters (TX power for example, time until advertisement is caught etc)
b. I would not be able to catch leaking parts, as the leak is not part of my estimation.

Adding an external ADC is a possibility, but would require us to change our PCB which is not something we want.

we're using the VDD tied to VDDH and expect the Vin to be 1.8-3.3V.

Any other ideas?

Parents Reply Children
  • You can use it to tell that the battery voltage is above or below a certain level - so you could use that to give a good/low indication ...

  • Where do the references voltages come from? can I control the output voltage on a GPIO, with sufficient accuracy, or will I need to receive the reference voltages from an external source?

  • Where do the references voltages come from?

    that would be in the Product Specification

  • There are internal references generated by the chip at 1.2, 1.8, and 2.4 V. Note that the specifications requires you to have supply voltage (VDD) of minimum VREF + 0.3V for the used reference. You can also provide an external reference, which may make the battery voltage measurements simpler, but it would require external components to have a stable reference voltage.

  • You can be creative and measure the voltage by charging or discharging a capacitor and measuring the time taken to hit the comparator trigger voltage. Two pins can be used, one as the charge pin and one as the sense pin, or better use a single pin as I show here:

    //                 +---------------------------------
    //                 |                 nRF52832
    //                 |
    //                 |    VDD
    //                 |   --#--
    //                 |     |
    //                 |     |
    //                 |     +-|
    //                 |       |<- High
    //                 |     +-|
    //                 |     |
    //   #-------#-----O-----#--------------#--> P0.nn COMP
    //   |       |     |     |              |    Ref = VDD/n
    //  +++      |     |     +-|            |
    //  | |    -----   |       |<- Low    -----
    //  | |    -----   |     +-|          -----
    //  | |      |     |     |              |
    //  +++      |     |     |              |
    //   |       |     |   =====          =====
    // =====   =====   |    ===            ===
    //  ===     ===    |     =              =
    //   =       =     |
    //                 +----------------------------------
    

    Conceptual Steps:

    Set the port pin to an output, drive high to charge the capacitor

    start a timer

    set up comparator to detect voltage falling below a threshold, which releases the pin drive

    comparator trip captures timer value

    Vo = Vi.e^(-t/CR) where Vi is your Vdd voltage and Vo the comparator trip voltage

    Use a lookup table to map result

    The above example is charge-measure discharge time, but you can also discharge-measure charge time. The comparator options will probably make one of these easier.

    Maybe study the Capsense examples for help in driving the peripherals

Related