DC Panel Meter using Arduino


Panel meters in regulated power supplies are used to display electrical parameters like voltage and current. Presented here is a circuit to display DC voltage and current of power supplies, including DIY-type ones.

Circuit and working

Circuit diagram of the DC panel meter using Arduino is shown in Fig. 1. The circuit is built around Arduino Uno board (Board1), current sensor IC ACS712 (IC1), 16×2 LCD (LCD1), npn transistor BC547 (T1), piezo buzzer (PZ1) and a few other components.

Circuit diagram of DC panel meter using Arduino

Power supply voltage is sampled using the voltage divider network built around resistors R1 and R2. Current consumed by the load is sampled using ACS712. Sampled voltage and current are given to Arduino, which is the brain of the circuit and performs calculations for displaying the parameters on the LCD1.

Voltage at Arduino analogue and digital pins should not exceed 5V. Hence, an alert message is displayed on the LCD1 and the buzzer sounds whenever sampled voltage and current go beyond the limit.

Arduino Uno

Arduino Uno is a popular open source microcontroller (MCU) development board based on ATmega328P MCU. It has 14 digital input/output (I/O) pins (of which six can be used as PWM outputs), six analogue inputs, 16MHz crystal, USB connector, power jack and ICSP header. It comes preloaded with Arduino bootloader.


Current sensor IC ACS712 accurately detects AC or DC current, and produces analogue voltage proportional to the current passing through it. Its internal views are shown in Fig. 2. The device consists of a precise, low-offset, linear Hall circuit with a copper conduction path located near the surface of the die. Applied current flowing through the copper conduction path generates a magnetic field, which the Hall IC converts into proportional voltage. Device accuracy is optimised through the close proximity of the magnetic signal to the Hall transducer.

Internal view of ACS712

Internal view of ACS712

Output of the IC is 2.5V when no current is passed through it—it swings around 2.5V at the rate of 185mV/A for 5A version, 100mV/A for 20A version and 66mV/A for 30A version.

The graph shown in Fig. 3 shows output voltage versus sensed current of 5A version sensor IC. A readily-available 5A version sensor module is used in this circuit.

Output voltage versus sensed current of ACS712

Output voltage versus sensed current of ACS712

Internal resistance of the conductive path is 1.2m, providing low power loss. Terminals of the conductive path (pins 1 to 4) are electrically-isolated from signal leads (pins 5 through 8). This allows ACS712 to be used in applications that require electrical isolation without the use of opto-isolators or any other costly isolation technique.

Software is developed on Arduino platform. After burning the code (PanelMeter.ino) into ATmega328 on Arduino Uno, remove USB power supply from the computer/laptop. Connect 9V power supply across CON1.

During testing, 5V, 5A input was used as power input source at CON1. Load connected at CON3 may have different values (ranging from 1E to 5E). A 10W wirewound resistor is used as load across CON3. Current and voltage values appear on LCD1. When current flows more than 5A, LCD1 shows over range and the buzzer produces a sound to alert the user. A low-current, disk-type piezoelectric buzzer is used.

Construction and testing

An actual-size PCB layout of the DC panel meter using Arduino is shown in Fig. 4 and its components layout in Fig. 5. After assembling the circuit on the PCB, and burning the code to the MCU, connect a 9V across CON2 to power the circuit. Connect potmeter VR1 on the front panel of the cabinet for controlling the contrast of LCD1. Connect 5V, 5A input across CON1 and load across CON3 for sensing the current.

PCB layout of DC panel meter using Arduino

PCB layout of DC panel meter using Arduino

Components layout for the PCB

Components layout for the PCB

Download Source Code: click here

Use jumper wires for connecting the circuit to Arduino board. Arduino can be powered by an external 9V, 500mA adaptor or USB A-to-B cable.

If current is displayed with negative (-) sign, it either means that it is flowing in opposite direction or input pins of current sensor IC are interchanged. To use a high-current, coil-type buzzer, use a driver with external power supply instead of Arduino’s supply. For additional protection, connect 4.7V Zener diode between analogue input pins (A0 and A1) and ground of Arduino.

Read More Detail:DC Panel Meter using Arduino

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top