For the past few weeks (since the end of January). I started working on the SBMS0 new firmware.
I added quite a few new features as you can see some of them below.
1) Monitoring
Not much changes here other than cell bar-graph is now green in normal range and will change to yellow above or below UV and OV and red it it gets above OVLK or below UVLK.
I also added two more temperature sensors and you need to select betwen seeing the IT1 and ET3 (what was available before) and the IT2 and ET4. ET3 and ET4 are the same external temperature sensor just measured by two separate ADC's and the IT1 is the ISL94203 (BMS IC internal temperature) and IT2 (newly added) STM32 micro-controller internal temperature.
I added two new graphs the Battery voltage graph (data was there but was not displayed before) and the SOC graph (at least one person asked for this) and it took a bit of extra RAM that is fairly limited.
The Diversion is now added just need more testing and also all the wiring drawings corresponding to the state for dual PV array and diversion was added.
And on the same subject the Diversion graph will work displaying current and power for diversion. Still needs to be cleaned up by some of the things I have now for diagnostics
There will also be DMPPT functionality for diversion that needs a bit of testing also.
2) EXT IOx Settings had a huge upgrade and will require quite a bit of testing.
There are two extra EXT IOx available EXT IO1 and IO2 and they are the I2C data and clock pins and can be used.
Main reason for this two extra IOx was so that I can do Digital max power point tracking for diversion so select between two restive heating elements to get the max power point.
There is a table showing all the settings at a glance but to set things you enter each EXT IOx separate menu.
Here is the separate menu for EXT IO4 as an example. It is set as type 1 so Charging but there are much more settings now.
There is a Minimum and Max temperature limit for each EXT IOx and with T sensor you select one of the 4 temperature sensors that will be used to enforce the limits in this case is IT2 (the internal temperature of the microcontroller).
I set here as 20C so below the actual temperature so you can see the OTP (over temperature protection) as a red bliking ON/OFF at 1 second flag in the bottom left corner.
Other settings include Current limit , SOC (SOC was available before) and now you can set 1 to 30 days for when the SOC limit is overridden and allow full charge of the battery. Before it was just an option for charging to full every day and you can get the same by setting 1 day.
Also you can see the red flag in the EXT IOx table. But in the bottom left corner can be see form anywhere including monitoring page.
3) This is what I worked for the past few days and is now almost done.
It is a test for the internal resistance of the cells and a very useful test to see if you have good connection between cells.
You just need to turn OFF your loads enter this menu and push OK to start the test that takes about 20 seconds and makes 3 tests than then averages in one result.
This is one of my A123 System battery 20Ah pouch cells and it is about 14 years old.
This first test is at 500mA 0.025C and this is a bit to low to get accurate results as there is just around 1mV drop per cell at this low current so not enough resolution even with me oversampling the voltage by averaging 10 quick measurements is still a bit to low.
Here is at 1A so 0.05C charge rate. Test is done by switching ON/OFF solar charging but you need DSSR20 or DSSR50 or something that can as fast react to ON/OFF.
Here is with 2A so 0.1C and this is about the minimum I will recommend for best results
Here is with 4A 0.2C and that is best as there are about 10mV per cell so much more to work with for calculating the internal resistance. The graph in the middle shows with magenta the portions in the graph where the 10 measurements for voltage are taken for charge enabled and the same for charge disabled to measure the delta in voltage for each cell. That graph in middle has data at 70ms interval so about 5 seconds for the entire width of the graph where the other two graphs are at standard 1 second per data point 60 seconds one minute total per graph. So in the middle is about a 12x zoom
You can see this is page 1 of 2 and on the second page I want to implement something similar for the cell balancing wire resistance as that will save a lot of time diagnosing bad cell sense wire connections. So likely another few days to do that.
Here is anther test at same 4A as above but results are slightly different each time the test is run. Still fairly close each time especially when you have 10mV or more delta to work with.
The % value is with red only when above 40% but this is not a great battery after 14 years. I remember it was around 1mOhm per cell when new and maybe 1.5mOhm max with the connections between cells when new but both cell degradation and likely connection oxidation got to this. I'm very curious to see what value I get for my large 8S2P EVE pack but it will need to wait a week to 10 days to finalize most things before installing the new firmware V6 on that SBMS0. I will need at least two weeks of testing on that before I can start shipping with this new firmware.
In the Diagnostic this is all it was before but even this was updated. I added temperature compensation for current measurement to make it even more accurate for low currents and I added the option to use the offset it makes at power up or a factory calibrated offset that I will set when testing.
And last thing in the diagnostic menu was a way to reset the LCD but evolved in me implementing a graphics benchmark.
It comes with a warning as there will be fast moving images with up to 1.1 milion pixels per second in some benchmarks (a total of 14 benchmarks)
Here is drawing small rectangles at 888kpx/second
And here is a ray-tracing test up to around 270kpx/s.
This tests do not affect the SBMS0 functionality he will take care of battery and everything as normal.
Unfortunately this is only tested and will only work on the SBMS0 v0.3e hardware and will not work with the older SBMS0 version or any other older SBMS models. It will take way to much time to port all this to the older models and each of them will need to be tested separately. This will likely take a full year or work and I just do not have the time to do that.
As for all of you that have the new SBMS0 and want to upgrade to firmware V6 from V5 I will need to make a tutorial and maybe offer some programmers with cables so you can easily do that.
Let me know what you think and if there is something you wanted that I did not implement. If it is easy there is still time to implement. I do not have much Flash or RAM left is now with V6 almost fully utilized.