arduino based BMS

hi guys i'm new to arduino programming and really want to build a sort of simplified battery management system that will cut off the charging of the battery once it reaches a set voltage as well as cut off when discharged to a set voltage and i'm really not too sure how to even start. please do advice.


mode 1

12v lead acid battery

cut off charging at 12.8/12.9v ( green led light up)

cut off discharge at 10.8-11v (amber led light up)

connection error (red led)

Will that battery be powering the Arduino?

You will need a pair of resistors to make a voltage divider to bring the max voltage below 5v for measurement by an Arduino analog pin.

When my lead-acid battery is charging the charge voltage goes up to about 14.9v. I don't think you can control the charging based on voltage. I normally switch off my engine when the charge current falls below a certain level.

What will you be using to charge your battery?


would it be better to use a seperate battery to power the arduino? as for voltage wise its what is required of from the project im working on as for the charge its a charger meant to charge lead acid batteries and is supposed to cut off on its own but the arduino is meant to be a back up as they chargers sometimes dont cut off even though the voltage is way higher than its supposed to be.

hey thanks xD but i know how lead acid batteries work. really just need help with the arduino aspect of it

The Arduino has to control whatever charger you plan to use.

How about giving some hints?

jchow123: cut off charging at 12.8/12.9v ( green led light up)

jchow123: hey thanks xD but i know how lead acid batteries work. really just need help with the arduino aspect of it

Not so easy to reconcile those two statements.

Post a link to the datasheet for the charger you propose to use.


cut off charging at 12.8/12.9v ( green led light up)

You [u]definitely[/u] need to review how lead acid batteries are charged.

no i get it. but that was what was asked of me. to cut off the 12v sla batteries once they get to 12.8v cause the batteries are old and normally have a max voltage of just about there. regardless of if they are left to charge for 24 or even 48 hours they just heat up without even going past 12.9v for most of them the more common voltage we stop the charging at and is accepted by my boss is around 12.8/12.9v and after it settles it normally lowers to 12.7v which is acceptable for a 12v battery no? . the intended use for the system is to act as a fail safe that will stop the batteries from over charging and heating up if left to charge over the weekend accidentally and if they need to be charged more they can be charged more once a person is around to monitor them. maybe i wasnt clear enough initially . sorry as for the charge its the weekend right now i cant for the love of god recall what brand it was we use. but it does have a float charge function that never seems to kick in. ive tried charging a brand new cell till it showed a 14.5v voltage but still no float charge . unless i turn the charge on and off while connected to the cell. it dosent seem to automatically switch to a float charge. thus this system to just turn it off . and wait for a human to come round a asses the situation. as for discharging we connect it a load to test the discharge rate and well you arent supposed to discharge a 12v sla past what 10.5v? so yeah just need it to cut off slightly before that.

The simple and foolproof solution to prevent over-charging is to use a battery charger that outputs 12.6v. Then when the internal voltage reaches that level no current will flow and you can leave the charger connected indefinitely. No need for anything complicated like an Arduino.

If you use a charger with a higher voltage for a faster charge then it is impossible to tell by measuring the voltage whether the battery is fully charged. You would have to disconnect the charger and allow the battery to settle unused for 12 hours or so and then measure the battery voltage.


That's what I thought. But the charger used is at 14.6v if I'm not mistaken and there lies my problem. As my boss doesn't want to spend the money to replace all 10 charges we have . Hahaha any ideas? Can't do it by current either can I ?

That’s what I thought. But the charger used is at 14.6v

Then there is no means to know when the battery is fully charged because the voltage will be 14.6v all the time - at least once the charge current falls to the level available from the charger. All you can do is control the duration of the charge.

Have a look at how multi-stage chargers are controlled. This Sterling charger is what I use and there are useful graphs in the manual.


all righty thanks for all the helpp !