Sida 1 av 2

Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 00:28:32
av RoPa
Hej,

Håller på med ett litet projekt med en PIC16F616-I på 5V matning.
Jag ska ha den i sleep mode tills den väcks av en portändring på PORT-A.
Jag tror mig få den att somna men den drar fortfarande ca 250 uA.
Den drar 1.6 mA när den kör (8Mhz intern Osc) vilket är rätt mot datablad.

Någon som har haft likande problem och har tips om vad det kan vara jag glömt?

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 00:49:09
av sodjan
Det är ju svårt att svara på rent generellt, det är flera olika
sakar som kan dra ström under sleep om man inte har slagit
av det. BOR och WDT är väl exempel på sådana.

Vilken strömförbrukning förväntade du dig?
Går du enbart på någon "down to" siffra?

Jag har även för mig att det finns någon app-note kring sleep.

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 06:32:25
av Swech
En annan bov kan vara eventuell 5V regulator.
Beroende på om du mäter även vad denna drar

Swech

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 08:52:35
av RoPa
Tack för förslagen.

Jag mäter före 5V reggen (på 12V matningen) men om jag tar ur PIC'en så drar det i princip noll.
Jag har (tror jag) disabled allt vad gäller WDT BOR comparatorer, spänningsrefferenser mm.
Men jag får ändå inte till det så jag tänkte att det kanske finns något som man kan göra fel på.

En tanke som jag inte provat är att se om reggen drar minimalt med ström utan last men tar ett "steg" i strömförbrukning då den belastas om än bara ytterst lite... ? (får prova i kväll)

Jag utgår från databladets angivelser för strömförbrukning och enligt den så ligger jag på nivån där man har både comparatorer och spänningsreferensen på (men jag SKA ha stängt av dem...)

Jag har bytt ut processorn i en handkontroll för trådlösa strömbrytare så resten av designen ska vara "strömsnål" från grunden.

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 09:00:18
av PF013
Om du slår på komparatorer och spänningsreferens, ökar förbrukningen motsvarande då?

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 09:46:59
av RoPa
Tack! naturligtvis måsta jag testa det, får slå på sak efter sak så ser jag om det är någon som redan var på (får skylla på att jag var lite trött efter midnatt i går...)

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 10:09:56
av Niklas-k
Titta även på interna/externa pull-ups om du använder det.

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 10:14:33
av sodjan
OK.
En sådan här tråd får litet värde med enbart en massa saker
som du påstår eller tror att du har gjort utan möjlighet att
verifiera det av oss. Min kristallkula är på reparation så jag
har ingen möjlighet att se din kod, vad "5V reggen" är för
något, hur det hela är kopplat för övrigt, hur du mäter o.s.v.

> Jag tror mig få den att somna men den drar fortfarande ca 250 uA.

"Den drar" syftar väl på PIC'en i sig? Och då är det ju utan 5V stabb?
Om 250 uA inte är enbart processorn så får du skriva det.

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 21:17:57
av RoPa
Har nu mätt 12V matningen med ett 100K motstånd mellan VDD och VSS (Ingen PIC i) och får då 52,2uA.
@Swech, utan motstånd får jag 2,2uA så reggen verkar ok.

@PF013, jag har nu även testat följande kombinationer, och det stämmer med databladet

Vref On Comp1 ON Comp2 ON --> 440uA
Vref Off Comp1 ON Comp2 On --> 360uA
Vref Off Comp1 Off Comp2 Off --> 250uA

Så jag har tydligen lyckats stänga av dessa och fått den att sova... hmmm :?

@Niklas-K, använder inte externa pull-up, bara de interna "weak-pull-up" men de går mot öppna switchar så de "borde" inte dra något, eller?

Funktionen är att fyra PORT-C pinnar är satta till low och de ligger i matris (med switchar mellan) mot tre PORT-A pinnar med Weak-pull-up. Om man trycker på någon switch går någon PORT-A pinne low och PIC'en vaknar.
Efter att den vaknat kan jag läsa av vilken PORT-A pinne som gick låg och sedan höjer jag alla PORT-C och sänker en i taget för att identifiera vilken pinne som sänker PORT-a pinnen. Det ger mig vilken switch som är aktiverad.
Koden funkar och gör som den ska så långt.

