Icono del sitio Home Assistant Fácil

Medidor de consumos INA219

⚡ INA219 segunda parte⚡

El sensor INA219 es un chip de Texas Instruments capaz de monitorizar el consumo de energía de un dispositivo. En este capítulo hablamos con German y José Manuel sobre este sensor: como calcular y graficar la corriente que consume un prototipo a lo largo del tiempo.

Además, verás el principio de funcionamiento del current-ranger, una actualización de Tiny GS (Offset en los satélites) y la opinión de dos expertos que te ayudará a exprimir al máximo la batería de tus proyectos.

Para más información puedes visitar la primera parte donde destripamos a fondo el sensor INA219.

Puedes seguir a los contertulios es sus diferentes cuentas de Twitter:

Prepárate un café con leche y aprende a resolver tus problemas de programación durmiendo. ?

Gráficas con sensor INA219

El sensor INA219 es un chip de Texas Instruments capaz de monitorizar el consumo de energía de un dispositivo. Lo hace midiendo la caída de tensión de una resistencia en derivación o resistencia shunt.

Datos sobre el proyecto con INA219:

El código que se cargó en la placa de Arduino es el siguiente.

#include <Adafruit_INA219.h>
#include <Wire.h>

Adafruit_INA219 ina219;

unsigned long tiempoAnterior = 0;
unsigned long tiempo = 10;
unsigned long tiempoCount = 0;
float msToh=2.7778e-7;
float acumulaCurrent=0;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    delay(1);
  }

  // Iniciar INA219
  if (!ina219.begin()) {
    while (1) {
      delay(10);
    }
  }

  // 16v 400mA
  ina219.setCalibration_16V_400mA();
}

void loop() {
  if(millis()<tiempoAnterior){
    tiempoAnterior =  millis();
  }

  if (millis() - tiempoAnterior >= tiempo) {
    tiempoAnterior =  millis();
    tiempoCount += tiempo;
    // Obtener corriente
    float current_mA = ina219.getCurrent_mA();
    acumulaCurrent += current_mA;
    // Convertir a mAh (mA*h)
    float current_mAh = acumulaCurrent * tiempoCount * msToh;
    Serial.print(tiempoCount);
    Serial.print("$");
    Serial.print(current_mA);
    Serial.print("$");
    Serial.println(current_mAh);
  }
}

El IDE de Python que se utiliza es Mu y el código para graficar el consumo es el siguiente.

import serial
import time
import statistics
import matplotlib.pyplot as plt

# Abrir para leer el puerto serie
ser = serial.Serial('COM3', 9600, timeout=1)
time.sleep(2)

# Número de muestras más o menos cada muestra 1ms
numMuestras = 1000

centinela = True

dataX = []
datamA = []
datamAh = []
# Repetir numMuestras
for i in range(numMuestras):
    # Leer línea serial
    line = ser.readline()   # read a byte string
    if line:
        if centinela:
            print("Comienza a leer")
            centinela = False

        # Convertir a string y separar línea serial
        # 10$0.20$2.3
        #
        strSerial = line.decode().split('$')
        try:
            # Convertir a números
            tiempo = int(strSerial[0])
            mA = float(strSerial[1]);
            mAh = float(strSerial[2]);

            # Añadir a las listas
            dataX.append(tiempo)
            datamA.append(mA)
            datamAh.append(mAh)
        except:
            print("Error")
ser.close()

print("Media mA: " + str(sum(datamA) / len(datamA)))

# Gráfica
fig, ax = plt.subplots(2)
fig.suptitle('CONSUMOS')

# Plot datos
ax[0].plot(dataX, datamA)
ax[0].set_title("mA")

# Mostrar las líneas mayores de gris
ax[0].grid(b=True, which='major', color='#555555', linestyle='-')

# Mostrar las líneas menores en un gris menos intenso
ax[0].minorticks_on()
ax[0].grid(b=True, which='minor', color='#999999', linestyle='-', alpha=0.2)

ax[1].plot(dataX, datamAh)
ax[1].set_title("mAh")

# Mostrar las líneas mayores de gris
ax[1].grid(b=True, which='major', color='#555555', linestyle='-')

# Mostrar las líneas menores en un gris menos intenso
ax[1].minorticks_on()
ax[1].grid(b=True, which='minor', color='#999999', linestyle='-', alpha=0.2)

plt.show()

Software para visualización de webcam Open Source

Con este software podrás mantener en primer plano la captura de una webcam.

Tiny GSM

Una pequeña biblioteca Arduino para módulos GSM, que simplemente funciona.

Calcular la duración de una batería

Aquí verás que variables debes usar si quieres calcular la duración estimativa de una batería mediante Battery Life Calculator.

Notas del pódcast

Gracias a Shutterstock por la cesión de las imágenes.

Salir de la versión móvil