Designing an Arduino-based programmable load

A programmable load is defined as a type of test equipment or instrument tasked with emulating DC or AC resistance loads normally required to perform functional tests of batteries, power supplies or solar cells.

According to Wikipedia, the platform allows tests such as load regulation, battery discharge curve measurement and transient tests to be fully automated – while load changes for these tests can be made without introducing switching transient that might alter the measurement or operation of the power source under test.

Recently, a Maker by the name of Jasper designed an Arduino-based programmable electric load using an Atmel-powered Nano (ATmega328 MCU).

“The load can be programmed, and the voltage and current are measured. You can set a constant current (CC), a constant power (CP), or a constant resistance (CR) load by simply typing it in to the Arduino Serial Monitor,” Jasper explained in a detailed blog post.

“The circuit is designed for up to 30V, 5A, and 15W. An opamp, a mosfet, and a small sense resistor form the constant current circuit. The current is set using a DAC. Two other opamps measure the power supply voltage and the current. The circuit is powered from the Arduino USB voltage.”

Aside from the Atmel-based Arduino Nano, key project components include:

  • Custom designed PCB ($23)
  • 2x 15pins 0.1″ pitch female header connectors ($2)
  • AD8608 Rail-to-rail opamps ($3)
  • MCP4725 DAC ($3)
  • IRLZ44Z N-channel MOSFET ($2)
  • SK 129 38mm Heat sink ($1)
  • 0603 resistors and capacitors ($2)
  • Screw terminal ($1)

“I chose to use an Arduino Nano board because it is small, cheap, easily interchangeable, it has a power supply that can be used to supply other circuits, and it can easily be programmed with the Arduino IDE,” Jasper continued.

“The Arduino is placed on female header connectors on the board. I chose to use the same DAC as on Adafruit and Sparkfun DAC breakout boards. The DAC can be supplied from 5V and the the output voltage is rail-to-rail. A description for using the MCP4725 DAC and library with Arduino can be found here on the Adafruit website. The DAC connects to the Arduino using I2C.”

On the software side, Jasper uses the the Arduino Serial Monitor to set the mode and value.

“For example, you can type ‘cc100’ to set a 100mA current, ‘cp1000’ to set a 1000mW power, and ‘cr100’ to set a 100 Ohm resistance. In overload condition, when the nominal power supply voltage drops, the CC circuit tries to maintain the current. This leads to an even further voltage drop and finally in a short circuit. In CP mode, the Arduino measures the voltage and adjusts the current so that the power remains constant,” he added.

“This is handy for testing power supplies designed to deliver a constant power. In CR mode, the Arduino measures the voltage and adjusts the current so that the resistance remains constant. This is handy if you want to simulate a resistor connected to the power supply – especially if you don’t have a box of power resistors of all kinds of values.”

Interested in learning more? You can check out Jasper’s Electric Load here.

1 thought on “Designing an Arduino-based programmable load

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s