Close Menu
    Facebook X (Twitter) Instagram
    Facebook YouTube LinkedIn
    Industry SurferIndustry Surfer
    Inicio - Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32
    Cursos

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    12 Mins Read Cursos
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32
    Share
    Facebook Twitter LinkedIn Pinterest Email


    Tabla de contenido

    • resumen
    • Lista de materiales
    • Pines y precisión del ADC ESP32
    • Chip ADS1115
      • Características de ADS1115
      • Configuración de pines ADS1115
      • Diagrama de bloques funcionales ADS1115.
      • Conexión típica ADS1115
    • Módulo ADS1115 o placa de conexión
      • Pines del módulo ADS1115
      • Esquema del módulo ADS1115.
    • Módulo ADS1115 e interfaz ESP32
    • Instalación de la biblioteca ADS1115
    • Código fuente/programa básico
    • Prueba de precisión del módulo ADS1115
      • ADS1115, ESP32, Diagrama de conexión LCD
      • Código fuente/Programa
      • Resultados de las pruebas
    • Video Tutorial y Guía

    resumen

    En este tutorial, ADS1115 Módulo ADC de 16 bits ESP32. La placa de conexión ADS1115 tiene alta resolución Convertidores de analógico a digital (ADC) Se puede utilizar con varios microcontroladores como Arduino, STM32, ESP8266/32, etc. Especialmente ESP32 es un potente microcontrolador con capacidades integradas de Wi-Fi y Bluetooth, ideal para aplicaciones de IoT.

    ESP32 tiene incorporado ADC de 12 bitsOfrece una resolución más alta que los ADC de 10 bits que se encuentran en las placas Arduino. Sin embargo, el ADS1115 cuenta con una resolución aún mayor 16 bits, proporcionando un excelente rendimiento en términos de medición de voltaje. El voltaje mínimo que puede medir el ESP32 es 3,3 V / 4096 = 0,0008 V (o 0,8 mV)El ADS1115 puede medir en menos de 1 μA. 5V / 65536 = 0,000076V (76uV)Esto hace que el ADS1115 sea ideal cuando se requieren mediciones de voltaje precisas.

    La siguiente sección de este tutorial proporciona instrucciones paso a paso para conectar el ADS1115 al ESP32, configurar la comunicación I2C y escribir código para leer y procesar señales analógicas utilizando el IDE de Arduino. Después de leer esta guía, tendrá una sólida comprensión de cómo interconectar el módulo ADC ADS1115 de 16 bits con el ESP32 y aprovechar todo su potencial.


    Lista de materiales

    Se requieren factores posteriores para comprender completamente cuándo se utiliza el módulo ADC ADS1115 con el ESP32.


    Pines y precisión del ADC ESP32

    El ESP32 es un potente microcontrolador con funciones integradas de Wi-Fi y Bluetooth. Tiene múltiples pines convertidores analógicos a digitales (ADC) que se pueden usar para medir señales analógicas y convertirlas a valores digitales. El ESP32 tiene dos ADC, ADC1 y ADC2, para un total de 18 canales ADC disponibles.

    • ADC1 tiene 8 canales (GPIO32 a GPIO39)
    • ADC2 tiene 10 canales (GPIO0, GPIO2, GPIO4, GPIO12 a GPIO15 y GPIO25 a GPIO27).

    precisión: El ADC ESP32 tiene una resolución de 12 bits y puede utilizar 4096 niveles discretos para representar señales analógicas. Sin embargo, debido al ruido interno y las características no lineales, la resolución efectiva suele ser de alrededor de 10-11 bits.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    Para mejorar la precisión de las lecturas de ADC del ESP32, puede:

    1. Utilice el sensor Hall incorporado para la calibración.
    2. Implemente el sobremuestreo y el promedio para reducir el ruido.
    3. Para una mayor estabilidad, utilice una referencia de voltaje externa.
    4. Si se requiere una mayor precisión, considere la posibilidad de utilizar un módulo ADC externo como el ADS1115.

    El canal ADC2 se comparte con la funcionalidad Wi-Fi, por lo que si está utilizando Wi-Fi, se recomienda utilizar el canal ADC1 para evitar posibles conflictos o interferencias con las lecturas del ADC.


    Chip ADS1115

    El ADS1115 es un CI de conversión de analógico a digital de precisión, bajo consumo, de 16 bits, compatible con I2C.

    ADS1115


    Características de ADS1115

    • Resolución de 16 bits
    • Entrada de un solo extremo de 4 canales o entrada diferencial de 2 canales
    • Yo2Protocolo C interfaz
    • Comparador programable
    • Amplio rango de tensión de alimentación
    • Bajo consumo de corriente
    • Modo de conversión continua
    • Velocidad de datos programable
    • Comparador programable
    • Asentamiento de ciclo único
    • Referencia interna de voltaje de baja deriva
    • Oscilador interno
    • Amplio rango de temperatura de funcionamiento
    • Disponible en paquete X2QFN ultrapequeño

    Configuración de pines ADS1115

    La siguiente figura muestra la configuración del pin del chip ADS1115.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    • El pin 1 es el pin ADDR que selecciona la dirección I2C del chip.
    • El pin 2 es un pin de alerta/listo que actúa como una señal de alerta y lista para datos.
    • El pin 3 es el terminal GND.
    • Los pines 4, 5, 6 y 7 son los cuatro pines de entrada ADC. Estos pines se pueden utilizar como cuatro entradas de un solo extremo o dos entradas diferenciales.
    • El pin 8 es un pin de suministro positivo que acepta de 2.0V a 5.5V.
    • Los pines 9 y 10 son los pines de interfaz I2C, SDA y SCL, respectivamente.

    Diagrama de bloques funcionales ADS1115.

    El diagrama de características del chip ADS1115 se muestra a continuación.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    En primer lugar, el multiplexor selecciona la señal de entrada al. Esta señal seleccionada entra en un amplificador de ganancia programable (PGA) y se puede programar para amplificar señales pequeñas antes de que se produzca la conversión.

    Un convertidor delta-sigma de 16 bits procesa la entrada. El convertidor incluye su propia referencia de voltaje y oscilador para la medición de la señal de entrada. Cuando se completa la conversión, los datos resultantes se envían a la interfaz I2C. Además, el comparador genera una señal para la interfaz externa, lo que indica que el resultado convertido se puede buscar.


    Conexión típica ADS1115

    La conexión I2C principal para el ADS1115 se muestra en la siguiente figura.

    Conexión típica ADS1115

    El ADS1115 es compatible y puede interactuar directamente con controladores I2C de modo estándar, modo de alta velocidad y alta velocidad. El ADS1115 funciona con cualquier periférico I2C de microcontrolador, incluidos los periféricos I2C solo maestro y maestro único.

    Para obtener más información, consulte Hoja de datos de ADS1115


    Módulo ADS1115 o placa de conexión

    El ADS1115 está disponible en paquetes X2QFN y VSSOP, pero no es adecuado para la creación de prototipos. Por lo tanto, para su uso con ESP32 u otros microcontroladores, se requiere un módulo ADS1115 o una placa de conexión.

    Módulo ADS1115

    Estos módulos pueden ser encontrados por diferentes fabricantes a precios asequibles. El diseño amigable con la placa de pruebas lo hace ideal para aplicaciones de creación de prototipos y pruebas y se integra fácilmente.


    Pines del módulo ADS1115

    El número total de módulos ADS1115 es de 10 pines.

    Anclar. No.Nombre del PINDescripción del Pin
    1VDDFuente de alimentación: 2.0V-5.5V
    2Teletipotierra
    3TeletipoEntrada de reloj serie: datos de reloj en SDA (utilizados para la comunicación I2C)
    4TeletipoDatos en serie: Enviar y recibir datos (utilizados para la comunicación I2C)
    5AdolSelección de dirección I2C (esclavo)
    6Alerta/RDYSalida de comparador digital o soporte de conversión
    7AIN0Canal diferencial 1: entrada de canal 1 de un solo extremo o entrada negativa
    8Ain 1Canal diferencial 1: entrada de canal 2 de un solo extremo o entrada negativa
    9Ain 2Canal diferencial 2: entrada de canal 3 de un solo extremo o entrada positiva
    10Ain 3Canal diferencial 2: entrada de canal 4 de un solo extremo o entrada negativa

    Esquema del módulo ADS1115.

    La figura anterior muestra la adaptación de Adafruit del módulo ADS1115.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    Este diseño se ajusta al protocolo de conexión estándar del chip ADS1115. Tanto los pines I2C como Alert tienen resistencias pull-up de 10K ohmios, y el VDD yHay un condensador de 1uF entre los pines GND que actúa como un condensador de desacoplamiento.


    Módulo ADS1115 e interfaz ESP32

    El diagrama de cableado ESP32 para interactuar con el módulo ADC ADS1115 es sencillo.

    Módulo ADS1115 e interfaz ESP32

    Primero, conecte los pines VDD y GND del módulo a los pines 3.3V y GND del ESP32, respectivamente. A continuación, conecte los pines I2C (SDA y SCL) del ADS1115 a los pines I2C (SDA=GPIO21 y SCL=GPIO22) del ESP32. El pin ADDR del chip debe estar conectado a VDD, SDA o SCL, dependiendo de la dirección 0x49, 0x4A o 0x4B utilizada. Tenga en cuenta que el pin ADDR se tira hacia abajo a tierra por una resistencia de 10K de forma predeterminada.

    Si se utiliza el pin ALERT/READY del módulo ADS1115, debe estar conectado al pin digital ESP32. Este pin tiene dos usos. En primer lugar, se puede utilizar para conversiones impulsadas por interrupciones que actúan como señales de datos READY. A continuación, se puede utilizar con un comparador de salida programable para detectar el umbral de conversión. En este caso, actúa como una señal de alerta.

    El ADS1115 tiene cuatro salidas ADC, A0, A1, A2 y A3, y se pueden conectar hasta cuatro sensores analógicos al módulo. Por ejemplo, para probar las lecturas de un módulo, puede usar un potenciómetro que debe conectarse de acuerdo con el esquema anterior.


    Instalación de la biblioteca ADS1115

    El módulo ADS1115 tiene varias bibliotecas. Mientras navega por el Administrador de bibliotecas, obtiene una biblioteca de otro desarrollador.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    e de todas las librerías disponibles y librerías estables para nuestra aplicación. La biblioteca es AdafruitTambién puede descargar la biblioteca desde el siguiente enlace:

    Descargar: Biblioteca ADS1X15
    La biblioteca proporciona la capacidad de establecer la velocidad de reloj I2C, la ganancia programable, el modo de funcionamiento y la velocidad de datos. Esta biblioteca se puede utilizar para leer datos ADC del sensor en modo único, diferencial y continuo.


    Código fuente/programa básico

    Puede utilizar el código de ejemplo básico de la carpeta de muestras ADS1115 de Adafruit para probar el funcionamiento del sensor.

    Copie el código siguiente y cárguelo en la placa ESP32.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    #include <Adafruit_ADS1X15.h>

    Adafruit_ADS1115 anuncio; /* Uso para la versión de 16 bits */

    Adafruit_ADS1015 publicidad;    /* Utilice esto para la versión de 12 bits */

    No válido arreglo(No válido)

    {

    serial.empezar(115200);

    serial.Printrung(“Obtenga una lectura de un solo extremo de AIN0.3”);

    serial.Printrung(“Rango de ADC: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)”);

    El rango de entrada (o ganancia) del ADC se puede cambiar de la siguiente manera:

    Funciona, pero tenga cuidado de no exceder VDD + 0.3V máximo.

    Si ajusta el rango de entrada, ¡superará los límites superior e inferior!

    Establecer estos valores incorrectamente puede dañar el ADC.

    ADS1015 ADS1115

    //                                                                ——-  ——-

    ads.setGain(GAIN_TWOTHIRDS); 2/3x ganancia +/- 6.144V 1 bit = 3mV 0.1875mV (predeterminado)

    ads.setGain(GAIN_ONE);       1x Ganancia +/- 4.096V 1 bit = 2 mV 0.125 mV

    ads.setGain(GAIN_TWO);       2x ganancia +/- 2.048V 1 bit = 1 mV 0.0625 mV

    ads.setGain(GAIN_FOUR);      4x ganancia +/- 1.024V 1 bit = 0.5mV 0.03125mV

    ads.setGain(GAIN_EIGHT);     8x ganancia +/- 0.512V 1 bit = 0.25mV 0.015625mV

    ads.setGain(GAIN_SIXTEEN);   16x ganancia +/- 0.256V 1 bit = 0.125mV 0.0078125mV

    Si (!anuncio.empezar())

    {

    serial.Printrung(“Error de inicialización de ADS”.);

    mientras (1);

    }

    }

    No válido bucle(No válido)

    {

    int16_t ADC0, ADC1, ADC2, ADC3;

    flotar Voltio 0, Perno 1, Perno 2, Perno 3;

    ADC0 = anuncio.readADC_SingleEnded(0);

    ADC1 = anuncio.readADC_SingleEnded(1);

    ADC2 = anuncio.readADC_SingleEnded(2);

    ADC3 = anuncio.readADC_SingleEnded(3);

    Voltio 0 = anuncio.Perno de cómputo(ADC0);

    Perno 1 = anuncio.Perno de cómputo(ADC1);

    Perno 2 = anuncio.Perno de cómputo(ADC2);

    Perno 3 = anuncio.Perno de cómputo(ADC3);

    serial.Printrung(“———————————————————–“);

    serial.Impresión(“AIN0: “); serial.Impresión(ADC0); serial.Impresión(”  “); serial.Impresión(Voltio 0); serial.Printrung(“V”);

    serial.Impresión(“AIN1: “); serial.Impresión(ADC1); serial.Impresión(”  “); serial.Impresión(Perno 1); serial.Printrung(“V”);

    serial.Impresión(“AIN2: “); serial.Impresión(ADC2); serial.Impresión(”  “); serial.Impresión(Perno 2); serial.Printrung(“V”);

    serial.Impresión(“AIN3: “); serial.Impresión(ADC3); serial.Impresión(”  “); serial.Impresión(Perno 3); serial.Printrung(“V”);

    }

    Después de cargar el código, abra el monitor serie. El monitor serie muestra los valores ADC y los voltajes de salida de las cuatro salidas, AIN0, AIN1, AIN2 y AIN3.

    Salida ESP32 ADS1115

    Dado que solo se utilizan dos potenciómetros para AIN0 y AIN1, estos valores cambian a medida que se giran los potenciómetros.


    Prueba de precisión del módulo ADS1115

    A continuación, evalúe la precisión del módulo ADC ADS1115. Para evaluar su precisión, la pantalla LCD se puede utilizar para mostrar el valor ADC y el voltaje medido. Después de eso, puede usar un multímetro para medir el voltaje detectado y compararlo con el voltaje que se muestra en el monitor serie.


    ADS1115, ESP32, Diagrama de conexión LCD

    Siga el esquema para conectar la pantalla LCD al circuito anterior.

    ADS1115, ESP32, Diagrama de conexión LCD

    Conecte el LCD SDA & SCL PIN a GPIO21. GPIO32 para ESP22. Utilice los pines Vin y GND del ESP32 para proporcionar conexiones VCC y GND de 5 V para pantallas LCD.

    ESP32 ADS1115 Pantalla LCD


    Código fuente/Programa

    El código contiene Biblioteca LCD I2C Para compilación. A continuación, puede copiar el siguiente código y cargarlo en la placa ESP32.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    #include <Adafruit_ADS1X15.h>

    #include <LiquidCrystal_I2C.h>

    LiquidCrystal_I2C Pantalla de cristal líquido(0x27, 16, 2);

    Adafruit_ADS1115 anuncio; /* Uso para la versión de 16 bits */

    Adafruit_ADS1015 publicidad;    /* Utilice esto para la versión de 12 bits */

    No válido arreglo(No válido)

    {

    serial.empezar(115200);

    serial.Printrung(“Obtenga una lectura de un solo extremo de AIN0.3”);

    serial.Printrung(“Rango de ADC: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)”);

    El rango de entrada (o ganancia) del ADC se puede cambiar de la siguiente manera:

    Funciona, pero tenga cuidado de no exceder VDD + 0.3V máximo.

    Si ajusta el rango de entrada, ¡superará los límites superior e inferior!

    Establecer estos valores incorrectamente puede dañar el ADC.

    ADS1015 ADS1115

    //                                                                ——-  ——-

    ads.setGain(GAIN_TWOTHIRDS); 2/3x ganancia +/- 6.144V 1 bit = 3mV 0.1875mV (predeterminado)

    ads.setGain(GAIN_ONE);       1x Ganancia +/- 4.096V 1 bit = 2 mV 0.125 mV

    ads.setGain(GAIN_TWO);       2x ganancia +/- 2.048V 1 bit = 1 mV 0.0625 mV

    ads.setGain(GAIN_FOUR);      4x ganancia +/- 1.024V 1 bit = 0.5mV 0.03125mV

    ads.setGain(GAIN_EIGHT);     8x ganancia +/- 0.512V 1 bit = 0.25mV 0.015625mV

    ads.setGain(GAIN_SIXTEEN);   16x ganancia +/- 0.256V 1 bit = 0.125mV 0.0078125mV

    Pantalla de cristal líquido.inicialización();

    Pantalla de cristal líquido.Luz de fondo();

    Si (!anuncio.empezar())

    {

    serial.Printrung(“Error de inicialización de ADS”.);

    mientras (1);

    }

    }

    No válido bucle(No válido)

    {

    int16_t ADC0, ADC1, ADC2, ADC3;

    flotar Voltio 0, Perno 1, Perno 2, Perno 3;

    ADC0 = anuncio.readADC_SingleEnded(0);

    ADC1 = anuncio.readADC_SingleEnded(1);

    ADC2 = anuncio.readADC_SingleEnded(2);

    ADC3 = anuncio.readADC_SingleEnded(3);

    Voltio 0 = anuncio.Perno de cómputo(ADC0);

    Perno 1 = anuncio.Perno de cómputo(ADC1);

    Perno 2 = anuncio.Perno de cómputo(ADC2);

    Perno 3 = anuncio.Perno de cómputo(ADC3);

    serial.Printrung(“———————————————————–“);

    serial.Impresión(“AIN0: “); serial.Impresión(ADC0); serial.Impresión(”  “); serial.Impresión(Voltio 0); serial.Printrung(“V”);

    serial.Impresión(“AIN1: “); serial.Impresión(ADC1); serial.Impresión(”  “); serial.Impresión(Perno 1); serial.Printrung(“V”);

    serial.Impresión(“AIN2: “); serial.Impresión(ADC2); serial.Impresión(”  “); serial.Impresión(Perno 2); serial.Printrung(“V”);

    serial.Impresión(“AIN3: “); serial.Impresión(ADC3); serial.Impresión(”  “); serial.Impresión(Perno 3); serial.Printrung(“V”);

    Pantalla de cristal líquido.claro();

    Pantalla de cristal líquido.Establecer cursor(0, 0);

    Pantalla de cristal líquido.Impresión(“ADC0:”);

    Pantalla de cristal líquido.Impresión(ADC0);

    Pantalla de cristal líquido.Impresión(”  “);

    Pantalla de cristal líquido.Impresión(Voltio 0);

    Pantalla de cristal líquido.Impresión(“V”);

    Pantalla de cristal líquido.Establecer cursor(0, 1);

    Pantalla de cristal líquido.Impresión(“ADC1:”);

    Pantalla de cristal líquido.Impresión(ADC1);

    Pantalla de cristal líquido.Impresión(”  “);

    Pantalla de cristal líquido.Impresión(Perno 1);

    Pantalla de cristal líquido.Impresión(“V”);

    demorar(1000);

    }


    Resultados de las pruebas

    Después de cargar el código, el módulo está listo para probar. Para este propósito necesitarás un multímetro.

    La pantalla LCD tiene Valor ADC Y Voltaje medido.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    Se utilizan dos potenciómetros para introducir el voltaje ADC y ambos se muestran en la pantalla LCD. Uno de los voltajes medidos indicados por el multímetro es 3.28V, y en la pantalla LCD muestra 3.31V.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    El voltaje de salida máximo del ADC del módulo es: 3,3 V El valor mínimo es 0V.

    Al medir el voltaje más bajo, el 0.84V en la pantalla LCD se midió como 0.827V con un multímetro.

    Cómo utilizar el módulo ADC de 16 bits ADS1115 con ESP32

    Por lo tanto, podemos concluir que el módulo ADC ADS1115 de 16 bits tiene una alta precisión y se puede utilizar para aplicaciones versátiles.

    Según otras pruebas, este dispositivo se declara 0.01% de precisión Pero tiene Máxima precisión de 0.15%Esta precisión incluye todas las fuentes de error, como: Referencia de voltaje, error de ganancia, compensaciónY ruido.


    Video Tutorial y Guía

    ADS1115 16-bit A/D Converter: Tutorial detallado usando Arduino, ESP8266 y ESP32

    El mismo módulo ADS1115 también se puede utilizar con otros microcontroladores, incluyendo:

    1. ADS1115 y Arduino
    2. ADS1115 con Raspberry Pi Pico
    3. ADS1115 y ESP8266

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

    Entradas relacionadas

    circuito capacitivo de ca

    circuito inductivo ca

    ¿Cómo probar un diodo? Uso de multímetros analógicos y digitales (DMM)

    Entradas recientes
    ¿Qué es el campo magnético y cómo funciona?
    circuito capacitivo de ca
    circuito inductivo ca
    ¿Cómo probar un diodo? Uso de multímetros analógicos y digitales (DMM)
    Noticias industrial
    ¿Qué es el campo magnético y cómo funciona?
    circuito capacitivo de ca
    circuito inductivo ca
    ¿Cómo probar un diodo? Uso de multímetros analógicos y digitales (DMM)
    Facebook YouTube LinkedIn
    © 2025 Hecho con ♥ desde México

    Type above and press Enter to search. Press Esc to cancel.

    Ir a la versión móvil