Monday, 5 September 2016

Using OpenTx to help manage LiFe rx batteries

Until now, I've always used Eneloop NiMH cells for my F3F models, and I've found them to be very reliable. However my new Needle 115 forced a change in habit, as I equipped it with HV servos for which Lithium batteries are better suited.

After some thought, I settled on a Vapex 1600 2S LiFe pack. These cells are less prone to catch fire than LiPo's, and this particular pack fits well in the Needle.

Vapex 2S 1600 LiFe pack, Eneloops for comparison (note LiFe pack voltage is equivalent to five Eneloops)

There's a little problem though - LiFe packs have a relatively flat voltage curve:

This means that the pack voltage is not a reliable indicator of capacity. Because of this, I decided to use elapsed time since the last full charge as the basis for a battery warning. In this post I'll describe the steps to implement this on my Taranis running OpenTx 2.1.

(I do have a voltage alarm as well, but only as a secondary alert. I set the threshold to 5.7V.)

Monitoring operating time

To monitor the operating time of the receiver battery, we just need to monitor the presence of telemetry data. In the code below, L9 goes true when RSSI data is detected:

Receiver battery detection 

The logical switch controls timer1. The timer is configured for 'manual reset' so that its value is persistent between transmitter power cycles:

Timer1 configuration.
The timer display:

Timer1 display
Before the first use of a freshly charged battery, the timer is reset by pressing [long ENTER] from the main menu then selecting "Reset Timer 1". Thereafter no user intervention is required.

Here's how to add a voice callout of the elapsed time:

Special function plays the timer

To finish off, you can trigger an alert when the time exceeds the safe limit.  I'll leave the details as an exercise (clue: create a logical switch a>x, timer1, hh:mm:ss, then use a special function to trigger a Play Track or Haptic action).

Determining the current draw

We also need to estimate the maximum safe operating time, and to do that we must determine the average current drawn by the battery in flight:
  1. Charge the receiver battery
  2. Reset timer1
  3. Go flying (but not for too long!).
  4. Note down the operating time from the timer display.
  5. Back home, top up the battery, noting the mAh needed to replenish the pack.

Using this method on my Needle resulted in the following figures:
  • Operating time: 56.5 mins = 0.933 hrs
  • Capacity to replenish to full charge: 664 mAh
  • Average current = 0.664/0.933 mA = 712 mA

Determining safe operating time

The final step is to measure the capacity of the battery. To do this, put your charger on a charge/discharge cycle. After the battery is discharged, note down the measured capacity.

Knowing the capacity, and the average current, the maximum operating time can be calculated. Here are figures from my Needle + Vapex pack:
  • Measured capacity: 1215 mAh
  • Max operating time = capacity/current = 1215/712 = 1.71 hrs = 102 mins

Allowing a 20% safety margin:
  • Max 'safe' operating time = 80% * 102 = ~80 mins


Capacity check

As an aside, my new Vapex 1600 mAh pack measured in at only 1215 mAh. Two other Vapex packs showed a similar shortfall. I have no explanation. Perhaps capacity will increase after a few cycles...

[Note: To check the capacity I used an iCharger 106B on the LiFe setting, 0.8C charge, then 0.2C discharge using default voltage end points.]


The usage monitor has proved an essential safety tool. Together with a low voltage alarm and real time telemetry, there's little excuse to run out of juice.

[Note: 15 Sept 2016 - an F3F colleague tells me that the internal resistance of LiFe's can increase significantly at low temperatures, and the resulting voltage dips can be the limiting factor rather than the battery capacity. At very low temperatures, recharging after each flight provides ultimate safety margin - see comments below.]


Matthew Brett said...

Nice solution Mike, very neat. Am surprised at the shortfall in your battery capacity though - the two LiFe RX packs I have (both cheapies from Hobbyking for small models) were pretty much on the money when I tested them when new.

Matthew Brett said...

PS - For field chargin gon slope awaydays I now take one of these, powered by a 3S 1800 or 2200; small, light and very effective. Only £11 too!

RC Soar said...

Matt, that's interesting. So far the three packs I've tried have all been well below rated values. I'm going to see if I can a days racing in on one battery, if not then that micro-charger may yet come in handy.

philip lewis said...

Excellent well written and useful blog, thank you.

I've used LiFe batteries for years now as RX packs (twin 700 mah packs in a 2m plane) because they are perfect for 6 Volt servo's with no switch or regulator and like you said don't catch fire. I throw them away at the end of each year on a MTBF basis because they are so cheap anyway but of the literally dozens of packs I've had of various capacities (though all Zippy's or Nano's) they have always been spot on for capacity and they also tend to stay that way as well