Increase battery life with Switching Regulators

Hi,

I´m thinking about test the diference about fix one swithing regulator in stead of the linear one of Dicecimila. I´m using PP3 battery and maybe is a good improvement.

Anyone have experience with this? Is possible achive big differences in battery´s life?

Other improvement is to have a shutdown pin.... Because I´m interesting in shutdown if the machine is not being used.

I´m looking LM2596...

Any advice? :wink:

Thank-u

Regards,

Igor R.

There is little doubt that a switching type 5vdc regulator would give a lot more run time on any specific battery capacity. One only has to look at the difference in efficiency specifications between linear regulators and switching regulators. The higher the ratio between the Arduino Vin voltage and 5vdc the greater the gain in battery life.

When powering the Arduino from the USB port or a wall powered DC module then there is probably not as much importance in seeking an improvement in efficiency, however it's a whole different ball game when using batteries.

Lefty

It is quite difficult to increase the efficiency of the system with a switched mode power supply (SMPS).
The problem lies in the charge and discharge of the gate capacitors. This will decrease the efficiency of the system if the SMPS is over dimensioned.
Linear Technology (www.linear.com) has a suitable device called LTM8020, but it can be a bit difficult to solder since it has a BGA package.

Magnus

Maybe I´m not true but...

If my application need 50 mA with 5 volts, the output power is 0,25 watios.

With a switching regulator of 80% of performance, I need a Pinput=0,25/0.8=0,31 watios. For this:
With Vinput=9 volts, I input=35 mA
With Vinput=8 volts, I input=39 mA
With Vinput=7 volts, I input=45 mA
With Vinput=6 volts, I input=52 mA

This meas that while the battery is over 6 volts, I need less current that with a linear regulator. Because, with the linear regulator the output current is the same that input... isn´t it?

Is this ok??

Igor R.

If my application need 50 mA with 5 volts

With a PP3 (9V) battery, and needing 5V@50mA, your circuit is using 250mW, and the linear regulator is dissipating approximately 4*0.05 = 200mW, for an overall efficiency of 250/(450) of about 55%. That's not too bad for a linear regulator. Simple switching regulators probably won't be getting more than 80% efficiency.

You might want to look at other battery choices. Two AA batteries contain a lot more energy than a PP3, and a switching boost converter is no harder than the switching step-down. In fact, there are a lot of products specifically aimed at boosting a couple batteries to 5V, and they're already "battery conscious" (which a step-down might not be.)

Westfw is right on about using a more practical battery source.

Here is a project done by ladyada called the mintyboost that takes two aa batteries and use a switcher to create a regulated 5vdc. It is a very useful design and can get a lot of useful power out of two AA cells. One can purchase the device also.

http://www.ladyada.net/make/mintyboost/process.html

The most impressive gains in battery life come from running the AVR chip at a lower voltage, because all other things being equal, the chip consumes quite a bit less current as you lower the voltage. Usually that means you have to clock at 8 MHz or slower, which also lowers the power.

The other big potential gain can come from using the chip's low power modes instead of calling delay() or looping over and over waiting for something to happen. Especially if you can spend the majority of time in a powerdown mode that is only microamps of current, and there isn't some hardware drawing current like an LED that's always on, then your main worry is the current consumed by the voltage regulator itself.

When your battery is fully charged you are putting 9V into your linear regulator
and getting 5V out. Your efficiency is 5/9 which is around 55%. As your battery
discharges your efficiency will increase.

A switching regulator should get you to efficiencies in the 80-85% range for most of the discharge curve.

I run the the ATmega168 at 3.3V / 12MHz and use two AAs and a boost converter.

(* jcl *)

Yes, a switching regulator can save your battery life but it must be correct dimensioned.

If you take an 80% efficiency 800mW regulator, it consumes 200mW for itself. requiring 1W input.
Efficency is always measured at max Load, if you take this regulator with 250mW output power, the regulators internal consumption is still probably around 150-200mW. This makes an efficiency of
250/400 = 62%.

You need to find a correctly dimensioned switching power regulator for this.
Then designing a switching regulator is something most experienced EE design engineers put considerable time into.
I have found Linear Technology parts to be the easiest to design with, you can download their software ltspice, to get your control loop stable.
The board layout around a switching power regulator is extremely important to do correct, remember that all traces on the board represents a time delay, i.e. an inductance.

