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
| Elemento | Cant. | Notas |
|---|---|---|
| Raspberry Pi 3/4/5 o Pi Zero 2 W | 1 | Con Raspberry Pi OS |
| Módulo sensor de corriente I2C INA219 | 1 | Breakout común compatible con 3.3 V |
| Fuente de alimentación de laboratorio | 1 | Fuente de banco DC de bajo voltaje |
| Carga bajo prueba | 1 | Ejemplo: carga resistiva, motor pequeño o placa de desarrollo |
| Cables jumper | Varios | Hembra-hembra o mixtos según sea necesario |
| Tarjeta MicroSD | 1 | Con 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 Pi | Pin físico de la Pi | Pin INA219 |
|---|---|---|
| 3.3V | 1 | VCC |
| GND | 6 | GND |
| GPIO 2 / SDA1 | 3 | SDA |
| GPIO 3 / SCL1 | 5 | SCL |
Trayecto de potencia a través del sensor
| Conexión | Conectar a |
|---|---|
| Positivo (+) de la fuente de alimentación de laboratorio | INA219 VIN+ |
| INA219 VIN- | Positivo (+) de la carga |
| Negativo (-) de la carga | Negativo (-) 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
40visible 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
- Ajusta la fuente de alimentación de laboratorio a un voltaje DC seguro, como 5 V.
- Conecta una carga estable, por ejemplo una resistencia de potencia.
- Inserta un multímetro calibrado en serie con la carga.
- Inicia el monitor de corriente de la Raspberry Pi.
- Registra:
- lectura de corriente del INA219
- lectura de corriente del multímetro
- voltaje de alimentación
- Compara en varios niveles de carga.
Evidencia esperada
| Punto de prueba | Voltaje de alimentación | Corriente del multímetro | Monitor de corriente de Raspberry Pi | Evidencia a guardar |
|---|---|---|---|---|
| Carga ligera | alrededor de 5 V | valor medido | valor similar | Foto o fila CSV |
| Carga media | alrededor de 5 V | valor medido | valor similar | Foto o fila CSV |
| Carga mayor dentro del límite del sensor | alrededor de 5 V | valor medido | valor similar | Foto 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íntoma | Causa probable | Solución |
|---|---|---|
i2cdetect no muestra 0x40 | I2C deshabilitado o cableado incorrecto | Vuelve a habilitar I2C y revisa SDA/SCL |
| La corriente permanece cerca de cero | El sensor no está en serie con la carga | Recablea: fuente + -> VIN+ -> VIN- -> carga + |
| Lecturas negativas o extrañas | VIN+ y VIN- invertidos | Intercambia los cables de potencia del lado alto |
| El script no logra importar el controlador | Paquete de Python no instalado | Vuelve a ejecutar python3 -m pip install --user adafruit-circuitpython-ina219 |
| El voltaje se lee pero la corriente es incorrecta | Fuera de rango o shunt/módulo inadecuado | Mantente 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
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.




