Today I finished the software addressing functions in my BMS firmware. I had previously been working with just one cell, getting the basic commands to work. Now I send a cell address and only that cell responds. Without this, all the cells respond at the same time and make a terrible din such that you can't understand any of them. My protocol isn't exactly fancy, but is a pain to type manually, so I wrote a very primitive monitor in C. With a computer sending commands, I found that the slave processors are too slow to keep up while they are actively monitoring the cell voltage, so I had to implement interrupt driven receive and a buffer to store the incoming command until the the slave has finished looking after it's cell.
The above graph shows 4 cells (my power supply only does 15V, which isn't enough for the 5th cell). All 4 cells are being charged at 350mA, and after 1000 seconds, cell 2's voltage hits 3550mV and the BMS starts to discharge that cell (i2 on the graph). The current lines appear to bifurcate because the current control is oscillating. The hardware isn't really designed to control current, I'm running a software control loop to make it do that, and it's a bit finicky. The software tries to keep the current within 50mV of it's target current, but the current control knob doesn't easily give it fine enough control to do that. Basically the program turns up the current, overshoots, turns it down, undershoots and repeats. I'll try a 100mV target next time.
The graph stops because my primitive monitor program detected a protocol error and stopped. The next change with be error recovery.
I expect to be hooking this up to the car and seeing what happens with the PFC30 charger in the next couple of days. Last year I made a simple BMS with a Labjack & a laptop which worked really well with my power supply but freaked out when I connected the big charger. The Manzanita PFC series is renown for injecting a lot of electrical noise into the battery.
See evd5-first-charge.tar.bz2 for the raw data.