A great and comphrehensive discussion guys

I'll just add my thoughts on some recent work I've been doing.
Now my ideas below won't be new I'm sure.
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 50x40ah 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 come up with a digital solution here which has many functions, only limited by the programmers collective ingenuity (Thats all of you ).
http://www.solarvan.co.uk/insight/digitalslave.bmp 356kb Schematic
Proteus design file here
http://www.solarvan.co.uk/insight/BatmonMinusInstruments.DSN
This uses a Picaxe 08M or (12F683 pic) 8pin chip on each cell at a cost of about £1-2.00. (pcb and discrete components extra of course but if we could get it down to £5-8.00 a cell that's not bad.) Each cell is going to be fitted with one of these small circuits. The pic has a wide operating voltage from 2-5.5v so covers virtually all the various types of Li-Ion chemistry. It sits there 24/7 (need to keep the current drain to a minimum for smaller cells, but I can afford a few ma on 40ah cells) 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. All the serial opto outputs are connected in parallel so the cells have a common data bus.
The master pic pulls the interupt 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
`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.
Once everything is working as reqd I could probably buy a job lot of the bare slave PIC's and program them in assembler with the final code.
The Picaxe basic is nice and easy for development though and can be simulated using Proteus VSM software. So any experts on schematics and pcb development want to lend a hand Come on down!
Picaxe stuff/info is here
http://www.rev-ed.co.uk/picaxe/
I'm going to make up three slave boards when I get back from hols and clag them onto three of my old TS cells, I'll fire them up and see how the idea works in practise. I don't really see any major limit to the number of cells/slaves you could have except time taken to poll them all may become excessive or the parallel leakage of the data opto may become an issue. I think a pack scan rate of once a second if I can acheive it would be good.
Peter
PS
I've specced up the outline for a very basic test board which will fit on my new cells and my old TS ones. See diagram. The darker grey areas are solder pads for the cell terminals onto which the pcb mounts.
If someone wants to put this into a pcb program and draw it up as per my schematic keeping all the components between the inner holes on the centre section of board that might be a start. Components would be on the opposite side of the single layer board, the view shows the solder side. I would prefer not to use surface mount devices so that people can easily assemble their own. (cheaper)
By keeping all the components in the centre part users could simply hacksaw off the ends if there application did not need the outer holes (Me for instance) or it was too long to fit on their cells .
http://www.solarvan.co.uk/bmspcbv1.jpg
Over to you.
Also if someone wants to convert my rudimentary code above into assembler for the 12F683 pic that's even better.
http://ww1.microchip.com/downloads/en/DeviceDoc/41211D_.pdf
Picaxe 08M or 12F683 pic datasheet.
My old website http://www.solarvan.co.uk might help people to put a name to a face
