HLP Data BMS4S User manual

1
1
BMS4S user manual version 4
Valid for software version 4.x.89
BMS4S DIY kit: ......................................................................................................................................... 2
Introduction ............................................................................................................................................ 2
Important information ............................................................................................................................ 3
Normal usage .......................................................................................................................................... 3
Basic configuration .................................................................................................................................. 4
Additional Commands ........................................................................................................................... 11
System Commands ................................................................................................................................ 16
Installation ............................................................................................................................................ 17
Short step-by-step basic installation..................................................................................................... 19
Connection of more equipment and some more details ...................................................................... 20
Testing ................................................................................................................................................... 24
Balancing ............................................................................................................................................... 25
Alarm ..................................................................................................................................................... 25
I/O description PCB version 4.1 ............................................................................................................ 27
Appendix A, Connect with an Android device ...................................................................................... 28
Appendix B, Connect with an Iphone or Ipad ....................................................................................... 29
Appendix C, Connect with a Windows PC ............................................................................................. 30
Appendix D, Alternative way to control an alternator ......................................................................... 32
Appendix E, Example of howto change an BMS4S open collektor port to +12V .................................. 33
Appendix F, How to connect an LCD display ......................................................................................... 33
Appendix G, How to connect to Venus OS (and VRM portal) ............................................................... 34

2
2
BMS4S DIY kit:
The basic package contains: 1: a BMS4S circuit board and a box to mount it in.
In addition to this, you may also need
2: a Bluetooth radio for communication with BMS4S,
3: an adapter for USB to serial connection to BMS4S,
4: a 12 V LED for low SoC early warning,
5: a buzzer/alarm.
6: or a buzzer/alarm for panel mounting,
7: a pushbutton for temporary charge level setting,
8: one or more temperature sensors
Introduction
BMS4S is versatile battery management system that can be used in many different configurations. It
is designed to supervise four LiFePO4 cells and automatically control that they are kept within
specified boundaries. It can be used with default configuration straight out of the box, but can also
easily be changed and used in a completely different setup. There are few limitations built into it.

3
3
You will find a description on how to install the BMS4S in chapter “Installation”, with more details on
exactly how to connect all wires in chapter “Equipment connection description”. After installation
you should test that it is working as expected. This is described in chapter “Testing”.
During normal usage there is not much you need to do, but there are some things that can be of
interest for most users. This is described in chapter “Normal usage”.
How you use your cellular phone to connect to BMS4S is described in chapter “Normal usage”.
Available commands are described in three places: “Basic configuration”, “Additional commands”
and “System commands”. All commands are built from one or two small letters, so in the Basic
configuration chapter the commands can be derived from the printout, the capitals in each line is
the command to use to change that setting. To give any commands that changes any settings you
must first unlock the device with command du=1234. Default PIN is 1234, but you should change this
after installation to your own one, command dp=nnnn. All system commands are protected by
another level of protection since you can make BMS4S completely useless by a single bad system
command. To unlock system commands, use command: fu=1632. Do not use any system command if
you have not read the user manual carefully first. But there is always a way to get back to the
original settings from factory, see command: fr.
And you can always get a command summary when connected to BMS4S with command: h.
Important information
The first thing to connect to the BMS4S is ALWAYS – (minus) and B0 (and the last thing to disconnect
if you are going to remove it). In other words, you must NEVER disconnect the minus pole from the
battery if it means that – (minus) to the BMS4S is also disconnected. Then it's electronics you work
with. Static electricity and the wrong cable on the wrong port risk burning the BMS4S. So don't wear
clothes that can easily create static electricity (fleece for example) when installing, and always
double check that you're wiring correctly before plugging anything in. More about how to connect
can be found in the chapters "Short step-by-step basic installation" and "Connecting additional
equipment and some more details"
Normal usage
BMS4S is switched on as long as it has power on terminal +12V. Normal usage is to take a look at the
LED every now and then. If it is blinking twice, then there is less than 20% energy left in the
batteries. If it is blinking once, it is less than 10%. You can change this to start the blinking at any
level of charge. Command sl=nn.
Beside the LED you have the push-button. When you are on your way home and the boat will be
unused for a while, then your batteries lifetime will increase if they are not left fully charged. Then
press it until you see 3 long blinks on the LED. This will decrease the voltage when BMS4S will stop
charging with 0.10 V, which equals approx. 80% SoC when using default settings. Or keep in pressed
until 4 long blinks on the LED. This to achieve approx. 60% SoC (decreases the stop-voltage with 0.15
V).
When you press the push-button for a single long blink, three things will happen: the charging
voltage will be reset to normal, if an alarm is beeping it will be rest and you will wake up (actually

4
4
restart) the Bluetooth radio that you can connect your cellular phone to. BMS4S has two ways of
communication: a socket to plug in a FTDI adapter and a socket to plug in a bluetooth module of
type HM-10 or equivalent. You connect with e.g. “Serial Bluetooth” on an android phone and with
“BLE Terminal” on an I-phone. These are available for free on Google play and Apple appstore. When
installed, scan, find and connect to the Bluetooth device.
It often happens that the USB adapter and the bluetooth adapter interfere with each other, so have
only one of them connected at a time.
If you give the command p (print) you will get a printout looking like this:
U=3.264 3.268 3.262 3.266 13.060 I=-1.335 SoC=35 (38)
This (U=…) means that all four cells have 3.26 V each (reported in order B3, B6, B9, B12), adding up
to 13.06 V. Next, I=…, means that right now there are 1.335 A leaving the batteries (this only works if
you have connected BMS4S to a current shunt, but that is not necessary for it to work). And SoC=…
means that BMS4S estimates current state of charge to 35 % based on the last 15 minutes (can be
changed with te=nnn). The value within parenthesis (38) indicates what the estimate is at this exact
moment. Using voltage and load gives a very rough estimate on higher SoC levels, but to use it as an
early warning system when SoC is getting low works well. And it does not require regular
synchronizations like a coulomb-counter based meter does.
If you get an alarm from the summer/alarm, command po will give you the reason in clear text. The
command will also give some more other basic information.
Another thing that is good to check every now and then is command pe (print extreme point log).
See the description of it in chapter “Additional commands”. It will give you information about hoe
your batteries are performing.
And it may be useful to regularly press the button and see that the BMS4S responds with a blink to
ensure that the BMS4S is operational. If you want automatic monitoring, install double BMS4S. Then
they can monitor each other and alert if one of them stops responding.
Basic configuration
The starting point before changing anything is to take a look at current configuration. You do the
with command ps (print setup):
WorkMode= 1
BatterySize= 100 Ah
BatteryUse= 30 Ah
BatteryCharging= 50 A
TimeEstimate= 900 s
TimeBeep= 200 ms
TimeRelay= 300 ms
TimeprecharGe= 0 s
VoltBalance= 3.500 V
VoltDifference= 0.000 V
BalanceInit= 0.000 Ah
BalanceAmount= 0 %

