Documentation

HX-2S-JH20 2S 7.4V 18650 Lithium Battery Protection Board 10A with Balancer | ShillehTek Product Manual
Documentation / HX-2S-JH20 2S 7.4V 18650 Lithium Battery Protection Board 10A with Balancer | ShillehTek Product Manual

HX-2S-JH20 2S 7.4V 18650 Lithium Battery Protection Board 10A with Balancer | ShillehTek Product Manual

2S7.4VBatteryBMShx-2s-jh20-2s-7-4v-18650-lithium-battery-protection-board-10a-with-balancerLithiummanualProtection Boardshillehtek

Overview

The HX-2S-JH20 is a 2S battery management system (BMS) designed for two 3.7V Li-ion or LiPo cells wired in series, producing a 7.4V nominal pack voltage (8.4V fully charged). It provides over-charge, over-discharge, over-current, and short-circuit protection with a built-in passive cell balancer that helps keep both cells at matching voltages during charging.

Rated for up to 10A continuous discharge, this BMS is ideal for powering Bluetooth speakers, small motors, ESP32 mesh nodes, LED strips, and DIY power banks that need a higher voltage than a single cell. The board uses dual N-channel MOSFETs and a 2S protection IC, with a clean 3-pin layout (B+, BM, B-) for the battery side and P+/P- for the load.

At a Glance

Battery Config
2S Li-ion / LiPo
Nominal Voltage
7.4V
Full Charge
8.4V
Continuous Current
10A
Balancing
Passive, built-in
Pads
B+, BM, B-, P+, P-

Specifications

Parameter Value
Cell Configuration 2S (two cells in series)
Nominal Pack Voltage 7.4V (2 x 3.7V)
Full Charge Voltage 8.4V (2 x 4.2V)
Per-Cell Over-Charge Cutoff 4.25V - 4.35V
Per-Cell Over-Discharge Cutoff 2.4V - 2.6V
Continuous Discharge Current 10A
Peak Discharge Current ~15A (short bursts)
Balancing Method Passive resistor bleed
Balancing Current ~40 mA per cell
Quiescent Current < 30 uA
Operating Temperature -40 to +85 C
PCB Dimensions ~50 x 22 x 3.5 mm

Pinout Diagram

HX-2S-JH20 2S BMS pinout diagram showing B+, BM (mid-point), B- battery terminals and P+, P- load output terminals

Wiring Guide

2S Battery Wiring

The HX-2S-JH20 requires three connections to the battery pack: the negative terminal of cell 1 (B-), the midpoint between the two cells (BM), and the positive terminal of cell 2 (B+). The BM tap is critical — without it the BMS cannot monitor or balance individual cells.

BMS Pad Battery Connection
B- Cell 1 Negative (lowest)
BM Cell 1 Positive + Cell 2 Negative (midpoint)
B+ Cell 2 Positive (highest)
Warning: Always connect B- FIRST, then BM, then B+. Connecting in the wrong order can damage the protection IC. Verify each voltage with a multimeter before powering up: B- to BM should read ~3.7V, BM to B+ should read ~3.7V, B- to B+ should read ~7.4V.
Tip: Use matched cells — same brand, same capacity, same age. Mismatched cells will charge and discharge unevenly, shortening pack life even with the balancer active.

Load Wiring

Connect your load (motor controller, boost regulator, ESP32 with buck, etc.) to the P+ and P- pads. The protection MOSFETs disconnect the load if either cell hits over-discharge or if total current exceeds 10A.

BMS Pad Load Terminal
P+ Load Positive (+) input
P- Load Negative (-) / GND
Tip: For loads under 5A, 18 AWG wire is sufficient. For sustained 10A draw use 16 AWG or larger, and add a small reservoir capacitor (470 uF or larger) across P+/P- to absorb current spikes.

Charging the Pack

Use a dedicated 2S Li-ion charger that outputs 8.4V at constant-voltage / constant-current (CC/CV). Connect the charger's positive output to P+ and negative output to P-. The BMS will monitor both cells, allow balancing current to flow during charge, and cut off automatically when both cells reach 4.2V.

Charger Pin BMS Pad
Charger + (8.4V) P+
Charger - (GND) P-
Warning: Never connect a 1S charger (4.2V) to a 2S pack. The charger will not deliver enough voltage and the pack will sit at a partial charge forever. Always match the charger voltage to the pack: 8.4V for 2S, 12.6V for 3S, 16.8V for 4S.

Powering Microcontrollers

