ESP32 Lectura ADC de valores analógicos con Arduino IDE

Este artículo muestra cómo leer entradas analógicas con ESP32 utilizando Arduino IDE. La lectura analógica es útil para leer valores de resistencias variables como potenciómetros o sensores analógicos.

ESP32 ADC Lee valores analógicos con Arduino IDE

Leer entradas analógicas con el ESP32 es tan fácil como usar la función analogRead(GPIO), que acepta como argumento el GPIO que desea leer.

También tenemos otros tutoriales sobre cómo usar pines analógicos con placa ESP:

  • ESP8266 ADC-Leer valores analógicos con Arduino IDE, MicroPython y Lua
  • Lecturas analógicas ESP32 con MicroPython

Ver el video

Puede ver el tutorial en video o seguir leyendo esta página para obtener instrucciones escritas.

Entradas analógicas (ADC)

Leer un valor analógico con el ESP32 significa que puede medir diferentes niveles de voltaje entre 0 V y 3,3 V.

La tensión medida se asigna entonces a un valor entre 0 y 4095, en el que 0 V corresponde a 0, y 3,3 V corresponde a 4095. Cualquier voltaje entre 0 V y 3,3 V recibirá el valor correspondiente en el medio.

Valor de Rango de Entradas de Lectura Analógicas ADC ESP32

ADC No es lineal

Idealmente, esperaría un comportamiento lineal al usar los pines ADC ESP32. Sin embargo, eso no sucede. Lo que obtendrá es un comportamiento como se muestra en el siguiente gráfico:

Este comportamiento significa que su ESP32 no es capaz de distinguir 3.3 V a partir de 3,2 V. Obtendrá el mismo valor para ambos voltajes: 4095.

Lo mismo sucede para valores de muy baja tensión: para 0 V y 0.1 V obtendrá el mismo valor: 0. Debe tener esto en cuenta cuando use los pines ESP32 ADC.

Hay una discusión en GitHub sobre este tema.

Función analogRead ()

Leer una entrada analógica con el ESP32 usando el IDE Arduino es tan simple como usar la función analogRead (). Acepta como argumento, el GPIO que desea leer:

analogRead(GPIO);

El ESP32 admite mediciones en 18 canales diferentes. Solo 15 están disponibles en la placa DEVKIT V1 DOIT (versión con 30 GPIOs).

Agarra el pinout de la placa ESP32 y localiza los pines ADC. Estos están resaltados con un borde rojo en la figura de abajo.

Pines GPIOs ESP32 ADC

Más información sobre los GPIOs ESP32: Referencia de Pinout ESP32.

Estos pines de entrada analógica tienen una resolución de 12 bits. Esto significa que cuando lee una entrada analógica, su rango puede variar de 0 a 4095.

Nota: Los pines ADC2 no se pueden usar cuando se utiliza Wi-Fi. Por lo tanto, si está utilizando Wi-Fi y tiene problemas para obtener el valor de un GPIO ADC2, puede considerar usar un GPIO ADC1 en su lugar, que debería resolver su problema.

Otras funciones útiles

Hay otras funciones más avanzadas para usar con los pines ADC que pueden ser útiles en otros proyectos.

  • analogReadResolution(resolución): establezca los bits de muestra y la resolución. Puede ser un valor entre 9 (0 – 511) y 12 bits (0 – 4095). La resolución predeterminada es de 12 bits.
  • analogSetWidth(ancho): establece los bits de muestra y la resolución. Puede ser un valor entre 9 (0 – 511) y 12 bits (0 – 4095). La resolución predeterminada es de 12 bits.
  • Ciclos de conjuntos análogos (ciclos): establezca el número de ciclos por muestra. El valor predeterminado es 8. Alcance: 1 a 255.
  • Conjuntos análogos Muestras (muestras): establezca el número de muestras en el rango. El valor predeterminado es 1 muestra. Tiene el efecto de aumentar la sensibilidad.
  • analogSetClockDiv (atenuación): ajuste el divisor para el reloj ADC. El valor predeterminado es 1. Alcance: 1 a 255.
  • Attenuation analógico( atenuación): establece la atenuación de entrada para todos los pines ADC. El valor predeterminado es ADC_11db. Valores aceptados:
    • ADC_0db: no establece atenuación. El ADC puede medir hasta aproximadamente 800 mV (entrada de 1 V = lectura de ADC de 1088).
    • ADC_2_5db: La tensión de entrada de ADC se atenuará, ampliando el rango de medición hasta aprox. 1100 mV. (Entrada de 1 V = lectura ADC de 3722).
    • ADC_6db: La tensión de entrada de ADC se atenuará, ampliando el rango de medición hasta aprox. 1350 mV. (Entrada de 1 V = lectura ADC de 3033).
    • ADC_11db: La tensión de entrada de ADC se atenuará, ampliando el rango de medición hasta aprox. 2600 mV. (Entrada de 1 V = lectura ADC de 1575).
  • analogSetPinAttenuation (pin, atenuación): establece la atenuación de entrada para el pin especificado. El valor predeterminado es ADC_11db. Los valores de atenuación son los mismos de la función anterior.
  • adcAttachPin (pin): Conecte un pin a ADC (también borra cualquier otro modo analógico que pueda estar activado). Devuelve un resultado VERDADERO o FALSO.
  • adcStart (pin), adcBusy(pin) y resultadcEnd(pin): inicia una conversión ADC en el bus del pin conectado. Compruebe si la conversión en el bus ADC del pin se está ejecutando actualmente (devuelve VERDADERO o FALSO). Obtener el resultado de la conversión: devuelve un entero de 16 bits.

