# How to know when a Li-Po battery is discharged?

I'm building a quadcopter and I've seen that a Li-Po battery must not be entirely discharged, otherwise it could damage it.

How do you know when you have to stop your quadcopter or robot in order to prevent damages, since the voltage doesn't drop? Which part should control the battery charge? ESCs? BEC? Flight controller?

• Short it. If it doesn't explode, it needs to be charged. If it does explode, you have worse problems than the charge in your battery ;) – Manishearth Apr 4 '13 at 18:53
• On a more serious note, you can use the Relimate-like extra wires that come out of a LiPo to measure if it needs charging (chargers use these wires to determine if the battery is done charging). Also, I think that the voltage does drop. – Manishearth Apr 4 '13 at 18:57
• I think you didn't get what I wanted to do. I just want my quadcopter to come back and land (or just to alert me in a way or another) before the battery gets damaged. How to track the battery charge on a quadcopter to tell the charge percentage? – mimipc Apr 4 '13 at 18:59
• I did, I was saying that you could attach a circuit to the Relimates. But it turns out that LiPos do experience a voltage drop, so you need not get into that. – Manishearth Apr 4 '13 at 19:05
• So I just have to track the voltage drop? That's it? – mimipc Apr 4 '13 at 19:17

You can tell by the voltage. LiPo batteries have a distinct "knee" in their performance, generally around 3.4V-3.6V:

It will be slightly different depending on the exact battery, and how you've arranged them in your battery packs (you need to account for the current load when measuring the voltage) -- so it makes sense to characterize your own battery first.

Since your batteries will be in a quadcopter, the best solution will depend on whether you favor the safety of the battery (immediate hardware shutoff) or the safety of the platform (warn the autonomy, allow it to land safely before it shuts itself down in software).

Lithium polymer batteries do have a drop in their voltage as they discharge.

Use a simple zener/opamp circuit (this is a good example of one), or just analogRead from a resistor system parallel to the battery. Determine what your definition of "low battery" is (some experimentation may help, see what values you get for a discharged battery), and set your processor to understand that.

There are a number of off-the-shelf battery monitors that will notify you when the battery voltage has dropped to a critical point. In our lab we use one that emits a loud noise (as an example see the Hobby King Battery Monitor 3S).

• I looked at all those things and I think I could build one with my arduino and LCD screen to display the voltage per cell. Thanks for your help. – mimipc Apr 4 '13 at 19:56
• That makes sense but aren't you worried about weight. Of course now that you mention it the Ardupilot is an Arduino compatible autopilot system and the oilpan (the associated IMU) has the ability to monitor battery level. – DaemonMaker Apr 5 '13 at 0:40
• You could use an Arduino Nano to save on weight. – Galahad II Oct 30 '14 at 14:58

First of all if you want to do it yourself using an Arduino then I would recommend using the Arduino Nano to save on weight.

If you don't want to rely on noises (as used by some battery monitors) then you could program the Arduino to trigger something off, maybe a visible LED or some other physical thing on the quadcopter. Or it could simply gently reduce power to all motors so that the quad lands slowly and safely.

You could also consider the use of telemetry (i.e. sending back information from the quadcopter) if your r/c transmitter supports it. This will give you a real time reading of the battery voltage as well as temperature etc.

Many r/c transmitters also allow you to set a simple timer on the transmitter which you would set based on ground testing to know when approximately you should bring the quadcopter back to base.This is the least technical of the solutions but apparently works well if you allow a bit of safety leeway to compensate for variations due to varying flight conditions.