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
- Ahogy az előző válaszhoz írtam, néhány Arduino mag igen támogatás
INPUT_PULLDOWN
.