diy solar

diy solar

JK-BMS-CAN with new Cut-Off Charging Logic (open-source)

Thanks.
Here you have them. Is there an option to save those "profiles" of plots somewhere ? It would be easier than having to manually add them one by one each time ...

View attachment 204836
View attachment 204837
View attachment 204838

OVPR is still set at 3.52 VDC
View attachment 204839
You can save the URL created when you've set up the history plot, that might be the simplest approach.
One last request, can you provide a chart showing max cell voltage for the period 13:35 to 13:40?
 
You can save the URL created when you've set up the history plot, that might be the simplest approach.
One last request, can you provide a chart showing max cell voltage for the period 13:35 to 13:40?
I expanded a bit (13h30 - 14h40):

1711461304863.png

But it's really current oscillation causing voltage oscillation causing current oscillation etc.
Essentially, the two controllers are coupled.
 
@MrPablo Please also note that Balancing is ON yet the ESP32 went into FLOAT charging status now
1711461457582.png

Probably because for a second or so (probably clouds caused the battery to discharge for a few seconds)
1711461514168.png
1711461544113.png
 
EDIT. maybe GPIO35 is not a great idea on the Atom S3 Lite ...

Code:
WARNING GPIO35 is used by the PSRAM interface on ESP32-S3R8 / ESP32-S3R8V and should be avoided on these models

Maybe GPIO38 which is exposed on the Atom S3 Lite instead ?

Messing with PSRAM seems a bad idea after all ...
Hi,

on Atom S3 Lite GPIO35 is actually hardwired to RGB led diode through popular WS2812 controller,
here is interesting led esphome test, tested myself and it is working, part of the relevant code:
Code:
#G35=RGB WS2812C-2020
  - platform: esp32_rmt_led_strip
    rgb_order: GRB
    pin: 35
    num_leds: 4
    # RMT 0 channels will be occupied by IR
    rmt_channel: 1
    chipset: ws2812
    id: led
    name: "Led"
 
@MrPablo: I see you yesterday introduced the "Updated Auto Charge Voltage logic". Is this a separate issue from the "End Of Charge" Logic that I just implemented (backported from you based on your change)? Don't you think it is best to leave the old charge logic and put a selector box there to select the parameter so one can switch between old and new logic (v1 and v2 essentially) ?

EDIT 1: I also opened a PR to clarify a bit better the pinout issues I was facing.

True, it's a different module/unit/etc, but for those not familiar with M5Stack naming convention it's an easy mistake that can be made:
 
Last edited:
inverter via a TJA1050, TJA1051T or SN65HVD230 CAN bus transceiver.
These TJA1050 are outputting their pins at Vcc + 0.3 volts? Their supply is 4.75 min so it's always like 5-6volts for data pins?
How is that working with the inverters, some accept that huge range of 3 - 6 volts for the CAN input?

Oh you're hoping on the 4.7k resistor to convert it but recommend the SN65HVD230 if an inverter only receives 3.3v?
What's the reason to bother with the others, since they're cheaper?
 
Last edited:
These TJA1050 are outputting their pins at Vcc + 0.3 volts? Their supply is 4.75 min so it's always like 5-6volts for data pins?
How is that working with the inverters, some accept that huge range of 3 - 6 volts for the CAN input?

Oh you're hoping on the 4.7k resistor to convert it but recommend the SN65HVD230 if an inverter only receives 3.3v?
What's the reason to bother with the others, since they're cheaper?
I ordered a bunch of each from AliExpress. Also MAX485 and MAX3485 for RS485.

In any case, given the cost of the Inverter (each is approx. 3000 EUR), I decided to rather use a Isolated CAN Transceiver, such as the ones recommended.

Cannot sweat 30 EUR or so for a proper solution when the Inverter is 3000 EUR ...

Plus you avoid problems like ground loops / potential reference etc, since CAN_GND is NOT exposed on my inverter.
 
I ordered a bunch of each from AliExpress. Also MAX485 and MAX3485 for RS485.

In any case, given the cost of the Inverter (each is approx. 3000 EUR), I decided to rather use a Isolated CAN Transceiver, such as the ones recommended.

Cannot sweat 30 EUR or so for a proper solution when the Inverter is 3000 EUR ...

Plus you avoid problems like ground loops / potential reference etc, since CAN_GND is NOT exposed on my inverter.
Not sure how your answer relates to my question about the voltage output of these chips and the inverters seemingly to accept random voltages
seems your MAX485 has even larger voltage range <__<
 
Not sure how your answer relates to my question about the voltage output of these chips and the inverters seemingly to accept random voltages
seems your MAX485 has even larger voltage range <__<
It's not directly related, agreed, but I just want to point out before people try random stuff because of saving 0.5 EUR or so and potentially damaging a 3000 EUR piece of equipment :).

MAX485 should NOT be used at 3.3V, it's definitively out of spec, some people use it at 3.3V and get away with it. The proper solution is MAX3485 or other 3.3V compliant devices :).
 