5
5
StartLedblinking= 20 %
VoltWarn= 3.100 V
VoltLow= 3.050 V
VoltVerylow= 3.000 V
TimeLow= 15 s
VoltswitchOnagain= 3.100 V
VoltlowExtrabat= 0,000 V
Voltlimitextrabat2= 0,000 V
VoltAbsorb= 3.500 V
TimeAbsorb= 1200 s
VoltHigh= 3.600 V
TimeHigh= 5 s
TimeChargeoff= 14400 s
VoltNocharg= 13.600 V
VoltResumecharge= 3.250 V
TimeWarning= 120 s
Templow1= 5 C
Tempwarn2= 50 C
Temphi3= 60 C
Temptarget4= 95 C
Temphi5= 100 C
Tempres6= 90 C
Limit-step1= 10 s
Limit-step2= 100 %
Limit-step3= 100 %
TimePrintout= 0 s
TimeMemlog= 315/600 s
TimeioOpen= 600 s
The first block of lines describes some basic setup of BMS4S:
WorkMode= 1: it means a current shunt is connected. Recently, the number of WorkModes has
soon become so many that the new ones will have to be controlled by the command
WorkmodeExtended (we=), and all functions have been renumbered for that command (in brackets
in the list below). The we-command can only address one property at a time. If you want to
deactivate the shunt and activate the parasitic feed, you must give two we-commands: we=-1 and
we=+5. However, command wm will still work for the listed functions.
0 workmode normal
+1(1) there is shunt connected
+2(2) measures 12V only
+4(3) supervised and supervising another BMS4S, master
+8(4) supervised and supervising another BMS4S, slave
+16(5) parasitic power for temp-sensors are activated

