Flying ADC 16 channel BMS 96S test
Re: Flying ADC 16 channel BMS 96S test
I’ve calibrated the BMS modules and plan to start balancing now.
Below is a spreadsheet with the measured voltages and calibration parameters:
https://docs.google.com/spreadsheets/d/ ... sp=sharing
In the calibration sheet, you’ll find the measured values and the calibration parameters.
Some differences in the bmsX_diff column are a bit higher than a few millivolts, but I’m attributing that to manual measurement error.
My plan for balancing is to set balmode to 3 (do both), set the ucellmax to 4100 mV, and the ubalance to 4050 mV. I have a charger ready that will supply 1–2 A to the battery until balancing is complete.
I also noticed the updates for temperature sensors are now available in the firmware. I’ll finish balancing first, then update the firmware and verify the temperature sensor readings afterward.
Below is a spreadsheet with the measured voltages and calibration parameters:
https://docs.google.com/spreadsheets/d/ ... sp=sharing
In the calibration sheet, you’ll find the measured values and the calibration parameters.
- bmsX columns show my manual cell voltage measurements
- bms_m_X columns show the BMS readings after calibration
- bmsX_diff shows the difference between those measurements
- Rows 21 and onward contain the gain and correction values.
Some differences in the bmsX_diff column are a bit higher than a few millivolts, but I’m attributing that to manual measurement error.
My plan for balancing is to set balmode to 3 (do both), set the ucellmax to 4100 mV, and the ubalance to 4050 mV. I have a charger ready that will supply 1–2 A to the battery until balancing is complete.
I also noticed the updates for temperature sensors are now available in the firmware. I’ll finish balancing first, then update the firmware and verify the temperature sensor readings afterward.
- johu
- Site Admin
- Posts: 6421
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 290 times
- Been thanked: 1383 times
- Contact:
Re: Flying ADC 16 channel BMS 96S test
Nice work. What's with u14?
While balancing you shouldn't run any current through the pack. Just let it sit.
In my car I set ubalance to 3750 mV so that it has more time to balance. Otherwise it balances only when nearly full.
Looking forward to your temp sensor tests. Do you have a current sensor connected yet?
While balancing you shouldn't run any current through the pack. Just let it sit.
In my car I set ubalance to 3750 mV so that it has more time to balance. Otherwise it balances only when nearly full.
Looking forward to your temp sensor tests. Do you have a current sensor connected yet?
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
Re: Flying ADC 16 channel BMS 96S test
Thanks. We missed to measure u14 manually, but since it's on the same channel as most of the other channels I didn't think it's too important, and friend with the multimeter that we used to measure, already left garage. 
Ok, can do without charging. I already pushed some electrons in the battery - highest voltage cell is around 4050 mV. I will set ubalance to lower value like you did, primary goal is to balance them initially since it was about 210 mV delta in the pack as cells was never charged to full.
I have ISA shunt connected and have that configured on the BMS but didn't see any values except 0... Do I need to make some additional setup? shunt uses default configuration.
If idcmode is set to off, then it will not affect balancing start, right?

Ok, can do without charging. I already pushed some electrons in the battery - highest voltage cell is around 4050 mV. I will set ubalance to lower value like you did, primary goal is to balance them initially since it was about 210 mV delta in the pack as cells was never charged to full.
I have ISA shunt connected and have that configured on the BMS but didn't see any values except 0... Do I need to make some additional setup? shunt uses default configuration.
If idcmode is set to off, then it will not affect balancing start, right?
- johu
- Site Admin
- Posts: 6421
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 290 times
- Been thanked: 1383 times
- Contact:
Re: Flying ADC 16 channel BMS 96S test
Oh, well I'm afraid that's not yet implemented

