The past couple of months have been fairly heavy going with this project - a final push to get a BMS designed, built and installed. We're beginning to see light at the end of the tunnel.
The MK2 prototype is now installed although more work is needed to move the current the measurement functionality across to the new system.
Just a quick re-cap on this project so far:
12 CALB 210Ah batteries purchased from EV Support in 2017, and installed with no BMS.
The only means of monitoring for the first year was via a 5 digit panel volt meter, and 3 ammeters.
A under/over voltage cut off switch was implemented using a BlueSea Systems remote controlled switch wired to two off-the-shelf voltage switch modules.
In 2018, a rudimentary means of estimating state of charge was lashed together using a raspbery pi zero and a waveshare ADS1256 module.
A few op-amps in a breadboard provide some level shifting and scaling for the ADC. Two years later, this lash-up is still running in on a breadboard on the top shelf of the electrical cupboard.
The means of logging data via a google sheet, and plotting using the graphing facility has proved to exceed our expectations regarding reliability and flexibility. It's extremely useful to be able to view the live graphs from anywhere using the google sheets app and it has the ability to share access with family members etc...
Time eventually came to build a MK2 unit to overcome some of the limitations, and make a proper installation. Also by this point, I was beginning to get a little nervous about what might be going on with the individual cell voltages. We have only ever carried out spot checks on the cell voltages, but there's never a convenient time to do it. Looking at my spreadsheet, the last measurements were taken nearly a year ago!
By this point I have a reasonable idea of what was needed, and what I wanted! I was hoping that an off-the-shelf system would be available by now, as what we're doing isn't exactly novel, and we're not alone in needing a means of precisely measuring multiple voltages. Each time i've looked, the available systems haven't satisfied our specific needs. For instance, many of the multi-cell monitoring solutions are designed for long strings of cells in series, not series-parallel combinations. Also i'm not convinced by the accuracy if the individual per-cell PCB modules as the ones i've seen just rely on the built-in reference within the microcontroller. Having become accustomed to seeing the overall pack voltage displayed with mV resolution and how useful this is whilst observing charge/discharge, I was determined to design something at least as good, but also had an accuracy to complement this resolution. i.e. able to measure the 12V pack voltage within few millivolts.
Our setup adds extra complication in that we have 12 cells to monitor. Whilst we could add connecting links between the cells to reduce the number of voltages which need to be monitored, we've chosen not to add the links for the following reasons; Firstly it would be a bit awkward due to the physical layout. Second I believe it might reduce the fault resilience of the pack i.e. 1 faulty cell might then take out 2 more cells. Finally it would not be easy to measure the individual performance of the cells without breaking the links.
The system I've ended up designing, for the most part follows a very traditional layout of ADC, instrumentation amplifier and multiplexer. It provides 30 measurement nodes with a somewhat unusual, but flexible multiplexing scheme. It is possible to measure differential voltages between any two nodes; therefore only 5 nodes are needed per battery pack. This scheme enables the polarity of the measurement to be taken in forward and reversed directions. By subtracting the reversed measurements it is possible to eliminate voltage offset of the signal path. A precision voltage reference IC is available via internal nodes 31 and 32 to allow the system to continually self-calibrate.
The C code for the raspberry pi is now fully written, I've ended up reusing most of my old python script for uploading the data samples to google sheets. The next phase is to produce some meaningful graphs/dials on the google sheet using the data. I've ended up doing a fair bit of verification work on this prototype unit, even checked it against a reference standard. At 10V the measurement error against the standard was less than 1.5mV. This equates to an error of 0.015%, which is acceptable and well within the spec of the reference IC. It's possible to further reduce this either by using the trim facility available on the reference IC, or by software calibration. I don't think it's necessary to go that far.
With the system installed on the boat, a comparison of the sum the individual cell voltages, with the measured overall voltage was found to give a discrepancy of less than 100uV on each of the packs.
So after 3 years without balancing, the battery pack isn't looking too bad. We'll need to leave the monitoring system to gather more data across a range of SOC. Initial data with the cells with a light load and at about 75% SOC is showing a maximum cell to cell variation of 2.5mV.
There's still a lot of work to do on this project. The next job is to retire the old lash-up system but to do that the battery current measurement signals need to be moved onto this MK2 system.
I've drastically underestimated how time consuming this project would be to complete. My biggest oversight so far has been the time taken to build of the prototype unit. I wish i'd gone straight to PCB. After all i'd gone to the effort of properly drawing up the schematic. Due to the way i'd drawn the schematic, I underestimated the sheer number of interconnections needed - well that's 8 days i'm not going to get back!
Making the cable assemblies also seemed to take forever. At least the end is now in sight!
Photo shows prototype MK2 unit assembled onto lid of diecast enclosure.