18650 Lithium Battery Charging Module Tutorial: Safe Charging, Protection, and Arduino Power Patterns

Beginner Tutorial Views: 3305

This tutorial is a practical guide to using the 18650 lithium battery charging module (Leobot Product #195) to recharge a single-cell Li-ion/Li-Po battery (nominal 3.7V, full ~4.2V) and power Arduino projects reliably. You will learn what this board is meant to do, how to wire it safely, how to avoid the most common “battery + Arduino” mistakes, and how to build a clean power architecture (charging + load + monitoring).

18650 Lithium Battery Charging Module Tutorial: Safe Charging, Protection, and Arduino Power Patterns

This tutorial is a practical guide to using the 18650 lithium battery charging module (Leobot Product #195) to recharge a single-cell Li-ion/Li-Po battery (nominal 3.7V, full ~4.2V) and power Arduino projects reliably. You will learn what this board is meant to do, how to wire it safely, how to avoid the most common “battery + Arduino” mistakes, and how to build a clean power architecture (charging + load + monitoring).

Tutorial Beginner ? Intermediate Arduino Power Lithium Battery 18650 Charging
What this module does: It takes 5V input (Micro USB) and charges a single 3.7V lithium cell using a proper CC/CV charging profile (the correct way to charge Li-ion/Li-Po). Many versions of this board family also include protection (over-discharge / over-current) so the battery is less likely to be damaged by misuse.
Critical safety rule: Never charge a lithium cell from a random 5V regulator or directly from Arduino pins. Lithium cells require a controlled charge algorithm. Use a real charger module (like this), and never leave damaged or unknown cells unattended while charging.

1) What this board is (and what it is not)

This is a single-cell lithium charger module with a 5V input. Its primary job is charging a 1S lithium battery safely. In many hobby projects, it is also used as the “battery interface” for portable devices (charge from USB, run from battery).

Use this module when

  • You have a single 18650 cell (or 1S Li-Po) and you want to charge it from USB
  • You are building a battery-powered Arduino project and need correct lithium charging
  • You want a compact board with simple wiring (battery in, USB in)

Don’t use this module when

  • You need to charge multiple cells in series (2S/3S/etc.)
  • You need a full “power-path management” solution that guarantees seamless switching between USB power and battery for sensitive loads
  • You need high current output without adding proper wiring, boosting/regulation, and thermal design

2) Lithium basics in 2 minutes (voltage, full/empty, why 4.2V matters)

  • Nominal voltage: “3.7V” is a nominal value; the battery voltage changes with charge level.
  • Full charge: A typical Li-ion/Li-Po cell is fully charged around 4.2V.
  • Low battery: Under-load voltage can dip; a common safe cutoff region is roughly 3.0V–3.3V (depends on cell and design goals).
  • Why a charger is required: Lithium charging is not “apply 4.2V and hope.” It uses constant-current then constant-voltage control, and stops properly to prevent overcharge.
Design mindset: Treat lithium cells like power electronics, not like AA batteries. Most failures (swelling, overheating, shorted packs, resets) come from ignoring charge/discharge limits and wiring quality.

3) Connections and typical pad labels

Boards in this class often expose a Micro USB input and solder pads for battery and load. Exact labeling varies, so always confirm the silkscreen on your specific board.

3.1 Typical pad naming you may see

  • B+ / B- — connect directly to the battery terminals
  • OUT+ / OUT- — load output (on boards that include protection circuitry)
  • IN+ / IN- or 5V / GND — 5V input (often via Micro USB instead)
How to confirm “protection” vs “charger-only”: If your board has separate B+ B- and OUT+ OUT-, it usually includes protection and a “load output” stage. If it only has battery pads (B+/B-) and no OUT pads, it may be charger-only.

4) Charging correctly via Micro USB

4.1 Basic charging wiring

  1. Connect the battery to B+ / B- (observe polarity).
  2. Plug a stable 5V USB supply into the Micro USB input.
  3. Allow charging to complete (many boards have LEDs indicating “charging” and “full”).

4.2 Charger current considerations

  • Many modules in this family charge around the ~1A class, but the actual charge current can depend on board design and configuration.
  • Small cells (or old/cheap cells) may not like high charge rates. If your battery is small, prioritize cell health over speed.
  • Use a decent USB power source. A weak phone charger or long cable can cause unstable charging.
Heat is a warning signal: Warm is normal. Hot is not. If the board or battery becomes uncomfortably hot, stop and inspect wiring, battery condition, and charging setup.

5) Powering your Arduino load correctly (and common traps)

5.1 Key fact: a lithium cell is not “5V”

A single-cell lithium battery ranges roughly from ~3.0V up to ~4.2V. This means:

  • It is excellent for 3.3V systems (with a regulator where needed).
  • It is not directly suitable for 5V-only loads without a boost converter.

5.2 Two common load wiring patterns

Pattern A: 3.3V Arduino-class system (preferred)

  • Battery ? Charger module ? (optional protection OUT) ? 3.3V regulator ? MCU + sensors
  • Benefits: efficient, stable, fewer resets, easier battery monitoring

Pattern B: 5V Arduino UNO/Nano loads (use a booster)

  • Battery ? Charger module ? (optional protection OUT) ? 5V boost converter ? 5V rail
  • Benefits: keeps a consistent 5V rail for sensors/modules that expect 5V
  • Trade-off: extra cost, some switching noise, efficiency loss, and current limits
