View Single Post
Old 02-27-2012, 04:21 PM   #1 (permalink)
EcoModding Lurker
Join Date: Jul 2011
Location: France
Posts: 90
Thanks: 3
Thanked 61 Times in 28 Posts
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 !

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

  Reply With Quote
The Following 7 Users Say Thank You to nlc For This Useful Post:
EcoReality (03-17-2014), gtx90 (03-01-2012), LouMan (04-10-2012), mikeyjd (07-14-2013), MPaulHolmes (02-27-2012), mrbigh (02-27-2012), TadhBijou (02-29-2012)