Battery powered applications


Closed Thread
Results 1 to 8 of 8
  1. #1
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762

    Default Battery powered applications

    I would like this thread to collect Info about the Hardware Design of Battery Powered Applications.

    (All the Do's and Dont's)

    So far I never really had to care about "power consumption"
    as my applications have always connected to Power Supplies with almost "infinite" capacity.

    Now I have got the challenge to design a battery powered "standalone" device
    that has got to be "as small as possible"
    and should run reliably for at least 6 months without the need to recharge/replace the battery.

    I have got to run the the Board at exactly and stable 5.00 V as there are some analog sensors.

    All Linear LDO's I have found so far do have a quiscent current that would flatten
    a "small" Battery within that period of time.

    How do you solve this kind of problem?

    Again:
    I'm not asking how to reduce the Systems power consumption by turning off peripherals,
    the question is about the design of the power supply.
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  2. #2
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    Here's a thought straight off the top of my head...

    The chances are your sensors will produce an output proportional to Vdd applied. The ADC's will give you a result proportional to Vdd. You therefore probably don't have to worry about a too stable Vdd as the two (ADC and sensor) will still be in proportion respective to Vdd. Anyway, since when did regulators ever give you 5.000v? So run your product at 3v or 4.5v and lose the hassle, expense and power consumption of the whole Regulator circuitry.

  3. #3
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762


    Did you find this post helpful? Yes | No

    Default

    Thanks Melanie,

    you are right, chances are that the regulators are slightly off 5.00V, this is something I could compensate as long as the output is relatively stable and there is not too much drift.

    Some of the sensors are integrated types and require a 5.0V supply, so running the circuit at 3.3V or 4.5V is not an option.
    For higher resolution I'm using an external ADC.

    The LP2950 Regulator has an initial tolerance of 0.5%
    and a line regulation of 0.05%
    quiescent current is 75µA "only"

    I'll give it a try.

    Or do you know any "better" Regulator?

    Worst case I would have to solve the problem by throwing battery capacity at it
    Last edited by NavMicroSystems; - 7th August 2005 at 15:39.
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  4. #4
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762


    Did you find this post helpful? Yes | No

    Default

    GOOD NEWS:

    I have got the standby current down to less than 200µA !
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  5. #5
    georgex5's Avatar
    georgex5 Guest


    Did you find this post helpful? Yes | No

    Default

    Can you add on a few solar cells?

  6. #6
    Join Date
    Sep 2003
    Location
    Vermont
    Posts
    373


    Did you find this post helpful? Yes | No

    Default

    Seiko makes LDOs with 10 uA standby current. They are in Mouser.

  7. #7
    Join Date
    Feb 2004
    Location
    Germany
    Posts
    762


    Did you find this post helpful? Yes | No

    Default

    Thanks for the Input.

    In my last post I was talking about the overall system standby current and.

    A fresh battery I have installed exactly 70 days ago is still working fine on the prototype.

    The LP2950 works quite well, precision regulation and not measurable temp drift etc.

    BTW
    The MCP1701 has a quiscent current of 2µA only !
    regards

    Ralph

    _______________________________________________
    There are only 10 types of people:
    Those who understand binary, and those who don't ...
    _______________________________________________



  8. #8
    Join Date
    Mar 2009
    Location
    Colorado
    Posts
    378


    Did you find this post helpful? Yes | No

    Default Settings to minimize power?

    Purpose of this thread is stated to:
    collect Info about the Hardware Design of Battery Powered Applications.
    Would appreciate ideas on how to minimize power consumption by making right settings of ports and registers.
    Am using a 16F690..its data sheet says that SLEEP power with all peripherals off should be 8 - 16 microamps. Yet, my 16F690 is consuming 400 microamps on power up when it goes into SLEEP mode. This is excessive! I need to figure out how to bring it down to expected values.
    Attached code shows the steps taken in the MAIN program loop before the SLEEP statement to set things for minimum power during SLEEP.
    Can anyone advise what I have done wrong or haven't yet done that would bring the SLEEP power down to expected values??
    Am also having a problem getting the MCU back into SLEEP with this code after servicing the 1st interrupt, but that is probably an issue for a different forum.
    Code:
    ' -----[ Device Declaration ]----------------------------------------------
    ' For MSASM assembler use following:
    @ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _CP_OFF
    ' For PM assembler only use following instead
    '@device pic16F690, intrc_osc_noclkout, bod_off, pwrt_off, wdt_off, mclr_off,
    ' protect_off
    ' The above config settings set CONFIG = %0000111111011100 or hex 0FD4 for
    ' FCMEN on (1), IESO on(1), BOR on (11) CDP off (1), CP off (1), /MCLR is  
    ' digital input (0), /PWRTE off (1), WDTE off (0), INTOSCIO (100).   
      
    ' -----[ Revision History ]------------------------------------------------
    ' Version 1.0.4 on 6/16/09: Includes changes to minimize power during Sleep
    ' Version 1.0.6 on 6/19/09: Replaced 2nd IF-THEN block with REPEAT-UNTIL to
    '                           flash leds correctly during flow and low battery
    ' Version 1.0.7 on 6/21/09: Eliminated @ NOP in MAIN; Reformated Port
    '                           Assignments list; Changed IntCloc from 4 to 1 MHz;
    '                           WDT_OFF and comparators off to save power.
    
    ' -----[ Declare Variables & Aliases ]-----------------------------
    '
    diff    VAR Byte      ' Difference between bat_mon and Vthr
    dummy   VAR Byte      ' For read of on-interrupt port & clear mismatch condition
    flush   VAR PORTA.3   ' Set RA3 as input for sensing flush switch closure Int
    i       VAR Byte      ' Index used in Gallon counter loop
    led1    VAR PORTC.0   ' Set RC0 as LED indicator of valve open..water flowing
    led2    VAR PORTC.1   ' Set RC1 as LED indicator of low battery
    bat_mon VAR PortA.0   ' Set RA0 as battery low power monitor
    meter   VAR PORTA.2   ' Set RA2 as input for Hall Sensor meter pulse Interrupt
    open_valve    VAR PORTC.2   ' Set RC2 as valve solenoid open command
    close_valve   VAR PORTC.3   ' Set RC3 as valve solenoid close command
    
    ' -----[ Declare Constants ]----------------------------------------
    '
     k             CON 10   ' Calibration factor for flow meter...# pulses per gal
     Vthr          CON 3    ' Assumes Low Battery Monitor threshold = 3 volts
     
    ' -----[ Initialization ]-------------------------------------------  
    Init: 
    ' Setup Timer0 as an 8-bit counter with the clock input on RA2.
    ' 1:1 TMR0 prescaler
    ' TMR0 counts on high-to-low transitions
      OPTION_REG = %00111000   ' PORTA pullups disabled, TMR0 clock source is RA2, 
                               ' high-to-low transitions, prescaler to TMR0
      TMR0 = 256 - k           ' preload TMR0 to overflow after k counts
      
    ' Initialization of inputs/outputs
      open_Valve = 0    ' Initialize RC2 (open_valve) at Low value
      close_valve = 0   ' Intialize RC3 (close_valve) at Low value
      TRISA.2 = 1       ' Set RA2 as input port for clock to TMR0
      TRISA.3 = 1       ' Set RA3 as input port for sensing Flush switch closure
      meter = 1         ' Initialize RA2 (meter) at High for METER pulse inputs
                        ' RA2 = TMR0 clock input for simulated meter pulse inputs
      flush = 1         ' Initialize RA3 (flush) at High value for flush interrupt
      
    ' Interrupts Settings
    FLUSH_INT_FLAG VAR INTCON.0 ' Alias RA3(FLUSH) On-change-interrupt flag bit
    TMR0_INT_FLAG VAR INTCON.2  ' Alias Timer0 overflow flag bit
    INTCON = %10101000          ' Enable interrupts: global, TMR0 overflow, & RABIE
    IOCA = %00001000            ' Enable RA3 as on-change-INT
    
    ' Set INT Handler
    ON INTERRUPT GOTO Int_handler   
    
    '-----[ Main Code Starts Here ]------------------------------------------------
    MAIN:
      ' Perform following steps to save power during Sleep mode
        OSCCON = %0100011   ' Switch to 1 MHz internal oscillator
        VRCON = %00100000   ' Set Voltage Reference for minimum power consumption
                            ' Disable CVref
        ANSEL= %11111011    ' Set PortA to Analog I/O to save power during Sleep but
                            ' leave Bit2 as digital for RA2 pulse count interrupt.                    
        ANSELH= %11111111   ' Analog module enabled to save power during Sleep
        CM1CON0.7 = 0       ' Turn off comparators during Sleep
        CM2CON0.7 = 0
        WDTCON = %00010110  ' Turn WDT off to SLEEP indefinitely
        TRISB = %11111111   ' Set all PORTB pins to inputs during Sleep
        TRISC = %11111111   ' Set all PORTC pins to input during Sleep
        PortA = %11111111   ' Write Port A all High to clear mismatch and save
                            ' power during SLEEP  
        PortB = %11111111   ' Set all Port B and C pins High to save power
        PortC = %11111111   ' in Sleep mode
        @ sleep               
        ' Microcontroller is in Sleep State waiting for external FLUSH Interrupt
            ' Valve should be closed at this point and no water flowing
       GOTO Main    ' Loop to Main to wait for next Flush interrupt on RA3 change
     
    '------{ Begin Interrupt Handler }---------------------------------------------
      DISABLE       ' Disable interrupts during interrupt handler
    Int_handler:            
     'OSCCON = %01100100     ' Switch to LFINTOC at 4 MHz clock during Int_handler
      WDTCON = %0001000      ' Turn WDT on for ops
     'Initialize registers for interrupt ops
      ' A/D & Comparators disabled
        ANSEL=0             ' Set PortA to digital I/O for use with RA2 and RA3
        ANSELH=0            ' Analog module disabled
        CM1CON0=0          ' Disable comparators
        CM2CON0=0 
      ' Port Settings
        TRISA = %11111111   ' Set all PORTA pins to inputs...RA0, RA2 & RA3 are used
        TRISB = %00000000   ' Set all PORTB pins to outputs
        TRISC = %11110000   ' Set lower 4 pins of PartB as outputs for LEDs
        PORTA = %00000000   ' PortA pins all set to Low
        PORTC = %00000000   ' LEDs off, PULSOUT RC3 provides a high-going pulse 
       
      High bat_mon      ' For testing..simulate battery monitor input is Low or High
      DEFINE WRITE_INT 1
      'Write 13, bat_mon   ' Remove comments on Write statements for test only
      'Write 15, Vthr
      diff = Vthr - bat_mon
      'Write 17, diff
      IF FLUSH_INT_FLAG = 1 Then  ' Interrupt was from RA3 on change
        REPEAT
            ' Wait until the external Flush interrupt is at high level...limits
            ' interrupt to switch closure only and not also for switch opening 
        Until flush = 1 
        PULSOUT open_valve,2000/10   ' Generate 20 msec pulse to RC3 to open valve
        'Write  7, flush        ' Write FLUSH value..remove comment for test only  
      Endif
      ' Valve is open and water is flowing
      REPEAT
            ' Wait for flow to reach 1.6 gallons
            ' Flash flow light while water flowinguntil pulse counter overflows
            High led1
            Pause 125/10
            Low led1
            Pause 500/10
            If diff > 2 Then   ' Battery is low..flash the low battery monitor light
                HIGH led2      ' while water is flowing
                PAUSE 125/10        
                Low led2
                Pause 500/10
            ENDIF                                            
            'Write 5, bat_mon  ' Remove comment for test only 
      Until TMR0_INT_FLAG = 1  ' Until flow meter pulse counter overflows
      PULSOUT close_valve,2000/10 ' Generate 20 msec pulse to RC4 to close valve  
      'WRITE 11, TMR0_INT_FLAG ' Write TMR0 value..remove comment for test only
      dummy = flush            ' Clear mismatch condition                   
      FLUSH_INT_FLAG = 0       ' Clear interrupt flag & enable RA3 on interrupt
      TMR0_INT_FLAG = 0        ' Clear overflow flag
      TMR0 = 256 - k           ' Reload TMR0 to overflow after k counts
      RESUME Main              ' Resume Main Program                 
      ENABLE  
      '-------{ End of Interrupt Handler }-----------------------------------------
          
        ' If the user program ends by getting to the last statement of the program
        ' at an END instruction, the MCU will SLEEP and await a wakeup.
    END

Similar Threads

  1. How can a battery powered PIC turn itself off?
    By tekart in forum mel PIC BASIC Pro
    Replies: 8
    Last Post: - 9th August 2012, 10:44
  2. Of battery discharge curves
    By ardhuru in forum General
    Replies: 0
    Last Post: - 21st January 2009, 16:24
  3. Low battery signal from an RTC
    By ardhuru in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 19th March 2008, 17:13
  4. 12F683 battery powered remote - energy consumption question
    By silentwol in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 13th April 2007, 13:23
  5. Battery Powered Need Help!
    By scottl in forum Off Topic
    Replies: 1
    Last Post: - 29th March 2006, 09:52

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts