S Bms Manual
S Bms Manual
S Bms Manual
2
SBMS120
SBMS40
Simplified diagram 3
Specifications 4
1. Install instructions 5
2. Thermal management 9
3. Cable selection 11
4. External Load 13
5. Battery temperature 15
6. The 16pin connector 16
7. Selecting the battery and PV panels 17
8. WiFi 19
9. Internal data logging 21
10. User interface 24
Schematic 42
8 7 6 5 4 3 2 1
Step 4
Go to monitoring menu page 3 and push OK button then a small sub menu will be displayed in the top left corner. Use down key to select Load
OFF and then push OK to enable this.
You should see CFET and DFET flags change state from highlighted to not being highlighted meaning that load+, PV1 and PV2 are disconnected
internally.
Step 6
Connect the PV1 and or PV2 to your PV array to appropriate size circuit breaker in OFF position.
See the page 16 for the type of PV panels recommended based on the number of cells and battery voltage.
Step 8
Check the first page of the Monitoring Menu to see if all works correctly and you are done. Make sure you follow the install procedure in reverse
when you want to remove the SBMS. Never remove the Batt+ or 10pin cell monitoring connector while PV1, PV2 or Load+ are connected.
You can use the simple formula below to calculate the TDP.
For example you need to know the R for Load+ and PV1/PV2. Load+ resistance path on SBMS120 is 0.6mΩ and SBMS40 is 1.2mΩ were PVx
input on SBMS120 is 2.2mΩ and on SBMS40 is 3.5mΩ.
For max configuration on SBMS100 you have:
on Load+ TDP = 120A x 120A x 0,0006Ω = 8.64W
on PVx TDP = 60A x 60A x 0,0022Ω = 7.92W
So total 8.64W + 7.92W + 7.92W = 24.48W on full load SBMS120
*as an example an aluminium flat plate of at least 3mm thickness and 15 x 30cm in size should be able to dissipate the 25W (of course the larger the heatsink
area the better).
The SBMS120 without any heatsink or fan can at most dissipate 5W to 6W (depending on ambient temperature and airflow) so below is an example
with lower power to allow this.
Example SBMS120 with max 40A load and 30A on each PV
So 40A load and 60A charging is around max supported by SBMS120 without being mounted on a heatsink.
The SBMS has an internal 10k thermistor installed on the main board and will measure and
display the temperature of that board. If temperature exceeds +60°C the charging and
discharging will be turned off and only turn on the charging and discharging when
temperature drops below +50°C.
DC-Load1
DC-Load2
DC-LoadN
8 7 6 5 4 3 2 1
EXTIO3+
EXTIO3-
EXTIO4+
EXTIO4-
XT1-
XT1+
to inverter+
ADC1N
ADC1P
to Battery+
EXTIO3 ( to inverter remote ON/OFF port set this as type 2 in EXT IO menu)
EXTIO4 ( to charger remote ON/OFF port set this as type 1 in EXT IO menu)
The EXT IOx pin you decide to use (EXT IO3 used in the above example) will need to be programmed in the EXT IO x submenu as type 2
(Low Voltage Disconnect) or as type 4 if you want the load (inverter) to be disconnected when battery gets below a certain SOC level
(user programmable).
Another setting you will need to do is in the ADC (ExtLoad settings) submenu were you will be turning the ExtLoad ON and providing
the ExtLoad shunt resistance value in [mΩ] so that SBMS is able to calculate and display current correctly.
Example 1) 500A 75mV shunt will have a resistance value of 75mV / 500A = 0.1500mΩ.
Example 2) 75mV / 200A = 0.3750mΩ
Example 3) 75mV / 10A = 7.5000mΩ.
The current shunt for SBMS40 and SBMS120 is bidirectional so a charger can also be used as long as the charger supports remote
ON/OFF that will be connected to the EXT IO4 set as type 1 in the EXT IO x submenu.
01 & 02 UART TX and RX pins are used for the WiFi module so if you want to use the USART for
USART TX 01 02 USART RX
something else then WiFi will be disabled (voltage levels 0 to 3.3V).
SDA / EXT IO1 03 04 EXT IO2 / SCL 03 & 04 This two pins are reserved as I2C port for communicating with Digital MPPT heat
BOOT 0 05 06 EXT IO5 / SWK controller. Firmware version 3.0g or higher has support for DMPPT450.
ESP FLASH 07 08 EXT IO6 / SWD 05 Boot 0 connected to pin 12 will put the STM32F373 microcontroller in programming mode.
GND 09 10 GND 06 & 08 This pins have dual function as programmable EXT IO5 and IO6 (0 to 3.3V 20mA max)
NC 11 12 3.3V-100Ω and as SWK and SWD programming interface for the STM32F373.
EXT ADC2 13 14 EXT ADC3 07 ESP Flash connected to GND will put the ESP32 WiFi module in programming mode.
GND 15 16 GND 12 This is a 3.3V supply from the internal DC-DC converter trough a 100Ω series resistor
mostly to be used to pull up BOOT 0 pin to enter programming mode.
13 & 14 Ext ADC inputs 2 and 3 with analog input range of 0 to 1.8V that will be logged in the internal SBMS memory at 2 minute
intervals but not used in any automation with the latest firmware version. This are good if you want to log some other analog signals.
09, 10, 15 & 16 GND (same common ground plane for all 3 pins).
For battery you will need 4 cells in series for 12V and 8 cells in series for 24V (that is for LiFePO4 most cost effective batteries for stationary
energy storage). Any number of cells in parallel will be equivalent to a larger capacity cell but is still easier to have a single large cell than
multiple smaller parallel cells. All cells need to be new and the same model/capacity.
In case LiCoO2 or other high energy density Lithium variants mostly used in consumer electronics and electric vehicles for their higher energy
density 7 cells in series will give you the best 24V equivalent and you will select battery Type 2 on the SBMS.
But LiCoO2 will in most cases be more expensive than LiFePO4 over the life of the battery so unless you find like new cells from a damaged EV for
less than $100/kWh as of 2017 is best to get LiFePO4 that is around $400/kWh new but also lasts at least 4x longer and is safer to use.
*Min refers to the worst winter month and that should be the targeted power consumption if you are completely off-grid and there is no other
energy source. The numbers are based on the http://pvwatts.nrel.gov/ online calculator and correlated with my 5 years offgrid experience in
Regina/SK/Canada. Panels should be tilted ideally for the best output in winter when is needed most since in summer you will have a lot of excess
energy anyway.
There are 3 locations for each group and they are with in 10% of each other so it made sense to group them to keep the table clean.
var PV1="################################################################################################################################################################################################################################################";
var PV2="###################################################################################A\\_ky}vnM#L$##@*###=###D###L$###I2#-;}xtqp6######################MnoqpoligU############:VUUTSSRQP||||||||||||{|||||{||{||||||||||||||{||{{{{||||{{{{|{|{{|||{";
var Btp="###################################################################################?X\\iy}vmI#G###9####6###?###H####<$##4}vqoo'######################0Y[\\\\ZWTR<#############<<GJIHHFFx}vuvwvvwwww{|{|vu{tu|uvwwvvvuv{zvutyzttuvw{uuttt{uwvvvvwvvu";
var Btn="############################################################################################,#*,,##,,,#,,,#,,,#*,,,##3(#######666666676677677777778:##########GGGGGGGGGGHH*#####################################################################";
var Ld ="%$$$$$$$%$%$$$$$%%%%%%%$$$$%$%$%$%%%$$$$$$$$$%$%&&&&&%%&%&&&%%&&&&%&%%&'(''''&%%&%&>QRSSRRQQTSUTUSTUUUSTTTRTTTPRSTW|z}|UOOPNMQRQQRRRRSRSSSRSTTTSTTUZ}{z{{zzyxxzzz{{{{|{{||zzz^TSSQSRvly{yxxzwwwxnnomxzn|zmzzvwyzyzypryz}rp|
zywuo{z{zznywwxvwwxxz";
var ELd="################################################################################################################################################################################################################################################";
var sbms="3';2LD$,I)I*I+I+H}I%I+I**h##+#)P####->##################%N(";
var xsbms="#&lL6>N$##5";
var gsbms="#Kc#7?#-L#Hp#*+#)r#)|#&|";
var eA="####.(##########K2empty-####K2####3i######";
var eW="####&%##########-xempty-####-x####'X######";
var s1=['Ah','A','SBMS100'];
var s2=[0,0,0,0,0,0,0,0,3,5,1,1];
The small print above is an example of what you will get if you look at the raw data. The data is compressed using my proprietary base 91
encoding using the ascii characters from 35 "#" to 125 "}" this was a simple and efficient way for me to compress data.
The first 6 variables in that raw data are the data for displaying the 6 graphs (3 graphs windows each containing 2 graphs or in the case of battery
a separate graphs for charging and discharging)
It will be simple to deduce each of those variables and what they contain by looking at the java script code inside the html file mentioned above.
Since this are just raw data representing measurements made by the SBMS you can modify the html page so that you can get a better / nicer user
interface or more tailored to your needs.
The sbms variable is the one containing the most important data and I will go in to more details about that one in the next chapter related to SBMS
internal data logging.
var sbms="YMDHMS%%C1C2C3C4C5C6C7C8ITET+BATPV1PV2EXTAD2AD3AD4ht1ht2ERR"
Y-year last two digit (limited to 2090); ( sorry if you read this in 2091 I will not expect a software update :) ).
M-month
D-day
H-hour
M-minute
S-seconds
%% - SOC 0 to 100%
C1 to C8 - cell voltage in mV
IT and ET - internal and external temperature in hundreds of a degree 0 is -45C and 1449 is 99.9C so you need to subtract 450 from the result and
divide by 10 (example 689 as result of the decompression will be (689-450)/10=23.9C)
+ - sign for battery charging (+) and discharging (-) used as it is no compression.
BAT - Battery current in mA from -750000mA to +150000mA
PV1 - PV1 input current in mA
PV2 - PV2 input current in mA
Uncompressed data and formatted in .csv as it was on SBMS4080 will look like this
Y ,M ,D ,H ,M ,S ,SOC,cel1 ,cel2 ,cel3 ,cel4 ,cel5 ,cel6 ,cel7 ,cel8 ,IT ,ET ,-Batt , PV1 , PV2 ,ExtLoad, ADC2, ADC3, ADC4, heat1 , heat2 , ERR
00,01,31,22,53,47,100,3414,3416,3444,3433,3426,3419,3420,3380,000,000,-002000,000000,000000,000000,000000,000000,000000,000000,000000,000000
This is the javascript function for decompression (you will find this inside the SBMS webpage) function dcmp(p,s,d){xx=0; for (z=0;z<s;z++){xx =
xx + ((d.charCodeAt((p+s-1)-z)-35)*Math.pow(91,z));}return xx;}
Were
p - location of the data in the string.
s - size of the data (example year is 1 cell voltage is 2 and PV1 current is 3)
d - the name of the variable in this case sbms.
At power on the SBMS will be on main menu and this can also be access later from any other sub-menu by pressing the menu button on top.
The same Menu button has a dual function and if you keep that button pressed (is a touch button so touched) for about 5 seconds you can power
ON or OFF the Load and Charge FET's.
You will also be able tho see the most important information on the bottom part of the screen (that part is present in most menus).
The bottom part contain SOC level in numeric and graphic form the SBMS status represented by a number, the WiFi and internal data log “mem”
symbols. The lowest part will indicate if charge and discharge FET's are active by highlighting or not the PV and Load and you also have the
current for PV, Battery and Load.
* SOC (State Of Charge) indication will be set automatically to 50% (49%) when you
connect the SBMS to battery for the first time since SBMS can not guess the state of
charge based only on cell voltage.
After the first full charge (on battery type 1 when highest cell gets to 3.53V and EOC
flag will be set the battery SOC will jump to 100% ) from that point SOC indication will
represent the real value.
The monitoring menu is were you see all the information about the current state of the battery, PV and load.
All is hopefully obvious. The IT (+34°C in the example below) is the internal temperature of the power board and if that gets above +60°C then
both the Charge and Discharge will be disabled and will only be enabled after temperature drops below +50°C
ET is external temperature optional since a LiFePO4 will not have any temperature increase working within the 0.3C charge rate and 0.6 to 0.8C
discharge rate recommended for Off Grid solar type applications.
The first direction sign for the battery with a darker color represents the ISL94203 current direction detection not as sensitive as the dedicated
current shunt and if there is no minimum load or charge in order for the ISL94203 to detect the IC will try to enter in sleep mode after 4.5h of
inactivity so you may notice a short one second or less power OFF if you have a really small load and charge not detected by ISL94203 IC.
By pressing the OK button while in this menu you will be presented with a
small submenu allowing you to change the display from current measured
with 1mA resolution to power measured with a 0.1W resolution.
The parameter settings menu is important and the first you will use when you instal the SBMS since you need to select your battery type.
Fortunately the settings are simple since all you need to do is select battery type probably type 1 “LiFePO4” since that is the most cost effective
battery for stationary energy storage do to is long cycle life compared to other type of lithium batteries and also one of the safest batteries.
Then next thing you select is the number of cells probably 8 cells or in some case 4 cells if just a 12v equivalent system is needed and the circuit
diagram on the bottom will auto update to show you how to make the connections for different number of cell configurations starting with a
minimum of 3 cells and up to max 8 cells.
The third and last setting is the battery capacity in Ah and this is needed so that SBMS can know to calculate the real SOC (State Of Charge) for
your battery pack.
In the example below is my small 20Ah A123 system battery but the settings is set at 18Ah because that is the real capacity I measured and using
that will give me a more accurate SOC calculation.
Then just push the Store Parameters button and a green progress bar will show up briefly (about 2 seconds) indicating that data is written to the
ISL94203 EEPROM and for this to take effect a power cycle will be needed as explained in install instructions.
*the parameters can not be set while SBMS is powered by USB you need to be connected to a battery to use Store Parameter button.
The advanced parameter settings contains over 30 parameters related to battery charging and discharging and for most users this is not something
they will want to mess with :) . If you think you have strong knowledge about how the Lithium cells should be charged then just read the build in
scrolling help explaining each parameter.
The default parameters that I carefully selected for long battery life are good for most cases. Unless you want something specific and you
understand the implications of changing this settings is better not to change settings in this menu.
If you do change one parameter look also at the rest of them since there are probably related parameters that need to be changed also in order for
the charge and discharge to work correctly.
When entering from the main menu in the Parameter setting the parameters displayed in both simple and advanced are the one currently set in the
ISL94203 when you select a Cell Type all the values will be set to default.
*the parameters can not be set while SBMS is powered by USB you need to be connected to a battery to use Store Parameter button.
To enable internal data log you need to set the time and date. While in the time and date menu the data logging is disabled but once you get out of
that menu after you set the date and time the internal data log is enabled and you will see the “mem” symbol under WiFi symbol highlighted.
New option since 3.0g version was added allowing automatic reset of energy counters every 24h at midnight.
The USART RX and TX pins are available on the 20 pin connector for the user but they are also used by the WiFi module so if you want to use the
serial port the WiFi can not be used.
When you set the USART data log on 1 the WiFi will automatically be deactivated. You may also want to set the bit rate lower since that default
921.6kbps is used by the WiFi module.
The log interval represents the interval at witch the compressed log data will be sent over automatically (no request is necessary). You just need a
device reading and storing the data.
The SBMS has an internal WiFi module based on the popular ESP8266.
The WiFi is set as an AP (access point) and you can select the channel, the AP name (useful is you have more than one SBMS) and you can also set
a password if you want there is none by default. The lower part is the raw response of the module to CWSAP command if WiFi module is ON.
Disabling the WiFi will power down the module and that is the best way to save power (not that is needed with the huge battery capacity used in
offgrid).
Check page 19 for more details on the WiFi
You can download one month at a time worth of data from the internal 128Mbit (16Mbyte) internal SPI Flash memory that can store the last 12
months worth of data.
The progress that normally takes around 40 to 50 seconds is shown as a matrix of small rectangle each representing one of the 744 hours in a full
month. The ones with a different color represent a transmission error but that will be “corrected” so there will be no missing data but there may be
some data sent twice still not a problem since no data is missing.
For more details on how to use this to download data over WiFi check page 20
*Not implemented since the new ESP32 has no support for bulk data transfer as the old ESP8266. Will need to find an work around in the next firmware release.
The work around since firmware version 3.0g is to allow download over UART (serial port) of the internal log data.
There are two buttons one that will save all the settings made in the Device Settings menu except for the time and date settings and all the settings
in the Automation menu. After the power to SBMS is removed this data will be in the internal Flash memory so they will be loaded at power up.
The Save device settings will just give you a confirmation that data were saved but the Factory reset (that actually just deletes this saved settings so
that default are loaded initially) needs also a confirmation.
So for Factory reset you need to push OK once then it will ask to confirm by pushing the OK button again.
In this menu you can see the 16pin connector pinout and you can set the 4 EXT IO pins as one of the 5 types including the possibility to change
state when battery SOC is above or below a user defined SOC.
In the ADC settings you can set ON/OFF and external load see page 12 for more details and you can also manually calibrate the internal current
readings by fine adjusting the internal current shunt value. The default should be close enough in most cases.
The current sense amplifiers used for PV and ExtLoad can have a positive or negative offset. In case the offset is positive the auto-calibration done
when SBMS powers ON can be done correctly. Since ADC inputs (with the exception of battery ADC) are single ended and can only see a positive
voltage as reference to ground it will not be able to see a current sense amplifier negative offset (offset has to do with manufacturing tolerances)
and a manual correction may be necessary. The offset is usually very small and will translate in just a few mA worst case 300mA.
You will notice that at a small current there will be no reading and after current is above the offset level the reading will exist but it will have the
subtracted offset value. If you add that offset in here the reading will be more accurate since it will include that negative offset.
This is just useful for development there are some raw ADC readings and the content of the ISL94203 memory again as raw data.
Since I used this during development I decided to leave in the final release but is not useful for most people.
The SBMS has build in install instructions and a basic manual so if you do not have this pdf manual but have access to SBMS and an micro-usb
cable you can read the install instructions from the SBMS LCD.
The about menu offers some important information. On top of the expected model number, hardware and software version you also have an energy
counter for PV1, PV2 and Battery that are separate from the resettable counters on the monitoring menu.
This counter has no option to be reset and the counter value will be saved once every 24h in the internal flash memory so the value will be there
even after a power cycle.
There is also an UP Time counter that will count the number of hours the SBMS was powered.
This screen capture below is from the SBMS120 installed on my house A123 180Ah 24V battery connected for a bit more than a week 207h
Total energy used was 34.248kWh with a part of it was used directly by load but also a significant part 19.424kWh was used from the battery.
An average of about 4kWh/day was used typical for my house needs at this time around 120kWh/month.
HW : http://electrodacus.com/SBMS120/HW/SBMS_HW.zip
SW : http://electrodacus.com/SBMS120/SW/SBMS_v3.0g.zip
Firmware binary : http://electrodacus.com/SBMS120/SW/SBMS_v3.0g_bin.zip