Pochopení Pull-Up rezistorů
Než se ponoříme do specifik vytahovacích kolíků ESP32, je důležité porozumět roli vytahovacích odporů v obvodu. Když je digitální vstupní pin ponechán plovoucí (nepřipojený k žádnému zdroji napětí), může číst náhodné hodnoty, což ztěžuje určení jeho logické úrovně.
Aby se tomuto problému předešlo, je mezi vstupní kolík a zdroj napětí (typicky Vcc) zapojen pull-up rezistor, aby bylo zajištěno, že vstup standardně čte stav vysoké (logická 1). Když je vstup připojen k nízkému signálu (logická 0), rezistor stáhne vstup dolů k zemi, což umožňuje vstupu přečíst nízký stav.
Vestavěné vytahovací kolíky na ESP32
Mikrokontrolér ESP32 má 34 univerzálních vstupně/výstupních (GPIO) pinů, které lze nakonfigurovat jako digitální nebo analogové. Mezi těmito 34 piny mají některé piny vestavěné pull-up rezistory, které lze aktivovat softwarem.
Následující tabulka ukazuje piny na ESP32, které mají vestavěné pull-up odpory:
Číslo PIN | Název PIN | Vestavěný Pull-Up Rezistor |
0 | GPIO0 | Ano |
2 | GPIO2 | Ano |
4 | GPIO4 | Ano |
5 | GPIO5 | Ano |
12 | GPIO12 | Ano |
13 | GPIO13 | Ano |
14 | GPIO14 | Ano |
patnáct | GPIO15 | Ano |
25 | GPIO25 | Ano |
26 | GPIO26 | Ano |
27 | GPIO27 | Ano |
32 | GPIO32 | Ano |
33 | GPIO33 | Ano |
3. 4 | GPIO34 | Ne |
35 | GPIO35 | Ne |
36 | GPIO36 | Ne |
39 | GPIO39 | Ne |
Jak můžete vidět, většina digitálních pinů na ESP32 má vestavěné pull-up odpory. Tuto funkci však nemají všechny piny. Piny 34, 35, 36 a 39 nemají vestavěné pull-up odpory.
Poznámka: V ESP32 jsou integrované pull-up a pull-down rezistory k dispozici pouze v pinech, které podporují vstup i výstup. GPIO 34-39 , které jsou omezeny pouze na vstup, nemají tyto odpory zabudované.
Zkontrolujte kompletní ESP32 Pinout Reference .
Povolení Pull-Up Resistors na ESP32
Chcete-li aktivovat pull-up rezistor na pinu ESP32, můžete použít gpio_set_pull_mode() funkce poskytované rámcem ESP-IDF.
Tato funkce má dva argumenty:
- Číslo PIN GPIO
- Vytahovací režim
Vytahovací režim může být buď GPIO_PULLUP_ENABLE nebo GPIO_PULLUP_DISABLE . Zde je příklad kódu, který aktivuje pull-up rezistor na GPIO2:
#include 'driver/gpio.h'prázdnota enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
Je důležité si uvědomit, že povolení pull-up rezistoru na kolíku ovlivní jeho chování, když je kolík použit jako výstup. V tomto případě bude pull-up rezistor fungovat jako zdroj slabého proudu a může ovlivnit úroveň výstupního napětí.
Alternativně můžeme také povolit interní pull-up na ESP32 pomocí pinMode() Funkce Arduino.
pinMode ( 5 , INPUT_PULLUP ) ;Výše uvedený kód povolí interní pull-up rezistor na kolíku 5 . Podobně můžete povolit interní pull-down rezistor zadáním režimu INPUT_PULDOWN .
Závěr
Pull-up rezistory jsou základní komponenty v digitálních obvodech a mikrokontrolér ESP32 poskytuje vestavěné pull-up rezistory na většině svých digitálních pinů. Povolení těchto rezistorů může zajistit stabilní logické úrovně a vyhnout se problémům s plovoucím vstupem. Je však důležité si uvědomit, že ne všechny piny na ESP32 mají vestavěné pull-up odpory, takže je důležité zkontrolovat Pinout ESP32 nebo datasheet před návrhem obvodu. Navíc povolení pull-up rezistoru může ovlivnit chování kolíku, když je použit jako výstup.