¿Qué es un INA219?
El INA219 es un sensor fabricado por Texas Instruments que permite realizar medidas de tensión, intensidad y potencia en circuitos electrónicos.
El INA219 puede medir tensiones de 0V a 26V, pudiendo elegir entre dos escalas de 16V y 32V, con una precisión máxima de ±0.5.
La ganancia de la medición corriente es ajustable por software, lo que influye en el rango y precisión que podemos obtener. Al mínimo, puede medir corrientes de hasta ±3.2A con una precisión de 0.8mA. Al máximo, un rango de ±400mA con precisión de 0.1mA.
La alimentación del módulo es compatible con 3V3 y 5V. La comunicación se realiza a través de I2C, por lo que es muy sencillo conectarlo a un procesador como Arduino.
El INA219 es una muy buena opción para realizar mediciones eléctricas, ya que realiza la medición simultánea de intensidad, tensión y potencia eléctrica.
Precio
El INA219 es un sensor con muy buena relación de prestaciones respecto a precio. Podemos encontrarlo por 1.60€ en vendedores internacionales de Ebay y Aliexpress.
¿Cómo funciona un INA219?
El INA219 está formado por una resistencia de shunt, un amplificador de ganancia variable y un conversor analógico digital de 12 bits.
El ADC realiza la medición tanto la tensión del bus, como de alimentación de la carga, y la caída de tensión en la resistencia shunt originada por la corriente de la carga. Con ello, el INA219 puede calcular la potencia eléctrica consumida por la carga, como la multiplicación de la tensión e intensidad medidas.
La tensión máxima que puede medirse en la resistencia de shunt es de 40mV. Por defecto, el módulo lleva incorpora una resistencia de 0.1 Ohm. Esto, combinado con el ADC de 12 bits, da lugar a un rango máximo de ±400mA, con una precisión de 0.1mA.
Sin embargo, podemos modificar la ganancia del PGA entre 1 a 8. Esto da lugar a un rango máximo de medición de intensidad de ±3.2A, con una precisión de 0.8mA.
Por otro lado, la medición de tensión tiene dos escalas de medición, de 16 y 32V, proporcionando una precisión de hasta 0.5% respecto al máximo de la escala elegida.
Esquema de montaje
La conexión es sencilla, simplemente alimentamos el módulo desde Arduino mediante GND y 5V y conectamos el pin SDA y SCL de Arduino con los pines correspondientes del INA219. Por otro lado, conectamos la carga a medir empleando el borne atornillado, prestando atención de respetar la polaridad indicada en la placa.
Finalmente, la conexión vista desde el lado de Arduino quedaría así.
Ejemplos de código
Para realizar la lectura del INA219 usaremos la librería desarrollada por Adafruit, disponible en https://github.com/adafruit/Adafruit_INA219.
La librería proporciona ejemplos de código, que resulta aconsejable revisar. Los siguientes ejemplos, por ejemplo, son modificaciones están basados a partir de los disponibles en la librería.
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
void setup(void)
{
Serial.begin(115200);
uint32_t currentFrequency;
// Iniciar el INA219
ina219.begin(); //por defecto, inicia a 32V y 2A
// Opcionalmente, cambiar la sensibilidad del sensor
//ina219.setCalibration_32V_1A();
//ina219.setCalibration_16V_400mA();
Serial.println("INA219 iniciado...");
}
void loop(void)
{
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
// Obtener mediciones
shuntvoltage = ina219.getShuntVoltage_mV();
busvoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
power_mW = ina219.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
// Mostrar mediciones
Serial.print("Bus Voltaje: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltaje: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltaje: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Corriente: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Potencia: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
delay(2000);
}