How to Make a Simple Arduino Battery Voltage Sensor in 30 Minutes

How to Make a Simple Arduino Battery Voltage Sensor in 30 Minutes


Making a simple battery voltage sensor with an Arduino is a great weekend project that can be completed in less than an hour. With just a few electronic components, I can build a handy gadget to measure voltage levels and monitor battery health.

In this guide, I will walk through the steps to create an Arduino battery voltage sensor from scratch. I will cover the circuit design, required components, Arduino code, and how to assemble it all on a breadboard. Let's get started!

Materials Needed

To make the Arduino battery voltage sensor, I will need the following materials:

The Zener diode acts as a simple voltage regulator to protect our Arduino's analog input pin from excess voltage. I can use various Zener diodes with different voltage thresholds.

In addition, I will need a battery pack or power supply to test the voltage sensor. A 3xAA or 9V battery holder works perfectly.

Circuit Design

The circuit for the Arduino battery voltage sensor only requires 3 main components connected to the Arduino's analog input A0 pin:

Here is the circuit diagram:

It forms a simple voltage divider circuit with the resistor limiting current flow and the Zener diode acting as a regulator. The voltage measured at analog pin A0 will be proportional to the battery's voltage level.

Assemble on Breadboard

To build the circuit on a breadboard:

  1. Insert the 10k ohm resistor across any row on the breadboard
  2. Place the Zener diode in series with the resistor, observing proper polarity
  3. Connect the battery pack positive to the resistor
  4. Finally, run a jumper from the diode cathode to Arduino A0
  5. The Arduino GND should also be connected to the battery negative terminal

Be sure to triple check the connections match the circuit diagram before powering on.

Arduino Sketch Code

With the circuit assembled, here is the Arduino code to read the voltage value on analog pin A0 and print it to the Serial monitor:

const int sensorPin = A0;

void setup() {



void loop() {

int sensorValue = analogRead(sensorPin);

float voltage = sensorValue * (5 / 1023.0) * 3;

Serial.print("Voltage: ");



This simple sketch reads the analog input, converts the 10-bit ADC value to a voltage based on the voltage divider circuit, and prints the result. Adjust the voltage multiplier as needed based on your setup.

Upload this code to the Arduino board and open the Serial monitor at 9600 baud to see voltage readings printed.

Testing and Usage

With everything assembled and coded, I can now test the Arduino battery voltage sensor.

To test, simply connect a battery pack and watch the voltage print out to the serial monitor. The values should update once per second.

Try measuring different batteries or power sources, such as alkaline AA's, a 9V battery, or even a USB power bank.

The sensor can measure up to 30V safely with most Zener diodes. If using a 12V source, add a voltage divider on the input or use a diode with a lower voltage threshold.

Some ways I can use this simple Arduino voltage sensor:

So in just 30 minutes, I have created a handy Arduino voltage measurement gadget for all kinds of electronics projects!


Building an Arduino battery voltage sensor is an easy and educational project to learn basic voltage divider circuits.

With just an Arduino, resistor, Zener diode, and a few wires, I can assemble it on a breadboard quickly. The simple Arduino sketch prints voltage values to the Serial monitor.

This sensor has many uses for measuring battery levels, regulators, or power supply rails. It can be expanded to add displays or data logging as needed.

The basic concept of this voltage divider circuit applies to many types of Arduino sensor projects. I hope you enjoyed learning how to make an Arduino battery voltage monitor! Let me know if you have any other questions.