Extern vs intern pullup

Det finns två sätt att dra i stiften i Arduino – med internt och externt motstånd. Jag undrar när jag ska använda externt motstånd istället för INPUT_PULLUP.

Kommentarer

  • Från min erfarenhet är den enda skillnaden " extern pullup / pulldown är lättare att ersätta " och kanske också " genom att bara titta på kretsen kan du se den externa motstånd så att det ' är lättare att förstå designen efter några månader "

Svar

Du kan använda antingen det interna eller externa motståndet i normal applikation.

Varje metod har sina egna fördelar:

Internt motstånd

  • Fördelar: flexibel att ändra genom att ändra koden
  • Fördelar: Minska PCB-storlek
  • Fördelar: Minska kostnad (mycket liten)
  • Nackdelar: Det kan göra MCU hett

Externt motstånd

  • Pr os: Minska värme för MCU
  • Nackdelar: Inte lätt att byta ut när det är inbyggt PCB
  • Nackdelar: Öka PCB-storlek

Förutom , Upp- och neddragningsmotstånd används inte bara för INPUT-port utan också för OUTPUT-port. När det gäller OUTPUT-porten. Det externa motståndet har en annan fördel: flexibilitet vid anslutning av enheter med olika I / O-spänningar. Till exempel, i I2C-hårdvara se I2C på hårdvarunivå .

OBS: Såvitt jag vet, vid skrivtid, Arduino biblioteket stöder INTE INPUT_PULLDOWN

Kommentarer

  • 1. Värmen som genereras av den interna utdragningen är försumbar. 2. Vissa kort (inte AVR-baserade) har INPUT_PULLDOWN.

Svar

”Nackdelar: Det kan göra MCU hett”
Det kommer det inte. P = V ^ 2 / R, så 5 * 5/20 000 = 1,25 mW, vilket inte gör processorn varm. Till och med att vrida alla 80 i en Mega2560 och dra dem alla lågt kommer bara att försvinna 0,1 W.

”OBS: Så vitt jag vet, vid skrivningstiden stöder Arduino-biblioteket INTE INPUT_PULLDOWN” eftersom Atmega328P, ”1284,” 2560, etc. Enhetsfamiljen inte har interna rullgardinsmotstånd. Endast pullup. Se avsnitt 14 i deras datablad, ”I / O-portar”.

Denna pullup är i allmänhet otillräcklig för I2C-pullup, den stigande kanten som skapas av 20K till 50K intern pullup är mycket långsam. Extern 4.7K ner till cirka 2.2K (beror på hur många I2C-enheter som är anslutna) behövs. Och I2C-busspecifikationen säger att de borde vara i slutet av bussen, inte ursprunget till bussen (som vanligtvis är processorn).

Om du har en lång ledning som kommer från en knapp eller omkopplare, det är i allmänhet en bra tid att använda en extern pullup för att säkerställa goda växlingsnivåer mellan hög och låg.

Svar

”Arduino Språk ”(dvs. pinMode() -funktionen) känner bara till INPUT_PULLUP.

Så du behöver externa motstånd för PULLDOWN-motstånd.

OUTPUT-signaler är inte flytande, så termen PULLUP / PULLDOWN-motstånd gäller inte riktigt där.

Dessutom kan värdet på ett internt motstånd inte justeras. Om detta värde (20 .. 50k) inte är lämpligt (I²C behöver något mindre än 10k) krävs ett externt motstånd.

Kommentarer

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *