Comprensione dei resistori pull-up
Prima di approfondire le specifiche dei pin pull-up ESP32, è importante comprendere il ruolo delle resistenze pull-up in un circuito. Quando un pin di ingresso digitale viene lasciato flottante (non collegato a nessuna sorgente di tensione), può leggere valori casuali, rendendo difficile determinarne il livello logico.
Per evitare questo problema, un resistore di pull-up è collegato tra il pin di ingresso e una sorgente di tensione (tipicamente Vcc) per garantire che l'ingresso legga uno stato alto (1 logico) per impostazione predefinita. Quando l'ingresso è collegato a un segnale basso (0 logico), il resistore abbassa l'ingresso a terra, consentendo all'ingresso di leggere uno stato basso.
Pin pull-up integrati su ESP32
Il microcontrollore ESP32 dispone di 34 pin GPIO (General Purpose Input/Output), che possono essere configurati come pin digitali o analogici. Tra questi 34 pin, alcuni pin hanno resistori di pull-up incorporati che possono essere abilitati dal software.
La tabella seguente mostra i pin su ESP32 con resistori di pull-up incorporati:
Codice PIN | Nome pin | Resistenza pull-up incorporata |
0 | GPIO0 | SÌ |
2 | GPIO2 | SÌ |
4 | GPIO4 | SÌ |
5 | GPIO5 | SÌ |
12 | GPIO12 | SÌ |
13 | GPIO13 | SÌ |
14 | GPIO14 | SÌ |
quindici | GPIO15 | SÌ |
25 | GPIO25 | SÌ |
26 | GPIO26 | SÌ |
27 | GPIO27 | SÌ |
32 | GPIO32 | SÌ |
33 | GPIO33 | SÌ |
3. 4 | GPIO34 | NO |
35 | GPIO35 | NO |
36 | GPIO36 | NO |
39 | GPIO39 | NO |
Come puoi vedere, la maggior parte dei pin digitali su ESP32 ha resistori di pull-up incorporati. Tuttavia, non tutti i pin hanno questa caratteristica. I pin 34, 35, 36 e 39 non hanno resistori pull-up incorporati.
Nota: In ESP32, i resistori pull-up e pull-down integrati sono disponibili solo nei pin che supportano sia l'ingresso che l'uscita. GPIO 34-39 , che sono limitati al solo ingresso, non hanno questi resistori integrati.
Controlla il completo Riferimento pinout ESP32 .
Abilitazione dei resistori pull-up su ESP32
Per abilitare la resistenza di pull-up su un pin ESP32, puoi usare il gpio_set_pull_mode() funzione fornita dal framework ESP-IDF.
Questa funzione accetta due argomenti:
- Il numero di pin GPIO
- La modalità pull-up
La modalità pull-up può essere entrambe GPIO_PULLUP_ENABLE O GPIO_PULLUP_DISABLE . Ecco un codice di esempio che abilita la resistenza di pull-up su GPIO2:
#include 'driver/gpio.h'vuoto enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
È importante notare che l'abilitazione del resistore di pull-up su un pin influirà sul suo comportamento quando il pin viene utilizzato come uscita. In questo caso, il resistore di pull-up fungerà da debole sorgente di corrente e potrebbe influenzare il livello della tensione di uscita.
In alternativa, possiamo anche abilitare i pull-up interni su ESP32 usando il pinMode() Funzione Arduino.
pinMode ( 5 , INPUT_PULLUP ) ;Il codice sopra abiliterà il resistore di pull-up interno sul pin 5 . Allo stesso modo, è possibile abilitare il resistore pull-down interno specificando la modalità INPUT_PULLDOWN .
Conclusione
I resistori di pull-up sono componenti essenziali nei circuiti digitali e il microcontrollore ESP32 fornisce resistori di pull-up incorporati sulla maggior parte dei suoi pin digitali. L'abilitazione di questi resistori può garantire livelli logici stabili ed evitare problemi di input fluttuanti. Tuttavia, è importante notare che non tutti i pin su ESP32 dispongono di resistori di pull-up incorporati, quindi è importante controllare il Piedinatura ESP32 o scheda tecnica prima di progettare un circuito. Inoltre, l'abilitazione del resistore di pull-up può influenzare il comportamento del pin quando viene utilizzato come uscita.