• Have you tried out dark mode?! Scroll to the bottom of any page to find a sun or moon icon to turn dark mode on or off!

diy solar

diy solar

JKBMS Inverter Edition Problems/Issues | No Support / Help to fix major issues. - DO NOT BUY ! Warning (as of Oct.12.2024)

@Nami. Would there be a chance to release this software to open source so that our members could update it themselves?
 
@Nami. Thank you for your answer.

Are you working on a new software version?

Will it improve soc?

Thank you for your answer.
 
I'm trying to update one of my JK Inverter BMSs from v15.29 to v15.30 but when I try and update, the progress bar stays at 0% then the BMS hangs and reboots by itself. Has anyone seen this issue before and what's the solution? I updated another BMS yesterday without an issue so it doesn't appear to by my RS485 adapter or wiring.

Here's a video of the issue:

Edit: Tried a forced update with the same results. Update fails to start, BMS hangs then reboots by itself

Video of the forced update attempt here:
solved yet?
 
SOC stating that it has reached 100% when ALL cells are at 3.385 (NOT 3.450 as SET in the Control Panel of the BMS) IS a problem (for anyone relying on the SOC to AIO interface for charging management).
BOTTOM LINE, is JK is STILL BUSTED and the SOC Values displayed/present by the BMS are TRASH and useless.
Well said.
 
@Nami. Thank you for you help with this discussion.

Just a thought. It sounds like sometimes it is difficult to get the correct SOC. There appear to a a number of reasons which have already been mentioned. A number from members with a lot more experience than me. They have also mentioned solutions which I hope to see in the next software release.

Thank you for updating the software. Looking forward to this.

Wondering if it might be possible to give the user the chance to update the SOC value themselves? JK could continue to fix this so it is not necessary. However if someone experienced drift they could update the number itself manually and then continue from there. They could continue to communicate with you so that this would not be needed in the future.
 
@Nami. Thank you for you help with this discussion.

Just a thought. It sounds like sometimes it is difficult to get the correct SOC. There appear to a a number of reasons which have already been mentioned. A number from members with a lot more experience than me. They have also mentioned solutions which I hope to see in the next software release.

Thank you for updating the software. Looking forward to this.

Wondering if it might be possible to give the user the chance to update the SOC value themselves? JK could continue to fix this so it is not necessary. However if someone experienced drift they could update the number itself manually and then continue from there. They could continue to communicate with you so that this would not be needed in the future.
I am going to try the SOC fixer solution from the forum here
 
Can we just get significant bugs fixed first before we start arguing about exactly how to get 100% SOC.
 
We have members who have extensive experience with this technology. They understand both the hardware and software issues which need to be fixed in order to report a proper SOC. There have been some work arounds mentioned both here and elsewhere. Even my proposed idea is not a solution, just a temporary work around.

While I respect different battery cell issues, it appears there are some "basic truths" that apply to all cells. Regardless of manufacturer a cell will only receive a charge until the resistance shuts down the process.

For example, if I have a one gallon container with a hose containing water going into it. It will only take water until the "resistance" of air pressure stops the process. Forcing this will result in damage to the container.
 
Can we just get significant bugs fixed first before we start arguing about exactly how to get 100% SOC.
A good point. Since this thread is quite long, perhaps repeating the concerns you have noted here might be helpful so that @Nami can see it better?
 
@Nami you are being distracted (for no good reason) with Small Detail Differences between Brands/Chemistries for LiFePo4 and that is a waste of time. You need to focus on the Common Settings (parameters) that specific Chemistry Families use. LiFePo4, LTO & LiIon (NMC etc). The small Differences between CATL, Lishen or EVE are irrelevant. ALL of them work with the same base parameters/settings.

SOC Calculations & Validation have nothing to do with Brand Variations. Each Chemistry has its own unique Voltage Curves and that is the only thing that must be respected.

Here is 6 battery Packs in Parallel. All EVE LF280 AH Cells. They ALL Charge up perfectly and 15 Minutes after entering proper FLOAT mode (3.450) they are all within 0.003 Difference of each other in ALL Battery Packs. What is shown here is taken first thing this morning and with No Solar Input yet. This provides a good example of how SOC is failing.

Now LOOK CLOSE ! See "Cycle Capacity" it is not the only thing that makes no sense... Also NOTE that the Cell Voltage Difference is VERY CLOSE with the largest Difference being 0.004mv ! THAT IS IMPORTANT ! It shows that the Cells are properly behaving per specifications.

