Sida 1 av 2

Pull up på AVR I/O - störningskänslighet

Postat: 29 mars 2007, 18:41:26
av karlstedt
Hur stort pull-up-motstånd kan man rimligtvis ha på en I/O-pinne på en avr (mega128). Jag snackar om en ext int (PE7). Jag vill helst inte att den ska trigga när man har ett finger i närheten av knappen. :)

Jag vill alltså höra era erfarenheter och gärna kunskap om pull-up och hur små strömmer man kan använda?
Är 10µA rimligt? Är pull up rätt väg att gå över huvud taget?
Såg nåt i databladet om att "Input Leakage Current I/O Pin (Iih)" var 1µA vid 5.5V. Man lär väl alltså inte kunna ha mindre än detta?
Vad är rimligt?

Postat: 29 mars 2007, 19:59:05
av oJsan
Vad är syftet med att ha högt motståndsvärde på din pullup? Är applikationen batteridriven? 10kohm brukar väl vara rätt rimligt och normalt värde.. skulle tro att 100kohm också fungerar, men 10uA (500kohm vid 5V) känns som aningen högt motstånd. Vilket värde har den interna pullupen som går att aktivera?

Postat: 29 mars 2007, 20:22:19
av karlstedt
Ja, applikationen/systemet är eller ska ska vara batteridrivet och anledningen är såklart att minska strömförbrukningen... Jag ser liksom inte någon anledning att dra kanske 5 eller 10 ggr så mycket ström om det inte behövs.

Vcc är 3.3 V och typvärde för intern pull-up i mega128 är min/max 20kΩ/50kΩ.

I bästa fall alltså 66µA och i sämsta fall 165µA.

Postat: 29 mars 2007, 20:27:19
av sodjan
Antingen slår du på/av den interna pull-up'en (om det går att
göra dynamiskt) så att den bara är på när det behövs.

Eller (om du har en extra ledig pinne) kan du lägga externa
pull-up'er dit, och med I/O pinnen koppla in dom när det behövs.
Om det gäller t.ex en tryckknapp, så behöver de ju bara vara
inkopplade när man "läser av" knappen.

Och under "sleep" (eller liknande) så bör pull-up'erna (int eller ext)
vara bortkopplade så att de inte drar ström i onödan.

Postat: 29 mars 2007, 20:35:34
av karlstedt
Antingen slår du på/av den interna pull-up'en (om det går att
göra dynamiskt) så att den bara är på när det behövs.

Men problemet är väl då att veta "när det behövs". Är det inte därför man anvämder externa interrupt från början?

Jag har för tillfället ingen ledig pinne i min design, men det skulle jag kunna revidera om det blir nya kretskort.

Men om vi koncentrerar oss på min fråga? :)
Nån vet om det ens är möjligt att använda så små strömmar som 10uA eller kommer man att få felaktiga interrupt då?

Postat: 29 mars 2007, 20:52:27
av Mindmapper
Inga felaktiga interupt pga mikrocontrolern. Men det är omöjligt att säga vilka störningar du får in utifrån, och det är ju därför du har pullup. Det beror ju på miljön och hur kabeldragning m.m. är utförd.

Postat: 29 mars 2007, 20:53:46
av sodjan
Jo visst är det ett interrupt, men du skrev också
"ett finger i närheten av knappen." Så jag antog att det
var en tryckknapp, och då har vi så långsamma förlopp så
att det ofta räcker med en pollning "då och då". Och då räcker det
med att pull-up'en är aktiv just du knappen pollas.

Tryckknappar kan vara lite struliga att hantera med interrupt, för övrigt.
Med en regelbunden pollning är det enkklare att filtrera bort
studsar t.ex (med en enkel räknare). Med ett interrupt får man lägga till
någon timer alla fall för att plocka bort "falska" tryck.

Sen, är knappen av metall ?
Eller är det statisk elektricitet du tänker på ?

> Nån vet om det ens är möjligt att använda så små strömmar som 10uA

Det är ju helt omöjligt att svara på !
laboratorie miljö är det helt OK, i ett stålverk sannolikt inte...

Postat: 29 mars 2007, 21:08:01
av Icecap
Tanken med 10µA är fel till att börja med!

Om vi pratar 3,3V och Vh ska vara kanske 2,5V är det 0,8V @ 10µA = 80K och det kan väl fungera beroende på kapsling osv.

