• Skip to main content
  • Skip to primary sidebar

Homemade Circuit Projects

Need circuit help? Post them in the comments! I've answered over 50,000!

Blog | Categories | About | Contact | Calculators-online
You are here: Home / Battery Charger Circuits / Arduino Battery Level Indicator Circuit

DIY Circuits | Learn Basics | Arduino Coding




Arduino Battery Level Indicator Circuit

Last Updated on April 14, 2020 by Swagatam 96 Comments

In this post, I will show how to construct an Arduino based  battery level indicator, where a series of 6 LEDs show the level of the battery. If you are interested in monitoring and maintenance of your 12V battery, this circuit might become handy.

Why Battery Level Monitoring is Crucial

All batteries have certain voltage limit to discharge, if it goes beyond the prescribed limit, the life span of the battery will reduce drastically.

Being electronics enthusiasts, we all might have a battery for testing our prototype circuits. Since we concentrate on the prototype during experiment, we care less on the battery.

The proposed battery charger circuit will show you how much energy left in the battery, this circuit may be connected to battery, while you prototyping your circuits. When this circuit indicates low battery, you may put the battery to charge. The circuit has 6 LEDs, one LED glow at a time to indicate the voltage level of the battery.

If your battery is full, the left most LED glows and you battery is dead or about to die, the right most LED glows.

How it Works

LED battery level indicator using Arduino code

The circuit consists of Arduino which is the brain of the system, a potential divider which helps the Arduino to sample the input voltage. A pre-set resistor is used to calibrate the above setup. The series of 6 LEDs will indicate the battery level.

Calibrating LED Indicators

The relation between LED and battery level is given below:

LED1 – 100% to 80%

LED2 – 80% to 60%

LED3 – 60% to 40%

LED4 – 40% to 20%

LED5 – 20% to 5%

LED6 - <5% (charge your battery)

The Arduino measures a narrow range of voltage from 12.70V to 11.90V. A fully charged battery should have voltage above 12.70V after disconnecting from charger. A low battery voltage must not go below 11.90V for a 12V sealed lead-acid battery.

Author’s prototype:

Arduino Battery level indicator prototype

Program Code:

//--------Program developed by R.Girish---------//
int analogInput = 0;
int f=2;
int e=3;
int d=4;
int c=5;
int b=6;
int a=7;
int s=13;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000;
float R2 = 10000;
int value = 0;
void setup()
{
Serial.begin(9600);
pinMode(analogInput,INPUT);
pinMode(s,OUTPUT);
pinMode(a,OUTPUT);
pinMode(b,OUTPUT);
pinMode(c,OUTPUT);
pinMode(d,OUTPUT);
pinMode(e,OUTPUT);
pinMode(f,OUTPUT);
digitalWrite(s,LOW);
digitalWrite(a,HIGH);
delay(500);
digitalWrite(b,HIGH);
delay(500);
digitalWrite(c,HIGH);
delay(500);
digitalWrite(d,HIGH);
delay(500);
digitalWrite(e,HIGH);
delay(500);
digitalWrite(f,HIGH);
delay(500);
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
}
void loop()
{
value = analogRead(analogInput);
vout = (value * 5.0) / 1024;
vin = vout / (R2/(R1+R2));
Serial.println("Input Voltage = ");
Serial.println(vin);
if(vin>12.46) {digitalWrite(a,HIGH);}
else { digitalWrite(a,LOW);}
if(vin<=12.46 && vin>12.28) {digitalWrite(b,HIGH);}
else { digitalWrite(b,LOW);}
if(vin<=12.28 && vin>12.12) {digitalWrite(c,HIGH);}
else { digitalWrite(c,LOW);}
if(vin<=12.12 && vin>11.98) {digitalWrite(d,HIGH);}
else { digitalWrite(d,LOW);}
if(vin<=11.98 && vin>11.90){digitalWrite(e,HIGH);}
else {digitalWrite(e,LOW);}
if(vin<=11.90) {digitalWrite(f,HIGH);}
else {digitalWrite(f,LOW);}
delay(2000);
}
//--------Program developed by R.Girish---------//

How to Setup the circuit:

The calibration for this Arduino 6 LED battery level indicator circuit must be done carefully, if you did not calibrate correctly, the circuit will show incorrect voltage level of the battery.

When you turn on the circuit, it starts with LED test, where the LEDs glow up sequentially with some delay. This might help you to debug errors while arranging the LEDs.

1)    Set the voltage of your variable power supply to precisely to 12.50V.

2)    Open the serial monitor.

3)    Rotate the preset resistor clock wise or counter clock wise and bring the readings to 12.50V.

4)    Now, reduce the variable power supply to 12.00V, the readings on the serial monitor should show the same or very close to 12.00V

