0
\$\begingroup\$

I have been trying to coulomb count to identify how much charge is stored in a battery. They way I do this is as follows:

  1. Every second, I measure how much current is fed to the battery.

  2. Charge would be the integral of the current. In other words, If I found the area under a Current VS. time graph, I find the charge.

  3. I am implementing this on Arduino. Since Arduinos are not easily capable of doing integration, I am finding the area by doing current*1 second for each value, so essentially I am adding all the current together since they are taken at 1 second intervals.

  4. This gives me a capacity value in As.

There are Problems with this

  1. I am somehow creating energy. For example for one cycle, It took 600 seconds to charge but it took 640 seconds to discharge, since the current is constant, that means the battery is somehow discharging more current than it was charged with!

  2. When I charge at a higher current 800mA for example, I get much much smaller capacity ratings than If I charge with smaller current, 250mA. How on earth does this make sense?

当我在250毫安充电,值更接近the nominal value listed on the website (500mAh). When charging at 750mA, I get something along the lines of 380mAh.

For my case, these are the batteries I am using the following batteries :https://www.ampsplus.co.uk/ampsplus-14500-3-2v-500mah-battery-button

\$\endgroup\$
10
  • 1
    \$\begingroup\$ How does your circuit measure the battery current? Could you provide a schematic? What do you mean with ”Arduinos are not easily capable of doing integration”, it should be trivial to do - measure current, multiply by time elapsed since previous measurement, add result to the variable representing total charge. Rinse and repeat \$\endgroup\$jms Jun 2 at 3:25
  • \$\begingroup\$ Initial conditions are unknown and repeatability of your experiments was not stated. you must be aware you overlooked the assumptions that define energy stored and added. There is also a memory effect due to the double-layer effect. This question lacks details to analyze your measurement errors. Also beware that charging beyond rating might increase capacity at the expense of rapid aging. A spreadsheet of results and schematic of setup is necessary \$\endgroup\$Tony Stewart EE75 Jun 2 at 3:32
  • \$\begingroup\$ Q=CV and Ic=CdV/dt + V dC/dt = dQ/dt but C is not constant and there are at least two ESR*C circuits in parallel with the battery model. \$\endgroup\$Tony Stewart EE75 Jun 2 at 3:40
  • \$\begingroup\$ Batteries are always charged with energy (joules.) The coulombs flow THROUGH the battery, and do not build up inside. (We give batteries a "charge" of energy, not a "charge" of charge.) Battery chargers do not provide any coulombs. They only force the battery's own internal coulombs to move around inside. To calculate the battery's state of charge, integrate the watts, i.e. the instantaneous V x I. (You'll get crazy results if you ignore volt-changes, and only look at coulombs.) \$\endgroup\$wbeaty Jun 2 at 4:09
  • \$\begingroup\$ @jms The current is measured every second and this is logged using an Arduino. The current is measured using an INA219 chip, here is the datasheetti.com/lit/ds/symlink/…. Regarding the integration part you mentioned, that is exactly what I am doing yes. \$\endgroup\$fred Jun 2 at 16:56

2 Answers2

4
\$\begingroup\$

I am somehow creating energy. For example for one cycle, It took 600 seconds to charge but it took 640 seconds to discharge, since the current is constant, that means the battery is somehow discharging more current than it was charged with!

Charge is not energy - you have to consider the voltage of the battery as well as the current.

When I charge at a higher current 800mA for example, I get much much smaller capacity ratings than If I charge with smaller current, 250mA. How on earth does this make sense?

This is typical for batteries. At higher currents more of your charging current is converted to heat and is not stored in the battery as chemical energy.

Consider, for instance, modeling a real-life battery as an ideal battery in series with a small resistor R (it's output impedance). The power loss in the resistor is I^2R, so the losses during either charging or discharging will increase with greater currents.

\$\endgroup\$
    1
    \$\begingroup\$

    I am somehow creating energy. For example for one cycle, It took 600 seconds to charge but it took 640 seconds to discharge, since the current is constant, that means the battery is somehow discharging more current than it was charged with!

    You don't know whether you are 'creating' energy unless you also take the voltage into account. But you do seem to be 'creating' charge. Since this is impossible you have to consider possible reasons for the apparently anomaly:-

    1. You did not measure the charge accurately.

    2. You sucked more out of the battery than you put in, resulting in a lower state of charge than before you charged it.

    The difference between 600 and 640 is less than 7%. A combination of measurement inaccuracy and poorly defined end point could easily cause this much variation.

    When I charge at a higher current 800mA for example, I get much much smaller capacity ratings than If I charge with smaller current, 250mA. How on earth does this make sense?

    You may not be waiting long enough for the battery to receive a full charge. At higher current the battery's internal resistance will cause the terminal voltage to reach its limit earlier, before the battery has absorbed the full charge. When this happens you need tokeep charging(at 'constant voltage') until the current drops to a low level, eg. 10% of the set charging current.

    If you had kept charging until the current dropped to 250 mA the battery would have achieved approximately the same capacity as if you had charged it at 250 mA continuously.

    \$\endgroup\$

      Your Answer

      By clicking “Post Your Answer”, you agree to ourterms of service,privacy policyandcookie policy

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