I thought I would start this thread to pull together BMS (Battery Management Systems) ideas for Insight projects.
I've been dabbling and experimenting over last few weeks and I do like the idea of an intelligent expandable BMS. Appologies in advance for my schematic skills, I could also only export the diagrams to a bmp file.
For any BMS there are an ever increasing number of desirable features
But we have to draw the line somewhere for the sake of reproducability, practicality and cost.
I would like a BMS to monitor individual cells (in my new Li-fepo4 pack) or subpacks (In the case of the Insight)
I would like to know the cell V and temp, the pack capacity and voltage etc.
I've looked at an analogue solution here, now although this monitors cell voltage, it keeps it to itself, it does not monitor temp either
http://www.solarvan.co.uk/insight/analogueslave.bmp 356kb
Each cell is fitted with the above circuit, all the High V and Low V opto outputs are in parallel, basically when any cell goes over or under V it makes the high V or low V circuit and something monitoring the parallel outputs can respond as reqd. It also has a basic balancing function which introduces a 250ma load to any cell which goes over preset limit. It has seperate over and under V limits, the parallel high V output can sound an alarm/light and even control an charger. So this solution is cheap and cheerful simple electronics. Thoughts.
I've also looked at a digital solution here which has many more functions, really only limited by the programmers ingenuity.
http://www.solarvan.co.uk/insight/digitalslave.bmp 356kb
This uses a Picaxe (pic) 8pin chip at a cost of about $3.00 for the main part. Each cell in my case is going

to be fitted with one of these. It sits there 24/7 (need to keep the current drain to a minimum) running a cell monitoring program checking the cell (subpack) voltage against it's reference. It's also checking the cell temp, and activating it's balancing load if the cell goes over Max V. Now this idea uses an opto isolated serial bus for comms with the master PIC and dashboard display. Again all the serial opto outputs are connected in parallel so each cell has a common data bus.
The master pic pulls the interput opto of cell one high and triggers an initial delay of say 0.1 seconds in the slave pic, the slave then starts the serial data output routine which dumps the cell data onto the bus for the master to receive and record. The act of data transmission triggers the interupt on cell two which waits for 0.1 seconds and then transmits it's data, add infinitum along the pack. The master recieves and checks all the data (Missing data can simply trigger an alarm condition etc) it then acts on data as reqd, calculating pack voltage from sum of cells, checking for over temp condition, etc etc etc.
Note on the first cell in the pack the master PIC would be connected to (pins 1 and 2) of the interboard connector to initiate the interupt sequence, the cell 1 slave would then connect it's output (pins 3 and 4) to the input (pins 1 and 2) of the next slave. Hope that makes sense, like a cascade effect. Bit of work to do on timing of data etc and all slaves must run the same software.
I'm off on hols now for a couple of weeks, I'll take a few schematics and have a further think. More ideas very welcome.
Here is a first draft slave PIC code
Quote:
`Battery Management System Slave Module
`Based on Picaxe 08M microcontroller
`Original concept, hardware and code by Peter Perkins
`peter@solarvan.gotadsl.co.uk
`V1.00 280508
`Byte Variables for speed
`b1 = Cell voltage
`b2 = Cell temperature
`Balancing voltage is set at >3.75v For Li-fepo4 cells
start: `Initialise program and variables/interrupts as reqd
setint %00001000,%00001000 `Activate interrupt when pin 3 goes high
main:
low 2 `Pull pin 2 low to draw current through the ref 1.25v diode
pause 100 `Wait 0.1 of a second
input 2 'Turn off current and turn pin 2 back to an input
readadc 2, b1 `Measure the voltage stored across the capacitor
b1 = 255 - b1 `Invert the value of b1 so higher voltage = higher value
If b1 > 170 then `Turn on cell balancing load if voltage >3.75v
high 1 `Turn on load resistor
else
low 1 `Turn off load resistor
endif
readadc 4,b2 `Read the cell temperature into variable b2
goto main `Goto main loop
interrupt: `Send cell data to master Picaxe via opto serial bus
pause 100 `Wait 100 milliseconds to ensure data received OK and prior Pic has sent data
`This may be cut or removed depending on hardware response
sertxd(b1,b2) `Send raw cell/slave data to master, include :-Cell V, Cell temp
setint %00001000,%00001000 `Reset the interrupt and wait for another data request.
return `Return from interrupt to main program.
|
Picaxe stuff/info is here
http://www.rev-ed.co.uk/picaxe/
Peter