A felhúzó ellenállások megértése
Mielőtt belemerülne az ESP32 felhúzócsapok sajátosságaiba, fontos megérteni a felhúzó ellenállások szerepét az áramkörben. Ha egy digitális bemeneti láb lebeg (nincs csatlakoztatva semmilyen feszültségforráshoz), véletlenszerű értékeket tud olvasni, megnehezítve a logikai szintjének meghatározását.
A probléma elkerülése érdekében egy felhúzó ellenállást kell csatlakoztatni a bemeneti érintkező és a feszültségforrás (általában Vcc) közé, hogy a bemenet alapértelmezés szerint magas (logikai 1) állapotot olvasson. Ha a bemenet alacsony (logikai 0) jelre van csatlakoztatva, az ellenállás lehúzza a bemenetet a földre, lehetővé téve a bemenet számára, hogy alacsony állapotot olvasson.
Beépített felhúzócsapok az ESP32-n
Az ESP32 mikrokontroller 34 általános célú bemeneti/kimeneti (GPIO) érintkezővel rendelkezik, amelyek digitális vagy analóg érintkezőkként konfigurálhatók. A 34 érintkező közül néhány érintkező beépített felhúzó ellenállással rendelkezik, amelyek szoftverrel engedélyezhetők.
A következő táblázat az ESP32 érintkezőit mutatja, amelyek beépített felhúzó ellenállással rendelkeznek:
Pinkód | Pin név | Beépített Pull-Up Ellenállás |
0 | GPIO0 | Igen |
2 | GPIO2 | Igen |
4 | GPIO4 | Igen |
5 | GPIO5 | Igen |
12 | GPIO12 | Igen |
13 | GPIO13 | Igen |
14 | GPIO14 | Igen |
tizenöt | GPIO15 | Igen |
25 | GPIO25 | Igen |
26 | GPIO26 | Igen |
27 | GPIO27 | Igen |
32 | GPIO32 | Igen |
33 | GPIO33 | Igen |
3. 4 | GPIO34 | Nem |
35 | GPIO35 | Nem |
36 | GPIO36 | Nem |
39 | GPIO39 | Nem |
Mint látható, az ESP32 digitális érintkezőinek többsége beépített felhúzó ellenállással rendelkezik. Azonban nem minden tű rendelkezik ezzel a funkcióval. A 34, 35, 36 és 39 érintkezőknek nincs beépített felhúzó ellenállása.
Jegyzet: Az ESP32-ben az integrált felhúzó és lehúzó ellenállások csak olyan érintkezőkben állnak rendelkezésre, amelyek támogatják a bemenetet és a kimenetet is. GPIO-k 34-39 , amelyek csak bemenetre korlátozódnak, nincsenek beépítve ezek az ellenállások.
Ellenőrizze a teljes ESP32 Pinout Reference .
Felhúzó ellenállások engedélyezése az ESP32-n
Az ESP32 tűn lévő felhúzó ellenállás engedélyezéséhez használhatja a gpio_set_pull_mode() az ESP-IDF keretrendszer által biztosított funkció.
Ennek a függvénynek két argumentuma van:
- A GPIO PIN-kódja
- A felhúzó üzemmód
A felhúzó mód bármelyik lehet GPIO_PULLUP_ENABLE vagy GPIO_PULLUP_DISABLE . Íme egy példakód, amely engedélyezi a felhúzó ellenállást a GPIO2-n:
#include 'driver/gpio.h'üres enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
Fontos megjegyezni, hogy a felhúzó ellenállás engedélyezése a tűn befolyásolja annak viselkedését, amikor a tűt kimenetként használják. Ebben az esetben a felhúzó ellenállás gyenge áramforrásként működik, és befolyásolhatja a kimeneti feszültség szintjét.
Alternatív megoldásként az ESP32 belső felhúzását is engedélyezhetjük a pinMode() Arduino funkció.
pinMode ( 5 , INPUT_PULLUP ) ;A fenti kód engedélyezi a belső felhúzó ellenállást a tűn 5 . Hasonlóképpen engedélyezheti a belső legördülő ellenállást az üzemmód megadásával INPUT_PULLDOWN .
Következtetés
A felhúzó ellenállások a digitális áramkörök alapvető alkotóelemei, és az ESP32 mikrokontroller beépített felhúzó ellenállást biztosít a legtöbb digitális érintkezőn. Ezen ellenállások engedélyezése stabil logikai szintet biztosíthat, és elkerülheti a lebegő bemeneti problémákat. Fontos azonban megjegyezni, hogy az ESP32 nem minden érintkezője rendelkezik beépített felhúzó ellenállással, ezért fontos ellenőrizni a ESP32 kivezetés vagy adatlapon az áramkör tervezése előtt. Ezenkívül a felhúzó ellenállás engedélyezése befolyásolhatja a tű viselkedését, ha kimenetként használják.