Er zijn twee manieren om de pinnen in Arduino te trekken – met behulp van interne en externe weerstand. Ik vraag me af wanneer ik een externe weerstand moet gebruiken in plaats van INPUT_PULLUP.
Reacties
- Uit mijn ervaring is het enige verschil " externe pullup / pulldown is gemakkelijker te vervangen " en misschien ook " door gewoon naar het circuit te kijken, je kunt het externe weerstand zodat het ' na enkele maanden gemakkelijker het ontwerp te begrijpen "
Antwoord
U kunt de interne of externe weerstand in normale toepassingen gebruiken.
Elke methode heeft zijn eigen voordelen:
Interne weerstand
- Voordelen: flexibel te veranderen door de code te wijzigen
- Voordelen: verklein de printplaat
- Voordelen: verlaag de kosten (erg klein)
- Nadelen: het kan MCU heet maken
Externe weerstand
- Pr os: Verminder warmte voor MCU
- Nadelen: niet gemakkelijk te vervangen als het een ingebouwde printplaat is
- Nadelen: vergroot de printplaatgrootte
Bovendien Pull-up en pull-down weerstanden worden niet alleen gebruikt voor de INPUT-poort, maar ook voor de OUTPUT-poort. In het geval van de OUTPUT-poort. De externe weerstand heeft nog een voordeel: flexibiliteit bij het aansluiten van apparaten met verschillende I / O-spanningen. In I2C hardware zie bijvoorbeeld I2C op hardwareniveau .
OPMERKING: voor zover ik weet, op het moment van schrijven, Arduino bibliotheek ondersteunt INPUT_PULLDOWN NIET
Reacties
- 1. De warmte die wordt gegenereerd door de interne pullup is verwaarloosbaar. 2. Sommige boards (niet de op AVR gebaseerde) hebben
INPUT_PULLDOWN
.
Answer
“Nadelen: het kan de MCU heet maken”
Dat zal niet gebeuren. P = V ^ 2 / R, dus 5 * 5 / 20.000 = 1,25 mW, dat zal de processor niet heet maken. Zelfs het draaien van alle 80 in een Mega2560, en ze allemaal naar beneden trekken, zal slechts 0,1W verdrijven.
“OPMERKING: voor zover ik weet, ondersteunt de Arduino-bibliotheek op het moment van schrijven GEEN INPUT_PULLDOWN” Dat wil zeggen omdat Atmega328P, “1284,” 2560, enz. familie van apparaten geen interne pulldown-weerstanden hebben. Alleen optrekken. Zie sectie 14 van hun datasheets, “I / O-poorten”.
Deze pullup is over het algemeen onvoldoende voor I2C pullup, de stijgende flank gecreëerd door de 20K tot 50K interne pullup is erg traag. Externe 4.7K tot ongeveer 2.2K (afhankelijk van hoeveel I2C-apparaten zijn aangesloten) zijn nodig. En de I2C-busspecificatie zegt dat ze aan het einde van de bus zouden moeten zijn, niet de oorsprong van de bus (wat over het algemeen de processor is).
Als je een lange draad hebt die van een knop of schakelaar komt, dat is over het algemeen een goed moment om een externe pullup te gebruiken om goede schakelniveaus tussen hoog en laag te garanderen.
Answer
De “Arduino Taal “(dwz de pinMode()
functie) kent alleen INPUT_PULLUP.
Je hebt dus externe weerstanden nodig voor PULLDOWN weerstanden.
OUTPUT-signalen zijn niet zwevend, dus de term PULLUP / PULLDOWN-weerstand is daar niet echt van toepassing.
Bovendien is de waarde van een interne pullup-weerstand niet instelbaar. Als die waarde (20 .. 50k) niet geschikt is (I²C heeft iets minder dan 10k nodig) is een externe weerstand vereist.
Opmerkingen
- Zoals ik schreef in een opmerking bij het vorige antwoord, doen sommige Arduino-kernen dat ondersteuning
INPUT_PULLDOWN
.