Magnus

Thank-u to all!

I´m agree that PP3 is not the best battery,but I prefere a step down regulator because sometimes it will be power with PP3 but other times I´ll power with an external power source (car battery). And it helps me with the hardware design.

Now I´m achieving 15 continuos hours (Arduino + LCD) and without sleep mode or auto-swith power. Working with timers, adc,...
The application is like a multimeter + sensor tester. It´s not for a continous working application.

I think with a switching regulator with a shutdown pin and working a little into the software to put it in sleep modes and switching off after 1 or 2 minutes of no use, I´ll achieve a good compromise between power life time and development....

I´m going to test it (I need a stable Vout with low ripple).

I´ll keep you updated.... :wink:

Regards,

Igor R.

Hi

While I´m waiting to receive some switching regulators, I´ve been tinkering with sleep modes (Power Save Mode)

In my application I have a big delays (300 ms) and as Paul said, could be a big improvement....and looking the results, it´s clear!!

I´ve done a test that tonggle the diecimila led about 2 seconds. I´m using Timer2 (to wake up).
-Sleep Mode and turn off devices=> Led_on=12,98 mA & Led_off=9,91 mA
-No Sleep and turn off devices => Led_on=28,9 mA & Led_off=25,9 mA
-No Sleep => Led_on=32,2 mA & Led_off=29,2 mA

SLEEP MODE TEST CODE

#include <avr/interrupt.h>
#include <avr/sleep.h>


volatile int cont;

