Jaký je ' rozdíl mezi INPUT a INPUT_PULLUP?

U novějších Arduinos lze nastavit pinMode na jeden ze tří stavů: OUTPUT, INPUT a INPUT_PULLUP.

Tato stránka říká:

Čip Atmega na Arduinu má interní pull-up rezistory (rezistory, které se interně připojují k napájení), ke kterým máte přístup. Pokud dáváte přednost použití těchto namísto externích rozevíracích rezistorů, můžete použít argument INPUT_PULLUP v pinMode (). Toto efektivně invertuje chování, kde HIGH znamená, že je senzor vypnutý, a LOW znamená, že je senzor zapnutý.

Jsem si docela jistý, že invertování chování není však jediná věc, kterou dělá.

Co dělá INPUT_PULLUP? Čím se liší od INPUT a jak se člověk rozhodne, který z nich použije?

Komentáře

  • INPUT_PULLUP byl přidán s IDE 1.0.1. Není důležité, kterou desku Arduino používáte, všechny podporují PULLUPy.

Odpověď

Výchozí hodnota je INPUT který nastaví kolík jako INPUT. Pokud je kolík zcela odpojen, bude náhodně číst HIGH a LOW. Pokud jej připojíte na + 5 V nebo 0 V, bude zřejmě číst HIGH nebo LOW.

Čip Atmega, který je součástí Arduina, má vnitřní odpory s hodnotou kolem 20 kOhm. (Další podrobnosti najdete v dokumentaci DigitalPins ) Tyto rezistory lze volitelně interně připojit pomocí INPUT_PULLUP. To je funkčně (a elektricky) ekvivalentní připojení rezistoru ~ 20 kOhm mezi pin a + 5V, jediný rozdíl je v tom, že nevyžaduje žádné externí komponenty a můžete ho během provádění programu zapínat a vypínat v softwaru.

Proč tedy přítahy a ne přítahy? Existuje pravděpodobně několik důvodů, ale když zapojujete tlačítka nebo spínače nebo něco „normálně otevřeného“, musíte je pouze svázat s uzemněním, nemusíte k nim napájet + 5 V. Protože většina desek bude navrženo s velkými zemními vývody z důvodu stínění, vázání na zem je prakticky důvod.

Některé více vybavené integrované obvody, jako jsou čipy ARM, mají jak pull ups, tak pull downs, ale 8bitová řada AVR přichází pouze s pull -ups. Musíte si jen uvědomit, že HIGH je „otevřený“ a LOW je „uzavřen“.

Komentáře

Odpověď

Všimněte si, že předchozí na verzi 1.0.1, můžete zapnout vytažení pomocí digitalWrite(). A stále můžete.

Kód:

Toto je důležitý rozdíl, protože INPUT_PULLUP zjevně zapíná pull-up rezistor. Méně zřejmé však je, že počínaje verzí 1.0.1 vynutí volání INPUT vynutit vypnutí. (Dříve zůstal stav vytažení stejný).

Chcete-li zjistit, jak pin funguje s vytažením a bez něj, podívejte se na následující videa.

Plovoucí pin na osciloskopu: http://www.youtube.com/watch?v=dBIBFLYCjMM

S povoleným Pull-Up: http://www.youtube.com/watch?v=SAIw7LLVl-U

Úplné výukové video o vytažení (všimněte si, že jsem to vytvořil před přidáním INPUT_PULLUP do knihovny Arduino): http://www.youtube.com/watch?&v=jJnD6LdGmUo

Komentáře

  • Velmi chytré. Děkuji, že jste to napsali. Hlasovat.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *