• 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

Jk inverter BMS soc measuring circuitry

marckusd

New Member
Joined
Aug 24, 2020
Messages
3
Hello all,

I have a 200A JK inverter BMS JK-PB2A16S-20P mounted in a EEL battery box connected to a Deye 6kw inverter. The system is mounted in a remote location and a I do not have access to it at the time. As many have complained, the SOC estimation of this BMS is quite bad especially when the battery drain is low and there is no sun to recharge the batteries and reset the SOC to 100%. I for one observed an almost 60% error in one instance when there was no sun for several weeks to recharge the batteries. In my case the inverter constantly draws around 15W/h from the battery. This consumption is measured by the inverter but the bms sees no consumption and in consequence does not change the SOC value. In this particular case the battery SOC was constantly 60% for almost 3 weeks but the voltage of the battery gradually went down until it reached the 0% voltage threshold and then it reset to 0%.
Has anyone been able to determine what is the current and voltage sampling OPAmp / IC that JK uses to measure the current across the shunt resistors in this BMS? I know that the shunt resistance is 50 micro ohm for the 200A version and that would make it extremely difficult to measure low (under 0.1A) currents accurately (the voltage drop across the shunt would be only 5 micro volts at 0.1A ), hence that may be a reason why this BMS has SOC errors.
Could someone please post some high resolution photos of this BMS without the aluminium faceplates? I did disassemble the one I have but I was stupid enough to not take photos :fp2.
I would be interested in searching for a way to increase the accuracy of the BMS soc estimation. Maybe increasing the shunt resistor values to 200 - 250 micro ohms(with the consequence of more heat generation in the BMS) and calibrate it afterwards using the current calibration function, but knowing the IC responsible for the shunt readout would be useful. I ordered a new BMS to tinker on but it will take some time until it arrives and I am a bit eager to get started on the calculations.

Thank you!
 
  • Like
Reactions: cj0
Mixture on photos I took and others off internet
 

Attachments

  • 20230416_192648.jpg
    20230416_192648.jpg
    96.8 KB · Views: 12
  • BMS Board pic from internet.png
    BMS Board pic from internet.png
    2.7 MB · Views: 13
  • Board 1.jpeg
    Board 1.jpeg
    85.9 KB · Views: 11
  • Board 2.jpeg
    Board 2.jpeg
    89.6 KB · Views: 11
  • Other side supplied board.jpg
    Other side supplied board.jpg
    397.1 KB · Views: 11
  • Supplied board.jpg
    Supplied board.jpg
    424.4 KB · Views: 12
Set 2
 

Attachments

  • full.jpg
    full.jpg
    456.1 KB · Views: 4
  • full 2.jpg
    full 2.jpg
    458 KB · Views: 5
  • half 1.jpg
    half 1.jpg
    505.5 KB · Views: 5
  • half 2.jpg
    half 2.jpg
    416.5 KB · Views: 3
Set 3
 

Attachments

  • half 1 resistors highlighted.jpg
    half 1 resistors highlighted.jpg
    539.2 KB · Views: 7
  • half 1.jpg
    half 1.jpg
    539.2 KB · Views: 6
  • half 2.jpg
    half 2.jpg
    463.7 KB · Views: 6
  • PXL_20240409_153748366.jpg
    PXL_20240409_153748366.jpg
    459.5 KB · Views: 9
Thank you kommando!
After inspecting the photos you provided I can guess that the current sensing amplifier is the one I circled in red in the picture. After searching some parts catalogues there are a few components that match the SMD footprint (seems to be SC70-6 footprint). One of the most precise of these components is the Texas instruments INA210 (costs around 0.7$ ). Presuming that JK used this part or equivalent, extrapolating from the datasheet and from the 50microOhm shunt value on the BMS it seems they may have used a amplifier that has a gain of 200 to provide a full scale output of ~ 4.5 volts for a current of +200A and 0.5V for -200A (corresponding to a 10mV voltage drop across the shunt resistors at 200A ). The current shunt amplifier must be configured in bidirectional mode and as such the component circled in blue could be a 2.5 V voltage reference (presuming a 5V power supply for the amplifier) that shifts the 0A reading of the amplifier to half of the maximum output voltage of the amplifier (5V in this presumed case).
On the low current range things get a bit bad. A 0.1A load current translates into 0.000005 V voltage drop on the shunt. From the datasheet of the INA210 we can see that it could "see" such small values but with higher error (probably around 25% or higher). This voltage drop translates into a 0.001V voltage change on the output of the amplifier.
Another problem is that the output of the current shunt amplifier needs to be digitised using an ADC. I cannot speculate what ADC they are using but at the low end it should be able to read at least 0.0001V as to provide adequate precision.

As a conclusion, at least working from the pictures, it seems that my intention of modifying the shunt resistor value would work only if I change the current sensing amplifier with one that has lower gain, as mounting a higher value shunt would drive the amplifier into saturation at higher currents.
Take what I said with a grain of salt as I have not measured anything on a board and it is based on a lot of speculation.
half 1.jpg
 
So following your post then if you modify the hardware to be more accurate at very low current flows you lose the ability to measure current at high flows. So best to stick with what's there and instead upgrade to the latest firmware which applies a fudge where at low current draws it reverses the reported current for short periods to attempt to offset the too high reported flow. I have been running 15.35 and the drift lower on SOC is much reduced.
 
With the hardware on this BMS, it would seem so. There are more precise shunt measuring amplifiers that come with integrated ADC and are equally cheap, but JK should have used them in the beginning. I will try the new firmware when I get at the location of the battery, Thanks!
 
There are several issues for low current measurement accuracy.

Very low voltage drop across 20 parallel, one milliohm shunt chip resistors (50 micro-ohms) at low load current.

DC offset in the op amp that amplifies the current shunt output voltage.

The temperature coefficient on the cheap 1 milliohm chip resistors is not great and the added resistance of PCB copper in connecting the twenty-chip resistors in parallel adds to corrupting the T.C. even with the 1 milliohm/20 = 50 microohms absolute variance being calibrated out.

The STM microcontroller ADC is 12 bits and with digital noise is likely not much better than 10-bit effective resolution. A low pass filter must be included to reduce the noise bandwidth of voltage reading from shunt resistor and smooth out the 120 Hz ripple current from sinewave inverter at moderate to high inverter AC loading.

You can follow the two parallel, thin PCB runners between the 1 milliohm parallelled shunt resistors back to the sense amplifier op amp.

Because of the DC offset error, the firmware just zero's out any low current reading less than about one amp. It is better to throw out the low value sample then accumulate Columb count that has a possibly wrong polarity (charge vs discharge) due to the op amp DC offset. Even if you find and replace the op amp with a more expensive automatic offset zero'g type, you still have the firmware zero'g out low current values.

There may also be a voltage lookup table that is used to cross check SoC. When BMS detects low current for greater than about 5 minutes it assumes battery is near zero current equilibrium and it looks up open circuit SoC voltage table to check SoC range. This may do more harm than good.
 
Last edited:
There may also be a voltage lookup table that is used to cross check SoC. When BMS detects low current for greater than about 5 minutes it assumes battery is near zero current equilibrium and it looks up open circuit SoC voltage table to check SoC range.
There is a lookup table but to invoke it you need to use the App and click on the battery capacity OK button, then you also lose the cycle count which goes to Zero.
 
There is a lookup table but to invoke it you need to use the App and click on the battery capacity OK button, then you also lose the cycle count which goes to Zero.
Where is the logic in zero'g out cycle count just because you are trying to correct SoC point?
 

diy solar

diy solar
Back
Top