@Sodjan, ska söka på app.notes, hoppas att du lyckas laga din kristallkula... :wink:

Tack för era tips. Ska nagelfara kortet, är som sagt en befintlig moddad design så det kan finnas något jag inte upptäckt.

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 21:54:16
av sodjan
> så de [WPU] "borde" inte dra något, eller?

Väldigt lätt att kontrollera. Visst, programmet kommer
inte att fungera (just då)... :-)

Jag antar att du har sett att det i SLEEP kapitlet står:
"The contribution from on-chip pullups on PORTA should be considered."
Vad nu det betyder i praktiken. De kan ju syfta på ström genom en
extern last, men det kan också vara så att WPU har en liten
"egenström" för själva funktionen...

Alternativet är att sätta rellativt stora (> 1 Mohm) externa pullups.
Men testa först att stänga av WPU och kontrollmät!

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 22:47:39
av Icecap
Sedan är det ju så att ska man riktigt långt i strömnivå ska man växla oscillatorn till 32kHz oscillatorn (LP oscillatorn) och stänga av intosc.

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 23:00:19
av sodjan
Och "sleep" vid 5V drar mer än "sleep" vid 3.3V.

50 nA : 2.0V
150 nA : 3.0V
350 nA : 5.0V

"Typ" värden parameter D020.

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 23:31:33
av RoPa
Tack för inputen.

Kontroll av kortet gav inget, finns typ inget mer än switcharna och ett serimotstånd på 47K till själva RF modulen anslutet mot PIC'en

Provade att sätta PIC'en i en IC sockel och böja undan alla ben förutom VDD och VSS, då drar fanskapet ändå 230uA :evil: (230uA är det den stabiliserar sig på om man väntar en minut efter spänningstillslag, skulle tro att det är någon cap som laddar)

@Sodjan, att byta reg är ett alternativ för att komma längre ner men först måste jag komma till 350nA :(
Ska prova att stänga av WPU, eftersom jag har lyft pinnarna och den fortsätter att dra...

@Icecap, Strömförbrukningen i aktivt läge är inte så kritisk, den vaknar, registrerar trycket och somnar om om inte ett fullt kommando har registrerats, då sänder den det och somnar om. Strömmen vid sändning är det som kommer att vara dominerande och den kan jag inte göra så mycket åt.

Blir således att fortsätta leta "inne i" PIC'en. Det frustrerande är att inget i databladet anges dra så mycket om man glömmer det på :humm:

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 7 augusti 2012, 23:47:45
av sodjan
Bara en notiering...
Det verkar enklare att stänga av WPU i programvaran
än att hålla på och böja ut benen. Jag skulle ha börjat
i den enkla änden... :-)

> då drar fanskapet ändå 230uA

Är det inkl 5V stabben? Hur/var mäter du?

Re: Hur få ner std.by. ström på PIC i sleep mode?

Postat: 8 augusti 2012, 00:48:02
av RoPa
Sådärja!!! :D

@Sodjan, kan man tycka men när jag gjorde det så vaknade den hela tiden då PORT-A då blev High-Z input med wake on change :roll: den vaknade liksom hela tiden...

Gjorde till slut som du föreslog, men fick skriva en ny main loop, som inte hjälpte... där kom avgörande ledtråden. Pinnarna fladdrar = drar ström. Testa att göra alla portar till out... nämen! drar ingen ström längre... :humm:

Vet ni vad det var för fel (nu gör ni ju det)?
Jag hade satt de oanvända portpinnarna i PORT-A och PORT-C till High-Z input och lämnat dem flytande... klassiker :doh: (nu måste jag försvara mig med att det inte är jag som gjort kortet och därmed lämnat dem öppna, men jag kunde ju ha moddat in det... :oops: )

Nu drar den 2uA och det kommer från reggen, får se om det går att hitta en strömsnålare, tips?

Så, lärdomen är: Lämna aldrig portpinnar flytande High-Z, om dom inte klampas till VDD eller VSS så är det bättre med Out.

Sidan 124 i databladet för PIC16F616-I
"I/O pins that are highimpedance inputs should be pulled high or low externally to avoid switching currents caused by floating inputs." men att de kunde dra så mycket!!!

Stort tack :tumupp: till alla som engagerat sig och hjälpt till, en komplett beskrivning kommer i projekttråden inom kort.