7.4V is too high to feed directly into ESP32 or Pico VIN pins (their LDO regulators can't dissipate the heat). Use a buck converter or LDO to step down to 5V, then feed that to your dev board.

BMS Output Microcontroller Details
P+ (7.4V) Arduino Uno VIN Direct (VIN accepts 7-12V)
P+ (7.4V) ESP32 / Pico Via 5V buck converter (LM2596 or MP1584)
P+ (7.4V) Raspberry Pi 5V Via 5V buck converter (3A+ rated)
P+ (7.4V) 5V DC motors Via 5V buck or motor driver
P- Common GND Ground reference for all
Info: Arduino Uno's onboard 5V regulator can accept 7.4V directly via the VIN pin or barrel jack, but it will run warm under significant load. For anything drawing more than 200 mA on the 5V rail, use an external buck converter.

Code Examples

The HX-2S-JH20 is a passive protection module without a digital interface. The code below shows how to monitor pack voltage with an ADC and voltage divider, useful for displaying a battery indicator or triggering low-battery warnings in your firmware.

Arduino (Pack Voltage Monitor)

hx2s_pack_monitor.ino
// HX-2S-JH20 Pack Voltage Monitor for Arduino
// Voltage divider: P+ -- 220k -- A0 -- 100k -- GND (max ~8.4V/3.2 = 2.6V at A0)

const int adcPin = A0;
const float dividerRatio = (220.0 + 100.0) / 100.0;  // = 3.2
const float vRef = 5.0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int raw = analogRead(adcPin);
  float vAdc = (raw / 1023.0) * vRef;
  float vPack = vAdc * dividerRatio;

  float pct = ((vPack - 6.0) / (8.4 - 6.0)) * 100.0;
  if (pct > 100) pct = 100;
  if (pct < 0) pct = 0;

  Serial.print("Pack: ");
  Serial.print(vPack, 2);
  Serial.print(" V (");
  Serial.print(pct, 0);
  Serial.println(" %)");
  delay(1000);
}

ESP32 (Pack Voltage Monitor)

hx2s_pack_esp32.ino
// ESP32 reads pack voltage through a 330k/100k divider
// 8.4V / 4.3 = 1.95V at ADC -- well within 3.3V range

const int adcPin = 34;
const float dividerRatio = (330.0 + 100.0) / 100.0;  // = 4.3
const float vRef = 3.3;

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);
}

void loop() {
  int raw = analogRead(adcPin);
  float vAdc = (raw / 4095.0) * vRef;
  float vPack = vAdc * dividerRatio;
  Serial.printf("Pack: %.2f V\n", vPack);
  delay(1000);
}

Raspberry Pi Pico (MicroPython)

hx2s_pack_pico.py
# Pico reads pack voltage through a 330k/100k divider on ADC0 (GP26)
# 8.4V / 4.3 = 1.95V at ADC -- safely below 3.3V

from machine import ADC
import time

adc = ADC(0)
divider_ratio = 4.3
v_ref = 3.3

while True:
    raw = adc.read_u16()
    v_adc = (raw / 65535) * v_ref
    v_pack = v_adc * divider_ratio
    print("Pack: {:.2f} V".format(v_pack))
    time.sleep(1)

Frequently Asked Questions

Why does the board have 3 battery pads instead of 2?
The middle pad (BM) connects to the junction between the two cells in series. Without this midpoint connection, the BMS cannot measure each cell individually, which means it cannot perform per-cell over-charge / over-discharge protection or passive balancing. All 2S+ BMS boards need one extra wire per cell beyond the first.
What does "passive balancing" actually do?
During charging, if one cell reaches 4.2V before the other, the BMS turns on a small resistor across that cell to bleed off the excess energy as heat. This lets the second cell continue charging without overcharging the first. It is slow (~40 mA), so the cells should be reasonably matched to start with.
Can I use this with 2S LiFePO4 cells?
No. This BMS is configured for Li-ion / LiPo chemistry with a 4.2V per-cell full charge. LiFePO4 cells use 3.65V per cell — the Li-ion BMS would overcharge them. Use a dedicated 2S LiFePO4 BMS for those cells.
My load works but the pack won't charge. What's wrong?
Most often this means the charger isn't outputting 8.4V — many adjustable supplies default to 12V which is too high (the BMS will refuse to enable the charge MOSFET). Check the charger output with a multimeter. Also confirm the charger + connects to P+ and - to P-, not to the battery pads directly.
What's the difference between 2S and 1S for my project?
A 2S pack delivers ~7.4V at twice the runtime of one cell of equal capacity — useful when you need more headroom for a 5V buck converter (which prefers more than 5V input) or when driving brushed DC motors that benefit from higher voltage. Use 1S when size matters or your load runs natively on 3.3-4.2V.
Does the BMS work as a switch or only as protection?
It works as both — the protection MOSFET acts as a switch that opens when any fault condition is detected (over-charge, over-discharge, over-current, short). Some designs add a soft-power button by inserting a small load that briefly pulls the BMS out of sleep mode; the HX-2S-JH20 itself does not include a discrete power button.