# Non-rechargeable Battery Gauge circuit / Coulomb counter

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.

• 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. – Ilya Jul 1 '20 at 12:21
• @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. – Omar Sultan Jul 1 '20 at 12:28
• 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 – Ilya Jul 1 '20 at 12:30
• That sounds very simple, I'm going to try it . Thank you very much for sharing your insights and thoughts with me. – Omar Sultan Jul 1 '20 at 12:48
• 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? – user253751 Jul 1 '20 at 13:50

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.