Tabla de contenido
resumen
En esta guía, aprenderá a usar Módulo ADC ADS1115 de 16 bits Y Arduino. La placa de conexión ADS1115 es de 16 bits Convertidores de analógico a digital (ADC) Se puede utilizar con Arduino, ESP8266/32, STM32 u otros microcontroladores.
La placa Arduino incorpora un ADC de 10 bits con funcionalidad algo limitada. El AD1115 Resolución ADC de 16 bitsEsto significa que el voltaje mínimo que el Arduino puede medir es 5V / 1024 = 0.0049V (o 4,9 mV)Por otro lado, el voltaje mínimo que puede medir el ADS1115 es 5V / 65536 = 0.000076V (76uV)Por lo tanto, en comparación con el ADC de Arduino, el ADS1115 puede medir una amplia gama de voltajes.
Lista de materiales
Para obtener más información sobre el módulo ADC, necesita los siguientes componentes:
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.
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.
- 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.
A continuación se muestra un diagrama funcional del chip ADS1115.
En primer lugar, el multiplexor selecciona la señal de entrada. La señal seleccionada se alimenta a un amplificador de ganancia programable (PGA). El PGA se puede programar para amplificar pequeñas señales antes de la conversión.
La entrada se convierte mediante un convertidor delta-sigma de 16 bits. El convertidor mide la señal de entrada utilizando su propia referencia de voltaje interno y oscilador en chip. Finalmente, el resultado de la conversión entrará en la interfaz I2C. El comparador también notifica a la interfaz externa que el resultado está listo para su obtención.
Conexión típica ADS1115
La conexión I2C del principio ADS1115 se muestra en la siguiente figura.
El ADS1115 interactúa directamente con los controladores I2C de modo estándar, modo de alta velocidad y modo de alta velocidad. Todos los periféricos I2C del microcontrolador, incluidos los periféricos I2C de solo maestro y de un solo maestro, funcionan con el ADS1115.
Para obtener más información, consulte Hoja de datos de ADS1115
Módulo ADS1115 o placa de conexión
El ADS1115 se suministra con paquetes X2QFN y VSSOP, que no se pueden utilizar para la creación de prototipos. Por lo tanto, para usar con Arduino u otros microcontroladores, necesita un módulo ADS1115 o una placa de conexión.
Estos módulos están ampliamente disponibles de diferentes fabricantes y son muy económicos. Es fácil de usar para placas de pruebas y fácil de usar en aplicaciones de creación de prototipos y pruebas.
Pines del módulo ADS1115
El número total de módulos ADS1115 es de 10 pines.
Anclar. No. | Nombre del PIN | Descripción del Pin |
1 | VDD | Fuente de alimentación: 2.0V-5.5V |
2 | Teletipo | tierra |
3 | Teletipo | Entrada de reloj serie: datos de reloj en SDA (utilizados para la comunicación I2C) |
4 | Teletipo | Datos en serie: Enviar y recibir datos (utilizados para la comunicación I2C) |
5 | Adol | Selección de dirección I2C (esclavo) |
6 | Alerta/RDY | Salida de comparador digital o soporte de conversión |
7 | AIN0 | Canal diferencial 1: entrada de canal 1 de un solo extremo o entrada negativa |
8 | Ain 1 | Canal diferencial 1: entrada de canal 2 de un solo extremo o entrada negativa |
9 | Ain 2 | Canal diferencial 2: entrada de canal 3 de un solo extremo o entrada positiva |
10 | Ain 3 | Canal diferencial 2: entrada de canal 4 de un solo extremo o entrada negativa |
Esquema del módulo ADS1115.
El esquema anterior es una versión de Adafruit en el módulo ADS1115.
Sigue la conexión típica del chip ADS1115. Una resistencia pull-up de 10K ohmios está conectada al I2C y a los pines de alerta. Se instala un condensador de 1uF entre el pin VDD y GND que actúa como un condensador de desacoplamiento.
Módulo ADS1115 e interfaz Arduino
El diagrama de cableado para conectar el módulo ADC ADS1115 con el Arduino es muy simple.
Conecte los pines VDD y GND del módulo a los pines Arduino 5V y GND. Del mismo modo, conecte el pin ADS1115 I2C (SDA y SCL) al pin I2C (SDA y SCL) del Arduino. El pin ADDR del chip se tira hacia tierra por una resistencia de 10K. Esto significa que está conectado a GND de forma predeterminada.
La dirección I2C predeterminada para el ADS1115 es 0x48. Para utilizar 0x49, 0x4A o 0x4B de direcciones, los pines ADDR se pueden conectar a VDD, SDA o SCL, respectivamente.
Los pines ALERT/READY del módulo ADS1115 también permanecen desconectados. Para usar este pin, debe estar conectado a un pin digital Arduino. Este pin tiene dos usos. En primer lugar, se puede utilizar para la conversión impulsada por interrupciones y sirve como una señal 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.
A0, A1, A2 y A3 son las cuatro salidas ADC del sensor. Esto significa que se pueden conectar 4 sensores analógicos a este módulo. En este ejemplo, puede utilizar un potenciómetro para probar las lecturas del módulo. Por lo tanto, conecte el potenciómetro de acuerdo con el esquema anterior.
Instalación de la biblioteca ADS1115 Arduino
El módulo ADS1115 tiene varias bibliotecas. Mientras navega por el Administrador de bibliotecas, obtiene una biblioteca de otro desarrollador.
De todas las bibliotecas disponibles, puede intentar usar una de las bibliotecas estables para su aplicación. La biblioteca es LobtilatLa biblioteca también se puede descargar desde el siguiente enlace:.
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 ejemplos ADS1115 para probar el funcionamiento del sensor.
Copie el siguiente código y cárguelo en su nanoplaca Arduino.
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 | #include “ADS1X15.h” ADS1115 anuncio(0x48); No válido arreglo() { serial.empezar(115200); serial.Printrung(__Archivo__); serial.Impresión(“ADS1X15_LIB_VERSION: “); serial.Printrung(ADS1X15_LIB_VERSION); anuncio.empezar(); } No válido bucle() { anuncio.Establecer ganancia(0); int16_t val_0 = anuncio.Leer ADC(0); int16_t val_1 = anuncio.Leer ADC(1); int16_t val_2 = anuncio.Leer ADC(2); int16_t val_3 = anuncio.Leer ADC(3); flotar f = anuncio.voltaje(2); Coeficiente de voltaje serial.Impresión(“\tanalog 0: “); serial.Impresión(val_0); serial.Impresión(‘\t’); serial.Printrung(val_0 * f, 3); serial.Impresión(“\t Analógico 1: “); serial.Impresión(val_1); serial.Impresión(‘\t’); serial.Printrung(val_1 * f, 3); serial.Impresión(“\t Analógico 2: “); serial.Impresión(val_2); serial.Impresión(‘\t’); serial.Printrung(val_2 * f, 3); serial.Impresión(“\t Analógico 3: “); serial.Impresión(val_3); serial.Impresión(‘\t’); serial.Printrung(val_3 * f, 3); serial.Printrung(); demorar(1000); } |
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.
El valor máximo de ADC observado es 25550 y el voltaje máximo es 4.779V.
Del mismo modo, el valor mínimo del ADC es cercano a 0 y el voltaje mínimo es 0 V.
Prueba de precisión del módulo ADS1115
A continuación, probemos la precisión del módulo ADC ADS1115. Para probar la precisión, puede usar una pantalla LCD que puede mostrar el valor ADC y el voltaje medido. A continuación, puede utilizar un multímetro para medir el voltaje detectado y compararlo con el voltaje en el monitor serie.
ADS1115, Arduino y diagrama de conexión LCD
Siga el esquema para conectar la pantalla LCD al circuito anterior.
Conecte SDA y SCL a A4 y A5 en Arduino. Proporciona conexiones VCC y GND de 5V a pantallas LCD utilizando los pines de 5V y GND de Arduino.
Código fuente/Programa
El código tiene s Biblioteca LCD I2C Para compilación. Luego puede copiar el siguiente código y cargarlo en su nanoplaca Arduino.
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 | #include “ADS1X15.h” #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C Pantalla de cristal líquido(0x27, 16, 2); ADS1115 anuncio(0x48); No válido arreglo() { serial.empezar(115200); serial.Printrung(__Archivo__); serial.Impresión(“ADS1X15_LIB_VERSION: “); serial.Printrung(ADS1X15_LIB_VERSION); Pantalla de cristal líquido.inicialización(); Pantalla de cristal líquido.Luz de fondo();
anuncio.empezar(); } No válido bucle() { anuncio.Establecer ganancia(0); int16_t val_0 = anuncio.Leer ADC(0); int16_t val_1 = anuncio.Leer ADC(1); int16_t val_2 = anuncio.Leer ADC(2); int16_t val_3 = anuncio.Leer ADC(3); flotar f = anuncio.voltaje(1); Coeficiente de voltaje serial.Impresión(“\tanalog 0: “); serial.Impresión(val_0); serial.Impresión(‘\t’); serial.Printrung(val_0 * f, 3); serial.Impresión(“\t Analógico 1: “); serial.Impresión(val_1); serial.Impresión(‘\t’); serial.Printrung(val_1 * f, 3); serial.Impresión(“\t Analógico 2: “); serial.Impresión(val_2); serial.Impresión(‘\t’); serial.Printrung(val_2 * f, 3); serial.Impresión(“\t Analógico 3: “); serial.Impresión(val_3); serial.Impresión(‘\t’); serial.Printrung(val_3 * f, 3); serial.Printrung(); Pantalla de cristal líquido.claro(); Pantalla de cristal líquido.Establecer cursor(0, 0); Pantalla de cristal líquido.Impresión(“ADC Val:”); Pantalla de cristal líquido.Impresión(val_0); Pantalla de cristal líquido.Establecer cursor(0, 1); Pantalla de cristal líquido.Impresión(“Voltaje:”); Pantalla de cristal líquido.Impresión(val_0 * f, 3); Pantalla de cristal líquido.Impresión(“V”); demorar(1000); } |
Resultados de las pruebas
Después de cargar el código, estará listo para probar el módulo. Para ello necesitarás un multímetro.
La pantalla LCD tiene Valor ADC Y Voltaje medido.
La pantalla LCD tiene 3,19 V Los multímetros, por otro lado, son 3.2V.
El voltaje de salida máximo del ADC del módulo es: 4,742 V Cuando se prueba con un multímetro, 4,72 V.
En algún lugar alrededor del valor ADC 427, el voltaje que se muestra en la pantalla LCD es 0.080V Multímetro 0,086 V.
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:
- ADS1115 y ESP32
- ADS1115 con Raspberry Pi Pico
- ADS1115 y ESP8266