View previous topic :: View next topic |
Author |
Message |
djpark
Joined: 02 Mar 2004 Posts: 49
|
How to survive 500msec without power? |
Posted: Mon Aug 02, 2004 10:33 pm |
|
|
I have a 12F675 design (1 output and 2 digital input) with 47uF tantalum isolated from the main circuit by a diode. I need to maintain operating for at least 500 msec when the power is lost momentarily.
Code: | +3.7V o-------+---------------
|
---
\ /
--- +------
| |
+--------+ Vdd
| |
47uF --- |
--- |
|
|
---
/// |
I measured the current draw of the PIC to be 800uA. Is 47uF sufficient to hold for half second? How can I calculate the discharge time before the voltage hit the required minimum? Since the space is premium, it is not an option to add a bigger capacitor.
TIA,
-- dj |
|
![](templates/subSilver/images/spacer.gif) |
bdavis
Joined: 31 May 2004 Posts: 86 Location: Colorado Springs, CO
|
|
Posted: Mon Aug 02, 2004 11:20 pm |
|
|
I don't remember the formula you are looking for, but this may be of some help. If your PIC is up and running for a very long time, then your capacitor should reach 3.7 volts (should still use a schottky type with lower voltage drop). I can only remember an RC time so, changing your current and voltage to an estimated resistance:
3.7V/800uA=4625 ohms
time = -R * C * ln(1 - (Vt - VMax))
If your Vt = 2 volts and VMax = 3.7 volts
time = 4625 * 47uF * -0.7777 = .169 (169 msec).
I think you need to lower your current on the current design (SLEEP on low voltage detect, and wake from interrupt?) or whatever you can do to lower your current. You are in the ballpark though. Can you use a higher cap with the same diameter? I don't think the above is totally accurate, since current would need to be reduced proportionately as the voltage dropped to keep R in the formula correct. But this is the best I have off the top of my head...
Please post if someone has the real formula ![Very Happy](images/smiles/icon_biggrin.gif) |
|
![](templates/subSilver/images/spacer.gif) |
newguy
Joined: 24 Jun 2004 Posts: 1903
|
|
Posted: Mon Aug 02, 2004 11:22 pm |
|
|
Let's see. You'll have 3V on the cap, so the charge (coulombs) stored by it is:
Q = CV = 47e-6F x 3V = 0.000141 C
Without getting into how the current draw by the pic will be affected by the dropping cap voltage as it discharges, if we assume that it continues to draw 800 uA regardless of the cap voltage, then the discharge time is:
t = Q/I = .000141C/800e-6A = 0.17625 seconds.
If you treat the pic as a "resistor" R = V/I = 3V/800e-6A = 3750 ohms. Then that resistance in parallel with the cap gives a time constant tau = 3750 x 47e-6 = 0.17625 seconds. Under this assumption, the cap will completely discharge in 5xtau = 0.88125 seconds.
My gut feeling is that the actual discharge time will likely fall somewhere between these two values, but perhaps closer to the smaller time.
Sorry, but it looks like your 47uF cap is too small. You'd need a cap at least 3x bigger to last 0.5 sec. If you want to try and minimize the voltage droop while power is interrupted, then you'd need something about 10x larger, if not more.
Is there any way you can monitor the supply voltage using the adc, and go into a low power mode if it drops? I know that not too long ago someome posted their method for doing this, but I can't remember offhand what the trick to doing it was. Anyone know the post I'm thinking of? |
|
![](templates/subSilver/images/spacer.gif) |
bdavis
Joined: 31 May 2004 Posts: 86 Location: Colorado Springs, CO
|
|
Posted: Mon Aug 02, 2004 11:30 pm |
|
|
Oops - I stated I thought your cap should reach 3.7V - sorry, only true if you don't connect the PIC With a Schottky diode and the PIC connected, you may end up with 3.3 or 3.4V on the cap. Anyway - you have the basic formulas ![Very Happy](images/smiles/icon_biggrin.gif) |
|
![](templates/subSilver/images/spacer.gif) |
arunb
Joined: 08 Sep 2003 Posts: 492 Location: India
|
RE: |
Posted: Mon Aug 02, 2004 11:52 pm |
|
|
Hi,
You might use a small rechargeable battery instead , like the one found in computers...
thanks
arun |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah Guest
|
Re: RE: |
Posted: Tue Aug 03, 2004 2:52 am |
|
|
arunb wrote: | Hi,
You might use a small rechargeable battery instead , like the one found in computers...
thanks
arun |
Realistically, consider the memory backup capacitors, like the Panasonic NF series.
On the capacitor values given, you must remember that to keep the PIC running, it must have it's minimum supply voltage for the required clock speed. You cannot let the supply drop to zero. The speed, and processor have not been given, but assuming it is a typical PIC, the minimum supply will be perhaps 3v. The capacitor, will be charged to perhaps 3.3v (assuming a carefully selected diode), or consider using a FET in place of the diode, whch can give a drop of only about 0.2v. Then the voltage that can be dropped is only 0.3 or 0.5v.
The capacitor needed, is then (assuming the 800uA remains constant);
C = (800E-6*.5)/0.3 = 0.0014F
1400uF...
So something like a 2200uF, at 6.3v, would be the smallest capacitor that can be used. The Panasonic 0.1F NF capacitor, would give perhaps 30 seconds of backup in the same circuit, but is little larger.
If the PIC is a 'low power' version that can operate down to a couple of volts, the capacitor size can fall to perhaps a 500uF. However the 47uF will not be enough.
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
Posted: Tue Aug 03, 2004 5:32 am |
|
|
Quote: | I need to maintain operating for at least 500 msec when the power is lost momentarily. | Please define 'operating'.Is it allowed for your application to go temporarily in power-down mode during these 500ms? If yes, than your current would drop dramatically and you can use a small capacitor.
Quote: | the space is premium | This is diameter, height or both? The super-capacitors are really great, diameter a bit larger than a 470uF cap but only 25% the height. |
|
![](templates/subSilver/images/spacer.gif) |
djpark
Joined: 02 Mar 2004 Posts: 49
|
|
Posted: Tue Aug 03, 2004 9:18 am |
|
|
Thanks to everyone for good advice and ideas. I now have quite clear idea how long my app can last without power.
To share with you a little more about the project, I attach 12F675 in the head of a flashlight to control the brightness. Due to the lack of the user interface (no button or anything) other than the power switch, the only way to tell something to PIC is a momentary switch off and on back.
Here is one of the picture. The LED diameter is 8mm and the board is 9mm dia. I have no more than 5mm height available.
I tried to put PIC to sleep using RA change or COMPARATOR and wake up by the same int or wdt, it seems working with 47uF if switched off and on back fast, but not 500 msec even with sleep mode. And also the result is not very correct (sometimes it misses, or may be I need to debounce).
Of course I blame for my lack of PIC programming knowledge handling this type of job first time. So I thought of just keep alive and going through the debouncing the power status.
Is there any such example source available somewhere?
-- dj |
|
![](templates/subSilver/images/spacer.gif) |
smrowell
Joined: 16 Feb 2004 Posts: 3
|
Gel Cap |
Posted: Wed Aug 04, 2004 5:31 pm |
|
|
Do a digikey search for 'Gel Cap'. They can be as larger than 1F! |
|
![](templates/subSilver/images/spacer.gif) |
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Thu Aug 05, 2004 6:07 am |
|
|
Here is an idea.
I believe what you what to do is put this in a flashlight. The user turns on the flashlight and the light is bright. He turns off and then back on the flashlight to dim it.
Here's my idea if the above it true.
On powerup, check a location in the internal eeprom for a brightness value and set the level based on that. Now to get the brightness level, on powerup read the current level and save it to the eeprom. If the user turns off the light and then back on, it will dim down one more level. Setup a timeout value for say a second or so after powerup. If the timer expires then save the full brightness value back to the eeprom. |
|
![](templates/subSilver/images/spacer.gif) |
djpark
Joined: 02 Mar 2004 Posts: 49
|
|
Posted: Thu Aug 05, 2004 7:55 am |
|
|
Mark wrote: | Here is an idea.
I believe what you what to do is put this in a flashlight. The user turns on the flashlight and the light is bright. He turns off and then back on the flashlight to dim it. |
Yes, indeed it is. Here is the photo of it and you can find more information here http://www.candlepowerforums.com/ubbthreads/showflat.php?Number=623717.
Quote: | Here's my idea if the above it true.
On powerup, check a location in the internal eeprom for a brightness value and set the level based on that. Now to get the brightness level, on powerup read the current level and save it to the eeprom. If the user turns off the light and then back on, it will dim down one more level. Setup a timeout value for say a second or so after powerup. If the timer expires then save the full brightness value back to the eeprom. |
You look like having an idea. Will you explain a little more detail?
Currently, the unit you see in the photo in my previous post does not have schottkey and cap. When I see the space left, it looks like only the size of 47uF tantalum can go in.
Due to the lack of the capacitor, I am currently switching the brightness level by reading the last level from eeprom and shift and save new level upon power up. Actually I use only 2 levels now after finding that having too many levels in a small light is not practical.
So it is always starting at the alternate brightness level, but I am trying to make it start at a fixed level as default upon power up and change upon request by switch off and on momentarily.
If it is a bigger light with luxury of some extra space, there is no issue as I can add a button. But there isn't much space left and I can hardly put anything else.
I don't get exactly what you have in mind and can I learn a trick from you? As much as possible, I'd hope to do without adding a cap and diode.
-- dj |
|
![](templates/subSilver/images/spacer.gif) |
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Thu Aug 05, 2004 8:04 am |
|
|
Your idea is basically what I am talking about with one big exception. How to make the light start on a particular level each time. My idea is to do exactly what you are doing by changing the startup brightness each time the light is turn on. The big difference is that if the light is on for a given amount of time, then save the "startup" brightness level back to the eeprom. If the user keeps the light on for "this period of time" and then turns the light off, when the light is turn back on it will be say at its full brightness. To dim the light, the user must turn off the light before "this period of time" has expired. When the light is turned on, it will be dimmed. |
|
![](templates/subSilver/images/spacer.gif) |
djpark
Joined: 02 Mar 2004 Posts: 49
|
|
Posted: Thu Aug 05, 2004 8:53 am |
|
|
The post is removed due to copyright issue. Sorry!
Last edited by djpark on Thu Jun 30, 2005 8:38 am; edited 2 times in total |
|
![](templates/subSilver/images/spacer.gif) |
Mark
Joined: 07 Sep 2003 Posts: 2838 Location: Atlanta, GA
|
|
Posted: Thu Aug 05, 2004 11:16 am |
|
|
Okay, here is another idea. Lets say you attach a spring to the bottom of the board. This spring is always in contact with the battery which powers the PIC. When the top of the flashlight is screwed down, it connects the drive voltage for the LED and this signal goes to the PIC to wake it up out of low power mode. Seem doable? Just attach a tapered spring like you find in battery holders (they usually compress flatter since the coil fit inside each other) over the contact that you have now and supply the power to the PIC from the spring. |
|
![](templates/subSilver/images/spacer.gif) |
|