Objective/Customer Requirements:

To make an industrial device that can monitor the discharging of batteries. The device should support discharging of forty batteries simultaneously. The device should also support real-time software data logging. The other features that should be implemented:

  • 1A constant discharge current
  • Variable Battery voltage; Range: 5-12V
  • Adjustable Cut-Off Voltage
  • USB Compatibility

The Application Software should be capable of:

  • Plotting Real Time Discharging Curve of Forty Batteries simultaneously.
  • Logging Discharging data in Excel Sheet
  • Taking User Input to set Battery Cut-Off Voltage in Hardware

From the Customer Perspective, the device would be used in battery manufacturing industry to separate out the defective batteries from the lot. The device would be used to study the discharging curve of different type of batteries.


Hardware Solution:

Two controllers were used to divide the work. The master controller was Atmega2560 that runs on 16 MHz clock speed. The Atmel Atmega16 was selected as a slave controller. The two controllers were linked to each other via UART communication.

A series of analog multiplexers were used to switch between forty batteries. Separate load chamber with cooling fan was used to eliminate the intermixing of heat from load and other electronic circuitry.


The Master Controller handles the following tasks:

  • Sensing Battery Terminal Voltage using Inbuilt Hardware A-D converter
  • Selecting Battery via Multiplexer using Digital Output lines
  • Communication with the Application Software using USB

The Load circuitry contains a series of FETs to drive the Load as per instruction from Slave Controller.


The firmware for the Master and Slave Controllers was designed on Atmel Studio using Embedded C as programming Language.

The firmware of the Master Controller handles the following tasks:

  • Communicating with Application Software
  • Controlling Select Lines of Multiplexers
  • Sensing Battery terminal voltage
  • Instructing Slave Controller via UART

The firmware of the Slave Controller handles the following tasks:

  • Controlling Load Circuitry
  • Taking instructions from Master
  • Generating PWM Signal to control the Load

The Application Software was also developed in Visual Studio using C# as a programming language. The software provides functionalities like:

  • Real Time Discharging Graph of forty batteries
  • Logging Discharging data in Excel Sheet
  • Adjusting Battery Cut-Off Voltage in Hardware
  • Setting Maximum Battery Voltage