Implementing Undervoltage Lockout (UVLO) Protection in Arduino Projects for Battery Safety
You’re risking your Arduino and LiPo battery if voltage drops below 3.2V, where copper shunting and permanent capacity loss begin. Build a UVLO circuit using an LM393 comparator, TL431’s 1.25V reference, and a 15kΩ/10kΩ divider to cut power at 3.2V per cell. Add a BC547 transistor and AO3407 P-channel MOSFET for clean shutdown, draw only 1–3mA. Include a 100kΩ feedback resistor for 150mV hysteresis, preventing chatter. Test safely with a bench supply or buck converter. There’s a smarter way to set it up right the first time.
We are supported by our audience. When you purchase through links on our site, we may earn an affiliate commission, at no extra cost for you. Learn more. Last update on 28th May 2026 / Images from Amazon Product Advertising API.
Notable Insights
- Use a UVLO circuit to prevent LiPo battery damage by disconnecting power below 3.2V per cell.
- Implement an LM393 comparator with TL431 reference to accurately detect undervoltage conditions.
- Set voltage threshold with a 15kΩ/10kΩ resistor divider for precise 3.2V cutoff per cell.
- Add hysteresis via a 100kΩ feedback resistor to prevent output oscillillation during voltage fluctuations.
- Use a P-channel MOSFET like AO3407 to switch power, controlled by the comparator through a BC547 inverter.
Why Your Arduino Needs UVLO Protection
While your Arduino might still power on at low voltages, running it without UVLO protection puts both your microcontroller and battery at real risk-especially when using LiPo cells that can drop below 3.0V and suffer permanent damage from copper shunting and capacity loss. Voltage drops below safe levels can trigger deep discharge, cutting LiPo capacity by up to 40% and increasing fire risk. Without under-voltage lockout, your Arduino may also experience EEPROM corruption or unstable operation during brown-outs. A proper UVLO circuit uses a comparator and precision reference to monitor battery voltage, disconnecting power at a set threshold-say 3.2V for LiPo. Hysteresis prevents rapid switching near the trip point. This protection isn’t optional; it’s essential for longevity and safety in any battery-powered Arduino project.
Build a UVLO Circuit With LM393 and TL431
You’ve seen why running an Arduino without under-voltage protection risks both your hardware and battery health, especially with volatile cells like LiPo that can degrade fast below 3.0V, but now it’s time to build a solution that actually works. This UVLO circuit uses an LM393 comparator and TL431 precision reference to monitor voltage via a 15kΩ/10kΩ resistor divider, triggering under-voltage lockout at ~3.125V. The TL431 provides a stable 1.25V reference, while hysteresis (~150mV) via a 100kΩ feedback resistor prevents oscillation. A BC547 transistor inverts the LM393’s output to control a P-channel MOSFET, cutting power cleanly. It draws only 1–3mA-great for battery protection.
| Component | Function | Value/Type |
|---|---|---|
| LM393 | Comparator | Open-collector |
| TL431 | Voltage reference | 1.25V configuration |
| Resistor divider | Sense input | 15kΩ/10kΩ |
| P-channel MOSFET | Power switch | AO3407 |
Set the Right Cutoff for LiPo Batteries
Since dropping below 3.0V can permanently damage a LiPo cell by dissolving internal copper components, you’ll want your UVLO cutoff set to 3.2V per cell-just high enough to protect battery health without wasting usable capacity. When the battery voltage drops to this level, your comparator triggers, disconnecting the load. Use 1% metal film resistors in your voltage divider-like 15kΩ and 10kΩ-to set a precise threshold voltage near 3.125V with a TL431 reference. This improves accuracy by up to 160mV over carbon film resistors, ensuring a reliable battery protection circuit. For a 3S LiPo pack, that’s a 9.6V total cutoff. Always design your UVLO to enforce a safe battery disconnect before deep discharge occurs, so your projects stay protected and your cells last longer.
Add Hysteresis to Stop Voltage Chatter
When your battery voltage hovers right at the UVLO threshold, even small fluctuations can make the comparator flip-flop, turning your load on and off rapidly-a problem known as voltage chatter, and trust us, it’s something you want to avoid because it stresses components and can reset your Arduino unexpectedly. You need Hysteresis to Prevent this-your LM393-based UVLO uses a 100kΩ feedback resistor (R3) from the comparator output to the voltage divider node, creating separate thresholds: UVLO_FALL when voltage drops too low, and UVLO_RISE for restart. The divider samples the battery, and with hysteresis, recovery happens at 3.35–3.4V (not 3.2V), avoiding rapid cycling. As the comparator output shifts, the feedback resistor adjusts the reference, so the MOSFET gate is pulled low only when truly needed. This guarantees the circuit shuts down gracefully, offering reliability you can count on.
Test UVLO Without Draining Your Battery
How do you verify your UVLO circuit works without risking your battery’s charge or lifespan? Use an adjustable bench power supply to simulate battery voltage and test my UVLO circuit without draining your actual pack. Set it to 4.2V, then slowly reduce the output to mimic when the input supply voltage drops. For single LiPo setups, watch for cutoff near 3.2V and recovery at 3.35–3.4V. A buck converter works too-it’s a low-cost way to simulate battery voltage with precision. Monitor output voltage at the P-channel MOSFET using a multimeter or oscilloscope to confirm disconnection and restart behavior. This method lets you test UVLO circuit without draining, saving time and battery cycles. To prevent noise-induced false triggering, add a 100nF ceramic capacitor across TL431 and LM393 supply pins.
On a final note
You’ve got everything you need to protect your Arduino project with reliable UVLO, using the LM393 and TL431 to monitor voltage precisely. Set your cutoff around 3.3V for LiPo safety, add hysteresis to prevent relay chatter, and test with a bench supply to simulate voltage drop. Real tests confirm stable operation, clean shutdowns, and repeatable performance-no more over-discharged batteries or unstable code. This simple circuit boosts reliability and extends battery life, making it essential for any portable build.





