Home Assistant Fácil

Curso de Home Assistant y domótica

  • Blog
  • Soy un pardillo
  • Podcast
  • Curso Arduino
  • Curso Domótica
  • Acceder
Usted está aquí: Inicio / Podcast / Medidor de consumos INA219

Medidor de consumos INA219

Maxi

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:

  • Germán Martín @gmag12
  • José Manuel Galileo @G4lile0
  • Luis del valle (proyectos MAKER) @programarfacilc
  • Luis del Valle (Inteligencia Artificial) @ldelvalleh

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

Indice de contenidos

  • 1 Gráficas con sensor INA219
  • 2 Software para visualización de webcam Open Source
  • 3 Tiny GSM
  • 4 Calcular la duración de una batería
  • 5 Notas del pódcast
INA219-tertulia-maker

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:

  • Recuerda que debes medir en simultáneo el voltaje, la corriente y calcular la potencia (vatios-hora), si quieres medir con precisión el consumo de una placa alimentada por baterías. Si solo usas una sola placa, es suficiente medir el consumo.
  • El sensor permite una lectura cada 1 milisegundos.

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()

Si el consumo de tu proyecto con #Arduino #ESP8266 #ESP32 te importa menos que un semáforo apagado no leas este tutorial sobre el medidor de consumo para proyectos #Maker #INA219 Para los demás aquí está el enlace con el #podcast #YouTube y tutorial https://t.co/e3u2Mvn6cC

— programarfacil.com (@programarfacilc) June 8, 2021

Software para visualización de webcam Open Source

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

Muestra una segunda webcam de una forma sencilla utilizando este software #opensource #CamDesk https://t.co/BGnAOtLOEg

— programarfacil.com (@programarfacilc) June 14, 2021

Tiny GSM

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

La librería #TinyGSM nos permite integrar multiples protocolos con una librería muy ligera. Podemos enviar datos vía GSM gracias a la capa superior que nos abstrae de los comandos #AT. Compatible con #Arduino y #ESP8266 https://t.co/cd9RN606yF pic.twitter.com/5xBoM9EIrO

— programarfacil.com (@programarfacilc) April 16, 2018

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.

  • Para empezar, debes colocar que capacidad de la batería (mAh) que va a tener la batería que uses. Por ejemplo: 2000 mAh de una batería 18650.
  • Consumo de corriente del dispositivo durante el deep sleep. Por ejemplo: 17 µA del ESP12.
  • Consumo de corriente del dispositivo cuando está encendido. Por ejemplo: 75 mA.
  • Número de veces que se enciende el dispositivo por hora. Por ejemplo: 1 vez por hora.
  • Duración del lapso de tiempo que está encendido. Por ejemplo: 10000 ms.

Notas del pódcast

  • 00:05:31
    • Actualización Tiny GS
  • 00:14:52
    • Librería TinyGSM
  • 00:20:16
    • INA219
  • 00:45:24
    • Battery Life Calculator
  • 00:57:28
    • ¿Cómo funciona el current-ranger?
  • Enigma IOT mediciones en ESP-12

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

camaras de seguridad para casa

Cámaras de seguridad para casa: 5 pilares para no caer en la trampa del Prime Day

Llevas semanas pensando en poner cámaras de seguridad para casa y llega el Prime Day. Entras en Amazon, buscas y aparecen miles de resultados: WiFi, … [+ info...]

broadlink home assistant

Broadlink Home Assistant con HAIR: mandos por infrarrojos sin YAML

Llegas a casa con el emisor Broadlink Home Assistant nuevecito. Lo sacas de la caja con toda la ilusión del mundo para integrar el ventilador del … [+ info...]

NUKI SMART LOCK

Nuki Smart Lock Go, Pro o Ultra: cuál comprar y la prueba que lo decide todo

Mira chapapote, imagina la cara de tonto que se te queda cuando te gastas casi 350 pavos en una cerradura inteligente Nuki, llega a casa, la abres con … [+ info...]

Copyright © 2026 · Programar Fácil · Aviso legal

Utilizamos cookies para ofrecerte la mejor experiencia en nuestra web.

Puedes aprender más sobre qué cookies utilizamos o desactivarlas en los .

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Cookies de terceros

Esta web utiliza Google Tag Manager para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.