Pochopenie Pull-Up rezistorov
Predtým, ako sa ponoríme do špecifík vyťahovacích kolíkov ESP32, je dôležité pochopiť úlohu vyťahovacích odporov v obvode. Keď je digitálny vstupný kolík ponechaný plávajúci (nepripojený k žiadnemu zdroju napätia), môže čítať náhodné hodnoty, čo sťažuje určenie jeho logickej úrovne.
Aby sa predišlo tomuto problému, medzi vstupný kolík a zdroj napätia (zvyčajne Vcc) je zapojený pull-up odpor, aby sa zabezpečilo, že vstup štandardne číta vysoký (logická 1) stav. Keď je vstup pripojený k nízkemu signálu (logická 0), rezistor ťahá vstup nadol k zemi, čo umožňuje vstupu prečítať nízky stav.
Vstavané vyťahovacie kolíky na ESP32
Mikrokontrolér ESP32 má 34 univerzálnych vstupno/výstupných (GPIO) kolíkov, ktoré môžu byť nakonfigurované ako digitálne alebo analógové. Medzi týmito 34 kolíkmi majú niektoré kolíky zabudované pull-up odpory, ktoré je možné aktivovať softvérom.
Nasledujúca tabuľka zobrazuje kolíky na ESP32, ktoré majú vstavané pull-up odpory:
PIN kód | Názov PIN | Zabudovaný Pull-Up Rezistor |
0 | GPIO0 | Áno |
2 | GPIO2 | Áno |
4 | GPIO4 | Áno |
5 | GPIO5 | Áno |
12 | GPIO12 | Áno |
13 | GPIO13 | Áno |
14 | GPIO14 | Áno |
pätnásť | GPIO15 | Áno |
25 | GPIO25 | Áno |
26 | GPIO26 | Áno |
27 | GPIO27 | Áno |
32 | GPIO32 | Áno |
33 | GPIO33 | Áno |
3. 4 | GPIO34 | Nie |
35 | GPIO35 | Nie |
36 | GPIO36 | Nie |
39 | GPIO39 | Nie |
Ako môžete vidieť, väčšina digitálnych pinov na ESP32 má vstavané pull-up odpory. Nie všetky piny však majú túto funkciu. Kolíky 34, 35, 36 a 39 nemajú zabudované pull-up odpory.
Poznámka: V ESP32 sú integrované pull-up a pull-down rezistory dostupné iba v kolíkoch, ktoré podporujú vstup aj výstup. GPIO 34-39 , ktoré sú obmedzené len na vstup, nemajú tieto odpory zabudované.
Skontrolujte kompletné ESP32 Pinout Reference .
Povolenie Pull-Up Rezistorov na ESP32
Ak chcete aktivovať pull-up odpor na kolíku ESP32, môžete použiť gpio_set_pull_mode() funkcia poskytovaná rámcom ESP-IDF.
Táto funkcia má dva argumenty:
- Číslo PIN GPIO
- Vyťahovací režim
Vyťahovací režim môže byť buď GPIO_PULLUP_ENABLE alebo GPIO_PULLUP_DISABLE . Tu je príklad kódu, ktorý aktivuje pull-up rezistor na GPIO2:
#include 'driver/gpio.h'neplatné enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
Je dôležité poznamenať, že aktivácia pull-up rezistora na kolíku ovplyvní jeho správanie, keď sa kolík použije ako výstup. V tomto prípade bude pull-up rezistor pôsobiť ako zdroj slabého prúdu a môže ovplyvniť úroveň výstupného napätia.
Alternatívne môžeme tiež povoliť interné pull-up na ESP32 pomocou pinMode() Funkcia Arduino.
pinMode ( 5 , INPUT_PULLUP ) ;Vyššie uvedený kód aktivuje interný pull-up rezistor na kolíku 5 . Podobne môžete povoliť interný sťahovací odpor zadaním režimu INPUT_PULLDOWN .
Záver
Pull-up rezistory sú základnými komponentmi v digitálnych obvodoch a mikrokontrolér ESP32 poskytuje vstavané pull-up odpory na väčšine svojich digitálnych kolíkov. Povolenie týchto odporov môže zabezpečiť stabilné logické úrovne a vyhnúť sa problémom s pohyblivým vstupom. Je však dôležité poznamenať, že nie všetky kolíky na ESP32 majú vstavané pull-up odpory, takže je dôležité skontrolovať Pinout ESP32 alebo údajový list pred návrhom obvodu. Navyše, aktivácia pull-up rezistora môže ovplyvniť správanie kolíka pri použití ako výstup.