6
6
+32(6) not used
+64(7) Swedish CSV (comma separated values in printouts for import into Swedish excel)
+128(8) simplified test of temp-sensors (no CRC)
+256(9) only p at tp= instead of both p and po, useful at certain test-cases
+512(10) power off when high bat temp, normally only charging will be stopped
+1024(11) all off port = charge on for bistable charging relay (no very low volt relay available)
+2048(12) precharge port = charge on for bistable charging relay (no precharge relay available)
+8192(14) Charge OFF port is inverted
+16384(15) not used
(24) button moved to Sup port
After you have changed workmode, a restart can be required to get it into the new mode
(e.g.we=+14), command rb.
BatterySize= 100 Ah: size of installed LFP bank. Change with bs=nnn as implied by the capital letters.
But before you can start changing anything you must unlock the device by command (device
unlock) du=1234. You should change this to your own PIN by command (device pin) dp=nnnn. If you
have forgotten your PIN, you can set a new one within 30 seconds after you have switched on the
power to BMS4S. You can remove the PIN by command dp=0 (not recommended). (note, all
commands are given with small letters)
BatteryUse= 30 Ah: You use 30 Ah every 24 hour which means that you get out of power after 3
days without charging (if you have a 100 Ah battery). Used to estimate SoC if no current shunt is
connected. Change with command bu=nnn. The same applies to all commands below, the capital
letters in the printout imply the command to use when changing the setting. If BatteryUse is set too
high, SoC estimates will also be too high.
BatteryCharging= 50 A: the most common charging method will charge with 50 A. Used to estimate
unbalance between cells if no current shunt is connected. If you are using automatic balancing using
coulomb-counting, you should also install a shunt to ensure that the unbalance-estimates are as
good as possible (see chapter “Equipment connection description” below).
TimeEstimate= 900 s: The Soc estimate is based on the last 900 seconds (15 minutes). If you have
installed a shunt and calibrated BMS4S you can probably shorten this time. Then 300 s (5 min) might
be good.
TimeBeep= 300 ms: each beep will be 300 ms long. If you have a really loud beeper you might want
to shorten this to achieve a bearable sound level. Affects Beep output port.
TimeRelay= 300 ms: when the bi-stable relay is operated it is done with a 300 ms long pulse. Affects
the Load OFF and Load ON outputs (and Charge On and All-OFF if WorkMode 1024 is enabled).
TimeprecharGe= 0 s: if you have equipment with high start-up current you might want to pre-charge
them before operating the relay. If you set this timer between 1 and 10 s you will get a pulse to use
for a small relay with a resistor parallel to the real relay that will soft-start the equipment. This pulse
comes on the port “PreCharge”.
The second block of lines describes how balancing will be handled.

7
7
VoltBalance= 3.500 V: There are two ways to use the built-in balancer. Both uses this value as the
starting point when the balancing procedures are initiated. This value shall normally not be set
below 3.4 V. If you do not activate the balancer, these settings will be used to calculate how big the
unbalance is.
VoltDifference= 0.000 V: This is the first and simplest balancing alternative. If this value is set
(recommended value: 0.050 V) then when the first cell has passed the BalanceVolt-value (during
charging) and the voltage difference between two cells exceeds the VoltDifference-value the
balancing will start and proceed as long as the BalanceVolt-value is exceeded and the unbalance
remains. But since the balancing current is low (0.2 A) and that balancing is done only while
charging, this method only works when the battery bank is reasonable well matched (all cells have
close capacity values). Otherwise, the second method is recommended.
When you activate any kind of balancing BMS4S will check that balancing not will cause too much
voltage drop due to too narrow wires. If you get the result ”bad voltage sense cables!” it is
recommended to increase the dimension or shorten the voltage sense cables.
BalanceInit= 0.000 Ah: This is the second balancing alternative. When the first cell passes
BalanceVolt-value during charging (and VoltDifference is set to 0.000) coulomb counting starts and
continues until the last cell passes it. If the difference between the best and the worse cell then
exceeds the BalanceInit-value (recommended value: 0.5% of the total battery capacity, i.e. 0.500 Ah
for a 100 Ah battery bank) the balancing will start and continue until the calculated balancing value
is balanced away. It is recommended that you have installed a way to measure the current if you use
this method. See chapter “Equipment connection description” how to do that. Note: VoltDifference
must be set to 0 (vd=0) in order to activate this balancing alternative. It is also important that the
charging current is similar when all cells passes the BalanceVolt-value since the measurement
otherwise might be misleading. I.e. do not set the BalanceVolt-value close to where the charging
device starts to decrease the charging-current.
You can see the coulomb counters with the sort Coulomb (As) with command po, and all calculated
results presented in Ah with command pe. You can use this information to manually balance the
cells with a 3.6 V charger.
When you activate any kind of balancing BMS4S will check that balancing not will cause too much
voltage drop due to too narrow wires. If you get the result ”bad voltage sense cables!” it is
recommended to increase the dimension or shorten the voltage sense cables.
BalanceAmount= 0 %: when balancing starts, it will aim to reduce the difference with the
percentage stated here. The recommended start value 25% is to ensure that it does not overshoot
the target. This is especially important if no shunt is connected, since it then bases the coulomb
counting on what value is set for BatteryCharging. If you find multiple similar entries in the “extreme
point log” (command pe) before an unbalance is cured, you can increase this with e.g. 25% to speed
up the process.
The third block of lines describes how and when a low voltage event shall be handled, i.e. when
shall the loads be disconnected.
StartLedblinking= 20 %: when SoC gets below 20% the LED will start blinking as an early warning, 2
blink for 10-19 % and 1 blink for 0-9 %. Affects the LED output port.