5)    Now, increase the voltage to 13.00V, the readings on serial monitor should also show the same or very close.

6)    At the same time when you increase or decrease the voltage, the each LED should turn on/off with different voltage levels.

Once the above steps are done successfully, your battery level indicator circuit will be ready to serve the intended purpose.

Adding an Auto Cut Off

The above explained Arduino battery level indicator circuit can be further enhanced by including an automatic battery full charge cut-off facility.

The following figure shows how this may be implemented in the existing design:

You'll also like:

  • cell phone emergency lamp circuitHow to Illuminate 1 Watt LEDs with Cell Phone Charger
  • SMPSchargercircuitPWM Solar Battery Charger Circuit
  • simplestbatterychargercircuitBattery Cut Off Charger Circuit Using a Single Relay
  • universalli ionchargercircuitHigh Current Li-Ion Battery Charger Circuit

Filed Under: Battery Charger Circuits Tagged With: Arduino, Battery, Indicator, Level

About Swagatam

I am an electronics engineer and doing practical hands-on work from more than 15 years now. Building real circuits, testing them and also making PCB layouts by myself. I really love doing all these things like inventing something new, designing electronics and also helping other people like hobby guys who want to make their own cool circuits at home.

And that is the main reason why I started this website homemade-circuits.com, to share different types of circuit ideas..

If you are having any kind of doubt or question related to circuits then just write down your question in the comment box below, I am like always checking, so I guarantee I will reply you for sure!

Previous Post: « 1.5V Power Supply Circuit Diagram for Wall Clock
Next Post: Material Storage Level Controller Circuit »

Reader Interactions

Comments

sheraz ahmad says:
January 1, 2019 at 10:09 pm

Hi sir! dear sir how can we detect the presence of a 12v battery & the charger say 12v-10amp smps charging that 12v battery using arduino at the same time? my problem is if arduino adc channel measure the voltage using led display between battery terminals while connected to battery then the circuit is correct but if we disconnect battery from the charger how the arduino will detect the absence of charger terminal at battery terminal? i mean how arduino will detect presence or absence of charger at battery terminals?

Reply
ALLAN Q. GUILLERMO says:
October 8, 2018 at 2:59 pm

Hello Sir, may I ask a favor again to help me design a circuit for me to control my three-phase motor using remote control thank you and God bless,..

Reply
Swagatam says:
October 8, 2018 at 5:37 pm

Hello Allan, I already have one related post in my website, which you can refer and try it out:

https://www.homemade-circuits.com/3-phase-induction-motor-speed/

remote control can be integrated once you successfully built the basic model as explained above.

Reply
ALLAN says:
October 8, 2018 at 2:53 pm

hello Sir, kindly suggest a circuit of your own design which useful to control 3 phase motor by not just merely using start-stop that can easily be worn out due to sparks and may I ask further if can I make it wireless thanks…

Reply
anu says:
March 14, 2018 at 6:15 pm

we are getting 54.59 as a input voltage which was displayed in the monitor

Reply
Swagatam says:
March 14, 2018 at 6:21 pm

sorry, could not understand your problem correctly, please explain it elaborately

Reply
Anupriya says:
March 10, 2018 at 11:54 am

if it is possible can you please tell me

Reply
Swagatam says:
March 10, 2018 at 1:20 pm

I will have to contact the programmer for the customization, and therefore will be a paid service.

Reply
Anupriya says:
March 9, 2018 at 5:52 pm

HI, In this the voltage level is indicated in the form of a LED. If it is possible to get the voltage level in the digital format

Reply
Swagatam says:
March 10, 2018 at 10:00 am

Hi, it will require modifying the entire code and may not be possible at the moment…

Reply
PolloB says:
December 21, 2017 at 7:09 pm

sir,please give PIC Microcontroller based 12V battery capacity led level meter with charge controll.thanks

Reply
Swagatam says:
December 22, 2017 at 8:26 am

Hi Pollo, presently I do not have this design, If I find one I’ll let you know…

Reply
joel wanjala says:
November 10, 2017 at 12:16 pm

what if i want to indicate the battery level in percentage form on an lcd display instead of using LEDS, what can i do?? please advice

Reply
Swagatam says:
November 10, 2017 at 2:32 pm

Mr.GR will answer your question soon…

Reply
GR says:
November 10, 2017 at 3:38 pm

Hi joel,

Let me do some research on this, if it is possible to read between 0 to 100% voltage range. I will post a design soon.

Regards

Reply
Dinusha says:
August 13, 2017 at 10:39 pm

