Varför behöver man en "pullup" (Arduino)

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Pandy
Inlägg: 17
Blev medlem: 10 maj 2012, 17:31:08

Varför behöver man en "pullup" (Arduino)

Inlägg av Pandy »

Försöker lära mig lite om Arduino. Men jag förstår inte varför jag behöver en "pullup".

Egentligen så förtår jag inte hur det fungerar alls. Koden förstår jag men det är koplingen jag inte förstår. Lampan kommer att tändas när input (pin 2)är av(Low, det blir den när man trycker ner knappen). Men jag tycker att pin 2 borde vara på heltiden eftersom att man har den där "pullup", den borde ge pin2 ström hela tiden oberoende om knappen är på eller av.

Bild

Kod: Markera allt

void setup() {                
  pinMode(13, OUTPUT);
  pinMode(2, INPUT);
}

void loop() {
  if (digitalRead(2) == LOW) {
    digitalWrite(13, HIGH); 
  }
  else {
    digitalWrite(13, LOW); 
  }
}
MvH Andreas
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av victor_passe »

Om knappen ät nedtryckt får pinnen 0V
Om knappen är uppe så måste i/o pinnen ha någon nivå, därav motståndet.
danei
EF Sponsor
Inlägg: 27440
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av danei »

Resistansen mot jord är väldigt mycket mindre än 10kohm när knappen är nertryckt, så spänningen kommer att ligga väldigt nära 0V
X-IL
EF Sponsor
Inlägg: 8488
Blev medlem: 3 december 2008, 07:47:20
Ort: Hallstahammar

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av X-IL »

Pullupen behövs för att annars kommer spänningen att bli flytande, alltså odefinierad. Du behöver ha två fasta lägen, hög och låg. Såg att Victor_Passe hunnit emellan nu.

EDIT: Och Danei...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av sodjan »

> Men jag tycker att pin 2 borde vara på heltiden eftersom att man har den där
> "pullup", den borde ge pin2 ström hela tiden oberoende om knappen är på eller av.

Du stirrar dig alldeles blind på hur själva schemat ser ut. Du måste fokusera mer
på hur det faktiskt är kopplat. Ta fallet med knappen *nedtryckt*.
Då kan du lika gärna plocka bort knappen och dra ett rakt streck istället. Du kan
se det som att "I/O 2" är direkt kopplat till GND. Sen, helt oberoende av detta
och kanske på någon helt annan plats på plattan och i schemat, sitter det ett
10 kohm motstånd mellan 5V ch GND. Motståndet har i det läget (alltså med
knappen nedtryckt") ingenting alls med knappen eller "I/O 2" att göra längre...

10 k motståndet har enbart någon funktion då knappen *inte* är nedtryckt.
Pandy
Inlägg: 17
Blev medlem: 10 maj 2012, 17:31:08

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av Pandy »

Nu kanske jag säger precis tvärt emot vad du sa "sodjan". Men är det så att jorden är noll(LOW) och + är (HIGH). När man inte trycker ner knappen så gör + (med resistorn) så att pin 2 blir HIGH och lampan slocknar. När man trycker ner knappen så kommer jorden fram till pin 2 då blir det (LOW) eftersom att jorden är noll, eftersom att + har högre resistans en vad jorden har så blir det lättare för jorden att ta sig fram och därför blir det LOW och inte HIGH.
X-IL
EF Sponsor
Inlägg: 8488
Blev medlem: 3 december 2008, 07:47:20
Ort: Hallstahammar

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av X-IL »

Det är lite på rätt väg, men jorden tar sig ingenstans, möjligtvis kan du föra det resonemanget med spänningen.
Pandy
Inlägg: 17
Blev medlem: 10 maj 2012, 17:31:08

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av Pandy »

Men det har någonting med att gör att + har resistor och att den har en högre resistans, för jag läste någonstans att man skulle ha en så hör resistans som möjligt. Testade att ta bort resistorn helt och då lös lampan hela tiden men lite starkare när man tryckte ner knappen. Om jag bar satte dit en kabel istället så var dioden släckt hela tiden (den blinkade till när man tryckte ner knappen). Så resistorn behöver vara där för det måste bli spänning när knappen inte är ner tryckt, och när knappen väl är ner tryckt så behövs resistorn för att skapa ett motstånd. Är det rätt så långt??
danei
EF Sponsor
Inlägg: 27440
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av danei »

Nej.

När knappen är nertryckt behövs ingen resistor. Spänningen in till din µC kommer att vara 0V oavsett om den finns eller inte.
När knappen inte är nertryckt så behövs den för att du ska vara säker på att det är 5V på ingången. Det kan funka utan, men det kommer att bli väldigt störnings känsligt.
Storleken på resistorn är en kompromiss mellan att ge en stabil 5V när knappen inte är nertryckt och en låg strömförbrukning när den är det. 10kohm är ett vanligt val. Har man höga krav på låg strömförbrukning kan man gå upp i resistans.
Mindmapper
Inlägg: 7118
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av Mindmapper »

Pandy skrev:Men det har någonting med att gör att + har resistor och att den har en högre resistans, för jag läste någonstans att man skulle ha en så hör resistans som möjligt. Testade att ta bort resistorn helt och då lös lampan hela tiden men lite starkare när man tryckte ner knappen. Om jag bar satte dit en kabel istället så var dioden släckt hela tiden (den blinkade till när man tryckte ner knappen). Så resistorn behöver vara där för det måste bli spänning när knappen inte är ner tryckt, och när knappen väl är ner tryckt så behövs resistorn för att skapa ett motstånd. Är det rätt så långt??
Du har rätt!
För att få ingången hög måste du få positiv spänning någonstans ifrån till ingången. Därför finns resistorn kopplad till plus. En ström går då genom ingången och resistorn upp till plus.
För att du ska få ingången låg måste du få bort den ström som går genom ingången och genom resistorn upp till plus. Du kan ju få bort denna ström på två sätt. Endera ta bort resistorn (som Danei), själv tycker jag att det blir lite bökigt att koppla om kretsen och ta bort resistorn varje gång jag vill ha ingången låg. Ett bekvämare alternativ är att trycka på knappen som gör att ingången kopplas direkt till jord och blir låg.

Fortfarande finns en ström som flyter genom resistorn men nu går den enklaste vägen genom strömbrytaren ner till jord. När du tar bort resistorn och ersätter den med en bit tråd. Har du bytt ut resistorns 10kohm med trådens låga resistans (kanske 1ohm). När du trycker på knappen går ström genom tråden ner till jord via den slutna strömbrytaren.
Ohms lag säger då att strömmen blir I = U/R = 5/1 = 5A. Klarar din strömförsörjning av att lämna 5A kommer den strömmen att gå genom strömbrytaren. Klarar den inte 5A kommer den att ta skada. Om inte din strömförsörjning klarar av att lämna 5A kommer den att ta skada. Nu kan strömförsörjningen vara skyddad så att den tål en kortslutning och då kommer det att gå bra.

Om resistansen i kretsen har blivit 0,1ohm när du kortsluter den kommer strömförsörjningen att försöka leverera 50A. Att ha en hög resistans är därför bra om man ska trycka på knappen.

Egentligen behöver du inte resistorn om du använder AVR's inbyggda pull-up. Den kan du läsa om i databladet för mikroprocessorn.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av sodjan »

> Nu kanske jag säger precis tvärt emot vad du sa "sodjan".

Det är sällan någon bra idé... :-)