8
8
VoltWarn= 3.100 V: this is the first level of protection. At 3.100 V the buzzer/alarm will start beeping
“low voltage”. It is now time to start the engine and start charging to prevent that any loads get
disconnected. Affects the Beep output port.
VoltLow= 3.050 V: this is when the “not necessary” loads will be disconnected via the bi-stable relay.
Affects the Load ON and Load OFF output ports.
VoltVerylow= 3.000 V: this is when all loads will be disconnected. You can use this e.g. if you have a
second bi-stable relay isolating the batteries completely. If BMS4S is not disconnected when this
happens, it will go into low power mode and only do the most important tasks in a slow paste, like
switching on the system again once charging has brought the voltage up to VoltswitchOnagain.
Affects the All OFF output port.
TimeLow= 15 s: the above voltages must be below the values for 15 seconds before the action is
taken. If you use high power things like thrusters and starters for longer continues time than this you
might want to extend this time, command tl=nn.
VoltswitchOnagain= 3.100 V: when the voltage har reached this level after a low-voltage event the
system will go back to normal again. Affects the Load OFF and Load ON output ports.
VoltlowExtrabat= 0,000 V: If you have a backup battery you can supervise it so you do not forget to
maintain it. A voltage around 12,6 can be reasonable for an LA battery. Controlled by the Bat2 input
and affects the Beep output port.
Voltlimitextrabat2= = 0,000 V: If you have a backup battery and connects it and disconnect LFP,
then the voltage output from the alternator will be unregulated since the voltage is taken from the
LFP bank. Here you can limit the alternator output in this case.
The fourth block of lines describes when charging shall be discontinued.
VoltAbsorb= 3.500 V: Normally LFP cells are fully charged at 3.6-3.65 V. Some chargers miss settings
adopted for LFP, so they will not manage to get the voltage that high. Then you can set an
“absorption” level that it can reach, and the let it stay there for a time. Here this time starts at 3.5 V.
Affects Charge OFF and Gvolt output ports.
TimeAbsorb= 1200 s: and this timer will keep the charger on for 1200 s (20 min) before charging is
stopped
VoltHigh= 3.600 V: All charging sources that can achieve 3.6 V will be stopped at that voltage. 3.6 V
corresponds to approximately 90 % SoC when charging is done with 0.4 C, and is a good compromise
between battery usage and battery life length. Affects Charge OFF and Gvolt output ports.
TimeHigh= 5 s: but the first cell must exceed the set voltage in more than 5 s before the action is
taken.
TimeChargeoff= 280/14400 s: the total time it will be switched off is 14400 s (4 hours) and so far it
has been switched off for 280 s. If it is set to 65500 it means it will never switch on charging, then it
is only VoltResumecharg that will do that. Affects Charge OFF and Gvolt output ports (and All OFF if
WorkMode 1024 is enabled).

9
9
VoltNocharge= 13.600 V: if the generator is not to be stopped completely when charging ends, set
the voltage to be maintained here. Something in the 13.4 to 13.6 range may be appropriate. A new
not fully tested function. Will only show up in the listing of it is not set to zero.
VoltResumecharg= 3.250 V: if the voltage drops down to this level, charging will resume even if
TimeChargeoff has not elapsed. Affects Charge OFF and Gvolt output ports (and All OFF if
WorkMode 1024 is enabled).
TimeWarning= 120 s: if the voltage has not gone down below the set high voltage 120 s after
charging has been switched off, BMS4S will start beeping “high voltage”.
The fifth block of lines describes battery temperature limits.
Templow1= 5 C: if charging is started with battery temperature lower that this a “low temperature
charging” will start beeping, and charging will be stopped for a preset time (see command tc). If you
do not have any temperature sensors installed on the batteries, their temperature will be reported
as 20 degrees. Affects Charge OFF and Gvolt output ports (and All OFF if WorkMode 1024 is
enabled).
Tempwarn2= 50 C: if battery temperature exceeds 50 degrees Celsius a “high battery temperature”
will start beeping.
Temphi3= 60 C: if battery temperature exceeds 60 degrees Celsius a charging will be switched off for
a preset time (see command tc). Affects Charge OFF and Gvolt output ports (and All OFF if
WorkMode 1024 is enabled, and also Load ON and Load OFF if WorkMode 512 is enabled).
The sixth block of lines describes when and what to do when the alternators temperature is
getting high.
Temptarget4= 95 C: when the alternator exceeds 95 degrees Celsius, BMS4S will regulate down
charging current and keep the temperature around 95. However, the temperature is a slow feedback
on how much power the alternator generates, so the temperature will fluctuate a bit around the set
value. Therefore, it is important to set a max-value (Temphi5) where charging will pause completely
if the regulation is too slow. This regulation will only work if your alternator has a voltage sense
cable, and you have installed a temperature sensor on the alternator. Affects Gvolt output port.
Temphi5= 100 C: when the alternator temperature exceeds 100 degrees Celsius, all charging will
pause. This will only work if you have installed a temperature sensor on the alternator. Affects the
Gvolt and Charge OFF output ports.
Tempres6= 90 C: when the alternator temperature has come down to 90 degrees Celsius, charging
will resume if it has been paused. Affects Charge OFF (and All OFF if WorkMode 1024 is enabled).
Limit-step0 = 100%: This is how quickly the BMS4S must react to find a stable position when
controlling the alternator. A high value makes it go fast, but may result in some oscillation. A small
value makes it more stable, but reacts more slowly to changes. Never go below 25%.
Limit-step1= 10 s: Regulation is performed by a PID-regulator (with the integration disabled since it
is of no interest). This is the delay time between adjustment-calculations in seconds. It takes some
time before an adjustment of current influences the temperature, so too short interval will always