BMS Firmware 15:30 below (92%, 96%, 93%) .......................................................BMS Firmware 15:24 Below (84%, 92%, 99%)
1725970356828.png 1725970462176.png
 
IRONICALLY, the SOC Issues is far simpler to fix and without distractions.

Use the Avg.Cell Voltage as the trigger for transition. When AVG. Cell Voltage reaches 100%, send Transition to FLOAT MODE signal to External Charge Device (AIO or SCC's etc)
! When Pack reaches 100% @ AVG.Cell.Voltage it does not matter what the Cell Differences are because Active Balancing will clean it up while taking Variable Current from Float Mode, to fully balance out & top off cells in the battery pack.

We KNOW what the user sets as 0% and what they set as 100%, these are set by user in the BMS.
Assume that 0% = 2.800 and that 100% = 3.450.
That provides a spread of 650 Millivolts. 650mv ÷ 100 = 0.0065 for every 1%
20% = 0.130V 2.800+0.130 = 2.930V
50% = 0.325V 2.800+0.325 = 3.125V
75% = 0.4875V 2.800+0.4875 = 3.2875V

For CLARITY: There is only ONE WAY to determine SOC of ANY Lithium Based Battery Pack and that is Cell Voltage status. THAT'S IT, THAT'S ALL ! You cannot measure electrolytes, acids or any other things related to any other chemistry. It is just that SIMPLE ! This is how EV's & Others do it as well. Coulomb Counting is Fine but NOT Accurate as there are losses in Both Directions and the losses are next to impossible to factor in with DIY systems. An EV Battery Pack for example is a Fixed Known product (cells and all components within) and the Manufacturers have total control on components and can factor in losses for "specific" devices as used. For DIY ESS Systems Coulomb Counting provides a good "approximate" view of how much energy is going In/Out BUT it does not count the losses. Additionally, ANY BMS doing Coulomb Counting is only as accurate as the Hardware it uses and if it cannot register voltage down to 0.010V or below 1A (in or out) cannot every be accurate if it uses those values.

Active Balancing OPTIMIZATION ! (TIP for users)
Do not begin Active Balancing too low, it will slow charging & ultimately balancing will not be optimal. It is best to have Active Balancing start at 50mv below the FLOAT Voltage. If you FLOAT @ 3.450, start Active Balancing at 3.400 and observe that, it can likely be tweaked down to just 20MV below Float Voltage. This depends on your cells and their health condition. Starting Active balancing too early will only lengthen the process and may actually interfere with reaching full 100%.
 
Last edited:
IRONICALLY, the SOC Issues is far simpler to fix and without distractions.

Use the Avg.Cell Voltage as the trigger for transition. When AVG. Cell Voltage reaches 100%, send Transition to FLOAT MODE signal to External Charge Device (AIO or SCC's etc)
! When Pack reaches 100% @ AVG.Cell.Voltage it does not matter what the Cell Differences are because Active Balancing will clean it up while taking Variable Current from Float Mode, to fully balance out & top off cells in the battery pack.

We KNOW what the user sets as 0% and what they set as 100%, these are set by user in the BMS.
Assume that 0% = 2.800 and that 100% = 3.450.
That provides a spread of 650 Millivolts. 650mv ÷ 100 = 0.0065 for every 1%
20% = 0.130V 2.800+0.130 = 2.930V
50% = 0.325V 2.800+0.325 = 3.125V
75% = 0.4875V 2.800+0.4875 = 3.2875V

For CLARITY: There is only ONE WAY to determine SOC of ANY Lithium Based Battery Pack and that is Cell Voltage status. THAT'S IT, THAT'S ALL ! You cannot measure electrolytes, acids or any other things related to any other chemistry. It is just that SIMPLE ! This is how EV's & Others do it as well. Coulomb Counting is Fine but NOT Accurate as there are losses in Both Directions and the losses are next to impossible to factor in with DIY systems. An EV Battery Pack for example is a Fixed Known product (cells and all components within) and the Manufacturers have total control on components and can factor in losses for "specific" devices as used. For DIY ESS Systems Coulomb Counting provides a good "approximate" view of how much energy is going In/Out BUT it does not count the losses. Additionally, ANY BMS doing Coulomb Counting is only as accurate as the Hardware it uses and if it cannot register voltage down to 0.010V or below 1A (in or out) cannot every be accurate if it uses those values.

Active Balancing OPTIMIZATION ! (TIP for users)
Do not begin Active Balancing too low, it will slow charging & ultimately balancing will not be optimal. It is best to have Active Balancing start at 50mv below the FLOAT Voltage. If you FLOAT @ 3.450, start Active Balancing at 3.400 and observe that, it can likely be tweaked down to just 20MV below Float Voltage. This depends on your cells and their health condition. Starting Active balancing too early will only lengthen the process and may actually interfere with reaching full 100%.
1725976905277.png1725976920283.png

I grabbed these from I think Andys website, what do you think of this? I guess a lot of users have these settings.
 
I am going to try the SOC fixer solution from the forum here
same, i have spare esp8266 and mx3485 in a drawer. That may be a temporary solution untill firmware be fixed for accuracy and can communication.
My 2 cent concernning soc deviation is all about how bms measure amp going in and out. i see a permanent offset of -/+ 0.5~0.8A. In case of high discharge rate, that's a mnior deviation, if you discharge/charge at low rate, +/-0.5A could be 10% off after 2/3 days without 100-soc-volt reset. all solutions i read from you sould be the way to go if amp sensibility is a hardware issue.
 
A Cell at a specific SOC, say 50% will not have the same Voltage while charging or discharging or at Rest.
Likewise, given that same cell, its' voltage will rise more when being charged at 50A, than when being charged at 10A.

Does EVs use Voltage to count SOC? Maybe Maybe not. Even so: EVs are usually parked and cells have time to settle down and its BMS to calibrate Voltage-SOC periodically. An ESS does not: When sun is up, the batteries are being charged; when sun goes down, the batteries are being discharged. The only times ESS Batteries come to a rest is when Solar Production = Consumption, or at FULL (when SCC is forced to produce equal to consumption), or at Full Discharge (when inverter is forced to stop).

The only absolute for Voltage-SOC is when it hits 100% level or when it hits 0% level. Anything in between is a headache.
 
I would expect the control systems for an EV to be far more advanced due to the conditions they encounter during day to day operation. I would also expect them to come at a much higher cost than many could afford for a DIY system.

Having said that, this is getting off topic since this is a discussion regarding the JK BMS.

The solutions proposed are excellent. They come from years of experience with this technology in a fully operational off grid environment. I have been immersed in this technology for nearly three years. Having said that, and while I have learned a great deal, I still have a lot to learn. Each time I complete a project I find my mind considering ways I could have done it better based on what I have recently learned. It is that way with this technology. Advancements continue to come our way. Methods we are discussing today will seem archaic in five years.
 
EV Packs and their BMS' are far more advanced than anyone here will know or could unless you get into their programming & functions. NOTHING like these BMS from JK, Daly or anyone else. ALSO - MOST IMPORTANTLY, All EV's have TRUE A-Grade Premium Cells which are all Matched to as close to perfect as possible. Measure a cell voltage & IR at "any" point within a pack and guess what, they will be within 0.001 deviations of each other and exactly the same IR and that is NOTHING you will see from the Batteries we use here. That is another reason why their packs are so costly and "everyone" seems to skip acknowledging that, that is REALITY so grasp it & hold onto it.
--------- Off Topic and irrelevant further on ----------------

JK can easily correct to the Generic LFP States & Values.
They can use the Cell Average Volt to determine when 100% is achieved instead of having 1st cell reach target 100% setting.
Once AVG Cell Volts = 100% SOC Setting, Transition to FLOAT and send the appropriate signal to COMMS.
The Activa Balancing internally can take up the job it has to do, tidy the top, and balance it all out to the Float Voltage setting.

SOC based on Cell Voltages & AVG cell Voltage show the "current SOC state" whether charging/discharging, in a functioning system that is in process (charging or discharging) that is all an ESS can do. IF the packs can actually sit "idle" taking a float trickle (that is when they are settled) you "could" evaluate that for SOC but that will not be consistent or work for many. Not everyone has a system that will float for a couple of hours a day "year-round especially". I do NOT hit Float Everyday - that's life and everyone has the same issues.
 
ALSO - MOST IMPORTANTLY, All EV's have TRUE A-Grade Premium Cells which are all Matched to as close to perfect as possible. Measure a cell voltage & IR at "any" point within a pack and guess what, they will be within 0.001 deviations of each other and exactly the same IR and that is NOTHING you will see from the Batteries we use here. That is another reason why their packs are so costly and "everyone" seems to skip acknowledging that, that is REALITY so grasp it & hold onto it.
Well there are exceptions, like the non liquid cooled Nissan leaf...which is basically what the modern outdoor heated but not cooled enclosures seem to be to me.


Or more recently the f150 lightning:


I would take my homebuilt 16s REPT 280 diy battery over either of those two options.

Basically there's some very high quality battery pack builders like Tesla, BYD etc. And then there's also a bunch of half arsed rushed to market trash as well, imo.
 
Last edited:
JK can easily correct to the Generic LFP States & Values.
They can use the Cell Average Volt to determine when 100% is achieved instead of having 1st cell reach target 100% setting.
Once AVG Cell Volts = 100% SOC Setting, Transition to FLOAT and send the appropriate signal to COMMS.
The Activa Balancing internally can take up the job it has to do, tidy the top, and balance it all out to the Float Voltage setting.
The average value is calculated by the formula total voltage/number of elements, it is very primitive.
In JK, there is a calculation of the voltage of each element according to its internal resistance, which is much more accurate than the average value.
In total, it is enough to replace the threshold of 100% with the intersection of the last link of this threshold in the SOC 100% calculation. This will mean that the entire battery reaches the level of balancing and charge.
JK is very close to the correct result, one step away.
 
The average value is calculated by the formula total voltage/number of elements, it is very primitive.
In JK, there is a calculation of the voltage of each element according to its internal resistance, which is much more accurate than the average value.
In total, it is enough to replace the threshold of 100% with the intersection of the last link of this threshold in the SOC 100% calculation. This will mean that the entire battery reaches the level of balancing and charge.
JK is very close to the correct result, one step away.
They (JK SW) does not see the Cell's IR, The IR it is reporting per cell is the wire resistance, not the measure of the cells internal IR.
Take a Tester like a YR1035, an check the IR of the cells in one of your packs, pick a few at random. Then look at the values the BMS shows for those cells, it become blatantly obvious that is wire resistance.

Generic ESS BMS' have to operate with several variables, especially if they support multiple chemistries. Having to industry baselines is the only solution for such. So the averages & norms for the chemistry are applied and cannot be specced tighter because of it.

Also keep in mind, that many people cannot even wrap their brains around how to properly Calibrate the Voltage & Amps to/from the BMS & Pack and I have seen several "doozie" explanations based in partial knowledge, lots of assumptions drawn into conclusions.
-----------------
Bottom Line, a few here have provided @Nami with the solutions & how to calculate with different methods. Nami has been here and read these responses but not replied specifically to any of them with an appropriate response. Likely due to a lack of understanding (damned translator software). Given the responses (lack of) and other tidbits, it is unlikely that any of this will be sorted before the Big Fall Sales Events where vendors massively push product.

HECK, they won't / haven't even fixed the Temp Sensor issue which is Sooo simple a thing.
8S uses 2 Temp Sensors while 16S uses 4. If you have an 8S it cannot see the two missing Sensors and throws an error.
If Cell Count = 8, Use 2 Sensors, Else use 4 sensors. Not auto-sensed, not settable, only option Sensors ON or OFF (derp).
 
Number one issue with SoC accuracy is current measurement accuracy. It is not so easy to keep accuracy over a wide dynamic range of current from a few amps to over 100 amps. BMS also has to deal with positive and negative currents with zero crossing errors due to tolerance and drift in DC offset voltage amplification of current shunt voltage.

Second issue is not resetting full charge 100% reference often enough to wash out the accumulated amp-secs errors due to #1 issue of current measurement accuracy. User has to take some of the responsibility for this.

You would think 'time' accuracy should be good due to microcontroller crystal control of timing, however microcontroller sleep mode duty cycling to reduce average BMS current drain can corrupt amp-sec summation if not done properly.
 
Number one issue with SoC accuracy is current measurement accuracy. It is not so easy to keep accuracy over a wide dynamic range of current from a few amps to over 100 amps. BMS also has to deal with positive and negative currents with zero crossing errors due to tolerance and drift in DC offset voltage amplification of current shunt voltage.

Second issue is not resetting full charge 100% reference often enough to wash out the accumulated amp-secs errors due to #1 issue of current measurement accuracy. User has to take some of the responsibility for this.

You would think 'time' accuracy should be good due to microcontroller crystal control of timing, however microcontroller sleep mode duty cycling to reduce average BMS current drain can corrupt amp-sec summation if not done properly.
Yup, which is why the protocol from Pylontech CAN-Bus-protocol-PYLON-low-voltage-V1.2-20180408 mentions :
1726061136852.png1726061171651.png
 

diy solar

diy solar
Back
Top