Back to Engineering

Hardware · TIPE · ENSEEIHT · Level 2

Battery Test Bench & Smart Charging PCB

Designed and built an automated battery testing platform for Ni-MH and Li-Ion cells. PCB design, embedded smart charging logic, continuous data acquisition, and Python signal processing, all running for months without interruption.

PCB Design Embedded C++ Battery Testing Signal Processing Python KiCad
500+ Charge / discharge cycles
Months Continuous operation
5-Step Smart charging logic
ΔV Validated detection
Automated battery test bench

Testing a battery properly is not reading its voltage once.

Useful characterization requires repeatable charge and discharge cycles, reliable end-of-charge detection, continuous synchronized measurements, and data you can interpret. Manual testing misses all of this: errors accumulate, results drift, and every repetition introduces new variability.

Challenge 01

Repeatability

Manual setups introduce variability between cycles. Any inconsistency in timing, thresholds, or measurement points corrupts the comparison.

Challenge 02

End-of-charge detection

Simple voltage cutoffs are not enough. A reliable system needs multiple complementary stopping conditions to handle different battery chemistries and charge states.

Challenge 03

Data usability

Raw acquisition is just numbers. The goal was to produce filtered, comparable curves, not just logs, for each cycle, automatically.

Three layers: hardware, embedded control, signal analysis.

01 - Hardware

PCB & Test Bench

  • Schematic design and 2-layer PCB routing in KiCad
  • Battery holder, sensing circuit, and instrumentation wiring
  • Mechanically stable bench for months of unattended operation

02 - Embedded

Smart Charging Controller

  • State machine: charge → pause → discharge → repeat
  • Five complementary end-of-charge stopping conditions
  • Continuous measurement loop with synchronized logging

03 - Analysis

Python Signal Processing

  • Automated data ingestion from continuous acquisition
  • Filtering and smoothing to separate signal from noise
  • Cycle-by-cycle comparison and efficiency tracking

Smart charging in 5 stopping conditions.

Five complementary checks, so charge stops at the right time across battery states and chemistries.

1

Maximum charge timer

Hard stop after a fixed duration, a last-resort ceiling that prevents overcharge when other conditions fail.

2

Absolute voltage threshold

Charge terminates when terminal voltage exceeds the safe upper limit for the cell chemistry.

3

Sustained low current

When current drops and stays below a threshold for a defined period, the cell is considered full.

4

Negative delta-V detection

Monitors the characteristic voltage drop that signals full charge in Ni-MH cells, validated across many cycles.

5

Voltage plateau detection

Identifies stagnation, when voltage stops rising meaningfully, and terminates charge cleanly.

Results

500+ Charge / discharge cycles logged
Months Continuous autonomous operation
ΔV Delta-V detection validated
↑ Repeatability vs manual protocol

Lessons learned

01

How to design a complete electrochemical test workflow that runs without supervision, from hardware reliability to embedded robustness.

02

How to bridge embedded control logic with experimental measurement requirements, two different domains that must agree precisely.

03

How to go from raw acquisition to filtered, comparable, interpretable curves, and what gets lost at each step if you are not careful.

KiCad Embedded C++ Arduino Python NumPy Matplotlib Bench Instrumentation Ni-MH / Li-Ion