Zrozumienie rezystorów podciągających
Przed zagłębieniem się w specyfikę pinów podciągających ESP32 ważne jest, aby zrozumieć rolę rezystorów podciągających w obwodzie. Gdy pin wejścia cyfrowego pozostaje swobodny (nie jest podłączony do żadnego źródła napięcia), może odczytywać losowe wartości, co utrudnia określenie jego poziomu logicznego.
Aby uniknąć tego problemu, rezystor podciągający jest podłączony między pinem wejściowym a źródłem napięcia (zwykle Vcc), aby zapewnić, że wejście domyślnie odczytuje stan wysoki (logiczna 1). Gdy wejście jest podłączone do sygnału niskiego (logiczne 0), rezystor ściąga wejście do masy, umożliwiając wejście odczytanie stanu niskiego.
Wbudowane kołki do podciągania w ESP32
Mikrokontroler ESP32 ma 34 piny wejścia/wyjścia ogólnego przeznaczenia (GPIO), które można skonfigurować jako piny cyfrowe lub analogowe. Wśród tych 34 pinów, niektóre piny mają wbudowane rezystory podciągające, które można włączyć za pomocą oprogramowania.
Poniższa tabela przedstawia piny na ESP32, które mają wbudowane rezystory podciągające:
Kod PIN | Nazwa pinezki | Wbudowany rezystor podciągający |
0 | GPIO0 | Tak |
2 | GPIO2 | Tak |
4 | GPIO4 | Tak |
5 | GPIO5 | Tak |
12 | GPIO12 | Tak |
13 | GPIO13 | Tak |
14 | GPIO14 | Tak |
piętnaście | GPIO15 | Tak |
25 | GPIO25 | Tak |
26 | GPIO26 | Tak |
27 | GPIO27 | Tak |
32 | GPIO32 | Tak |
33 | GPIO33 | Tak |
3. 4 | GPIO34 | NIE |
35 | GPIO35 | NIE |
36 | GPIO36 | NIE |
39 | GPIO39 | NIE |
Jak widać, większość pinów cyfrowych w ESP32 ma wbudowane rezystory podciągające. Jednak nie wszystkie piny mają tę funkcję. Piny 34, 35, 36 i 39 nie mają wbudowanych rezystorów podciągających.
Notatka: W ESP32 zintegrowane rezystory podciągające i podciągające są dostępne tylko w pinach obsługujących zarówno wejście, jak i wyjście. GPIO 34-39 , które są ograniczone tylko do wejścia, nie mają wbudowanych tych rezystorów.
Sprawdź całość Odniesienie do pinów ESP32 .
Włączanie rezystorów podciągających w ESP32
Aby włączyć rezystor podciągający na pinie ESP32, możesz użyć gpio_set_pull_mode() funkcja zapewniana przez platformę ESP-IDF.
Ta funkcja przyjmuje dwa argumenty:
- Numer pinu GPIO
- Tryb podciągania
Tryb podciągania może być dowolny GPIO_PULLUP_ENABLE Lub GPIO_PULLUP_DISABLE . Oto przykładowy kod, który włącza rezystor podciągający na GPIO2:
#include 'sterownik/gpio.h'próżnia włącz_pociągnięcie_w górę ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
tryb pin ( 5 , INPUT_PULLUP ) ;
Należy zauważyć, że włączenie rezystora podciągającego na pinie wpłynie na jego zachowanie, gdy pin będzie używany jako wyjście. W takim przypadku rezystor podciągający będzie działał jako słabe źródło prądu i może wpływać na poziom napięcia wyjściowego.
Alternatywnie możemy również włączyć wewnętrzne podciąganie na ESP32 za pomocą tryb pin() Funkcja Arduino.
tryb pin ( 5 , INPUT_PULLUP ) ;Powyższy kod włączy wewnętrzny rezystor podciągający na pinie 5 . Podobnie możesz włączyć wewnętrzny rezystor obniżający, określając tryb INPUT_PULLDOWN .
Wniosek
Rezystory podciągające są niezbędnymi elementami obwodów cyfrowych, a mikrokontroler ESP32 zapewnia wbudowane rezystory podciągające na większości swoich cyfrowych pinów. Włączenie tych rezystorów może zapewnić stabilne poziomy logiczne i uniknąć problemów z pływającymi wejściami. Należy jednak zauważyć, że nie wszystkie piny w ESP32 mają wbudowane rezystory podciągające, dlatego ważne jest, aby sprawdzić Układ pinów ESP32 lub arkusza danych przed zaprojektowaniem obwodu. Dodatkowo włączenie rezystora podciągającego może wpłynąć na zachowanie styku, gdy jest używany jako wyjście.