I'm trying to find a cheap implementation/circuit to monitor the remaining capacity of a non-rechargeable battery to be specific Lithium thionyl chloride LiSOCI2 batteries. I am aware of TI and Maxim's solutions but i feel they are expensive, i found several coulomb counter projects but AFAIK they fully discharge the batteries to finish the test which for LI-ion (rechargeable) this is not a problem. I was thinking if it was possible to do with simple components (Transistors/Mosfets) and software using a microcontroller to do ? I would really appreciate if someone would point to the right direction. For the curious out there, it's going to be inlcuded in an energy/electricity meter. Thanks in advance.

  • \$\begingroup\$ Can you specify what exactly you want to measure? I mean, your words like charge/capacity/life are pretty general. If the voltage is enough, you can always make a supersimple circuit of 2 mosfets and feed that into MCU ADC and get the voltage. \$\endgroup\$
    – Ilya
    Commented Jul 1, 2020 at 12:21
  • \$\begingroup\$ @Ilya My apologies for the vague question. I would like to know the remaining capacity of the battery. AFAIK they would need a load for the voltage to be measured, but for specifics of what to do i'm still in the dark. \$\endgroup\$ Commented Jul 1, 2020 at 12:28
  • \$\begingroup\$ The best way to know it is to have the discharge curve of the battery saved somewhere (after all, it's hardware characteristic). So you measure voltage and look it up where on discharge curve it is \$\endgroup\$
    – Ilya
    Commented Jul 1, 2020 at 12:30
  • 1
    \$\begingroup\$ That sounds very simple, I'm going to try it . Thank you very much for sharing your insights and thoughts with me. \$\endgroup\$ Commented Jul 1, 2020 at 12:48
  • 2
    \$\begingroup\$ I think a coulomb counter would be the right way to go here, not measuring the voltage. Or if you know how much current your circuit uses, you could even just measure the time it's been on. But how would you know that the user didn't insert a half-empty battery? \$\endgroup\$ Commented Jul 1, 2020 at 13:50

1 Answer 1


In a nutshell, measure the current periodically with an IC like INA219 and integrate it over time to know the battery consumed.

Using a shunt resistor based current monitor like INA219 you can get about 1kHz of load current sampling rate. Only situations where this approach might be less accurate is if you have many magnitudes of dynamic range of current to measure (A to uA) or if you have short bursts (few us) of high current consumed you.

INA219 current/power monitor

If you're measuring every ms, then keep accumulating the current up measured in A in variable, say charge_count. You can now check charge_count against the battery capacity to see how much capacity is left.

To calculate the battery capacity, let's take an example of a 1 Ah battery, which means you can draw 1A for an hour. So it means 1A for 3600000 ms. So you can check charge_count against 3600000 value to see how much battery is left.

Measuring the current in A requires you to convert the sampled value to float, you can change the entire calculations to use integers if you use appropriate scaling.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.