El sensor INA219 es un sensor de corriente y voltaje para medir fácilmente la potencia. En algunas aplicaciones, es interesante medir la energía eléctrica intercambiada entre dispositivos. Por ejemplo, medir la potencia recuperada por un panel solar. En este tutorial veremos cómo medir los valores de potencia con el sensor INA219.
Requisito previo : Dale sentido a su robot
Hardware
- Computadora
- Tablero Arduino
- Cable USB
- 1x sensor INA219
Diagrama
El sensor INA219 es un sensor de corriente y voltaje que se comunica a través de I2C. Es suficiente suministrarle la salida de 5V del Arduino y conectar los terminales SDA y SLC de la comunicación I2C.
Code
Para mostrar las mediciones INA219, utilizaremos la biblioteca Adafruit_INA219.h que puede descargar o instalar directamente desde el IDE de Arduino.
La potencia eléctrica intercambiada por dos dispositivos se calcula multiplicando el voltaje y la corriente en el bus que los conecta:
P = UxI con P la potencia (W), U la tensión (V) e I la corriente (A).
La energía es la energía que consume el dispositivo a lo largo del tiempo.
E = Pxt con energía E (Wh), potencia P (W) y tiempo t (h)
Funciones a saber:
- comenzar () para inicializar la comunicación con el sensor
- getBusVoltage_V () para recuperar el valor de voltaje en el bus Vin- / Vin +
- shuntVoltage_mV () para recuperar el voltaje a través de la resistencia de derivación
- getCurrent_mA () para recuperar el valor actual de la resistencia de derivación
#include <Wire.h> #include <Adafruit_INA219.h> Adafruit_INA219 ina219; float voltage_V = 0,shuntVoltage_mV,busVoltage_V; float current_mA = 0; float power_mW = 0; float energy_Wh=0; long time_s=0; void setup(void) { Serial.begin(9600); uint32_t currentFrequency; ina219.begin(); Serial.println("Measuring voltage and current with INA219"); } void loop(void) { getData(); delay(2000); } void getData(){ time_s=millis()/(1000); // convert time to sec busVoltage_V = ina219.getBusVoltage_V(); shuntVoltage_mV = ina219.getShuntVoltage_mV(); voltage_V = busVoltage_V + (shuntVoltage_mV / 1000); current_mA = ina219.getCurrent_mA(); //power_mW = ina219.getPower_mW(); power_mW=current_mA*voltage_V; energy_Wh=(power_mW*time_s)/3600; //energy in watt hour Serial.print("Bus Voltage: "); Serial.print(busVoltage_V); Serial.println(" V"); Serial.print("Shunt Voltage: "); Serial.print(shuntVoltage_mV); Serial.println(" mV"); Serial.print("Load Voltage: "); Serial.print(voltage_V); Serial.println(" V"); Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA"); Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW"); Serial.print("Energy: "); Serial.print(energy_Wh); Serial.println(" mWh"); Serial.println("----------------------------------------------------------------------------"); }
Solicitud
Una posible aplicación con un sensor INA219 es crear un medidor de energía para medir la energía eléctrica absorbida por un panel solar, por ejemplo. Esto le permite verificar el correcto funcionamiento de las células fotovoltaicas, por un lado, y medir su rendimiento a lo largo del tiempo.
Fuentes
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código