It is a 3-level system:
- cell level: 4-channel module with bit length coded serial communication
- module level: isolator module with text based communication (similar to inverter) over RS485
- module level: isolator module with CAN bus, current sensor input, relay and fuel gauge simulator
- Top level: Linux computer (beagleboard, raspberry etc.)
- Alternatively I will try to squeeze BMS software into the isolator
- Current sense/IO-module also on RS485 bus
They do balancing via a resistor and a LED in series. That way even a faulty balancing transistor cannot completely discharge a cell but it stops at the LED forward voltage. Designed balancing current is 20mA. Balancing takes place when the pack is idle i.e. 1h after charge or discharge and then over several hours.
The bus only uses one wire. Even though it is daisy-chained it is failsafe, i.e. if one module does not work it will not interrupt the bus. The modules are self-addressing in order of wiring.
At the beginning of the string the isolator is connected to B+ and Data-In, and the same isolator connects to B+ and Data-Out at the end of the string.
So that's the theory, today I did some practical tests. I mounted 3 modules in Polo and little surprise they worked. But now I switched on the inverter and let it run in creep-mode (i.e. spinning the motor at 200rpm). Instantly communication collapsed, there were quite prolonged pulses (2µs) even behind the opto. I also experienced the famous EMC paradox: as I increased load on the motor communication picked up again. Fortunately there were no issues in charge mode (same inverter, same pulse frequency). So in that discipline, the infrared system wins.
The modules still understood their commands as they were flashing.
Update May 19: Communication is pretty much sorted by now.
Update February 20: Communication protocol changed to 10kbaud UART - now runs fine while charging and driving
So next I will try coax cable between the last module and the isolator. More extensive low-pass filtering is not an option as the cutoff-frequency is getting close to the baud rate.