ESP32 ADC: lea valores analógicos con Arduino IDE

¿Estás interesado en aprender cómo leer valores analógicos con el ESP32 ADC utilizando Arduino IDE? ¡Has llegado al lugar indicado! En este artículo, te mostraremos paso a paso cómo utilizar esta función para realizar mediciones precisas y aprovechar al máximo las capacidades de tu placa ESP32. ¡Sigue leyendo para descubrir todo lo que necesitas saber!

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

ESP32 ADC: lea valores analógicos con Arduino IDE

Leer entradas analógicas con el ESP32 es tan fácil como usar el lectura analógica (GPIO) Función que acepta como argumento el GPIO que deseas leer.

También tenemos otros tutoriales sobre el uso de pines analógicos con placas ESP:

  • ESP8266 ADC – Lectura de valores analógicos con Arduino IDE, MicroPython y Lua
  • Lecturas analógicas ESP32 con MicroPython

Ver el vídeo

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

Entradas analógicas (ADC)

Al leer un valor analógico con el ESP32, se pueden medir diferentes niveles de voltaje entre 0 V y 3,3 V.

Luego, al voltaje medido se le asigna un valor entre 0 y 4095, donde 0 V corresponde a 0 y 3,3 V corresponde a 4095. A cada tensión entre 0 V y 3,3 V se le asigna el valor intermedio correspondiente.

ESP32 ADC: lea valores analógicos con Arduino IDE

ADC no es lineal

Idealmente, uno esperaría un comportamiento lineal al usar los pines ESP32 ADC. Sin embargo, eso no sucede. Lo que obtiene es el comportamiento que se muestra en la siguiente tabla:

Este comportamiento significa que su ESP32 no puede diferenciar entre 3.3V y 3.2V. Obtienes el mismo valor para ambos voltajes: 4095.

Lo mismo sucede con valores de voltaje muy bajos: para 0V y 0.1V obtienes el mismo valor: 0. Esto es lo que debes tener en cuenta al usar los pines ESP32 ADC.

Hay una discusión sobre GitHub a este tema.

función analogRead()

Leer una entrada analógica con el ESP32 a través del IDE de Arduino es tan fácil como usar el lectura analógica() Función. Acepta como argumento el GPIO que deseas leer:

analogRead(GPIO);

El ESP32 admite mediciones en 18 canales diferentes. Sólo 15 de ellos están en DEVKIT V1 DOIT Placa (versión con 30 GPIO).

Tome la distribución de pines de su placa ESP32 y ubique los pines del ADC. Estos están resaltados con un borde rojo en la imagen de abajo.

ESP32 ADC: lea valores analógicos con Arduino IDE

Obtenga más información sobre los GPIO ESP32: Referencia de distribución de pines ESP32.

Estos pines de entrada analógica tienen una resolución de 12 bits. Esto significa que al leer una entrada analógica, su rango puede variar entre 0 y 4095.

Nota: Los pines ADC2 no se pueden utilizar cuando se utiliza Wi-Fi. Entonces, si está usando Wi-Fi y tiene problemas para obtener el valor de un GPIO ADC2, puede considerar usar un GPIO ADC1 en su lugar. Esto debería solucionar tu problema.

Otras funciones útiles