Not quite sure what the best approach for the shunt is. I could use the full ISA class that sets up the shunt or just assume the shunt has been configured and listen to its data.
Yes
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
Re: Flying ADC 16 channel BMS 96S test
I'm using new web UI for BMS... it's great...
Added some quick code to display BMS info on dashboard if response is not from the inverter but from BMS.
Added some quick code to display BMS info on dashboard if response is not from the inverter but from BMS.
Re: Flying ADC 16 channel BMS 96S test
Oh, I was thinking it could be just mapped as you say but haven't tried.johu wrote: ↑Tue Jan 07, 2025 4:46 pm Oh, well I'm afraid that's not yet implementedWill do that next. However, you could just manually map it to idcavg
Not quite sure what the best approach for the shunt is. I could use the full ISA class that sets up the shunt or just assume the shunt has been configured and listen to its data.
I'll try mapping, but it's not on my priority list. And if it could me mapped than I don't think any additional implementation is needed.
Re: Flying ADC 16 channel BMS 96S test
I've updated above document and added balancing sheet. It contains latest readings for all cells.
And here is my parameters file ...
Current delta is about 175 mV. I think it dropped from the 210 mV initially because of the charging cells and various SOC accross series.
I collect all CAN data into the influxdb so I can browse history easier...
Here is values in the last six hours.
There is constant voltage drop visible in the chart... that is because of the constant load of about 80 mA for powering supporting hardware.
And here is my parameters file ...
Current delta is about 175 mV. I think it dropped from the 210 mV initially because of the charging cells and various SOC accross series.
I collect all CAN data into the influxdb so I can browse history easier...
Here is values in the last six hours.
There is constant voltage drop visible in the chart... that is because of the constant load of about 80 mA for powering supporting hardware.
- uhi22
- Posts: 1007
- Joined: Mon Mar 14, 2022 3:20 pm
- Location: Ingolstadt/Germany
- Has thanked: 166 times
- Been thanked: 566 times
Re: Flying ADC 16 channel BMS 96S test
Which tooling do you use to create such kind of charts? Searching a "simple" tool where I put just the data in and can pan and zoom on the fly.
Github: http://github.com/uhi22 --- Patreon: https://www.patreon.com/uhi22
Re: Flying ADC 16 channel BMS 96S test
I'm not aware of a tool where you can simply input data and explore it interactively without some setup. Typically, it involves using a database and a reporting tool. It depends on your data format, requirements, and how much effort you're willing to invest. If it’s CAN bus data, you might find SavvyCan useful for generating charts.
In my case, part of my project involves a .NET Core app hosted on an RPi. Multiple devices stream binary data (CAN, I-Bus, serial) via an MQTT broker. I wrote custom parsers for serial (inverter) and I-Bus (BMW car network) data. For CAN bus, I developed a parser that uses DBC files as definitions. Adding a new device is as simple as placing its DBC file in the system.
One reason I chose this BMS is its CAN bus communication. Using a sample DBC file from the forum, I made some tweaks, placed it in the folder, and the system automatically decoded and stored the data as points in an InfluxDB time-series database. This allows easy historical browsing and serves as a source for real-time graphs and gauges. If you’re interested, I can share the code or maybe, just isolate the CAN bus parser.
For visualization, I use Grafana to query the InfluxDB database. The setup handles a significant volume of data—for example, six BMS boards generate seven messages every 100 ms, amounting to nearly 2 million data points in a 6-hour chart. To manage this, the data is grouped during queries to reduce processing load. Zooming in fetches a smaller, more detailed dataset for the visible range.
I host this on an RPi5 with an SD card and 8 GB RAM. While it works well, large ungrouped queries over a wide range can cause the RPi to crash—RPI just crashes (not yet sure if it's influxdb or grafana).

Re: Flying ADC 16 channel BMS 96S test
After two days, here’s an update on the battery:
I’ve added a new sheet called “balancing” in the first document, showing two additional cell voltage measurements:
I also created a second document with charts showing each series voltage and historical data over the last 2 and 5 days, delta is calculated:
The charts show changes in the delta, but this might just reflect shifts in each series’ SOC. My main focus is whether the delta is getting smaller, ideally under about 20 mA when the pack is fully balanced.
I’ve identified two cells as particularly undervolted:
One concern: the delta on bms1 has actually grown (from around 75 to 105, as noted in the first spreadsheet’s “balancing” sheet). Could a constant 70 mA load be affecting the balancing process?
Should I change balmode to Additive to "force" charging lower voltage cells first?
Any insights or suggestions would be greatly appreciated. Thank you!
I’ve added a new sheet called “balancing” in the first document, showing two additional cell voltage measurements:
I also created a second document with charts showing each series voltage and historical data over the last 2 and 5 days, delta is calculated:
The charts show changes in the delta, but this might just reflect shifts in each series’ SOC. My main focus is whether the delta is getting smaller, ideally under about 20 mA when the pack is fully balanced.
I’ve identified two cells as particularly undervolted:
- bms1.u8 - this one is the lowest one in the total pack
- bms4.u11 - this one is the lowest one in it's box
One concern: the delta on bms1 has actually grown (from around 75 to 105, as noted in the first spreadsheet’s “balancing” sheet). Could a constant 70 mA load be affecting the balancing process?
Should I change balmode to Additive to "force" charging lower voltage cells first?
Any insights or suggestions would be greatly appreciated. Thank you!
- johu
- Site Admin
- Posts: 6421
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 290 times
- Been thanked: 1383 times
- Contact:
Re: Flying ADC 16 channel BMS 96S test
On a pack of this size balancing might take too long. I'd guess there's like 5 Ah between the lowest and the highest cell. And the balancer is only connected to 1 cell at a time per module. So the 100 mA balancing current is effectively just 100/16=6 mA when all cells are balanced. That would be like 800 hours or something.
So it this point you might want to balance manually to some degree. Later, when only a few cells deviate the balancer can spend more time on the deviating cells and thus handle them quicker.
Not sure why delta got bigger, maybe a different point in the SoC curve now?
So it this point you might want to balance manually to some degree. Later, when only a few cells deviate the balancer can spend more time on the deviating cells and thus handle them quicker.
Not sure why delta got bigger, maybe a different point in the SoC curve now?
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
Re: Flying ADC 16 channel BMS 96S test
Thanks for the numbers.johu wrote: ↑Thu Jan 09, 2025 7:18 pm
On a pack of this size balancing might take too long. I'd guess there's like 5 Ah between the lowest and the highest cell. And the balancer is only connected to 1 cell at a time per module. So the 100 mA balancing current is effectively just 100/16=6 mA when all cells are balanced. That would be like 800 hours or something.
Not sure why delta got bigger, maybe a different point in the SoC curve now?

I also think that delta got bigger just because of the SoC.
Re: Flying ADC 16 channel BMS 96S test
For now, I will charge only 2 lowest cells. That should result with packs divided in two groups with roughly the same voltage... first three packs in one group and last three in the other. Delta between those two groups should be around 80 mA and that should not be the problem for my low usage... This pack is actually three times the range I need, it's not 25 Ah only because I was afraid I wouldn't get 140 kW from it.
Re: Flying ADC 16 channel BMS 96S test
As mentioned in the main BMS topic, I've update firmware to 0.20.B and connected one NTC sensor to the first BMS board and Temp1.
Working great and showing what I think is correct temperature - around 16 Celsius degrees.
On first two boards I've managed to upload firmware using web UI and can, but on the last four it just didn't work, always stopped on the third packet from web. I think it's something with an EPS32 because I need to restart it to continue browsing web UI.
I took ST-Link again and updated all without any problems.
But after restarting boards, board 4 started to report incorrect values, here is readings from master board and board #4 What could be a reason for that? I do have +12V and enable pins connected together if that matters.
Working great and showing what I think is correct temperature - around 16 Celsius degrees.
On first two boards I've managed to upload firmware using web UI and can, but on the last four it just didn't work, always stopped on the third packet from web. I think it's something with an EPS32 because I need to restart it to continue browsing web UI.
I took ST-Link again and updated all without any problems.
But after restarting boards, board 4 started to report incorrect values, here is readings from master board and board #4 What could be a reason for that? I do have +12V and enable pins connected together if that matters.
Re: Flying ADC 16 channel BMS 96S test
Last night, I checked the modules’ temperature by hand after powering them off (but still leaving them connected to the battery box).
Module #4 was hot - I would say: similar to what happened with module #2 back in September, which had a shorted MOSFET. I’ve now disconnected all modules from the battery.
@johu, I reviewed earlier posts and saw you reported fixing Module #4 in October, but I suspect that might have actually referred to module #5, since I only sent you #2, #3, and #5.
Any suggestions on how to proceed with #4?
Thank you!
Module #4 was hot - I would say: similar to what happened with module #2 back in September, which had a shorted MOSFET. I’ve now disconnected all modules from the battery.
@johu, I reviewed earlier posts and saw you reported fixing Module #4 in October, but I suspect that might have actually referred to module #5, since I only sent you #2, #3, and #5.
Any suggestions on how to proceed with #4?
Thank you!
- johu
- Site Admin
- Posts: 6421
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 290 times
- Been thanked: 1383 times
- Contact:
Re: Flying ADC 16 channel BMS 96S test
Yes that is another mux failure. Did you have the battery connected while updating via SWD? Maybe some pins randomly toggled while flashing. I think I have to add pull-down resistors to the respective pins.
Remove Q1 and Q5 and see what that does. If you then get readings from the other channels replace Q1 and 5 with new FETs (any 100V N-FET)
Remove Q1 and Q5 and see what that does. If you then get readings from the other channels replace Q1 and 5 with new FETs (any 100V N-FET)
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
Re: Flying ADC 16 channel BMS 96S test
Yes, I had battery connected all the time. Do you think disconnecting battery on firmware update should help avoiding this issue?
I'll need to bother my friend for removing components, these two, right?
I'll need to bother my friend for removing components, these two, right?
- johu
- Site Admin
- Posts: 6421
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 290 times
- Been thanked: 1383 times
- Contact:
Re: Flying ADC 16 channel BMS 96S test
Yes, these two.
When updating firmware via CAN the processor actively pulls low the control gates. But when updating over SWD they are configured as inputs and can float away.
When updating firmware via CAN the processor actively pulls low the control gates. But when updating over SWD they are configured as inputs and can float away.
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
Re: Flying ADC 16 channel BMS 96S test
I managed to desolder Q1 and Q5 myself using a hot air gun - new skill unlocked! 
After reconnecting the BMS to the battery, I’m still seeing problems:
Not all channels are functioning correctly. I don't know whether this is due to the missing components or if other parts are also damaged.
Since none of the local stores has 100V N-FETs, I’ll order them online and it should be here in few days.

After reconnecting the BMS to the battery, I’m still seeing problems:
Not all channels are functioning correctly. I don't know whether this is due to the missing components or if other parts are also damaged.
Since none of the local stores has 100V N-FETs, I’ll order them online and it should be here in few days.
- johu
- Site Admin
- Posts: 6421
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 290 times
- Been thanked: 1383 times
- Contact:
Re: Flying ADC 16 channel BMS 96S test
u1 if off because of the missing FET, but there also seems a broken PFET messing with the other values. When I fixed your modules previously I went over all FETs with a diode test mode. They should read 0.5V or so from Drain to Source. Any more or less means it is broken and needs replacement.
It is hard to tell from the values alone which FETs are affected because a broken one skews the other channels as well
If you order anyway go for the specified BSS123 (N) and PJM10H01PSA (P)

It is hard to tell from the values alone which FETs are affected because a broken one skews the other channels as well
If you order anyway go for the specified BSS123 (N) and PJM10H01PSA (P)
A very useful one

Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9
Re: Flying ADC 16 channel BMS 96S test
I ran a diode test on the FETs. Most measured about 0.585 V, but I got a “beep” on four of them 
- Q39
- Q11
- Q87
- Q81 At the moment, JLC is the only source that has these parts in stock. If there are no other suggestions, I’ll go ahead and order replacements from them.

- Q39
- Q11
- Q87
- Q81 At the moment, JLC is the only source that has these parts in stock. If there are no other suggestions, I’ll go ahead and order replacements from them.
Re: Flying ADC 16 channel BMS 96S test
I've received the P- and N-channel MOSFETs and replaced all six components from my previous messages.
After the first attempt, I got these readings:
I expected u0 to be correct but found that Q5’s source pin wasn’t making contact with the pad below it. After fixing that and verifying all MOSFET connections on all three pins, everything checked out.
The only questionable MOSFET is Q44—it measures 0.5V drain-to-source, but drain-to-gate shows nothing, whereas other MOSFETs measure around 2.5V.
After reconnecting to the battery, u0 and u1 improved, but the last seven series still appear bad:
To investigate further, I measured the resistors, and several are far off from their expected 10Ω values:
All other resistors measured correctly. Since most bad resistors are tied to the cell voltage pin trace, that likely explains the incorrect readings for u5–u8. Not sure how R23 will affect things, though.
I'm open to any other suggestions for testing. Otherwise, I’ll order replacements and swap them out.
After the first attempt, I got these readings:
Code: Select all
u0 1.15625
u1 0
u2 3894.46875
u3 3895.03125
u4 3894.46875
u5 3866.25
u6 3903.25
u7 3886.21875
u8 3902.6875
u9 3835.71875
u10 -177.34375
u11 403.46875
u12 -3.5
u13 0
u14 0
u15 0
The only questionable MOSFET is Q44—it measures 0.5V drain-to-source, but drain-to-gate shows nothing, whereas other MOSFETs measure around 2.5V.
After reconnecting to the battery, u0 and u1 improved, but the last seven series still appear bad:
Code: Select all
u0 3887.6875
u1 3885.1875
u2 3885.65625
u3 3886.21875
u4 3886.21875
u5 3845.125
u6 3904.4375
u7 3879.78125
u8 3894.46875
u9 3673.03125
u10 -1934.59375
u11 4465.90625
u12 -13.5
u13 0
u14 0
u15 0
Code: Select all
R22 56Ω
R29 25Ω
R32 30Ω
R18 16Ω
R21 413Ω
R30 59kΩ
R38 700kΩ
R19 -
R20 -
R39 220kΩ
R31 -
R23 1.3MΩ
I'm open to any other suggestions for testing. Otherwise, I’ll order replacements and swap them out.
- Proton
- Posts: 217
- Joined: Sat May 06, 2023 2:23 am
- Location: Georgia/US
- Has thanked: 152 times
- Been thanked: 24 times
Re: Flying ADC 16 channel BMS 96S test
Not sure what am I doing wrong.
I connected the CANH and CANL from the inverter in parallel with the wires coming from the BMS.
on Node 1 I am getting the info from the inverter fine, but I cannot get any info from the BMS-es. on node 10 to 15 I am not getting the red banner on top that show you are not connected to anything, so that means that I am connected to the BMS?
Is node 10 the default start for the BMS?
There are red light blinking ion each BMS.
I connected the CANH and CANL from the inverter in parallel with the wires coming from the BMS.
on Node 1 I am getting the info from the inverter fine, but I cannot get any info from the BMS-es. on node 10 to 15 I am not getting the red banner on top that show you are not connected to anything, so that means that I am connected to the BMS?
Is node 10 the default start for the BMS?
There are red light blinking ion each BMS.
- johu
- Site Admin
- Posts: 6421
- Joined: Thu Nov 08, 2018 10:52 pm
- Location: Kassel/Germany
- Has thanked: 290 times
- Been thanked: 1383 times
- Contact:
Re: Flying ADC 16 channel BMS 96S test
Yes 10 is correct. Can you turn off auto refresh, enter node 10 then refresh the page?
Support R/D and forum on Patreon: https://patreon.com/openinverter - Subscribe on odysee: https://odysee.com/@openinverter:9