10
10
generate oscillations, and too long interval will make reaction slow. If you have mounted the sensor
directly against the stator the delay is normally not that long, then l1=10 often works well.
Limit-step2= 100 %: This is the amplification of the P value (the temperature) feedback in percent
when the temperature differs more than +- 2 degrees from set value. Below this the feedback is
always 0 (the temperature is accepted)
Limit-step3= 100 %: This is the amplification of the D value (temperature difference) feedback in
percent. This is how the regulator stabilizes the temperature when it is within accepted temperature
range.
If the temperature oscillates too much, try increasing Limit-step1.
If the regulation is too slow so the temperature hits Temphi5 or Tempres6, try decreasing Limit-
step1 or increasing Limit-step2
And the last block contains features useful to understand how your system is performing.
TimePrintout= 0 s: if e.g. command tp=5 is given, then the command p and po will automatically be
given every 5 s. This can be useful when testing.
TimeMemlog= 315/600 s: this means that voltage and current will be logged every 600 s (10 min).
The log is started by command tm and can be printed with command pm. 315 is the time since last
log entry was saved.
TimeioOpen= 600 s: after a command is given the Bluetooth radio will remain on for 600 s (10 min).
If you want the Bluetooth interface to stay on all the time, to=65500 can be given.
A command summary and description of blinks and beeps are always available with command h:
h help
l print settings
p print voltage
ba= balance amount (%)
bi= balance initiate diff (Ah)
bp= button press
bs= battery size (Ah)
bu= battery usage (Ah)
bt= bluetooth 0=off, 1=on
ce clear extreme points log
cm clear memory log
dl device lock
dp= set device pin
du= device unlock
fr factory reset
fu= factory settings unlock
mb= mute beep (s)
pd print debug
pe print extreme-point log
pm print memory log
po print other info
ps print settings
pv print version
rb reboot
rp reprogram
sl= set led blink-level (%)
we= set work mode extended
wm= set work mode
t1= temp low charging (C)
t2= temp high battery warn (C)
t3= temp high battery (C)
t4= temp target (C)
t5= temp high pause charging (C)
t6= temp resume charging (C)
ta= time absorb (s)
tb= time beep (ms)
tc= time of charging pause (s)
te= time for soc estimate (s)
th= time high (s)
tl= time low (s)

11
11
tm= time memory log (s)
to= time bluetooth is on (s)
tp= time print volt (s)
tr= time relay (ms)
tw= time before warning beep (s)
v2= volt limit bat2 (V)
va= volt absorb (V)
vb= volt balance (V)
ve= volt low extra bat (V)
vh= volt high (V)
vo= volt power on again (V)
vr= volt resume charging (V)
vw= volt warning (V)
vl= volt low (V)
vv= volt very low (V)
AT AT command
a1-4= adjust battery volt
l0= speed of reaction on voltage changes (%)
l1= time between charge limit calculations (s)
l2= P-value for charge limit calculation (%)
l3= D-value for charge limit calculation (%)
s1-5= set battery volt
sc= set current (A)
sf= save factory data
sn= set push level at no charging
ss= set float size
sv= set verbose
wm(we)=0 workmode normal
+1(1) shunt connected
+2(2) 12V only
+4(3) supervised master
+8(4) supervised slave
+16(5) parasitic sensors
+32(6) not used
+64(7) Swedish CSV
+128(8) no CRC on temp sensors
+256(9) only p at tp=
+512(10) power off when high bat temp
+1024(11) all off port = charge on
+2048(12) precharge port = charge on
+8192(14) invert charge off output
+16384(15) alternative soc profile
1 blink SoC 0-9
2 blink SoC 10-19
...
10 blink SoC 90-99
2 beep low temp charging
3 beep high battery temp
4 beep low voltage
5 beep high voltage
6 beep BMS device failure
7 beep temp sensor failure
9 beep high board temp
10 beep low voltage bat2
Additional Commands
What you normally do is described chapter “normal usage” and chapter “basic configuration”, so
you have the explanation of the important commands there. Here you have a few more commands
that can be of use.
AT AT-command
This is the exception to the statement “all commands are written with small letters”.
The Bluetooth radio this device was designed for entered AT-mode (mode where it accepts
commands) when no device is connected over the radio. So, if you want to change
something in the Bluetooth-radio you can give it e.g. a command like this: AT+NAMEMyBMS.
As soon as this is sent you will be disconnected which will get the Bluetooth device into AT
mode. Half a second after you have given the command, BMS4S will sent it to the radio.
When this is done you will see a blink on the LED. After that you have 10 seconds to
reconnect to get the response that the radio gave to your command. Unfortunately, not all

