Caso práctico: monitor de fuente de laboratorio con Raspberry Pi

Caso práctico: lab power supply current monitor con — hero

Objetivo y caso de uso

Qué construirás: Un monitor de fuente de alimentación de laboratorio basado en Raspberry Pi que lee corriente, voltaje de bus y potencia desde un INA219 por I2C e imprime un flujo en vivo casi en tiempo real. También puedes registrar muestras en CSV para analizar después picos de carga, consumo en reposo y estabilidad de potencia.

Por qué importa / Casos de uso

  • Verificar cuánta corriente consume realmente una placa prototipo; por ejemplo, confirmar que un nodo sensor se mantiene cerca de 120–180 mA en lugar de superar un presupuesto de 250 mA.
  • Capturar eventos de arranque y transitorios mediante muestreo repetido por I2C, como cuando un motor o una ráfaga de radio empujan brevemente la corriente de 80 mA a 600 mA.
  • Estimar el consumo de potencia directamente a partir del voltaje y la corriente, útil para comprobar si una línea de 5 V está entregando alrededor de 2.5 W bajo carga.
  • Registrar lecturas en CSV para resolución de problemas, comparaciones entre versiones de firmware o documentación de pruebas de banco con latencia inferior a un segundo y carga muy baja de CPU/GPU en la Raspberry Pi.

Resultado esperado

  • Un script funcional de Raspberry Pi que lee mediciones del INA219 por I2C con una latencia de actualización típica de alrededor de 100–500 ms, según la configuración de muestreo y promediado.
  • Salida en consola en vivo que muestra corriente, voltaje y potencia; por ejemplo, 5.08 V, 0.42 A y 2.13 W.
  • Registros CSV opcionales que puedes abrir en una hoja de cálculo o graficar para analizar tendencias, picos y consumo en estado estable.
  • Funcionamiento ligero en la Pi: sin canalización de video, relevancia de 0 FPS y, normalmente, uso de GPU despreciable (~0% GPU) con baja sobrecarga general del sistema.

Audiencia: Makers, estudiantes y usuarios de laboratorio que monitorean proyectos DC de bajo voltaje; Nivel: Básico

Arquitectura/flujo: La salida de la fuente de alimentación de laboratorio pasa a través del shunt del INA219 hacia la carga; el INA219 mide la corriente del shunt y el voltaje de bus, la Raspberry Pi consulta el sensor por I2C, imprime valores en vivo y, opcionalmente, escribe filas con marca de tiempo en un archivo CSV.

Nota educativa de validación

Antes de publicar este caso, el contenido pasó la puerta automática de validación de Prometeo con estado PASS. El validador comprobó los bloques de código, la estructura del artículo, los comandos copiables y la coherencia con el catálogo de dispositivos soportados.

Evidencia de validación publicada

  • Resultado automático: PASS.
  • Estructura parseada: 3 apartados, 5 tablas y 9 bloques de código detectados antes de publicar.
  • Código comprobado: 2 Python/py_compile, 6 Bash/copy-paste checks.
  • Catálogo soportado: el texto se contrastó contra los perfiles de dispositivo validables de Prometeo y los stacks no soportados bloquean la publicación.
  • Hallazgos del informe: sin hallazgos bloqueantes.

Esta validación confirma compatibilidad sintáctica y de herramientas para el material publicado, pero no sustituye la prueba física sobre tu hardware, cableado y entorno exactos.

Nota educativa de seguridad

Este proyecto es un prototipo educativo, no un producto certificado. Antes de alimentar el montaje, verifica el pinout de la revisión exacta de tu placa ULX3S, mantén las señales de E/S de la FPGA a 3.3 V, nunca conectes 5 V directamente a los pines de E/S, desconecta la alimentación antes de cambiar el cableado y usa fuentes externas adecuadas para cargas, motores o servos, compartiendo tierra solo cuando el cableado lo requiera.


