The old system using lead-acid batteries lacked range but it was very simple to maintain. Just plug in the string of batteries. Rely on self-powered balancing modules to keep the batteries even. For 12V needs, use a DC-DC converter to convert 48V to 12V. It was simple. It was reliable. But it lacked range.
The new batteries have better performance but they are very fussy. The new Battery Management System (BMS) requires a separate 12V battery. That requirement made the new wiring system much more complicated. In order to simplify wiring, I decided to use a common ground between all systems. After all, ground should be ground right? Anyway, the cowl lighting checked out OK using the 12V battery. The BMS also worked just fine on the 12V accessory battery. The 48V circuit also seemed to check out as well as I could test it. At last, it was time to make a big happy common ground between the main pack, the 12V accessory battery and the DC-DC converter. The charger was off as well as the ignition but the main battery pack and accessory battery pack were of course live. So, it was time to put the 12V and 48V grounds together - POW! Stupid me! I hadn't checked first to see if there was any potential between the grounds!
In spite of a faint electric smell, the main systems seemed to check out. The DC-DC converter, all 12V lighting, including my digital speedometer seemed to be unharmed. The speed controller (and traction motor) also seemed to work fine. However, there was one very expensive exception. My Elite power BMS now had no display! Not only that but the secondary display didn't work either! I apparently fried the LIN HUB or the main BMS module. Either way, it was a major problem since both components were no longer sold by Elite Power. What was worse was that new BMS components from Elite power are rather expensive!
Unfortunately, the problem was worse than I realized. The idea of tying together the traction pack ground and ground to the accessory battery was flawed from the start. If I have even the tiniest voltage leak, I'll build up potential again, have the sparky problem again and probably blow out yet another component on the 12v side. So, I've used what I've learned to redesign the 12V wiring to be completely isolated from the 48V circuit.
As for replacing the BMS, the TinyBMS system looked relatively simple, scalable and was not too expensive. In a nutshell, here's how the system works. The modules balance each battery and also participate in a series control loop much like a home-alarm system circuit. If anything strange happens to an individual cell such as it going too high in temperature or dropping too high or low in voltage, that module will break the loop to signal the main board that all is not well. The the control board has an on-board buzzer that can sound an alarm and has an optional circuit to reduce the throttle to a lower power "limp home" mode. When charging the batteries, the modules can trigger a charger cutoff (if the charger supports that kind of signal). The the status of each battery can be seen via LED blink patterns on each module.
The modules were available for 3.6Volt or 3.8Volt calibration. My battery formulation, being LiFeMnPO4 was different than the LiFePO4 this BMS was made for. So, I wondered if I could use this BMS. The batteries that I have measured around 3.2 Volts. However, I seemed to recall values as high as 3.6v displayed on the previous BMS system in the past when the batteries were charging. Although the upper charge voltage may be in question, I believe on each type of battery I'm aware of, the discharge voltage should be no lower than 2.8v. So, I went with the 3.6Volt type.
There are other problems with this inexpensive system. The first question I had was to see if my charger could be controlled with this board as it was with the previous board. After some research, I found rather than expecting a simple logic signal level of say 3.3 or 5V, the charger I had requires a digital protocol called CAN to turn off the charger. Fortunately, the absence of any signal allows the charger to default to being on. So, as a workaround, I've ordered a solid state relay (and heat-sink) so the new BMS board can simply turn off current to the charger.
Unfortunately, the simplicity of the BMS board is also problematic. The BMS board can detect if the series battery circuit has a problem - but not WHY it happened. An open in the string could be caused by a battery being "empty" from discharge or "full" from charging. The solution to this is to have a 12V input signal called "ignition" . To accomplish this, a key-controlled circuit and pilot light show when the circuit board monitors does not protect the batteries from overcharge.
In summary, what I gain from this BMS system is a low price and relative simplicity. The BMS protects against catastrophic fire, undercharge and provides shunt based cell balancing. Each module also provides visual LED status on each cell to tell what each module is doing. That's really nice since you can actually see cell balancing in action. What I don't have is granular per-cell voltage information I can read from the dashboard nor any estimate of how much energy is probably left in the pack.