I am using a SMBS0 with HW version 0.3d and SW version 5.0d with the WiFi module
The load would be a water pump to lift water to a tank. Technically, however, with creative use of a small automatic transfer switch and a small UPS it could be any AC load that has a somewhat constant current draw profile, including a TV :)
Using EXT IOx as type 4 does not achieve the same thing. As you indicate there is the risk that the battery will never get to full charge. I know that it is important for calibration of SOC that this is done periodically (daily if possible).
I currently use :
- EXTIO3 - Type 2
- EXTIO4 - Type 1
- EXTIO6 - Type 5
- Over Voltage Delay - 6s
In the future I might want to use EXTIO5 as Type 6 and so I don't want to tie it up using it as Type 4 anyway.
With the solution that I am proposing the diversion AC load will be activated only after the battery gets to full charge (EOC & OV flags set for 3s) but before charging sources are turned off (OV flag is set for 6s). As far as I am seeing it I should have a 3s window to turn on the diversion AC load and thus be able to slow the rate of charging of the cells such that no cell causes the OV flag to be set for 6s thus leaving the charging sources enabled while 100% SOC has been achieved.
If I am understanding the code correctly this is the section that sets the SOC to 100%:
if (EF[13]==1 && EF[0]==1){EOC++;} else {EOC=0;if (EOC2!=0){EOC2--;}} //see if end of charge flag is ON and also OverVoltage for more than 3 seconds in order to set the SOC at 100%
if (EOC>=3) {EOC=3;}
if (EOC==3 && EOC2==0){BatterySOC=BattCapacity*2;dmpptnewday=0;sbms0newday=0;EOC2=3;} //End of Charge will reset the SOC to 100%
And this is the section that turns off charging for EXTIO4 - Type 1:
if (CFET==0){CFETerror++;}
else {CFETerror=0;}.
.
.
if (ERROR5==0){ERROR55++;}
else {ERROR55=0;}
if (CFETerror>=3){CFETerror=3;}
if (DFETerror>=3){DFETerror=3;}
if (ERROR55>=3){ERROR55=3;DFETerror=3;CFETerror=3;}
.
.
.
if (EXT[2]==1){if (CFETerror<=1 && sbms0charge>0 && (sbms0dualPV==1||sbms0dualPV==3)) {EXT4_ON;} else {EXT4_OFF;}}
Given that there is no more EXTIO available on the SMBS0 can you assist with advice on how I can safely use the ESP32 to drive an external isolation board to achieve the desired outcome.