title: «Caso práctico: Monitor de corriente de fuente de alimentación de laboratorio con Raspberry Pi»
slug: «practical-case-raspberry-pi»
level: «Basic»
device: «Raspberry Pi»
objective: «Construir un monitor de corriente de fuente de alimentación de laboratorio con Raspberry Pi»


Monitor de corriente de fuente de alimentación de laboratorio con Raspberry Pi

Este caso práctico muestra cómo construir un monitor de corriente de fuente de alimentación de laboratorio con una Raspberry Pi y un sensor de corriente/potencia INA219. La Raspberry Pi lee corriente, voltaje de bus y potencia del sensor por I2C e imprime un flujo en vivo que también puede registrarse en un archivo CSV.

Nota de seguridad

Una fuente de alimentación de laboratorio puede entregar suficiente corriente como para sobrecalentar cables, dañar placas o provocar un incendio si se cablea mal. Apaga la fuente antes de cablear. Verifica la polaridad con un multímetro. Mantente dentro de las especificaciones del shunt y de voltaje del módulo INA219. Nunca conectes tensión de red directamente a una Raspberry Pi o a un breakout INA219.

Objetivo y caso de uso

Construir un monitor de corriente de fuente de alimentación de laboratorio que:

  • mida la corriente de alimentación
  • mida el voltaje de alimentación
  • estime la potencia
  • funcione en una Raspberry Pi
  • registre lecturas para análisis posterior

Lista de materiales

ElementoCant.Notas
Raspberry Pi 3/4/5 o Pi Zero 2 W1Con Raspberry Pi OS
Módulo sensor de corriente I2C INA2191Breakout común compatible con 3.3 V
Fuente de alimentación de laboratorio1Fuente de banco DC de bajo voltaje
Carga bajo prueba1Ejemplo: carga resistiva, motor pequeño o placa de desarrollo
Cables jumperVariosHembra-hembra o mixtos según sea necesario
Tarjeta MicroSD1Con Raspberry Pi OS instalado

Cómo funciona el monitor

El INA219 mide la caída de voltaje a través de su resistencia shunt integrada e informa:

  • Corriente en amperios
  • Voltaje de bus en voltios
  • Potencia en vatios

El monitor de corriente debe insertarse en serie con la salida positiva de la fuente de alimentación de laboratorio:

Fuente + -> INA219 VIN+ -> INA219 VIN- -> Carga +

La tierra de la carga vuelve directamente a la tierra de la fuente de alimentación. La Raspberry Pi se comunica con el INA219 solo mediante I2C.

Cableado

Raspberry Pi a INA219

Pin de Raspberry PiPin físico de la PiPin INA219
3.3V1VCC
GND6GND
GPIO 2 / SDA13SDA
GPIO 3 / SCL15SCL

Trayecto de potencia a través del sensor

ConexiónConectar a
Positivo (+) de la fuente de alimentación de laboratorioINA219 VIN+
INA219 VIN-Positivo (+) de la carga
Negativo (-) de la cargaNegativo (-) de la fuente de alimentación de laboratorio

Habilitar I2C en Raspberry Pi

Ejecuta:

sudo raspi-config nonint do_i2c 0
sudo apt-get update
sudo apt-get install -y i2c-tools python3-pip

Reinicia:

sudo reboot

Después del reinicio, confirma que el sensor aparece en el bus I2C. El INA219 normalmente responde en 0x40:

i2cdetect -y 1

Evidencia esperada:

  • una tabla con 40 visible en la salida del escaneo
  • sin errores de cableado ni conflictos de dirección

Instalar la biblioteca de Python

Usa un controlador CircuitPython INA219 mantenido:

python3 -m pip install --user adafruit-circuitpython-ina219

Monitor de corriente en Python

Guarda esto como current_monitor.py:

#!/usr/bin/env python3
import csv
import sys
import time
from datetime import datetime