Men nu kommer det viktiga: om det är en momentantryckknapp har detta knappast betydelse om inte man kan "stå på" knappen, alltså hålla inne den jämt. Om det är så ska man byta knapp till en SPDP (omkopplare) och ha en minimal konding som debounce.

Så se till att det finns en lagom pull-up (5,6K-10K) och är det ett problem att någon trycker in knappen på ett sätt som stjäl betydande batterilevtid är det dags att omdesigna systemet.

Postat: 29 mars 2007, 21:31:22
av karlstedt
Sodjan>

Ja, det är mycket riktigt en knapp. En ytmonterad "standardknapp" typ:
Bild

Men för att inte missa en massa knapptryckningar så antar jag att "några" ggr per sekund är lämpligt att polla om man väljer den metoden. Då kommer man bli tvungen att köra i aktivt läge ganska ofta och då drar CPU:n ca 20mA. Man kanske ska räkna lite på det om man ska kunna säga vilket som drar mest ström?

Sen att det studsar i lite i knappen kvittar för tillfället.

Angående stålverket så finns det för tillfället ingen bestämd miljö... men skapligt robust vill man ju ha konstruktionen. Mina funderingar är för närvarande på labbnivå...

aja.. tack för inputen.. spåna gärna vidare!
Jag ska testa mig fram lite. klämmer dit 200kΩ.
Nån som vet en bra störningskälla att testa med? Mobiltelefon?

Lämpligt att tillägga kan vara att jag har en spänningsdelning på 10kΩ/10kΩ (NTC) som drar ström kontinuerligt.. och jag jagar µA :)

EDIT: Riktade detta till sodjan

Postat: 29 mars 2007, 21:37:41
av karlstedt
icecap>
okej, där ser man. men du säger "Så se till att det finns en lagom pull-up (5,6K-10K) och är det ett problem att någon trycker in knappen på ett sätt som stjäl betydande batterilevtid är det dags att omdesigna systemet."

Som jag har nu är det konstant pull-up och CPUn i power-down. Därav kommer det att flyta ström kontinuerligt. Hur löser jag det på ett snyggare sätt?

Jag påstår inte på något sätt att jag är bra på att konstruera hårdvara. Har inte läst nåt alls om det. Jag tar alltså gärna emot erfarenhet av herrarna!

Postat: 29 mars 2007, 21:39:24
av sodjan
> Nån som vet en bra störningskälla att testa med? Mobiltelefon?

De där elektriska flugfångarna som ser ut som ett racket, verkar "effektiva".

> Då kommer man bli tvungen att köra i aktivt läge ganska ofta...

Hur *ofta* är inte så där väldigt intressant, utan hur stor *%* av tiden.
Men OK, du vill "väcka" den ur sleep med knappen alltså.

Sen är det ju också som Icecap påpekade, pull-up motståndet drar
ju bara ström när någon faktiskt *trycker* på knappen, inte annars.
Så i princip har det liten betydelse vilket värde du sätter på motståndet !

Postat: 29 mars 2007, 21:46:38
av karlstedt
Hrm... kommer det inte att flyta ström hela tiden med pull up? Nu måste jag nog läsa på lite mer..

Men då sätter jag bara intern pull-up på typ 20k-50k och drar bara ström när pinnen dras låg?

Postat: 29 mars 2007, 21:47:59
av sodjan
> Men då sätter jag bara intern pull-up på typ 20k-50k och drar bara ström när pinnen hålls låg?

Alltså när någon trycker på knappen...

Om *ingen* trycker på knappen, vart ska strömmen då ta vägen ???

Postat: 29 mars 2007, 21:52:20
av karlstedt
Antog att eftersom man har en intern pull-up "enablad" så har man en "sluten krets" internt, men grabbarna(och tjejerna) på Atmel kanske har läst på lite mer elektronik än mig så dom har löst det på ett bra sätt! :)

Alltså när någon trycker på knappen...

exakt!

Postat: 29 mars 2007, 21:56:33
av RDX*
> Nån som vet en bra störningskälla att testa med? Mobiltelefon?
Eller en piezo-braständare. Om man vill göra den mer effektiv så kan man se till att piezokristallen urladdar mot en 20*20 mm plåt. Plåten kommer då att fungera som en antenn.