void setup()
{
  pinMode(13,OUTPUT);
  
  TCCR2A=0;  
  TCCR2B=(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(1<<2)|(1<<1)|(1<<0);
  // Bit 0.- Overflow
  TIMSK2=(0<<2)|(0<<1)|(1<<0);
  //Power Save Mode
  SMCR=(0<<3)|(1<<2)|(1<<1)|(0<<0);
    
}

ISR(TIMER2_OVF_vect)
{
  cont++;
}

void loop()
{

   sleep_enable();
   //Turn off ADC
   ADCSRA=0;
   // TWI | TIMER2 | TIMER0 | VOID | TIMER1 | SPI | USART | ADC
   PRR=(1<<7)|(0<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);
   sei();
   while (cont<122)
   {
   //Go to Sleep
   sleep_mode();
   }
   //Disable Sleep
   sleep_disable();
   //Disable interrupts
   cli();
   cont=0;
   digitalWrite(13,!digitalRead(13));
   
   
}

NO SLEEP AND TURN OFF DEVICES

#include <avr/interrupt.h>
#include <avr/sleep.h>


volatile int cont;

void setup()
{
  pinMode(13,OUTPUT);
  
  TCCR2A=0;  
  TCCR2B=(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(1<<2)|(1<<1)|(1<<0);
  // Bit 0.- Overflow
  TIMSK2=(0<<2)|(0<<1)|(1<<0);
  //Turn off ADC
  ADCSRA=0;
  // TWI | TIMER2 | TIMER0 | VOID | TIMER1 | SPI | USART | ADC
  PRR=(1<<7)|(0<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);
  sei();
}

ISR(TIMER2_OVF_vect)
{
  cont++;
  if (cont<122)
  {
    cont=0;
    digitalWrite(13,!digitalRead(13));  
  }
    
}

void loop()
{

   
}

NO SLEEP

#include <avr/interrupt.h>
#include <avr/sleep.h>


volatile int cont;

void setup()
{
  pinMode(13,OUTPUT);
  
  TCCR2A=0;  
  TCCR2B=(0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(1<<2)|(1<<1)|(1<<0);
  // Bit 0.- Overflow
  TIMSK2=(0<<2)|(0<<1)|(1<<0);
  //Turn off ADC
  //ADCSRA=0;
  // TWI | TIMER2 | TIMER0 | VOID | TIMER1 | SPI | USART | ADC
  //PRR=(1<<7)|(0<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);
  sei();
}

ISR(TIMER2_OVF_vect)
{
  cont++;
  if (cont==122)
  {
    cont=0;
    digitalWrite(13,!digitalRead(13));  
  }
    
}

void loop()
{

   
}

Regards, :slight_smile:

Igor R.

While those are good results, I'm wondering why you're still drawing 9.9 mA when nothing is happening. In power save mode, the current should under 0.1 mA! At least the AVR portion.

At first I thought it must be the FTDI USB-serial chip. But it's supposed to use about 15 mA when active, and I'm guessing you connected a multimeter in series with your 9 volt battery and left the USB disconnected. When no USB cable is plugged in (or your laptop goes into sleep/suspend mode), that chip is supposed to consume only 0.07 mA.

That pretty much leaves the voltage regulator. I haven't ever used a MC33269 before in any design, but I found the datasheet from ON Semi. They don't list a typical current consumption for the 5 volt part, but the 3 volt one is 5.5 mA typical, 8.0 max. The 5 volt one is 20 max! That's a LOT of current the voltage regulator is using only for itself.

So I'm going to guess that most of that 9.9 mA is being used by the voltage regulator (and the power LED, if it's still connected). The 'mega168 chip should draw well under 0.1 mA when in power save mode!

I'd suggest you try a better linear regulator. One of my favorites is the LP2950. I have a AVR design I built 4 years ago that drives lots of LED using the mega48 and a LP2950 and powerdown mode when not it use, and it's still running on the same battery (admittedly 4 D cells) all these years. BTW: the 50-some LEDs are driven by transistors controlled by the PWM outputs and they connect to the battery directly, not through the 100mA-limited regulator.

You can get a LP2950 from Digikey for about $1. It uses only 0.075 mA for itself. It does require a low-esr capacitor close to its output pin, so make sure you connect a good capacitor too. It's also good for only 100 mA, which hopefully is enough.

Thank-u Paul for the info.

Of course, I did the test as you´ve explained.

I´ve ordered LP2951CN (DIP8) which is similar but with shutdown pin.
It´s easier to me buy in RS (http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=5344945). Only 0,75 euros!!.

I´ll keep you updated. :wink:

Kind Regards,

Igor R.

I´ve just tested the LP2950 and no changes in the current. With this low current (9'91mA Sleep mode); I didn´t see diferences between Diecimila regulator and this LDO regulator.

Regards,

Igor R.

Hi, this is a bit old of a thread, but another thing you can do to increase efficiency is make sure you're not using any more current than you need to send/receive signals. The difference between a 1K resistor and a 20K resistor is 4.75 mA just for that one signal (@5V). So be sure to use the highest value resistors between your IO pins and their partner connections that still work for your needs.

if your IO pins are connected to other IO pins, they won't actually draw much current and adding resistors won't help much. If you're driving things OTHER than other IO pins, there may be real current requirements and adding excessive resistance would not be a good idea (read your spec sheets carefully.)

If you have "pull up" or "pull down" resistors on IO pins connected to other things, it might indeed be a good idea to increase their values to decrease power usage...

9.91 ma is a lot of current for the processor being in sleep mode. It should be more like 0.03 mA.

When powering the board from the LP2951, can you measure the voltage on the old regulator pins and make sure they are all at zero volts? In other words, even if you're not powering the board from the other regulator, if it's still attached to the circuit perhaps it's providing a path that's sucking down 9+ ma?

Without fiddling with the actual hardware here on my bench, I just can't know where that current is really going. But 9 ma is a lot of current that's being wasted somewhere. Start measuring around for anywhere with 5 volts and disconnect it. Sooner or later, you'll find the offender that's wasting all that current.

Really, these chips do go to well under 0.05 ma when you get this right, and it's possible to make a sleeps-when-inactive light duty usage device last a very long time on a battery (pretty much the battery's self-discharge shelf life).

Hi again,

Exactly, I were power the output of the other regulator.... I´ve removed the jumper which you choose between usb or external power. Now, it´s without the jumper.

I´ve also removed power led of the circuit.

And now in Power Sleep Mode:

  • Arduino with its own regulator => 6'52 mA
  • Arduino with LP2951CN => 1'54 mA

The difference in consumption between Arduino regulator and LP2951CN is 5 mA!!!

Now, I´ve changed my delays into go to sleep mode. I´ve some problems in my functions which work with the USART and millis(). I imagine that the problem is because I shut down and shut up the modules.... I´ve to look into....

Thank-u!!! :wink:

Igor R.