import board
import busio
from adafruit_ina219 import ADCResolution, BusVoltageRange, Gain, INA219


def create_sensor():
    i2c = busio.I2C(board.SCL, board.SDA)
    sensor = INA219(i2c)

    # Conservative configuration suitable for many low-voltage bench setups.
    sensor.bus_adc_resolution = ADCResolution.ADCRES_12BIT_32S
    sensor.shunt_adc_resolution = ADCResolution.ADCRES_12BIT_32S
    sensor.bus_voltage_range = BusVoltageRange.RANGE_16V
    sensor.gain = Gain.DIV_8_320MV
    return sensor


def open_csv(path):
    file_obj = open(path, "a", newline="", encoding="utf-8")
    writer = csv.writer(file_obj)
    if file_obj.tell() == 0:
        writer.writerow(
            ["timestamp", "bus_voltage_V", "shunt_voltage_mV", "current_A", "power_W"]
        )
        file_obj.flush()
    return file_obj, writer


def main():
    csv_path = sys.argv[1] if len(sys.argv) > 1 else "current_log.csv"
    interval_s = float(sys.argv[2]) if len(sys.argv) > 2 else 1.0

    sensor = create_sensor()
    csv_file, writer = open_csv(csv_path)

    print("Raspberry Pi lab power supply current monitor")
    print(f"Logging to: {csv_path}")
    print("Press Ctrl+C to stop.")
    print("timestamp,bus_voltage_V,shunt_voltage_mV,current_A,power_W")

    try:
        while True:
            timestamp = datetime.now().isoformat(timespec="seconds")
            bus_voltage = sensor.bus_voltage
            shunt_voltage_mv = sensor.shunt_voltage / 1000.0
            current_a = sensor.current / 1000.0
            power_w = sensor.power / 1000.0

            row = [
                timestamp,
                f"{bus_voltage:.3f}",
                f"{shunt_voltage_mv:.3f}",
                f"{current_a:.6f}",
                f"{power_w:.6f}",
            ]
            print(",".join(row))
            writer.writerow(row)
            csv_file.flush()
            time.sleep(interval_s)
    except KeyboardInterrupt:
        print("\nStopped.")
    finally:
        csv_file.close()


if __name__ == "__main__":
    main()

Hazlo ejecutable y ejecútalo:

chmod +x current_monitor.py
python3 current_monitor.py current_log.csv 1.0

Salida de ejemplo

Raspberry Pi lab power supply current monitor
Logging to: current_log.csv
Press Ctrl+C to stop.
timestamp,bus_voltage_V,shunt_voltage_mV,current_A,power_W
2026-06-27T10:15:01,5.018,12.400,0.124000,0.622000
2026-06-27T10:15:02,5.017,12.300,0.123000,0.617000
2026-06-27T10:15:03,5.018,12.500,0.125000,0.627000

Visualización opcional en terminal en vivo

Si quieres una lectura más clara en la terminal, guarda esto como live_display.py:

#!/usr/bin/env python3
import time

import board
import busio
from adafruit_ina219 import ADCResolution, BusVoltageRange, Gain, INA219


def main():
    i2c = busio.I2C(board.SCL, board.SDA)
    sensor = INA219(i2c)
    sensor.bus_adc_resolution = ADCResolution.ADCRES_12BIT_32S
    sensor.shunt_adc_resolution = ADCResolution.ADCRES_12BIT_32S
    sensor.bus_voltage_range = BusVoltageRange.RANGE_16V
    sensor.gain = Gain.DIV_8_320MV

    print("Live lab power supply current monitor. Press Ctrl+C to stop.")
    try:
        while True:
            bus_v = sensor.bus_voltage
            current_a = sensor.current / 1000.0
            power_w = sensor.power / 1000.0
            print(
                f"Voltage: {bus_v:6.3f} V | Current: {current_a:7.4f} A | Power: {power_w:7.4f} W",
                end="\r",
                flush=True,
            )
            time.sleep(0.5)
    except KeyboardInterrupt:
        print("\nStopped.")


