Simple Low Voltage Disconnect Circuit for Arduino

I have read several forums regarding the disconnecting the Arduino power from the Lithium Ion battery by itself (measuring the battery voltage and when the low limit is reached the Arduino signal turns off itself).

The protection circuit prevents the LiIon/LiPo cell from being over charged (bad things happen when the cell is pushed past 4.3V), under charged (the cell can be harmed if pulled below about 2.8V), and short-circuit (shorting the positive and negative terminals together). If any of these triggers occur, the protection circuit very quickly disconnects the cell from the terminals.
Various Li-ion batteries


If you discharge it under a typical load to the 2.5V-2.7V low-voltage cut-off, the cell will usually recover to >3.0V after a few minutes at rest.
If it does not recover to >3.0V, it will have suffered some damage, depending on how low its voltage is at rest. The key will be to recharge it as soon as possible, as the longer it spends in a fully-discharged state, the more it will deteriorate.

The best policy of all is never to let Li-Ion cells get that low. You can top them up as often as you like.

I have created a circuit that based on the signal (n my case from Arduino board), the power is turned off to 0 power drain from the battery. I also made a ATtiny13A circuit that controls the switch on/off of the rest of the circuit (Arduino project).

I used different approach than stated in several forums and created overall schematic of Arduino that measure the battery voltage and turn it off when it reaches the low voltage limit.

  • A0 measures the battery voltage via voltage divider 1:1
  • D5 is high and when the battery voltage reaches the lover limit, Arduino pin goes to LOW
  • 4N35 OPTOCOUPLER is used to decouple Arduino pin with the battery in off state
  • S1 push button is used to start it
  • I used the simple 2N7000 N-channel MOSFET since I have current less than 100mA (Gate Threshold Voltage is 3V so Drain-Source On-Voltage is ~0.3V in my situation). If more current is required I would use STP36NF06L or IRL2203. More to understand which MOSFET to use is here.

My breadboard version with arduino pro mini 3.3V version.

The stand alone circuit that can be reused by projects is depicted bellow.

So step by step assembling of the board by soldering the circuit:


One Cell Battery Protection IC

Typical DW01 application circuit

The DW01 battery protection IC is designed to protect lithium-ion/polymer battery from damage or degrading the lifetime due to overcharge, overdischarge, and/or overcurrent for one-cell lithium-ion/polymer battery powered systems. Most of such protection circuits have Overdischarge Detection
Voltage [VODP] at 2.4V. I have found only one IC FS312F-G that has VODP at 2.9V. The advantage of custom DIY protection IC is that it can be controlled from arduino, so you can set the VODP at your voltage level.

Seeting the right Overdischarge Detection Voltage (VODP)

I usually use 3,3V under power and 3.5V rest voltage threshold levels in my projects.

TBD – this post will be updated describing the rest voltage and voltage under power.

Other useful tips on this topic:

Related Posts

Program ATtiny13A via Arduino board

Programming ATtiny micro-controller is quite easy if you have all the needed information in one place. That is the reason to put all needed files, hints in one post so next time I will need it,[…]

Continue reading ...

WiFi Energy Monitor

My new project consists of HW with cost under 20€. It is able to accurately measure electric power consumption and sends data via WiFi. Great source of knowledge is which includes also Arduino library.

Continue reading ...

ESP8266 – WiFiManager and EEPROM

ESP8266 WiFiManager EEPROM My next addition to previous projects battery-wifi-iot-temp-hum-soil-moisture-sensors and battery-powered-esp8266-iot-logger is to make wifi configuration smooth and fast.

Continue reading ...