the common-mode seems to be 3v, in the data sheet
I don't have direct experience with either.

I just read this and thought ... Maybe better to get the MAX3485 for 3.3V operation:
 
V1.17.5 has been released on GitHub:

Changelog:
- Auto Charge Voltage Control function rewritten
- EOC cycle threshold added to reduce premature triggering of float phase

This is a small release whilst we continue to work towards a modular and potentially multiBMS solution.
The Auto Charge Voltage Control function has been rewritten to be both more efficient and more reliable for users with packs suffering higher imbalances. You can find documentation on this feature here.

In addition, an extra threshold has been added to the End of Charge logic, reducing the likelihood of premature charge termination.
By default, both the current and max cell voltage need to meet an automatically calculated threshold for 60 cycles (approximately 60s) - this can be adjusted in the parameters if required.

Finally, a request to any users with feature requests, ongoing issues, etc - please create an issue on GitHub at the following link:
That makes it much easier for us to track, investigate and resolve queries. Right now, we're at 42 pages on this thread, and it'll only grow from there.
 
Last edited:
@MrPablo: I see you yesterday introduced the "Updated Auto Charge Voltage logic". Is this a separate issue from the "End Of Charge" Logic that I just implemented (backported from you based on your change)? Don't you think it is best to leave the old charge logic and put a selector box there to select the parameter so one can switch between old and new logic (v1 and v2 essentially) ?

EDIT 1: I also opened a PR to clarify a bit better the pinout issues I was facing.

True, it's a different module/unit/etc, but for those not familiar with M5Stack naming convention it's an easy mistake that can be made:

I don't think it's best to leave the old logic in, no.
Supporting two sets of logic is more work, plus testing indicates this solution should work effectively when used in conjunction with Auto Charge Current control.
 
V1.17.5 has been released on GitHub:

Changelog:
- Auto Charge Voltage Control function rewritten
- EOC cycle threshold added to reduce premature triggering of float phase

This is a small release whilst we continue to work towards a modular and potentially multiBMS solution.
The Auto Charge Voltage Control function has been rewritten to be both more efficient and more reliable for users with packs suffering higher imbalances. You can find documentation on this feature here.

In addition, an extra threshold has been added to the End of Charge logic, reducing the likelihood of premature charge termination.
By default, both the current and max cell voltage need to meet an automatically calculated threshold for 60 cycles (approximately 60s) - this can be adjusted in the parameters if required.

Finally, a request to any users with feature requests, ongoing issues, etc - please create an issue on GitHub at the following link:
That makes it much easier for us to track, investigate and resolve queries. Right now, we're at 42 pages on this thread, and it'll only grow from there.
Now I'll have to try to backport the Auto Charge Voltage Control as well :ROFLMAO: .

EDIT 1:
@MrPablo: I probably didn't mention often enough, but THANK YOU (for your help, for the enhancements, for the technical explanations, ...) (y) .

EDIT2:
Actually it wasn't *that* bad to backport the modifications using VSCodium Compare Files Features :).
I forgot I had enabled BMS_Err_Stop, so of course it tried to do OTA update and tripped the whole thing :ROFLMAO:.
 
Last edited:
I just want to say... thanks for all the work by the devs. Been running this since the early UKSA versions, and was sad to see it go closed source. My inverter (Goodwe5048) had some issue where it would just periodically stop charging without BMS feedback, so this whole project fixed a serious issue for me. Super happy to see the project continue.
I am still running V1.15.5 without issue, but my system is well behaved...never any issues with balance. I think my JK soc drifts by about 5% a cycle, but from solar the charging is BMS/voltage based, so it always gets back in sync within a few days (summer here atm). In winter I have some issues as when charging from grid the inverter stops at 100% SOC, but it looks like many of the recent improvements will fix that. Multi BMS would be great (parts for another battery on the boat), but recently I have had a pack built for someone else in P with mine for testing, and they play fairly nice... sure the SOC's diverge at various parts of the charge cycle by up to 10% (EVE in one pack, CATL in the other, CATL >1.5 yrs old, EVE new), but it all evens out in the end!
just wanna say thanks for the hardwork :)
 
Now I'll have to try to backport the Auto Charge Voltage Control as well :ROFLMAO: .

EDIT 1:
@MrPablo: I probably didn't mention often enough, but THANK YOU (for your help, for the enhancements, for the technical explanations, ...) (y) .

EDIT2:
Actually it wasn't *that* bad to backport the modifications using VSCodium Compare Files Features :).
I forgot I had enabled BMS_Err_Stop, so of course it tried to do OTA update and tripped the whole thing :ROFLMAO:.
Thanks @silverstone, hopefully the new auto voltage control will make it easier for you to keep your battery balanced.
 
Thanks @silverstone, hopefully the new auto voltage control will make it easier for you to keep your battery balanced.
I just updated the YAML file name and version tag on the build script

But I still ran into this "duplicate" host name issue in the sensors -> https://github.com/Sleeper85/esphome-jk-bms-can/issues/38
 
Back
Top