karwas avatar image
karwas asked

How to control MPPT (VE.Can) to stop charging at certain SoC level e.g 80%?


TLD;R - I would like for a piece of mind and health of a LiFePO batteries implement a charging strategy similar to e.g. Tesla cars: Charge only to specified SoC, let's say 80%.

My current setup includes:

  • LiFePO bank monitored and controlled by REC BMS,
  • Lynx Shunt 1000A VE.Can shunt
  • SmartSolar Charger VE.Can 150/70
  • and Cerbo GX

among other components.

In current setup, if I understand it correctly, REC BMS is periodically sending a frames on CAN Bus
advertising current SOC (among other things), and effectively controls MPPT to slow charging
when SOC reaches 98% and stop charging when SOC is equal 100%. This is a behavior
I can observe on both Cerbo GX and VRM portal.

I would like to stop charging at 80%, both for extending battery life, and for pice of mind,
that when boat is unattended, some fluke in SOC calculation would make MPPT overcharge
batteries. Is it possible?

S/V Festina Lente

MPPT ControllersVE.Can
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

4 Answers
hjohnson avatar image
hjohnson answered ·

So've been looking at something related to this too, also using the REC BMS. However, the way you understand things isn't quite right (assuming you're running DVCC, which you should be). In this situation the REC snds out messages saying "I want x A feed" and the charging sources will do that.

From what I can tell, you can configure the CHAR command on the REC and that will limit the charge to it. These commands need to be sent to the BMS via RS485, rather than over the CAN Bus. I'm looking at implementing something via Node Red. the idea is that I can let the battery stay at roughly 80% at the dock and while doing daysailing, but if I'm going out on an overnight or longer trip, I can remotely log in and kick it up to 100% charge.

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

karwas avatar image karwas commented ·

Thanks so much for your answer.

I still have few questions and comments.

According to REC Active BMS documentation, "CHAR" command can be used to
set (or inquire settings) of individual Cell End of charging voltage (page 12 of pdf manual):

Cell End of charging voltage
Returns float voltage [V]
2.0 to 4.30 V

Unfortunately, charging characteristic of LiFePO batteries has very little correlation
between cell voltage and state of charge. In my case I have observed that with given
charging current, voltage on cells stays constant (+/- few mV) until cell is nearly fully charged,
and then rapidly increases in the last few minutes. So any detection of SoC based only on
cell voltage measurements alone is fairly inaccurate. If, on the other hand, objective is to detect
when individual cell is approaching 100% SOC, and based on such detection, start balancing
procedure, and eventually terminate charging process, simple voltage measurements are sufficient.
The actual charging algorithm is actually very nicely described with all details in "Battery Pack's
Charging Algorithm" section of the REC manual.

The configuration challenge for me is how to configure accessible parameters to deploy this
ramped-down charging process and eventually stop it at 80% SOC.

I think that I could handle software/hardware side of this project using some RS485 dongle connected to spare USB port of Cerbo GX, but I don't know what software knobs
I would need to turn to make charging algorithm triggered by SOC and not cell voltage.


And yes, I do run DVCC, although I need to do some reading about it.

What is confusing me it is that it seems like REC BMS would be perfectly capable
to control MPPT via CANBUS, even without Cerbo GX. But I need to learn more.


What seems to be a promising feature, is ability to use SoC to start/stop generator:

I would rather avoid running extra wires to use relay to shut down MPPT so I am still
looking for the solution using my existing bus topology (CANBUS for inter-device comms,
and RS485 for configuration, logging and troubleshooting)

S/V Festina Lente

0 Likes 0 ·
hjohnson avatar image
hjohnson answered ·

The other way you might be able to attack this is using node red on the cerbo. Watch the SOC as reported from the battery, and when it exceeds 80% disable your charging sources. It’s not elegant (and won’t likely work with my Wakespeed) but I think i should be able to disable charging from my mppt and multiplus.

1 comment
2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

karwas avatar image karwas commented ·
I have not mentioned it in my original post, but I also have Wakespeed WS500:-)

But whenever Balmar is making power under a Wakespeed supervision,
I am on board (or some other capable crew member), and I hope we can
react if see that batteries are on the verge of overcharging.

MPPT is a different story as it is commonly used unsupervised in marina.

0 Likes 0 ·
kevgermany avatar image
kevgermany answered ·

Some background to take into account:

Always charge to battery makers recommendations

There are different chemistries in lithium batteries, with different charging needs. Some of it is covered in this Tesla manual page.

In particular LiFePo4 should be fully charged.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.

karwas avatar image karwas commented ·

Very interesting indeed.

My boat battery bank is made of 12 individual prismatic cells 280Ah each in 4s3 configuration.

Unfortunately I don't have any good technical data about those cells, as I have got them
from Aliexpress (Chinese eBay).

What I know about charging LFP (LiFePO4) batteries I have mostly learned
from this excellent blog:

and specifically this:

and discussions with friends.


I am really confused about Tesla manual you have shared, because in my model Y
whenever I use the slider for charging limit over 90% or so, it warns me that I should
consider lowering charging limit to improve battery life. And according to my VIN,
seventh character is "E" which indicates LFP batteries.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ correction, I was wrong
seems like "F" is for LFP, "E" is for NMC

Please also bear in mind that I have used Tesla just as an example of "wanted"
charging behavior - I trust (somehow) Tesla engineering much more that my own
Frankenstein solution with all the vendors and cheap Chinese cells :-)

0 Likes 0 ·
klim8skeptic avatar image klim8skeptic ♦ karwas commented ·
0 Likes 0 ·
kevgermany avatar image kevgermany ♦♦ karwas commented ·
Looks like all the info you need is in your second link(plus a ton more, information overload rules).

Distilled down it comes to what @shaneyake said. Pick a voltage set this as absorption. Then set float a bit lower, which will stop the charge until battery voltage drops. And set tail current. Also check the REC BMS docs to see how/when cell balancing kicks in. As he said, this needs to happen.
0 Likes 0 ·
shaneyake avatar image
shaneyake answered ·

The simplest way to do this is to limit charge voltage in the DVCC menu.
You could just set the limit to 54.4V which is 3.40V per cell. Or whatever voltage archives your desired SOC.

But something to keep in mind is that you really want to top balance the LFP cells and that isn't really going to happen if you go too low on the SOC. LFP is not like lithium-ion batteries that typically degrade at higher SOC's, LFP is happy to sit at 100% all day long, especially if your 100% is like 3.45V per cell.

2 |3000

Up to 8 attachments (including images) can be used with a maximum of 190.8 MiB each and 286.6 MiB total.