Hay un video muy bueno que explica estas funciones que puedes ver aquí.

Leer valores analógicos de un Potenciómetro con ESP32

Para ver cómo todo se une, haremos un ejemplo simple para leer un valor analógico de un potenciómetro.

Para este ejemplo, necesita las siguientes piezas:

  • ESP32 DOIT DEVKIT V1 Junta (leer Mejor ESP32 placas de desarrollo)
  • Potenciómetro
  • Tarjeta
  • Puente de cables

puede utilizar los enlaces precedentes o ir directamente a MakerAdvisor.com/tools para encontrar todas las piezas para tus proyectos al mejor precio!

Esquema

Conecte un potenciómetro a su ESP32. El pasador central del potenciómetro debe conectarse a GPIO 34. Puede utilizar el siguiente diagrama esquemático como referencia.

Valor de lectura del potenciómetro ESP32 Arduino IDE

Código

Programaremos el ESP32 usando Arduino IDE, así que asegúrese de tener instalado el complemento ESP32 antes de continuar:

  • Instrucciones de Windows-Placa ESP32 en Arduino IDE
  • Instrucciones para Mac y Linux-Placa ESP32 en Arduino IDE

Abra su Arduino IDE y copie el siguiente código.

// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) const int potPin = 34;// variable for storing the potentiometer valueint potValue = 0;void setup() { Serial.begin(115200); delay(1000);}void loop() { // Reading potentiometer value potValue = analogRead(potPin); Serial.println(potValue); delay(500);}

Ver código raw

Este código simplemente lee los valores del potenciómetro e imprime esos valores en el monitor en serie.

En el código, comienza definiendo el GPIO al que está conectado el potenciómetro. En este ejemplo, GPIO 34.

const int potPin = 34;

En setup(), inicialice una comunicación en serie a una velocidad de baudios de 115200.

Serial.begin(115200);

En el loop(), utilice la función analogRead()para leer la entrada analógica del potPin.

potValue = analogRead(potPin);

Finalmente, imprima los valores leídos desde el potenciómetro en el monitor en serie.

Serial.println(potValue);

Cargue el código proporcionado a su ESP32. Asegúrese de tener la placa y el puerto COM correctos seleccionados en el menú Herramientas.

Probando el ejemplo

Después de cargar el código y presionar el botón de reinicio ESP32, abra el monitor Serie a una velocidad de transmisión de 115200. Gire el potenciómetro y vea cómo cambian los valores.

Potenciómetro de lectura ESP32 analogRead

El valor máximo que obtendrás es 4095 y el valor mínimo es 0.

Potenciómetro de lectura ESP32 Monitor serial analógico leído Demostración Arduino IDE

Terminando

En este artículo has aprendido a leer entradas analógicas usando el ESP32 con el IDE Arduino. Resumen:

  • La placa DOIT ESP32 DEVKIT V1 (versión con 30 pines) tiene 15 pines ADC que puedes usar para leer entradas analógicas.
  • Estos pines tienen una resolución de 12 bits, lo que significa que puede obtener valores de 0 a 4095.
  • Para leer un valor en el IDE de Arduino, simplemente use la función analogRead ().
  • Los pines ESP32 ADC no tienen un comportamiento lineal. Probablemente no podrá distinguir entre 0 y 0,1 V, o entre 3,2 y 3,3 V. Debe tenerlo en cuenta al usar los pines ADC.

Esperamos que esta breve guía le resulte útil. Si desea obtener más información sobre el ESP32, inscríbase en nuestro curso: Aprenda ESP32 con Arduino IDE.

Otras guías de ESP32 que también te pueden gustar:

  • Pantalla OLED ESP32 con Arduino IDE
  • ESP32 con sensor de temperatura y humedad DHT utilizando Arduino IDE
  • Servidor Web ESP32 con lecturas DHT
  • 20 + Proyectos y tutoriales ESP32

Gracias por leer.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Previous post How Ian McKellen Almost Didn’t Play Gandalf
Next post Especialistas Ortopédicos de Capital – Lanham