Existen otras funciones avanzadas para usar con los pines ADC que pueden resultar útiles en otros proyectos.

  • analogReadResolution(resolución): Ajusta los bits de muestra y la resolución. El valor puede estar entre 9 (0 – 511) y 12 bits (0 – 4095). La resolución predeterminada es de 12 bits.
  • analogSetWidth(ancho): Ajusta los bits de muestra y la resolución. El valor puede estar entre 9 (0 – 511) y 12 bits (0 – 4095). La resolución predeterminada es de 12 bits.
  • analogSetCycles(ciclos): establece el número de ciclos por muestra. El valor predeterminado es 8. Rango: 1 a 255.
  • analogSetSamples(Ejemplos): establece el número de muestras en el rango. El valor predeterminado es 1 muestra. Esto aumenta la sensibilidad.
  • analogSetClockDiv(atenuación): Establece el divisor para el reloj ADC. El valor predeterminado es 1. Rango: 1 a 255.
  • analogSetAttenuation(atenuación): establece la atenuación de entrada para todos los pines del ADC. El estándar es ADC_11db. Valores aceptados:
    • ADC_0db: no establece ninguna amortiguación. El ADC puede medir hasta aproximadamente 800 mV (entrada de 1 V = valor ADC de 1088).
    • ADC_2_5dB: El voltaje de entrada del ADC se atenúa, ampliando el rango de medición hasta aproximadamente 1100 mV. (Entrada de 1 V = valor ADC de 3722).
    • ADC_6db: El voltaje de entrada del ADC se atenúa, ampliando el rango de medición hasta aproximadamente 1350 mV. (Entrada de 1 V = valor ADC de 3033).
    • ADC_11db: El voltaje de entrada del ADC se atenúa, ampliando el rango de medición hasta aproximadamente 2600 mV. (Entrada de 1 V = valor 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 que la función anterior.
  • adcAttachPin(pin): Conecte un pin al ADC (también borra cualquier otro modo analógico que pueda estar habilitado). Devuelve el resultado VERDADERO o FALSO.
  • adcInicio(pin), adcOcupado(pin) Y resultadodcEnd(pluma): inicia una conversión ADC en el bus del pin conectado. Compruebe si la conversión se está ejecutando actualmente en el bus ADC del pin (devuelve VERDADERO o FALSO). Obtener el resultado de la conversión: devuelve un entero de 16 bits.

Hay un vídeo muy bueno que explica estas características que mira aquí.

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

Para ver cómo funciona todo, hagamos un ejemplo sencillo de lectura de un valor analógico de un potenciómetro.

Para este ejemplo necesitarás las siguientes piezas:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32 ADC: lea valores analógicos con Arduino IDE

Esquema

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

ESP32 ADC: lea valores analógicos con Arduino IDE

código

Programaremos el ESP32 usando Arduino IDE. Por lo tanto, asegúrese de tener instalado el complemento ESP32 antes de continuar:

  • ventanas Instrucciones – Placa ESP32 en Arduino IDE
  • mac y linux Instrucciones – Placa ESP32 en Arduino IDE

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

// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) 
const int potPin = 34;

// variable for storing the potentiometer value
int 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 sin formato

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

En el código, primero define el GPIO al que está conectado el potenciómetro. En este ejemplo GPIO34.

const int potPin = 34;

En el configuración()Inicialice una comunicación en serie con una velocidad de baudios de 115200.

Serial.begin(115200);

En el Cinta()Utilizar el lectura analógica()Función para leer la entrada analógica de alfiler.

potValue = analogRead(potPin);

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

Serial.println(potValue);

Cargue el código proporcionado a su ESP32. Asegúrese de haber seleccionado la placa y el puerto COM correctos 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 en serie con una velocidad de baudios de 115200. Gire el potenciómetro y observe cómo cambian los valores.

ESP32 ADC: lea valores analógicos con Arduino IDE

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

ESP32 ADC: lea valores analógicos con Arduino IDE

Envolver

En este artículo, aprendió a leer entradas analógicas usando ESP32 y Arduino IDE. Resumido:

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

Esperamos que esta guía rápida le resulte útil. Si quieres aprender más sobre ESP32, apúntate a nuestro curso: Aprende 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 con Arduino IDE
  • Servidor web ESP32 con lecturas DHT
  • Más de 20 proyectos y tutoriales de ESP32

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded




ESP32 ADC: Lee valores analógicos con Arduino IDE

ESP32 ADC: Lee valores analógicos con Arduino IDE

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

Preguntas frecuentes

  1. ¿Cómo se mide una entrada analógica con el ESP32?
  2. La medición de una entrada analógica con el ESP32 se realiza mediante la función analogRead(GPIO), que acepta como argumento el GPIO que deseas leer.

  3. ¿Qué otras funciones útiles se pueden utilizar con los pines ADC del ESP32?
  4. Existen otras funciones más avanzadas que se pueden utilizar con los pines ADC, como analogReadResolution(resolución), analogSetWidth(ancho), analogSetCycles(ciclos), analogSetSamples(muestras), analogSetClockDiv(divisor), analogSetAttenuation(ajuste de atenuación), entre otras. Estas funciones pueden ser útiles en diferentes proyectos.

  5. ¿Cómo se puede leer valores analógicos de un potenciómetro con ESP32?
  6. Para leer valores de un potenciómetro con ESP32, es necesario conectar el potenciómetro al ESP32 y utilizar la función analogRead(GPIO) para leer los valores analógicos. Se puede seguir un esquema de conexión y un código de ejemplo para lograrlo.

  7. ¿Por qué el comportamiento del ADC del ESP32 no es lineal?
  8. El comportamiento del ADC del ESP32 no es lineal, lo que significa que el ESP32 no puede distinguir entre ciertos voltajes cercanos. Por ejemplo, no podrá distinguir entre 3.2 V y 3.3 V, lo que llevará a obtener el mismo valor para ambos voltajes: 4095.

Para obtener más información sobre el ADC del ESP32 y cómo leer valores analógicos, se recomienda seguir los tutoriales y guías mencionados en este artículo. ¡Gracias por leer!


5 comentarios en «ESP32 ADC: lea valores analógicos con Arduino IDE»

Deja un comentario