12
12
bluetooth devices work exactly the same. If this does not work, check the manual for the
bluetooth device you have and see if there are any other way to change its settings. But you
do not have to change anything, it will work fine anyway.
ce Clear Extremepointlog
will clear all entries from the log.
bp Button Press
Instead of pressing the button to do something, with this command you can do it remotely.
Example: bp=1
cm Clear Memorylog
will clear all entries from the log. You can add a text with 12 characters e.g. to state when
the logging was started. Example: cm=24/12-09:30
dp Device Pin
will set a PIN for the BMS4S. Will prevent unauthorized to change any settings. Example:
dp=4321
n1(-5) Name temperature sensor
If you give the command po you will get a list of temperature sensors. In order for BMS4S to
know what these are used for, you must name them with two characters each. If the first
character is an ‘a’, it is supervising an alternator. And if it is a ‘b’, it is supervising a battery.
To name the first one in the list give command n1=xx, the second with n2=xx etc. To identify
one sensor, warm it up with your hand and see which one it is with command po.
Example:
n1=a1
n2=a2
n3=b1
p Print
will produce a printout of cell-voltage, total voltage, current and estimated SoC. Example:
U=3.283 3.283 3.283 3.284 13.133 I=0.000 SoC=41
pb Print Batterysettings
will produce a printout of the settings that control how the SoC is estimated and looks
something like this:
AdjustCharge= -0.150
AdjustDischarge= 0.120
BatteryResist = 2,000
BatteryVector= 2.000
SetBatteryprofile= 0
The estimate is based on a battery profile. Now there are four profiles to choose from,
command sb=n.

13
13
sb=0 and sb=2 have clear knees at 70%, and both are based on measurements of cylindrical
cells in a lab environment. sb=1 is based on data extracted from measurements of winston
cells found online, and sb=3 is influenced by data from American Battleborn.
Then you can adjust the voltage during charging and discharging so that the curve fits your
own batteries with ac=x.y and ad=x.y. And finally, all batteries have an internal resistance
that affects how they handle different currents. Basically, it is the size of the battery bank
that controls this (bs=n), but then you can adjust this with a standardized basic resistance,
br=x.y, and how this is affected by the size of the current, bv=x.y.
This is not necessary to change at all, so far it only affects when the LED starts to warn of low
charge level, and the basic setting is good enough for that.
If you try changing and find a setting that suits your battery perfectly, please let hlpdata
know about it so that future manuals can include recommended settings for different
battery types. Only reported battery profiles are guaranteed to remain, others may be
replaced in future software.
pe Print Extremepointlog
Command pe will give a printout like this:

14
14
HVE , 3.599 , 3.600 , 3.598 , 3.599 , 14.396 , 77.130 ,
HVA , 3.517 , 3.520 , 3.518 , 3.520 , 14.074 , 14.970 ,
LVE , 2.997 , 2.996 , 2.996 , 2.997 , 11.986 , -1.663 ,
UBC , 3.563 , 3.564 , 3.563 , 3.555 , 14.264 , 75.622 , 0.720 , 0.720 , 0.810 , 0.010 ,
UBI , 3.563 , 3.564 , 3.563 , 3.565 , 14.254 , 75.622 , 0.720 , 0.720 , 0.810 , 0.010
UBE , 3.277 , 3.277 , 3.277 , 3.277 , 13.109 , -1.204 ,
VBI , 3.480 , 3.500 , 3.499 , 3.497 , 13.976 , 75.622,
This time the log contained six entries, can store around 50 entries. The log is cleared by
command ce. The first four numbers in all lines are the voltage of each cell when the event
happened. The fifth is the total voltage, and the sixth is the current at the event.
HVE means “high voltage event”, HVA “high voltage absorption event” (timeout has
happened in VoltAbsorbtion phase, see command va), LVE “low voltage event”.
UBC means “unbalance calculation” and the four last numbers are the amount of energy
that were charged into each cell at the latest cell balance measurement (done by coulomb
counting), with the sort Ah. This counting starts when the voltage passes VoltBalance . So
right now, there is an unbalance of 0.8 Ah (0.810-0.010) between cell 3 and cell 4, where cell
3 is the best charged one. UBI means “unbalance calculation and balancing initiated”. UBE
then means that the initiated balancing has ended. If an UBE is missing after an UBI then the
system has been switched off before the balancing ended, which is nothing to worry about.
If there are enough remining unbalance the process will restart at the next unbalance-
calculation. If there are multiple UBI in sequence with the same order of unbalance this
indicates that you can increase how much of the unbalance you try to remove each time.
Then you can increase the BalanceAmount (ba=nn, see “Basic configuration”) with steps
around 25% each time.
VBI means that voltage based balancing has been initiated. It will stop when the voltage is
back under VoltBalance.
You can use this information to manually balance the cells with a 3.6 V LiFePO4 charger.
Here you can charge cell 4 with a 5 A 3.6 V charger for 10 minutes to even out the unbalance
pm Print Memorylog
will produce a printout of the memory-log started with command tm. The log can contain
288 entries. Example of log with two entries:
interval=600
3.249 , 3.247 , 3.253 , 3.248 , 12.997 , 0.000 ,
3.249 , 3.247 , 3.253 , 3.249 , 12.997 , -4.130 ,
Each line contains voltage on cell 1 to cell 4, system voltage, and current at that time. This
log is cleared when BMS4S is switched off, or by command: cm (Clear Memory log).
po Print Other info
will produce a printout of some other information that can be of interest:

