¿Qué es?
El ADS1115 es un conversor analógico digital (ADC) externo que podemos conectar a un procesador como Arduino para darle una mejora a su medición de señales analógicas. Dando como resultado una medición más precisa.
Esto ya que el Arduino dispone de ADC internos en sus modelos Uno, Mini y Nano que empleamos cuando usamos las entradas analógicas dándonos solo 6 ADC de 10 bits.
Por otro lado el ADS1115 nos proporciona 4 ADC de 16 bits, 15 para la medición y un último para el signo. El ADS1115 se conecta por I2C, por lo que es sencillo realizar su conexión y su lectura. Dispone de 4 direcciones, que se elige mediante la conexión del pin ADDRESS.
La ventaja de emplear un ADC como el ADS1115 es obtener una mayor precisión, además de liberar de esta carga al procesador. Otra de las ventajas es que en ciertas configuraciones, es posible medir tensiones negativas.
También cuenta con un modo comparador en el que el ADS1115 genera una alerta por el pin ALERT cuando cualquiera de los canales supera un valor de umbral que fijamos por código.
Por último, el ADS1115 incorpora un PGA que permite ajustar la ganancia desde 6.144V a 0.256V. Esto permite obtener precisiones superiores cuando midamos tensiones inferiores a 5V.
IMPORTANTE: Independientemente del PGA elegido la máxima tensión que podemos medir será siempre la tensión de alimentación. Es decir, aunque el PGA sea 6.144V, no podremos medir tensiones superiores a 5V.
Como vemos, las características técnicas del ADS1115 son muy superiores a los ADC internos de Arduino. Por tanto, resultan adecuados cuando necesitemos mediciones de precisión, como en la lectura de sensores, o cuando la señal pueda tomar valores negativos, como en los sensores de intensidad o tensión.
Diagrama de conexión
Al ser una conexión por I2C la conexión se puede realizar rápida y sencillamente. Por un lado, alimentamos el módulo desde Arduino mediante GND y 5V y conectamos el pin SDA y SCL de Arduino con los pines correspondientes del sensor.
Para la conexión single end, simplemente conectamos la carga a medir entre GND y uno de los 4 pines disponibles.
Mientras que, en ambos casos, la conexión vista desde el lado de Arduino quedaría así.
¡La conexión de SDA en el pin A4 y SCL en el pi 5 solo aplica para los modelos uno, nano y mini pro. Para otros modelos consultar el esquema correspondiente!
Ejemplos de código
El siguiente código servirá para realizar una prueba rápida de funcionamiento del módulo y conocer a grandes rasgos el funcionamiento de este.
Antes de iniciar con las pruebas es importante antes instalar la librería para utilizar este modulo con Arduino. La librería la podrán encontrar en el siguiente link: https://github.com/adafruit/Adafruit_ADS1X15
Una vez tengamos la librería instalada deberemos realizar las siguientes conexiones:
Una vez tengamos nuestras conexiones realizadas y la librería instalada podremos utilizar el siguiente código en nuestro ide de arduino
//Rantec
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1115 ads;
const float multiplier=0.1875F; //Conversion de voltaje del adc
float v0=0.0;
void lectura_volts(void);
void impresion_datos(void);
void setup()
{
Serial.begin(115200);
Wire.begin();
ads.setGain(GAIN_TWOTHIRDS);
ads.begin();
}
void loop()
{
lectura_volts();
impresion_datos();
delay(300);
}
void impresion_datos()
{
Serial.print("VOLTAJE: ");
Serial.println(v0);
}
void lectura_volts()
{
int16_t adc0;
adc0=ads.readADC_SingleEnded(0);
v0=(adc0*multiplier);
v0=v0/1000;
}
Este código es muy básico pero funcional para realizar la prueba de funcionamiento. Una vez tengamos cargado el sketch abriremos nuestro monitor serial configurado a 115 200 baudios.
En el monitor veremos reflejado el valor del voltaje, mismo que al girar el potenciómetro debe cambiar y verse reflejado el cambio en el monitor serial. Con esto estaremos validando que los datos están siendo leídos y convertidos de la forma correcta. Es decir el módulo funciona.
Nota:
Esta prueba no exige el máximo de su potencial al modulo. El acreedor se encuentra en su total libertad de experimentar para descubrir el potencial y la precisión del modulo. Únicamente debe tener lo siguiente en cuenta para conocer los limites:
Con el ADC del Arduino de 10 bits se pueden medir voltajes de 4,8828 mili voltios (5 voltios dividido entre 2 elevado a 10). Con un ADC de 16 bits se podrían medir voltajes mucho más pequeños, de 76,2939 micro voltios (5 voltios dividido entre 2 elevado a 15). En el ejemplo se muestra hasta centésimas de voltio esto ya que se dividió entre 1000 para obtener volts, caso en el que se pierden cifras significativas si se busca aun mas precisión.