Thank you sir.
Actually I want to design a controller circuit for stand alone pv system to energize the 12V DC bus. This controller must have the MPPT (with P & O algorithm). normally systems disconnected at the overcharging and over discharging the 12V battery.
I want to design a controller to disconnect MPPT at the battery charging is greater than the 95% ,then it track the voltage without MPPT until 100% charging. if the charging level less than the 95% then it connect to the MPPT again. can it do this by using arduino. ?
{i want to prevent the problem of cut off the MPPT at the No-load and fix this disconnection & re-connection in smoothly}

Reply
Swagatam says:
August 14, 2017 at 3:28 am

Dinuasha, if your requirement is to keep the charging thresholds within the margin of 100% and 95%, then I think it could be done with a simple opamp circuit, using Arduino will be an overkill for such a a simple operation.

Reply
Dinusha says:
August 11, 2017 at 6:56 pm

Dear sir,
Is it only use the battery terminal voltage as input? can i used this for stand alone PV system (12V battery monitoring)?.Because I want to disconnect the battery from the load or pv array at the required charging levels.

Reply
Swagatam says:
August 12, 2017 at 5:13 am

Dear Dinusha,

Yes you can use it separately for monitoring battery only, the Arduino can be powered from the battery under monitor.

Reply
Gizem Yılmaz says:
July 13, 2017 at 8:11 am

Hi,
I need to do battery level circuit for my intern project. The will be 5v at the input and there will be five leds. For example if there is 1v just one of the leds will light then for 2v first two of themcan you help me about this?

Reply
GR says:
July 13, 2017 at 2:49 pm

Hi, Gizem

Are you sure about your design, because a 5V (4.5v etc) battery should not be allowed to fall to 1 Volt and most of the circuit will only work above 3V in general.

I will design a circuit for you, if you want me to proceed with your requirements.

Regards

Reply
Swagatam says:
July 13, 2017 at 2:25 pm

Hi, Mr, GR will be able to advise you better, I'll forward the question him soon….

Reply
GR says:
May 9, 2017 at 12:25 pm

Hi faizan,

You cannot calibrate the circuit for li-ion battery as the program is written for 12V battries only.

That's why you are getting unusual voltage readings on serial monitor when you connect the charger.

If you are looking for li-ion based projects this is not the right one.

Regards

Reply
Faizan Hamayun says:
May 9, 2017 at 7:07 am

OK if i calibrate for Li battery but once charging circuit connects what will be the changes to be done to detect original voltage of battery under charge? instead it add up the battery voltage with the charging circuit voltage.

Reply
Faizan Hamayun says:
May 8, 2017 at 10:05 am

Waiting for the reply anxiously.

Reply
Swagatam says:
May 8, 2017 at 2:52 pm

Please refer to your previous comment above, for the reply….

Reply
Unknown says:
April 27, 2017 at 6:38 pm

hy sir i make circuit same as above but the serial monitor shows 20+ reading without battery.
and only secondary battery are use.

Reply
GR says:
May 8, 2017 at 1:16 pm

Hi Unknown….LOL 🙂

Please elaborate your issues and please comment you problem in a way that others can understand.

Regards

Reply
Faizan Hamayun says:
April 25, 2017 at 8:22 am

Its adding battery voltage as well

Reply
Faizan Hamayun says:
April 25, 2017 at 6:27 am

hello i have calibrated the circuit FOR LITHIUM ION battery charger i have connected the charger it shows 4.2v when no battery and when a 3.7v battery attached to it the serial monitor shows voltage more then 4.7v what to do?.Why it is not showing correct charging voltage or do i need to change the formula?

Reply
GR says:
May 8, 2017 at 1:12 pm

Hi, Faizan,

The circuit is NOT designed for Li-ion batteries, it is proposed for 12V SLA batteries.

The code is written for 12V batteries and will not monitor 3.7V Li-ion batteries.

Do not charge your batteries along with this circuit. It is designed to monitor the battery only on discharge.

Please read the article properly, this will keep most of the misunderstanding about the project at bay .

Regards

Reply
Swagatam says:
April 25, 2017 at 8:27 am

Hello, Mr. GR will hopefully see your question here and respond appropriately….please be patient.

Reply
Faizan Hamayun says:
April 4, 2017 at 1:51 pm

If a dead battery attached to this circuit but the battery is also attached to the charging circuit how can we get low battery indication?.As charger output is above 13v so the green LED ON instead of red LED.What to do?

Reply
GR says:
May 8, 2017 at 1:20 pm

Hi, Faizan

Do not charge your battery along with this circuit, it won't indicate the correct battery level.

Regards.

Reply
Swagatam says:
April 5, 2017 at 2:43 am

when a good battery is connected the supply voltage will instantly go down and settle down to the battery discharge level…but for a dead battery this might not happen and will indicate something's wrong with the battery.

Reply
isaac umoh says:
April 1, 2017 at 11:11 pm