15
15
volt high adjust=0.000 there is a push-button you can adjust down the end voltage
with 0.05, 0,10, 0.15, 0,20 or 2 V. Press the push-button
until 2 long blinks to set it to 0,05, 3 blinks for 0,1, 4 blinks
for 0,15, 5blinks for 0,2 and 6 blinks for 2 V (which will
always switch off charging). Keep it pressed until long
blinking stops to reset it to normal. It will also be reset when
BMS4S is switched off. This can be useful e.g. if you motor
home and want to leave the boat with less than fully
charged batteries.
charge is on Charging is allowed (normal state)
load is on Power consumption is not limited (normal state)
temp: There are two temperature-sensors connected here
a1=71 This one is supervising an alternator (first letter is ‘a’)
b1=22 This one is supervising a battery
charge-limit-state=0 there are several reasons charging is limited. When this is 1
to 4 it is limited due to the temperature of the alternator,
when 5 it is stopped for a preset time since the battery is
either fully charged, or battery temperature is too low or
too high for charging. 1 to 4 will of course only happen if you
have installed and configured a temperature sensor. Only
printed if verbose not is zero (command sv=1).
push-level=0 A value showing representation of voltage on terminal
Gvolt. Lower value means higher voltage. Only printed if
verbose not is zero (command sv=1).
coulomb counters=0 0 0 0 Result of latest coulomb counting, sort is coulomb (As). Only
printed if verbose not is zero (command sv=1).
balancing: off Will list all cells currently being balanced (or none, as here)
buzzer: 0 State of the buzzer, silent right now
led-blink: 0 State of the LED, SoC level ok right now
extra bat=12,678 Voltage of the extra battery (V)
ps Print Settings
will list current settings, see chapter “Basic configurations” for description.
pv Print Version
will produce a printout of the model and version of the installed software.
pd Print Debug
will produce a printout of the device internal memory. Used for debugging only.
rb ReBoot
Will force the device into a fault situation that will make the system supervision reboot the
device.
sc SetCurrent
Used to adjust the values used to calculate actual current. Must be set if you are using a
shunt different from the predefined one (50 mv = 500 A), and it doesn’t hurt to do it anyway,
it will improve the result. First start by stating that there is a shunt connected, command
wm=nn, see command wm for what nn shall be). Then define the zero point: ensure no load

16
16
or charging sources are connected, and give command sc=0. Then connect a load of known
size and give command sc=-15.5 (if the load is 15.5 A), or connect a known charging source
and give command sc=20.0 (if the source delivers 20 A). The given value should normally not
be below 10A.
ss SetfloatSize
Set how many decimal digits you want presented. The resolution of voltage measurements is
0,004 V, so more than 3 digits make no sense, two is normally enough.
sv SetVerbose
Set level of information at printouts. Used for debugging.
tm TimeMemorylog
sets the time between each sample in the log. The log can contain more than 250 entries
which is enough for logging every 5 min (300 s) for almost 24 hours.
System Commands
Here are some commands that you should not use unless you know exactly what you are
doing. If you have done so anyway, look at command fr below to understand how to resolve
the problem.
a1(‑4) Adjust voltage for cell 1-4
If you are sure that BMS4S reports a faulty voltage on a cell you can adjust the value-
calculation with this command.
Example: a4=-0,005
fr Restore saved settings
When you have made too many changes and want to return to the state when you last
saved them with the sf command.
Example: fr
fr! Factory reset
When you have made too many changes and want to return to a known state, this will reset
the system to settings that new systems come with.
Example: fr!
rp ReProgram
If there are some new functions released or faults corrected, this is used to update the
BMS4S. Exact usage is supplied together with the update package.
s1 (-4) Set voltage for cell 1-4
If you are sure that BMS4S reports a faulty voltage on a cell you can by this command set the
correct voltage of the actual cell.
Example s4=3.233
You can as an alternative set the accumulated value of that cell, the result will be the same
Example s4=13.3

17
17
sa Set All voltage
Can be used to set the voltage on all cells if they are perfectly aligned.
Example sa=3.233
sn Set push level no charging
If you have problems with the engine alarming and/or the tachometer stopping working
when the BMS4S stops charging, you can try setting a limit on how much the BMS4S is
allowed to brake the alternator. Normally, the push level varies between 1 and 1000, where
1 means no charging, and 1000 maximum charging. To find the right level, drive until the
problem occurs, then start stepping up sn=10 sn=20 sn=30… until the problem stops. Then
step down to see when it reappears in order to find a suitable level. However, if the
alternator becomes too hot, BMS4S will override this in order to protect the alternator. A
new function not fully tested yet.
Example: sn=50
sz Set allowed max temp on the board
Can be used to set the temperature limit on the board. Do not change this unless you are
asked to do it from HLPdata.
Example sz=2000
Installation
When you start the electrical system looks something like above. You often have a starter battery
and a house battery. These are kept separate so that the starter battery is not used by the boat's
consumers, and they are charged via a charging distributor or a relay that switches on when the
engine is running. If you have bow thruster then you often also have a battery for it, placed in the
bow of the boat. All batteries, of course, have switches and fuses installed.

