2.4 Current Measurement

This page explains how the BMS turns the current sensor output into the pack current, and how to set the current sensor settings on the LiMon™ Current tab so that the reading is right. The pack current drives the state of charge, the over-current protection and the precharge check, so set it up before any of them.

Applies to

Boards: BMS1820, BMS3610, BCU2002, BMS1601, BMS1810.

2.4.1 How It Works

The BMS reads one or two analogue current channels, Ch#1 and Ch#2. Each channel is converted to amperes with its own coefficient and offset, and the sensor type decides which channel gives the pack current.

Fig.2.4.1: Current Measurement Signal Chain

1 · Each channel (Ch#1 and Ch#2) 2 · Channel selection 3 · Pack current Sensor output Ch#1 Measurement sensor signal Zero taken at start-up Coefficient to amperes Offset correction no current at start-up Current Sensor Ch#1 Offset Current Sensor Ch#1 Coeff. Sensor output Ch#2 Measurement sensor signal Zero taken at start-up Coefficient to amperes Offset correction no current at start-up Current Sensor Ch#2 Offset Current Sensor Ch#2 Coeff. Sensor type single sensor: Ch#1 + Ch#2 dual sensor: low channel up to the limit, then high Current Sensor Ch# Pinout Ch#2 Low Current Limit Dead band −0.5 … +0.5 A reads 0 A Pack current + charge, − discharge State of charge Current limits · 2.5 Precharge · 2.7 Used by the state of charge also counts Self Discharge Power setting set on the LiMon™ Current tab orange text: what to watch when you commission other steps are fixed in the firmware

  • Zero at start-up. When the BMS starts, it takes the reading of each channel as its zero. Any current that flows through the sensor at that moment stays in the reading as an error until the next start. Start the BMS with no load and no charger current.
  • Coefficient. The coefficient turns the sensor signal of a channel into amperes. A larger coefficient gives a smaller current; a negative coefficient reverses the sign.
  • Offset. The offset, in mA, corrects the current of a channel; because the zero is taken at every start, keep it at 0.
  • Dead band. A result between −0.5 A and +0.5 A is treated as no current; the pack state is then idle. This band is fixed and is not a LiMon setting.
  • Self-discharge. The BMS counts Self Discharge Power as a constant consumption in the state of charge, also at rest, so loads that the sensor cannot see are included.
  • Sign. + is charge, − is discharge, as on every LiBat™ interface.

2.4.2 Choosing the Sensor Type

Current Sensor Ch# Pinout tells the BMS how the channels are used:

  • NO SENSOR INSTALLED: the pack current is always 0.
  • CH#1(H) or CH#2(H): one single-channel sensor. Both inputs count towards the pack current, so set the coefficient of the unused channel to 0; a channel with coefficient 0 reads 0 A.
  • CH#1(H) and CH#2(L): a dual-channel sensor with the high-range output on Ch#1 and the low-range output on Ch#2. While the low channel reads no more than Ch#2 Low Current Limit, the BMS uses the low channel; above the limit it uses the high channel.
  • CH#1(L) and CH#2(H): the same with the channels swapped. Ch#2 Low Current Limit then applies to Ch#1, the low channel.
  • Canbus Current Sensor: TBD (not implemented in the firmware yet).

The low channel can measure only up to its output limit (it clamps). Set the limit below the current at which the low channel clamps; otherwise the reading stops at the clamp value and the BMS does not move to the high channel.

Fig.2.4.2: Channel Selection With a LEM DHAB S/133 (CH#1(H) and CH#2(L))

0 25 50 75 100 125 150 2.0 2.5 3.0 3.5 4.0 4.5 5.0 Current through the sensor (A) Sensor output (V) Ch#2 Low Current Limit = 75 A low channel clamps at about 84 A BMS uses Ch#2 (low channel) BMS uses Ch#1 (high channel) low channel, 26.7 mV/A high channel, 2.7 mV/A DHAB S/133 channel 1 (±75 A) → BMS Ch#2 DHAB S/133 channel 2 (±750 A) → BMS Ch#1

2.4.3 Settings

Table.2.4.1: Current Measurement Settings (LiMon™ Current tab)

Setting What it does How to choose Unit Range Default
Current Sensor Ch# Pinout Selects how the channels make the pack current (2.4.2). Match the sensor and its wiring. — list CH#1(H) or CH#2(H)
Current Sensor Ch#1 Coeff. Converts the Ch#1 reading to amperes. From the sensor sensitivity (2.4.4), then fine-tune by calibration (2.4.5). 0 on an unused channel. — ±32750 per board
Current Sensor Ch#1 Offset Corrects the Ch#1 current. Normally 0. mA ±32750 0
Current Sensor Ch#2 Coeff. Converts the Ch#2 reading to amperes. As Ch#1. — ±32750 per board
Current Sensor Ch#2 Offset Corrects the Ch#2 current. Normally 0. mA ±32750 0
Ch#2 Low Current Limit Highest current measured with the low channel. Below the current at which the low channel clamps, with a margin. Not used with a single-channel type. A 0…255 50
Self Discharge Power Constant consumption that the state of charge counts; the shown current does not change. The BMS supply plus every constant load that does not pass through the current sensor, for example a display or a gateway. mW 0…50000 per board

The LiMon™ reference describes every field of the screen: 7.4 Current Settings.

Table.2.4.2: Current Inputs and Defaults per Board

Board Current input Default sensor type Default low limit
BMS1820 External sensor, two channels. CH#1(H) or CH#2(H) 50 A
BMS3610 External sensor, two channels. CH#1(H) or CH#2(H) 50 A
BCU2002 Sensor No#1 connector J12, two channels. J11 (Sensor No#2) is not used for the pack current. CH#1(H) or CH#2(H) 50 A
BMS1601 Integrated shunt, Ch#1 only. CH#1(H) or CH#2(H) 50 A
BMS1810 External sensor, two channels. CH#1(H) or CH#2(H) 50 A

2.4.4 Coefficient From the Sensor Datasheet

On BMS1820, BMS3610 and BMS1810 the coefficient follows directly from the sensitivity S of the sensor, in mV/A:

Coefficient = S [mV/A] × 100

  • BCU2002: find the coefficient by calibration (2.4.5).
  • BMS1601: the shunt is on the board; keep the default coefficient and correct it only by calibration (2.4.5).

Example: LEM DHAB S/133 on a BMS1820

The LEM DHAB S/133 is a dual-channel Hall sensor with a 5 V supply. Values from the LEM datasheet (version 4, typical, at 5 V supply):

Table.2.4.3: LEM DHAB S/133 Channels

DHAB channel Range Sensitivity Output at 0 A Output clamps at Wire to Coefficient
1 (low range) ±75 A 26.7 mV/A 2.5 V 0.25 V / 4.75 V BMS Ch#2 26.7 × 100 = 2670
2 (high range) ±750 A 2.7 mV/A 2.5 V 0.25 V / 4.75 V BMS Ch#1 2.7 × 100 = 270
  • Pinout and limit: CH#1(H) and CH#2(L), Ch#2 Low Current Limit 75 A. The low channel clamps at about 84 A, so 75 A leaves a margin.
  • Direction: mount the sensor so that charge current flows in the direction of its arrow; otherwise make both coefficients negative.
  • Starting value: the real sensitivity follows the 5 V supply and the sensor tolerance. After calibration (2.4.5) the coefficients are usually within a few percent of the datasheet values.

2.4.5 Calibration With a Reference Meter

Calibrate with a DC clamp meter or another current meter that you trust, placed on the same cable as the current sensor. The shown current is inversely proportional to the coefficient, so one reading pair gives the corrected coefficient of the channel in use:

New coefficient = old coefficient × Live View current ÷ meter current

  • Current: use a steady current well above 0.5 A, so it is outside the dead band and the 0.1 A step of the Live View reading is small against it.
  • Settings take effect as soon as they are saved; no restart is needed. The zero is taken again only at the next start.

Single-channel sensor (CH#1(H) or CH#2(H)): one coefficient to calibrate, the one of the channel the sensor is wired to. The coefficient of the unused channel stays 0.

Fig.2.4.3: Calibration of a Single-Channel Sensor

1 Prepare DC clamp meter on the pack cable, no load, no charger, unused Coeff. 0 2 Start Start the BMS; the zero is taken now 3 Zero Live View shows 0.0 A? 4 Current Apply a steady current, tens of A; read the meter and Live View together 5 Sign Charge +, discharge −? 6 Correct calculate the new coefficient from both readings 7 Re-check Save, measure again: within your tolerance? yes yes no: restart with no current Fix the sign make the coeff. negative, save no no Done coefficient calibrated yes Current Sensor Ch#1 Coeff. Current Sensor Ch#2 Coeff. Single-channel sensor (CH#1(H) or CH#2(H)): correct the coefficient of the channel the sensor is wired to; the unused channel keeps coefficient 0.

Dual-channel sensor (CH#1(H) and CH#2(L) or CH#1(L) and CH#2(H)): two coefficients to calibrate. The BMS shows only the channel in use, so the low channel is calibrated with a current below Ch#2 Low Current Limit and the high channel with a current above it. With CH#1(H) and CH#2(L) the low channel is Current Sensor Ch#2 Coeff. and the high channel Current Sensor Ch#1 Coeff.; with CH#1(L) and CH#2(H) it is the other way round.

Fig.2.4.4: Calibration of a Dual-Channel Sensor

1 Prepare DC clamp meter on the pack cable; no load, no charger 2 Start Start the BMS; the zero is taken now 3 Zero Live View shows 0.0 A? 4 Low current steady current below the low current limit; read meter and Live View 5 Sign Charge +, discharge −? yes no: restart with no current no: make both coefficients negative 6 Correct low new coefficient of the low channel from both readings 7 High current steady current above the low current limit; read meter and Live View 8 Correct high new coefficient of the high channel from both readings 9 Re-check both ranges within your tolerance, no jump at the limit? yes Done both coefficients calibrated yes no: correct again Current Sensor Ch#2 Coeff. Current Sensor Ch#1 Coeff. Ch#2 Low Current Limit Settings shown for CH#1(H) and CH#2(L). With CH#1(L) and CH#2(H) the low channel is Current Sensor Ch#1 Coeff. and the high channel Current Sensor Ch#2 Coeff.

  • Sign: with a dual-channel sensor both outputs come from the same sensor, so a wrong sign is wrong on both channels; make both coefficients negative.
  • High current: the high channel needs a steady current above the limit, for example a load or a charger of 100 A with a 75 A limit. If the system cannot run that current during commissioning, keep the datasheet coefficient of the high channel (2.4.4) and check it later in operation.
  • No jump at the limit: when the current passes the limit, Live View should not jump. A jump means the two coefficients do not match yet.

Example: one calibration step

The meter reads 40.0 A while Live View shows 40.6 A on the low channel with Ch#2 Coeff. 2670. New coefficient = 2670 × 40.6 ÷ 40.0 ≈ 2710.

2.4.6 Self-Discharge Power

Set Self Discharge Power to the constant consumption of the BMS and of every load that does not pass through the current sensor. The state of charge then also falls while the pack is idle. Live View still shows 0.0 A at rest, because this current is far below the 0.1 A step of the reading.

Example: 950 mW on a 51.2 V pack

About 18.6 mA, or about 0.45 Ah per day.

2.4.7 Checking the Result

  • At rest, after a start with no current: 0.0 A.
  • Under a known charge current: a positive value that matches the reference; under discharge: a negative value.
  • With a dual-channel sensor: no jump in the reading when the current crosses Ch#2 Low Current Limit.

2.4.8 Common Mistakes

  • Current flows at start-up. The BMS takes the zero from a sensor that already carries current, for example when a load or a charger is connected before the BMS starts. Every reading is then shifted by that current until the next start, also at rest. Switch loads and chargers off, start the BMS, and connect them after it is running.
  • Offset used to cancel a zero error. A reading that is not 0.0 A at rest comes from the start-up zero, not from a missing offset. An offset set to hide it adds the same error the other way after the next clean start. Restart the BMS with no current instead and keep the offsets at 0.
  • Unused channel left with a coefficient. With CH#1(H) or CH#2(H) both inputs count, so whatever the open or unused input reads is added to the pack current. Set the coefficient of the unused channel to 0.
  • Single-channel type with a dual-channel sensor. With CH#1(H) or CH#2(H) the low and the high channel are added, so the current is counted twice and the low channel clamps above its range. Select CH#1(H) and CH#2(L) or CH#1(L) and CH#2(H).
  • Low current limit above the clamp. The BMS stays on the low channel after it clamps, so the pack current stops at the clamp value (about 84 A with the DHAB S/133) and the over-current protection never sees more. Set the limit below the clamp current with a margin.
  • Channels swapped. The high-range output on the low-channel input gives a reading about ten times too small, and the BMS stays on that channel up to about ten times the limit. Swap the wiring or choose the other dual-channel type.
  • Wrong sign. Charge shows negative and discharge positive, so the state of charge runs the wrong way and the charge limits act on discharge current. Turn the sensor round or make the coefficients negative.
  • Calibrating at a small current. Near 0.5 A the dead band hides the current, and at a few amperes the 0.1 A step of the reading is a large part of it. Use a steady current of tens of amperes.
  • Calibrating the wrong channel. With a dual-channel sensor the BMS shows only the channel in use. A correction calculated below the limit belongs to the low-channel coefficient, above the limit to the high-channel coefficient.
  • Self Discharge Power not set or too high. Too low and the state of charge stays above the real charge while the pack rests; too high and it falls faster than the real charge. Use the measured consumption of the BMS and of the loads that bypass the sensor.
  • BCU2002 sensor on J11. Only Sensor No#1 (J12) is used for the pack current; a sensor on J11 does not change it.