Author Topic: Running on eneloop AA batteries  (Read 14194 times)

Felix

  • Administrator
  • Hero Member
  • *****
  • Posts: 6866
  • Country: us
    • LowPowerLab
Re: Running on eneloop AA batteries
« Reply #15 on: February 19, 2015, 03:35:20 PM »
I think around 3.6v is where you enter that regulator dropout region where it's trying really hard to supply the output voltage and it's eating a lot more power because of that and that's why the graps is dropping dramatically after 3.6V.

TomWS

  • Hero Member
  • *****
  • Posts: 1930
Re: Running on eneloop AA batteries
« Reply #16 on: February 19, 2015, 04:14:20 PM »
Hi There. Here is my first eneloop crash. Was fairly liner down to 3.6v (mid jan) then fall sharply to 3.3v Interesting is what happened when it reach 3.3v Node is still running fine. Thoughts ?
3.6 volts is where 3 ENELOOPs in series would hit the knee - 1.2V each.  While it may have taken a temporary slow down (maybe due to reduced current) at 3.3V, I'd expect the battery to continue to decay until the mote stops operating.

Re Felix's explanation, I'm not sure about that.  Given that it's not a bipolar regulator, the controls would be voltage driven, not current driven, so 'trying harder' doesn't seem correct to me.  Still, I'll take a look at the regulator spec and see if they even spec current near the dropout voltage.

You're currently in your Summer months, right?  What's the ambient temperature?

Tom

kiwisincebirth

  • Jr. Member
  • **
  • Posts: 69
Re: Running on eneloop AA batteries
« Reply #17 on: February 20, 2015, 12:08:34 AM »

You're currently in your Summer months, right?  What's the ambient temperature?

Tom
Yes end of summer, In the last week Max = 28, down to 19 degrees C at night. Will see how much longer it lasts and report back latter.

TomWS

  • Hero Member
  • *****
  • Posts: 1930
Re: Running on eneloop AA batteries
« Reply #18 on: February 20, 2015, 12:49:41 AM »
Your latest curve is intriguing - that it's totally flat once it reached 3.3V.  What circuit and what code are you using to measure the voltage?

Tom

kiwisincebirth

  • Jr. Member
  • **
  • Posts: 69
Re: Running on eneloop AA batteries
« Reply #19 on: February 20, 2015, 01:13:32 AM »
Your latest curve is intriguing - that it's totally flat once it reached 3.3V.  What circuit and what code are you using to measure the voltage?

Tom
I have 2 x 1Mohm as a voltage divider with a 0.1uf capacitor as per the following post.

http://jeelabs.org/2013/05/16/measuring-the-battery-without-draining-it/

The code (except) is below, basically it just does and analogRead() and computes and publishes a voltage, this is called once a minute. I haven't posted this on GitHub - yet.

Kiwi

Code: [Select]
#define VOLTAGE          3.3 // Motes run on DC 3.3V

/**
 * Main Publish Battery Function
 */
void publishBattery() {
 
  // the pin is defined based on configuration.
  static byte pin = A0 + configuration.batteryAPin;
 
  // what is the voltage. "batteryFactor" is configured as 0.5 (i.e. resistor divider), 1000 reports in miliVolts
  batteryVoltage = readVoltage( pin ) / configuration.batteryFactor * 1000.0f;
 
  // sent the battery voltage, this packages and sends a RFM69 packet.
  sendPublishMessage( MEASURE_BATT_MV, batteryVoltage );
}

/**
 * the analog volatge from an analog input pin
 */
float readVoltage( int sensorPin ) {
 
  // make sure iys an input pin
  pinMode( sensorPin, INPUT);
 
  // read and discard once
  analogRead(sensorPin);
 
  // Volatage = Reading / 1023 {magnitude of reading} * 3.3 {volts that the reading represents}
  return VOLTAGE * ( analogRead(sensorPin) + analogRead(sensorPin) ) / 2 / 1023;
}

TomWS

  • Hero Member
  • *****
  • Posts: 1930
Re: Running on eneloop AA batteries
« Reply #20 on: February 20, 2015, 08:25:16 AM »
Your latest curve is intriguing - that it's totally flat once it reached 3.3V.  What circuit and what code are you using to measure the voltage?

Tom
I have 2 x 1Mohm as a voltage divider with a 0.1uf capacitor as per the following post.

http://jeelabs.org/2013/05/16/measuring-the-battery-without-draining-it/

The code (except) is below, basically it just does and analogRead() and computes and publishes a voltage, this is called once a minute. I haven't posted this on GitHub - yet.

Kiwi

Code: [Select]
#define VOLTAGE          3.3 // Motes run on DC 3.3V

/**
 * Main Publish Battery Function
 */
