Înțelegerea rezistențelor de tragere
Înainte de a vă scufunda în specificul pinilor de tragere ESP32, este important să înțelegeți rolul rezistențelor de tragere într-un circuit. Când un pin de intrare digitală este lăsat plutitor (nu este conectat la nicio sursă de tensiune), acesta poate citi valori aleatorii, ceea ce face dificilă determinarea nivelului său logic.
Pentru a evita această problemă, un rezistor de tragere este conectat între pinul de intrare și o sursă de tensiune (de obicei Vcc) pentru a se asigura că intrarea citește o stare înaltă (logică 1) în mod implicit. Când intrarea este conectată la un semnal scăzut (0 logic), rezistorul trage intrarea în jos la pământ, permițând intrării să citească o stare scăzută.
Pinuri de tragere încorporate pe ESP32
Microcontrolerul ESP32 are 34 de pini de intrare/ieșire de uz general (GPIO), care pot fi configurați fie ca pini digitali sau analogici. Printre acești 34 de pini, unii pini au rezistențe de pull-up încorporate care pot fi activate de software.
Următorul tabel arată pinii ESP32 care au rezistențe de tragere încorporate:
Numarul pin | Nume PIN | Rezistor de tragere încorporat |
0 | GPIO0 | da |
2 | GPIO2 | da |
4 | GPIO4 | da |
5 | GPIO5 | da |
12 | GPIO12 | da |
13 | GPIO13 | da |
14 | GPIO14 | da |
cincisprezece | GPIO15 | da |
25 | GPIO25 | da |
26 | GPIO26 | da |
27 | GPIO27 | da |
32 | GPIO32 | da |
33 | GPIO33 | da |
3. 4 | GPIO34 | Nu |
35 | GPIO35 | Nu |
36 | GPIO36 | Nu |
39 | GPIO39 | Nu |
După cum puteți vedea, majoritatea pinilor digitali de pe ESP32 au rezistențe de pull-up încorporate. Cu toate acestea, nu toți pinii au această caracteristică. Pinii 34, 35, 36 și 39 nu au rezistențe de tragere încorporate.
Notă: În ESP32, rezistențele integrate pull-up și pull-down sunt disponibile numai în pini care acceptă atât intrarea, cât și ieșirea. GPIO-urile 34-39 , care sunt limitate doar la intrare, nu au aceste rezistențe încorporate.
Verificați complet Referință pentru pinout ESP32 .
Activarea rezistențelor de tragere pe ESP32
Pentru a activa rezistența de tragere pe un pin ESP32, puteți utiliza gpio_set_pull_mode() funcția oferită de cadrul ESP-IDF.
Această funcție are două argumente:
- Numărul PIN GPIO
- Modul pull-up
Modul pull-up poate fi oricare GPIO_PULLUP_ENABLE sau GPIO_PULLUP_DISABLE . Iată un exemplu de cod care activează rezistența de tragere pe GPIO2:
#include „driver/gpio.h”gol enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
Este important de reținut că activarea rezistenței de tragere pe un pin va afecta comportamentul acestuia atunci când pinul este utilizat ca ieșire. În acest caz, rezistența de tragere va acționa ca o sursă de curent slabă și poate afecta nivelul tensiunii de ieșire.
Alternativ, putem activa și tragerile interne pe ESP32 folosind pinMode() Funcția Arduino.
pinMode ( 5 , INPUT_PULLUP ) ;Codul de mai sus va activa rezistența internă de tragere pe pin 5 . În mod similar, puteți activa rezistorul intern de tragere în jos specificând modul INPUT_PULLDOWN .
Concluzie
Rezistoarele pull-up sunt componente esențiale în circuitele digitale, iar microcontrolerul ESP32 oferă rezistențe de pull-up încorporate pe majoritatea pinilor săi digitali. Activarea acestor rezistențe poate asigura niveluri logice stabile și poate evita problemele de intrare plutitoare. Cu toate acestea, este important de reținut că nu toți pinii de pe ESP32 au rezistențe de tragere încorporate, deci este important să verificați Pinout ESP32 sau fișa de date înainte de a proiecta un circuit. În plus, activarea rezistenței de tragere poate afecta comportamentul pinului atunci când este utilizat ca ieșire.