I’m trying to finish up the PCBs for the boat this weekend and thought I’d share this little solution I thought was kind of neat.
Among other things, we need to measure the battery pack current, and fairly accurately This is mainly so the BMS can keep track of the approximate battery state of charge — i.e. percent charge remaining. To do this we need to measure the load current and the charger current all the time, and basically count coulombs in and out. (There are some more sophisticated things you can do by doing calibration, tracking impedance and temperature but I don’t plan on doing any of that craziness for something like this. There are some cool state of charge ICs out there as well, and you actually calibrate them with the cell you’ll be using. Pretty cool.)
Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !
When I was developing Arduino-based lithium battery chargers for an electric vehicle lab course at Portland State, I used low-side current sensing with an op-amp at first and had a very hard time dealing with noise at those millivolt levels. Instead we used current sensing chips, in our case Allegro’s ACS712 series (Digikey link). A Hall sensor measures current magnetically from isolated pins, so you can put it anywhere, low-side or high-side. A nice analog voltage output proportional to current can be connected directly to an Arduino analog input. Very easy and accurate.