if __name__ == "__main__":
    main()

Ejecútalo:

python3 live_display.py

Método de validación

Para respaldar las afirmaciones de precisión de la medición, valida el monitor de corriente frente a una referencia conocida.

Método

  1. Ajusta la fuente de alimentación de laboratorio a un voltaje DC seguro, como 5 V.
  2. Conecta una carga estable, por ejemplo una resistencia de potencia.
  3. Inserta un multímetro calibrado en serie con la carga.
  4. Inicia el monitor de corriente de la Raspberry Pi.
  5. Registra:
  6. lectura de corriente del INA219
  7. lectura de corriente del multímetro
  8. voltaje de alimentación
  9. Compara en varios niveles de carga.

Evidencia esperada

Punto de pruebaVoltaje de alimentaciónCorriente del multímetroMonitor de corriente de Raspberry PiEvidencia a guardar
Carga ligeraalrededor de 5 Vvalor medidovalor similarFoto o fila CSV
Carga mediaalrededor de 5 Vvalor medidovalor similarFoto o fila CSV
Carga mayor dentro del límite del sensoralrededor de 5 Vvalor medidovalor similarFoto o fila CSV

Un resultado razonable es que el monitor de Raspberry Pi siga de cerca al multímetro en todos los puntos de prueba. El error exacto permitido depende del módulo INA219, la tolerancia del shunt, el cableado y la calibración del medidor.

Resolución de problemas

SíntomaCausa probableSolución
i2cdetect no muestra 0x40I2C deshabilitado o cableado incorrectoVuelve a habilitar I2C y revisa SDA/SCL
La corriente permanece cerca de ceroEl sensor no está en serie con la cargaRecablea: fuente + -> VIN+ -> VIN- -> carga +
Lecturas negativas o extrañasVIN+ y VIN- invertidosIntercambia los cables de potencia del lado alto
El script no logra importar el controladorPaquete de Python no instaladoVuelve a ejecutar python3 -m pip install --user adafruit-circuitpython-ina219
El voltaje se lee pero la corriente es incorrectaFuera de rango o shunt/módulo inadecuadoMantente dentro de los límites del módulo y verifica el tipo de breakout

Resultado

Ahora tienes un monitor de corriente de fuente de alimentación de laboratorio con Raspberry Pi funcional que mide corriente de alimentación, voltaje y potencia, y registra lecturas en CSV para análisis posterior. Esta configuración es útil para pruebas de banco de dispositivos embebidos, verificar consumo de corriente en reposo y en pico, y documentar el consumo de potencia durante experimentos.

Encuentra este producto y/o libros sobre este tema en Amazon

Ir a Amazon

Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.

Quiz rápido

Pregunta 1: ¿Qué componente se usa en la Raspberry Pi para leer corriente, voltaje de bus y potencia?




Pregunta 2: ¿Cuál es uno de los objetivos principales del monitor descrito?




Pregunta 3: ¿Para qué sirve registrar muestras en CSV según el artículo?




Pregunta 4: ¿Qué rango de corriente se menciona como deseable para un nodo sensor de ejemplo?




Pregunta 5: ¿Qué evento transitorio se pone como ejemplo de aumento breve de corriente?




Pregunta 6: Si una línea de 5 V entrega alrededor de 2.5 W bajo carga, ¿qué se está estimando directamente?




Pregunta 7: ¿Qué interfaz de comunicación se utiliza para el sensor INA219?




Pregunta 8: ¿Qué magnitudes lee el monitor desde el INA219?




Pregunta 9: ¿Qué ventaja de rendimiento se destaca para la Raspberry Pi al usar este monitor?




Pregunta 10: ¿Para qué pueden servir los registros CSV además de la resolución de problemas?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:
Scroll al inicio