Külső és belső pullup

Az Arduino-ban kétféle módon lehet kihúzni a csapokat – belső és külső ellenállással. Kíváncsi vagyok, mikor kellene külső ellenállást használni az INPUT_PULLUP helyett.

Megjegyzések

  • Tapasztalataim szerint az egyetlen különbség " külső pullup / pulldown könnyebben helyettesíthető " és talán " is, ha csak az áramkört nézed, akkor láthatod a külsőt ellenállás, így ' könnyebb megérteni a tervet néhány hónap múlva "

Válasz

A belső vagy a külső ellenállást normál alkalmazásban is használhatja.

Minden módszernek megvannak a maga előnyei:

Belső ellenállás

  • Előnyök: rugalmas változtatni a kód megváltoztatásával
  • Előnyök: Csökkentse a NYÁK méretét
  • Előnyök: Csökkentse a költségeket (nagyon kicsi)
  • Hátrányok: Ez forróvá teheti az MCU-t

Külső ellenállás

  • Pr os: Csökkentse a hőt az MCU számára
  • Hátrányok: Nem könnyű cserélni, ha beépített NYÁK
  • Hátrányok: Növelje a NYÁK méretét

Emellett , A felhúzható és lehúzható ellenállásokat nemcsak az INPUT, hanem az OUTPUT port számára is használják. OUTPUT port esetén. A külső ellenállásnak még egy előnye van: a különböző I / O feszültségű eszközök csatlakoztatásának rugalmassága. Például az I2C hardverben lásd az I2C hardver szintjén .

MEGJEGYZÉS: Ha jól tudom, az írás idején az Arduino a könyvtár NEM támogatja az INPUT_PULLDOWN

megjegyzéseket

  • 1. A belső felhúzás által termelt hő elhanyagolható. 2. Egyes táblák (nem az AVR-alapúak) INPUT_PULLDOWN -vel rendelkeznek.

Válasz

“Hátrányok: Ez forróvá teheti az MCU-t”
Nem fog. P = V ^ 2 / R, tehát 5 * 5/20 000 = 1,25 mW, ettől nem lesz forró a processzor. Még akkor is, ha mind a 80-at elfordítja egy Mega2560-ban, és mindet alacsonyra húzza, csak 0,1 W szóródik el.

“MEGJEGYZÉS: Ha jól tudom, az írás idején az Arduino könyvtár NEM támogatja az INPUT_PULLDOWN” mert az Atmega328P, “1284”, 2560 stb. készülékcsaládnak nincsenek belső lehúzható ellenállása. Csak felhúzás. Lásd az adatlapok 14. szakaszát: “I / O portok”.

Ez a felhúzás általában nem elegendő az I2C pulluphoz, a 20K-tól 50K-ig terjedő belső pullup által létrehozott emelkedő szél nagyon lassú. Külső 4,7K-ra kb. 2,2K-ig (attól függ, hogy hány I2C eszköz van csatlakoztatva) szükség van. És az I2C busz specifikációja szerint a busz végén kell lenniük, nem pedig a busz eredetének (ami általában a processzor).

Ha hosszú vezeték van egy gombról vagy kapcsolóról, akkor általában jó alkalom egy külső pullup használatára a magas és alacsony közötti váltási szint biztosításához.

Válasz

Az “Arduino” A nyelv “(azaz a pinMode() függvény) csak az INPUT_PULLUP nyelvet ismeri.

Tehát külső ellenállásokra van szükség a PULLDOWN ellenállásokhoz.

Az OUTPUT jelek nem lebegnek, ezért a PULLUP / PULLDOWN ellenállás kifejezés nem igazán alkalmazható ott.

Ezenkívül a belső pullup ellenállás értéke nem állítható. Ha ez az érték (20 .. 50k) nem megfelelő (I²C-nek 10k alatti értékre van szüksége), akkor külső ellenállásra van szükség.

Megjegyzések

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük