Comprensión de las resistencias pull-up
Antes de profundizar en los detalles de los pines pull-up ESP32, es importante comprender el papel de las resistencias pull-up en un circuito. Cuando un pin de entrada digital se deja flotando (no conectado a ninguna fuente de voltaje), puede leer valores aleatorios, lo que dificulta determinar su nivel lógico.
Para evitar este problema, se conecta una resistencia pull-up entre el pin de entrada y una fuente de voltaje (típicamente Vcc) para garantizar que la entrada lea un estado alto (1 lógico) de manera predeterminada. Cuando la entrada está conectada a una señal baja (0 lógico), la resistencia tira de la entrada a tierra, lo que permite que la entrada lea un estado bajo.
Pines de dominadas incorporados en ESP32
El microcontrolador ESP32 tiene 34 pines de entrada/salida de uso general (GPIO), que se pueden configurar como pines digitales o analógicos. Entre estos 34 pines, algunos pines tienen resistencias pull-up integradas que pueden habilitarse mediante software.
La siguiente tabla muestra los pines en ESP32 que tienen resistencias pull-up integradas:
Número de PIN | Nombre del pin | Resistencia pull-up incorporada |
0 | GPIO0 | Sí |
2 | GPIO2 | Sí |
4 | GPIO4 | Sí |
5 | GPIO5 | Sí |
12 | GPIO12 | Sí |
13 | GPIO13 | Sí |
14 | GPIO14 | Sí |
15 | GPIO15 | Sí |
25 | GPIO25 | Sí |
26 | GPIO26 | Sí |
27 | GPIO27 | Sí |
32 | GPIO32 | Sí |
33 | GPIO33 | Sí |
34 | GPIO34 | No |
35 | GPIO35 | No |
36 | GPIO36 | No |
39 | GPIO39 | No |
Como puede ver, la mayoría de los pines digitales en ESP32 tienen resistencias pull-up incorporadas. Sin embargo, no todos los pines tienen esta característica. Los pines 34, 35, 36 y 39 no tienen resistencias pull-up integradas.
Nota: En ESP32, las resistencias pull-up y pull-down integradas solo están disponibles en pines que admiten entrada y salida. GPIO 34-39 , que se limitan solo a la entrada, no tienen estas resistencias integradas.
Revisa el completo Referencia de distribución de pines ESP32 .
Habilitación de resistencias pull-up en ESP32
Para habilitar la resistencia pull-up en un pin ESP32, puede usar el gpio_set_pull_mode() función proporcionada por el marco ESP-IDF.
Esta función toma dos argumentos:
- El número de pin GPIO
- El modo pull-up
El modo pull-up puede ser GPIO_PULLUP_ENABLE o GPIO_PULLUP_DISABLE . Aquí hay un código de ejemplo que habilita la resistencia pull-up en GPIO2:
#incluye 'controlador/gpio.h'vacío enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , ENTRADA_PULLUP ) ;
Es importante tener en cuenta que habilitar la resistencia pull-up en un pin afectará su comportamiento cuando el pin se use como salida. En este caso, la resistencia pull-up actuará como una fuente de corriente débil y puede afectar el nivel de voltaje de salida.
Alternativamente, también podemos habilitar pull-ups internos en ESP32 usando el pinMode() función arduino
pinMode ( 5 , ENTRADA_PULLUP ) ;El código anterior habilitará la resistencia pull-up interna en el pin 5 . De manera similar, puede habilitar la resistencia desplegable interna especificando el modo ENTRADA_PULLDOWN .
Conclusión
Las resistencias pull-up son componentes esenciales en los circuitos digitales, y el microcontrolador ESP32 proporciona resistencias pull-up integradas en la mayoría de sus pines digitales. Habilitar estas resistencias puede garantizar niveles lógicos estables y evitar problemas de entrada flotante. Sin embargo, es importante tener en cuenta que no todos los pines en ESP32 tienen resistencias pull-up incorporadas, por lo que es importante verificar el Asignación de pines ESP32 o hoja de datos antes de diseñar un circuito. Además, habilitar la resistencia pull-up puede afectar el comportamiento del pin cuando se usa como salida.