Good evening….please sir how can i make the led to be constantly ON but Turn OFF when the battery is LOW

Reply
Akhil Singh says:
March 31, 2017 at 9:48 am

can you provide a circuit for solar panel powered battery charging circuit that charges 12V 7Ah battery

Reply
Swagatam says:
March 31, 2017 at 12:25 pm

you can make the following circuit:

https://www.homemade-circuits.com/2012/04/how-to-make-solar-battery-charger.html

adjust the 10K to get exactly 14V for the battery, and use an input of 15V at 1 amp

Reply
Faizan Hamayun says:
March 28, 2017 at 5:35 am

I only need one LED to indicate so small opamp like lm393 can be use?.Please suggest a circuit.

Reply
Swagatam says:
March 28, 2017 at 2:16 pm

….connect the LED cathode to the input supply ground line.

LED will ON for good battery and OFF for bad battery…for an opposite response connect the LED across opamp output and positive line.

Reply
Swagatam says:
March 28, 2017 at 2:12 pm

you can try the following concept, keep only one opamp instead of the shown 4

https://www.homemade-circuits.com/2015/04/battery-current-indicator-circuit.html

Reply
Faizan Hamayun says:
March 28, 2017 at 5:16 am

Can this be done using arduino with less parts i want to achieve the result.

Reply
Faizan Hamayun says:
March 27, 2017 at 1:05 pm

Hello;
I have been searching for a circuit that can detect if lithium ion 4.2v rechargeable battery is at fault i mean consuming very less current like 10-100mA but not getting the proper charging current.With LED indication.

Reply
Swagatam says:
March 28, 2017 at 4:37 am

Hello, the only way to detect this could be through a current sensing resistor and a voltage amplifier circuit which will indicate whether the cell is consuming around 1C current or not……LM3915 IC looks a candidate for making this system.

Reply
Fatin Nabihah Sairy says:
January 31, 2017 at 10:53 pm

Hi Mr swagatam well I need to do my final year project. I need to do battery indicator using Bluetooth and wifi. My question is do I need to do a vdr to avoid a more volt supply to my arduino+LCD+bluetooth module. I hope you can help me

Reply
Swagatam says:
February 1, 2017 at 4:30 am

Hi Fatin, you can use a 7805 IC voltage regulator for ensuring a safe 5V for the Arduino.

Reply
Back to Newest

Need Help? Please Leave a Comment! We value your input—Kindly keep it relevant to the above topic! Cancel reply

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

Primary Sidebar

circuit simulator image



Subscribe to get New Circuits in your Email



Categories

  • Arduino Projects (95)
  • Audio and Amplifier Projects (133)
  • Automation Projects (18)
  • Automobile Electronics (103)
  • Battery Charger Circuits (87)
  • Datasheets and Components (109)
  • Electronics Theory (149)
  • Energy from Magnets (27)
  • Games and Sports Projects (11)
  • Grid and 3-Phase (20)
  • Health related Projects (27)
  • Home Electrical Circuits (13)
  • Indicator Circuits (16)
  • Inverter Circuits (95)
  • Lamps and Lights (159)
  • Meters and Testers (71)
  • Mini Projects (28)
  • Motor Controller (68)
  • Oscillator Circuits (28)
  • Pets and Pests (15)
  • Power Supply Circuits (91)
  • Remote Control Circuits (50)
  • Renewable Energy (12)
  • Security and Alarm (64)
  • Sensors and Detectors (106)
  • SMPS and Converters (34)
  • Solar Controller Circuits (60)
  • Temperature Controllers (43)
  • Timer and Delay Relay (49)
  • Voltage Control and Protection (42)
  • Water Controller (37)
  • Wireless Circuits (31)





Other Links

  • Privacy Policy
  • Cookie Policy
  • Disclaimer
  • Copyright
  • Videos
  • Sitemap



People also Search

555 Circuits | 741 Circuits | LM324 Circuits | LM338 Circuits | 4017 Circuits | Ultrasonic Projects | SMPS Projects | Christmas Projects | MOSFETs | Radio Circuits | Laser Circuits | PIR Projects |

Social Profiles

  • Twitter
  • YouTube
  • Instagram
  • Pinterest
  • My Facebook-Page
  • Stack Exchange
  • Linkedin



Recent Comments

  • Swagatam on How to Manufacture Automobile Electronic Parts and Earn a Handsome Income
  • Swagatam on Door Security Alarm Circuit for Alerting if Door was Opened
  • Swagatam on High Wattage Brushless Motor Controller Circuit
  • Swagatam on Arduino 2-Step Programmable Timer Circuit
  • Duff on Door Security Alarm Circuit for Alerting if Door was Opened

© 2026 · Swagatam Innovations