Common trap: Trying to power an Arduino UNO/Nano reliably from a raw lithium cell. It may “turn on,” but USB/serial, sensors, and brownout behavior can become unpredictable as voltage drops.

6) Do you need a booster? (5V projects vs 3.3V projects)

Decide based on your system requirements:

  • If your project can run at 3.3V, you usually get a cleaner, more efficient design.
  • If you must run 5V (certain sensors, long LED strips, relays, some modules), add a boost converter and design for current.
Practical heuristic: If the project includes Wi-Fi (ESP8266/ESP32), radios, or sensors that glitch easily, prioritize clean regulation and decoupling over “minimum parts count.”

7) Arduino battery monitoring (voltage divider + low-battery logic)

Battery monitoring is straightforward: use a voltage divider to bring the battery voltage (up to ~4.2V) into the Arduino ADC range. Then apply a low-battery threshold and reduce load / shut down gracefully.

7.1 Voltage divider concept

  • Battery+ ? R1 ? ADC pin ? R2 ? GND
  • Choose R values to keep ADC current low (e.g., tens of kO range) and keep the ADC input below the reference voltage.
ADC reference matters: On an Arduino UNO/Nano, the ADC usually references 5V by default. If you run your MCU from a different voltage, confirm what the ADC reference is, or your readings will be wrong.

8) Arduino Example: Read battery voltage safely

This example assumes:

  • You have a voltage divider from battery to A0.
  • You know your divider ratio (R1 and R2).
  • Your analog reference is default 5V (typical UNO/Nano on 5V rail).

/*
  18650 Charger Module (#195) + Arduino
  Battery Voltage Monitor (via divider)

  Wiring:
  - Battery+ -> R1 -> A0 -> R2 -> GND
  - Battery- -> GND (common ground)

  Example divider values:
  - R1 = 100k
  - R2 = 100k
  This makes V_A0 = V_batt * (R2 / (R1 + R2)) = V_batt * 0.5
*/

const int PIN_BATT = A0;

// Divider values (ohms)
const float R1 = 100000.0;
const float R2 = 100000.0;

// ADC reference voltage (UNO/Nano default when powered from 5V rail)
const float VREF = 5.0;

// Low-battery thresholds (tune for your cell/load; under-load voltage can dip)
const float WARN_V = 3.40;
const float CUTOFF_V = 3.20;

float readBatteryVoltage() {
  // Average a few samples to reduce noise
  long sum = 0;
  const int N = 10;
  for (int i = 0; i < N; i++) {
    sum += analogRead(PIN_BATT);
    delay(5);
  }
  float adc = sum / (float)N;

  float vA0 = (adc / 1023.0) * VREF;
  float vBatt = vA0 * ((R1 + R2) / R2);
  return vBatt;
}

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

void loop() {
  float v = readBatteryVoltage();

  Serial.print("Battery: ");
  Serial.print(v, 3);
  Serial.println(" V");

  if (v <= CUTOFF_V) {
    Serial.println("LOW BATTERY: Cutoff region (consider shutting down / disabling loads).");
    // Example action: disable high-current loads, enter low-power mode, etc.
  } else if (v <= WARN_V) {
    Serial.println("Battery warning: consider reducing load or notifying user.");
  }

  delay(1000);
}
    
Calibration tip: Measure the battery voltage with a multimeter and compare it to Arduino readings. If they differ, adjust VREF (actual 5V may be 4.8–5.1V) or refine divider resistor values.

9) Troubleshooting (won’t charge, gets hot, resets, “doesn’t power Arduino”)

Module does not charge (no LED / no change over time)

  • Cause: USB supply/cable weak ? Fix: use a known good 5V supply and a short cable
  • Cause: Battery polarity wrong or poor solder joint ? Fix: re-check B+/B- polarity and re-solder
  • Cause: Cell is deeply discharged or damaged ? Fix: stop and inspect cell health; do not force-charge unknown cells

Module or battery gets hot

  • Cause: Short circuit or wiring fault ? Fix: disconnect immediately and inspect wiring
  • Cause: Charge current too high for cell ? Fix: use a healthier/larger cell or a lower-charge-current design
  • Cause: Poor ventilation / enclosed build ? Fix: provide airflow and space for heat dissipation

Arduino keeps resetting when running from battery

  • Cause: Voltage sag under load ? Fix: use proper regulation (3.3V LDO/buck or 5V boost), add bulk capacitance
  • Cause: High current devices on same rail (servos, radios) ? Fix: isolate supplies and add decoupling near the load
  • Cause: Trying to run 5V UNO directly from battery ? Fix: add a boost converter or redesign to a 3.3V MCU
Diagnostic discipline: First confirm the charger works (battery voltage rises during charge), then confirm your regulator/boost works, then connect the Arduino load. Do not debug everything at once.

10) Quick checklist


18650 Lithium Charger Module (#195) Checklist
---------------------------------------------
? Confirm it is a 1-cell lithium charger (not 2S/3S)
? Battery wired to correct pads (polarity verified)
? USB 5V supply is stable (short cable, known good charger)
? If powering a load: confirm whether you should use OUT pads (if present)
? Choose correct regulation strategy:
  - 3.3V system: use a proper 3.3V regulator
  - 5V system: use a 5V boost converter
? Add decoupling near MCU and noisy loads (100nF + bulk caps)
? Implement low-battery logic (monitor voltage, reduce load, protect the cell)
? Stop immediately if battery/module gets hot or cell looks damaged
    

Products that this may apply to