void publishBattery() {
 
  // the pin is defined based on configuration.
  static byte pin = A0 + configuration.batteryAPin;
 
  // what is the voltage. "batteryFactor" is configured as 0.5 (i.e. resistor divider), 1000 reports in miliVolts
  batteryVoltage = readVoltage( pin ) / configuration.batteryFactor * 1000.0f;
 
  // sent the battery voltage, this packages and sends a RFM69 packet.
  sendPublishMessage( MEASURE_BATT_MV, batteryVoltage );
}

/**
 * the analog volatge from an analog input pin
 */
float readVoltage( int sensorPin ) {
 
  // make sure iys an input pin
  pinMode( sensorPin, INPUT);
 
  // read and discard once
  analogRead(sensorPin);
 
  // Volatage = Reading / 1023 {magnitude of reading} * 3.3 {volts that the reading represents}
  return VOLTAGE * ( analogRead(sensorPin) + analogRead(sensorPin) ) / 2 / 1023;
}
That's what I suspected.  This will ALWAYS read around 3.3V even if the battery is 2.5 volts.  Why?  Because your voltage reference, VDD, is tracking the measured voltage.  The measuredVoltage will always read 0.5 of VDD...  You need a correction factor that measures VDD compared to the internal 1.1V reference such that BatteryVoltage = (MeasuredVDDmV/3300)*(calculatedBatteryVoltage)...

UPDATE: You could also measure your battery against the 1.1V reference but that would require hardware changes (to divide to less than 1.1V) and it's useful to read VDD anyway.

Tom
« Last Edit: February 20, 2015, 10:19:49 AM by TomWS »

kiwisincebirth

  • Jr. Member
  • **
  • Posts: 69
Re: Running on eneloop AA batteries
« Reply #21 on: February 20, 2015, 04:43:21 PM »
Tom thanks, I understand your point, but am happy with the solution I have at the moment, basically I just need pre warning when a node is about to die. And BtW the node did die in the last day.

Kiwi

TomWS

  • Hero Member
  • *****
  • Posts: 1930
Re: Running on eneloop AA batteries
« Reply #22 on: February 20, 2015, 06:16:24 PM »
Tom thanks, I understand your point, but am happy with the solution I have at the moment, basically I just need pre warning when a node is about to die. And BtW the node did die in the last day.

Kiwi
I think your indication that it's about to die is when it flatlines to 3.3V  :)

So, now that you've successfully used up your charge on the Eneloops, how do you like them? 

Tom

kiwisincebirth

  • Jr. Member
  • **
  • Posts: 69
Re: Running on eneloop AA batteries
« Reply #23 on: February 22, 2015, 08:05:27 PM »
I think your indication that it's about to die is when it flatlines to 3.3V  :)

So, now that you've successfully used up your charge on the Eneloops, how do you like them? 

Tom
Correct, <3.6V is advance notice, <3.4v expect it to die soon.

I think I choose them because of ease of maintenance. I have an apple charger which you just plug these into. A Lipo (my reading) needs a special charger circuit, and I have read numerous report of them being affect by low temperatures. Sydney does drop down to a few degrees above zero at night in winter months, so I saw this as a more reliable option.

Getting 1-2 years off a single charge is perfectly adequate solution, and could very easily extended by reducing the frequency of sampling and transmitting data.


TomWS

  • Hero Member
  • *****
  • Posts: 1930
Re: Running on eneloop AA batteries
« Reply #24 on: February 22, 2015, 09:37:52 PM »
Correct, <3.6V is advance notice, <3.4v expect it to die soon.

I think I choose them because of ease of maintenance. I have an apple charger which you just plug these into. A Lipo (my reading) needs a special charger circuit, and I have read numerous report of them being affect by low temperatures. Sydney does drop down to a few degrees above zero at night in winter months, so I saw this as a more reliable option.

Getting 1-2 years off a single charge is perfectly adequate solution, and could very easily extended by reducing the frequency of sampling and transmitting data.
It would be a pretty simple software mod to know, exactly, what you're battery voltage is.  If you compensate with the VDD reading, then, as long as VDD is 3.3V (ie, the batteries are supplying enough voltage for the regulator to be operating within its control range) then your direct reading will be accurate, but once your VDD reading starts dropping off, then the scaled reading will still give you an accurate reflection of battery state.

Having said that, though, these batteries knee pretty sharply at 1.2V so, as you say, once you're down to 3.4V, you're toast!

I agree with you about the scariness of LiPo charging.  If you don't have a temperature compensated protector circuit, you're asking for trouble!

I was looking at 18650s and, while mechanically more robust than LiPos, they don't normally come with the protection circuit.  I've found a few breakouts that look interesting, but, it's tough to beat a couple of lithium primary cells for remote Motes...  As long as you can live with dialing back the processor speed to 8MHz (which virtually all of my Motes can tolerate).

The only place I've found a use for rechargeables is the battery backup for my gateway.  Using LiPos there, but with protection circuit and constant monitoring of battery voltage, with load, even while on mains.

Tom