-   Fossil Fuel Free (
-   -   Low cost / High performance universal BMS (

nlc 02-27-2012 04:21 PM

Low cost / High performance universal BMS
Hi all,

As I said on the Paul and Sabrina AC controller topic, I developped a distributed battery management system to monitor lithium cell battery pack.
This BMS is based on the distributed technic, a small slave board is mounted on each lithium cell and monitor its voltage and temperature. All the small slave boards are connected each other with a single wire, and a BMS mother board can read in real time temperature and voltage of all cells. Each cell is numbered, so it's easy to preciseley monitor all cells.

I primary developed this BMS for my private use, and because I am perfectionist it was very interesting for me to try to optimise it again and again. I don't know if you know the Guillaume Apollinaire citation :


La perfection est atteinte, non pas lorsqu'il n'y a plus rien ajouter, mais lorsqu'il n'y a plus rien retirer
If I try to translate it gives :


Perfection is achieved, not when there is nothing more to add, but when there is nothing else to remove
So I think I am close to the perfection, because now it will be very difficult to optimise the BMS slave board ;)
The board is very small, 28x24mm, but reliability and measurement precision are high (I use a 0.25% voltage reference).
So I asked myself why not sell it ? Thus I hardly worked on industrialization to optimize this time the production process, and now I think I can propose very interesting price. Price calculs are not definitively adjusted, but normally I can reach approximatively 12$ for the slave board, for low quantity ordering. For high quantity ordering I think I can decrease slightly.
This price is for local production, boards produced in France, by a manufacturer within 100km from home. It's very important to my eyes, to be sure of the production quality.

Now let's talk about the BMS slave board itself !
I begin with a photo where you can see a similar product from Elithion. But It have some flaws, I can list them if you are interested !

- Size :

As you can see, my BMS slave board (in the middle, printed at 100% scale), is very small, even smaller than Ethition board, which is already small ! My board is 24x20mm (0.945x0.787in).

- Temperature :

The thermistor is at top left angle of the board, and a milling in the board permits to increase the thermal resistance with the rest of the pcb.
Thus you can directly stick the BMS slave board on the cell, with an optionnal drop of thermal paste under the pcb at the thermistor place to optimise the thermal conductivity. With high thermal resistance between the thermistor and the rest of the pcb, it can detect quickest temperature evolution.

But the milling also permits to directly plug and solder "a pod?" at the left of the board, to connect to the negative electrode of the cell, as the elithion board. In this configuration, the thermistor has a very low thermic resistance with the pod and then the electrode/busbar, then you can easily detect a bad busbar/electrode connection with temperature elevation during high current.

The resistance measurement of the thermistor is approx 1%, and the embedded thermistor precision is 5%.

If you want to do the temperature measurement in a special location of the cell where you cannot put the slave board, I integrated the possibility to deactivate the on board thermistor and solder your own thermistor with longer wire, to place it where you want.

- Voltage

The slave board can measure cell voltage in the 2V-5V range. The voltage reference used has 0.25% precision. The analogic to digital converter is 10 bits, where the Elithion board is 8 bits, so with 10 bits the resolution is 4 time better.

- Wiring :

Board can be used as is, with direct wire soldering to +/- electrodes and previous/next cell, or a "pod" can be soldered directly on the board for direct mount on negative electrode, and screw terminal can be mounted to offer easy wiring for next/previous cell or mother board connection.
Each cell is connected each other with one wire, and first and last cell are connected to mother board. These first and last cells are special but are the same as the other, with just an additionnal optocoupler mounted on the board. Thus there are only 4 wire between mother board and battery pack.

- Security

The 4 wire between mother board and battery pack are completely isolated from the pack, to respect total galvanic isolation in the case where the traction parts are completely isolated from the vehicle low voltage domain.

- Balancing

I integrated a balancing of 200mA @ 3.6V and then approx 233mA @ 4.2V (18r resistance). Balancing can be started ON/OFF by the mother board, permitting to optimize balancing algorithm if needed, and thus not just activate them when the cell reach max voltage, which is a terribly bad algorithm if the charger is not able to lower its current under the balancing current value !!
I integrated the possibility to add an external power resistance for those who want a bigger balancing current, with big and very accessible pads for easy soldering. Also, there is a timeout in the slave board, if balancing is not set to off after a period of time, it is set to off automatically, in case of communication loss with mother board for example, to not completely discharge the cell.

- Firmware

If firmware is updated because of a bug or an additional feature, you can flash it yourself with a very low cost PIC programmer, without remove boards from the pack (just take care that the programmer is the only thing connected to the vehicle).

- Protocol

Because these BMS slave board needs a mother board to take decision (stop discharging, stop charging, display info,...) or manage the datalogging, and because the mother board development is not finished from my side, I took the decision to open the protocol to anyone, to communicate directly with the BMS slave boards and easily get the voltage/temp of any cell or set on/off the balancing of any cell, with any electronic device having an available RS232 port. Thus it can be a 8 bits micro-controller or a multi cores computer !
I will also provide the interface board and the schematic of the interface board to communicate with the cell slave with direct connexion on a RS232 port.

- Installation/configuration/debugging

As you can see, wiring is easy and clean. Configuration is also easy because....there is no configuration ! With the protocol I designed, cell addressing is automatic, you just get a dataframe with a header and data blocks, where each 5 bytes data block corresponds to a cell, from the first one to the last one. Also, a checksum permits to be sure data are not corrupted.

If there is any problem in the slave board daisy chain, the entire chain will be stopped, thus you can detect immediately there is a problem somewhere (you don't receive the frame answer form the pack). And because there is a led on the board which flash on each voltage/temperature frame request, and the frame request pass through all slave boards, you just have to look where the chain is broken because the led doesn't flash ! If just 3 leds flash, thus the problem is on board 3, board 4, or between the board 3 and 4 (wiring). World speed record to find where the problem comes from ! :p

As you can see, my message size is inversely proportional to the size of my BMS slave board :D
I think I don't forget anything, and I hope this message was not too soporific, you can wakeup now !! :D

jmcginley 02-27-2012 04:56 PM


My ev is powered by lead-acid batteries, so I'm not up to speed on battery management systems, but my day coming - I will be sure to follow this thread! I love your quote from Apollinaire!

Daox 02-27-2012 05:58 PM

Can you explain the operation of the BMS a bit more? You can handle charging protection with the voltage sensing, but how do you handle discharge protection?

mrbigh 02-27-2012 06:38 PM

I'm already listening to this new thread, lets see the mini beast at work!!!!!

nlc 02-27-2012 07:41 PM


Originally Posted by Daox (Post 289643)
Can you explain the operation of the BMS a bit more?

No problem !


Originally Posted by Daox (Post 289643)
You can handle charging protection with the voltage sensing, but how do you handle discharge protection?

Actually, the part I developed, thus the BMS slave boards,are just slave which measure voltage and temperature of cells, and send theses measure to a master (I call it mother board but master boars is a good name too).

The job of the master board is to request voltage and temperature of the cell from the slave, and take decision :
More important decision for example is to tell the charger to pass to low current charge mode for balancing, completely stop the charge, tell controller to stop discharging the pack (at a first low voltage threshold for example), and why not cut completely the power by opening the main contactor at a second lower voltage threshold.

From my side I have not finished the development of the master board, because I want to take time to really think it to be perfect for EV usage.

But because these slaves modules can be used as is with any device which have a RS232 port, with a very simple electronic interface, I think it can be useful for any DIY guy which want to closely monitor its lithium pack, why not do datalogging and so on.

Daox 02-27-2012 08:41 PM

I like the system, but I see a problem with only using voltage for your discharge protection. From my experience with the PHEV kit on my Prius, the variance in load and temperature drastically effect the voltage sag. Using at least a set voltage is not going to work. However, if you have enough data to create a variable voltage cutoff based on load and temperature that could work.

What I have done with my BMS system is I have used a current sensor to count how many amp hours have been used out of the batteries. I don't think this a great way to do it (peukert effect obviously effects even lithium chemistry), but its the best thing I've come up with.

nlc 02-28-2012 04:37 AM

You are right, but the job of the slave board I presented here is just to measure temperature and voltage of each element, and inform the mother/master board. The current measurement (which is mandatory to have a good management system) is the job of the mother/master board, which can do SoC and display it on a screen if necessary. The master board + slave board permits very modular system, because for example if you want to increase you battery pack voltage, you juste have to add slave board on the pack to monitor the new cells you added. You goal is here, modular system with illimited number or cell, and maybe different mother board depending on the user needs (complete SoC system with display, just datalogging of voltage/temperature of each cell, etc...)

But from my side the master board is not ready for now, but my idea was to propose the slave board alone for now, because with the open protocol I give they can be used by DIY guys with they own developments, to do a complete BMS system (the complicated part is to measure voltage and temperature of the cells, not pilot relays/contactor to start/stop charge or decharge, or measure current, etc...), or for example juste do precise monitoring and datalogging of the cell voltage during charge and decharge, and so on.

nlc 02-28-2012 07:19 AM

In my section "Installation/configuration/debugging" I forgot to say that the entire system can be tested before installation on just one element (or variable power supply). Just need to wire all negatives and positives poles of the slave boards in parallel on the same supply, and wire normally the daisy chain between slave board. It's possible because I designed the electronic to have the communication between slave board working even if slave board are on same ground potential (not possible on Elithion for example).

Very useful to simulate a true installation without having multiple elements en series, but just one power supply. Thus it also permits to verify that all slave elements gives exactly the same measured voltage and then precision is really in tolerance.

For the price, I just received a new quotation for the board manufacturing, within 60Km from house this time, very good new, it is less expansive than the first, and now I can propose the slave board for ~10$ !

nlc 02-28-2012 07:32 AM

Daox, I looked your link about your BMS. Typically, if you just add a very simple interface on an availlable RS232 port of your arduino board, you can be able to directly receive all the measured voltage and temperature of all the cell. Useful to do datalogging, monitor the cell voltage evolution associated to current, etc...
Or simply manage correctly the balancing function with activation of cell balancing with anticipation.

nlc 02-28-2012 08:49 AM


Originally Posted by nlc (Post 289758)
For the price, I just received a new quotation for the board manufacturing, within 60Km from house this time, very good new, it is less expansive than the first, and now I can propose the slave board for ~10$ !

Oups !! I had not watched the change rate euro/dollar from long time, in fact 9 is 12$ !!

All times are GMT -4. The time now is 08:05 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, vBulletin Solutions Inc.
Content Relevant URLs by vBSEO 3.5.2
All content copyright