> Testade att ta bort resistorn helt...

Vilket är totalt tokfel, det *måste* finnas en pullup!
Antingen som ett externt pullupmotstånd (som i schemat) eller genom att man
har slagit på internt pullup (om den aktuella processorn har det, läs databladet).
Utan pullup (extern eller intern) får man stora problem! Om du är
intresserad så kan du googla "open cmos input".

> Men är det så att jorden är noll(LOW) och + är (HIGH).

Meningen är formulerad som en fråga men det finns inget "?".
*Om* det är en fråga så är svaret självklart "ja".

> och när knappen väl är ner tryckt så behövs resistorn för att skapa ett motstånd.

Som jag skrev, när knapen är *nertryckt* så saknar motståndet helt funktion och
behövs inte *just då*. Det är när knappen är "uppe" som motståndet är nödvändigt.

Mindmapper> Du har rätt!

Det var en väldigt snäll tolkning... :-)
Resten borde du nog inte ha skrivet för det är någonstans mellan förvillande och helt fel.
Ingången kan t.ex inte göras låg enbart genom att plocka bort motståndet som du anger
som ett alternativ. Du utrycker dig som att det faktiskt skulle fungera, märkligt.
En rejäl björntjänst att röra till det på det där sättet.
(Det sista om intern pullup är dock helt rätt... :-) )
ToPNoTCH
Inlägg: 5158
Blev medlem: 21 december 2009, 17:59:48

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av ToPNoTCH »

På tal om förvillande.

"När knappen är nertryckt saknar motståndet helt funktion"

Jag skulle hävda precis tvärtom.

Enda anledningen att moståndet existerar/behövs är ju att säkerställa att det inte går för mycket ström mellan +5V och jord (kortslutning) NÄR knappen är nedtryckt.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av Swech »

Enda anledningen till motståndet är att säkerställa att det finns en logisk "1" på processorn
då knappen INTE är intryckt

Swech
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av sodjan »

> Enda anledningen att moståndet existerar/behövs är ju att säkerställa att det inte går för mycket
> ström mellan +5V och jord (kortslutning) NÄR knappen är nedtryckt.

Skitsnack. *Eller* så förutsätter du något om kopplingen som inte framgår.
T.ex att ingången skulle vara *fast* kopplad till +5V. I så fall får du skriva det.
Å andra sidan så ändrar det ju helt förutsättningarna för alltihopa och hela
diskussionen blir lite lätt meningslös.

Så som kopplingen är ritad så saknar motståndet funktion då knappen är nertryckt.
ToPNoTCH
Inlägg: 5158
Blev medlem: 21 december 2009, 17:59:48

Re: Varför behöver man en "pullup" (Arduino)

Inlägg av ToPNoTCH »

Jag gör det lätt för dig Sodjan.

1.) Ta bort motståndet ur schemat.
2.) Utan nedtryckt knapp = Inga problem
3.) Med nedtryckt knapp = Magisk rök

Hävdar du fortfarande att motståndet INTE fyller någon funktion vid nedtryckt knapp ?

Jag försöker lista ut hur du tänker här.
Det måste vara något med att du ser ordet "funktion" ur MCU'ns perspektiv. Det vill säga "för att få nolla på pinnen vid nedtryckt knapp så krävs inget motstånd" (eller +5V heller för den delen). Det kan nog vara så att jag ser på "funktion" att "hela kretsen skall funka och inte kortsluta".

Aja...Nog med psykoanalys.. :shock:
Skriv svar