18
18
The simplest way is to just replace the main battery with LFP cells, and connect them to BMS4S. You
also connect a buzzer/alarm to it. Then you move the voltage sense (often yellow) cable and connect
it to BMS4S. You also have to connect a bi-stable relay between the new main-battery and to
BMS4S. Then at last you connect the power to supply BMS4S from after the main switch (but before
the relay) so it is switched off when all other electricity is switched off.
There are two more items we think you should connect: a push-button and a led. Details on this and
where the wires are connected is described in Equipment connection description below.
The disadvantage with this setup is that the led batteries only get charged when the engine is
running, and during most of that time the LFP bank keep the voltage below 13.8 V, which is not
enough to get lead batteries fully charged.
Therefore, we recommend one more change: remove the power distributor and connect the three
cables together you get a setup looking like this:

19
19
Now the lead batteries have become backup for security and is not used during normal operation. It
is then enough to charge them every now and then, which can be done by simply switch them on.
They will then get some small current from the LFP that normally are giving 13.2 V, and of course
from the alternator when it is running. But since they are not used, they will always be available as
backup and fully charge. But keep in mind that electric motors are a source of a lot of disturbances,
so ideally they should have an own connection to the battery, or as in the picture, a very short
common wire in comparison to the distance to the motors. This to allow the battery to absorb these
disturbances. So how do you actually do this installation?
Short step-by-step basic installation
Here is a step-by-step instruction, but first: ensure you have read chapter Important information in
the beginning of this manual. If you want to test the BMS4S before installation, connect – and B0 to
battery minus first, and then +12 and B12 to battery plus (and then command wm=2 to tell BMS4S
that only 12 V is connected). B0, B12 and – (minus/ground) must always be connected when BMS4S
is connected to the LFP cells. More details on each connection can be found in the next chapter.
1. Plan where to put the BMS4S, the relay, the buzzer/alarm, the led for low SoC warning and
the push-button for simple adjustment of charge level and to wake up the Bluetooth
interface.
2. Drill holes slightly smaller than the cable in the cormorant at each position you will connect a
cable. This way the box will be as dense as possible when you close it.
3. Start with connecting the relay on the cable between the man panel and the LFP cells.
4. Connect the relay to Load OFF and Load ON on the BMS4S, and to +12V.
5. Connect the buzzer/alarm to terminal Beep on BMS4, and to +12V.
6. Connect the LED to terminal LED on BMS4S, and to +12V.
7. Connect the push-button between terminal Inpot and – (minus, ground)

20
20
8. Move the (often yellow) voltage sense cable from the generator to the Gvolt terminal on
BMS4S. Make sure it is connected correctly, this cable should draw a maximum of a couple
of mA. If you are the least bit unsure, measure the current in it before connecting it and
secure it with a max 100mA fuse.
9. Connect – (minus/ground) to the boat’s ground/minus
10. Prepare five cables between the LFP cells and the BMS4S, and press on connectors on the
battery side. If you intend to use automatic balancing, do not use too narrow cables. Use at
least 0.75 mm2, and as short as possible. Mark the cables on the battery side with labels:
B12, B9, B6, B3, B0.
11. Connect the cables on the BMS4S side first. Make sure the B0 cable is connected into the B0
terminal, the B3 cable to the B# terminal etc.
12. Connect the cables to the LFP cells. Make sure you place the cables on the right cell. Start
with B0 on battery-minus, B3 on plus on first cell (same cell as B0 is connected), B6 on plus
on the second cell, B9 on the third cell and B12 on battery plus (same terminal as the thick
red power cable is connected to). And if you have a multimeter, make a last check that the
voltage between B0 and B3 is around 3.2 V, between B0 and B6 around 6.6 V, between B0
and B9 around 9.7 V, between B0 and B12 around 13 V.
13. Now it is just to connect power to BMS4S via the terminals +12V
14. Move the cables on the current distributor so they all are sitting on the same terminal
(unless you intend to keep a separate starter-battery).
15. Test the installation as described in chapter Testing below.
16. Start the engine and run it for a while. Test with a wet finger that the alternator does not
exceed 100 degrees. If it does it does probably not contain any protection against
overheating. See bullet 6 in chapter “Equipment connection description” on how to mitigate
that.
17. To maximize the capacity and life-length of your LFP cells you shall always charge them fully
when they have been unused for a while. Do that now with the 3.6 V LFP charger, one cell at
the time. (But do not leave them fully charged if they will be unused for a while. Discharge
them then to below 80% SoC to maximize life-length.)
18. Now you are ready to go. Enjoy a life with less worries about lack of electricity.
Connection of more equipment and some more details
Other manuals for BMS4S
1
Table of contents