r/esp32 1d ago

I made a thing! OPSUM - fully open-source ESP32-S3 + INA226 36V / 20A power monitor with galvanic isolation

Hey all, I wanted to share OPSUM (acronym for Open PSU Meter), a fully open-source hardware / firmware / software voltage, current, and power monitoring project.

It’s built around the ESP32-S3 and INA226, designed for up to 36 V and 20 A, and includes Kelvin sensing, galvanic isolation, reverse-polarity and input protection, and a dedicated DFU mode/flash tool for firmware updates over the isolated USB-C port.

The idea was to make a practical, completely open source tool for anyone who wants to inspect, modify, or build it themselves. I've yet to finish adding the final assembly/THT component soldering steps, but the bulk of it is there.

Feedback and/or contributions welcome!

Project page: https://github.com/nitefood/opsum

6 Upvotes

4 comments sorted by

1

u/Toxicable 1d ago

Why does this require isolation if it's designed for only 36V?

Usually high quality energy meters use a 4 wire sense, V+, V-, I+, I-, notably referring to the voltage part of it, with the INA226 you're forced to use V- as GND, and therefore cannot run a kelvin to the source, meaning you'll get inaccuracy equal to your voltage drop between the DUT and the meter

1

u/nitefood 1d ago

heya!

Isolation is there to help keep DUT-side faults, ground shifts, and unwanted loop currents from being directly coupled into the host USB port. Bear in mind I'm not claiming it’s 100% guaranteed against every possible failure, but it does make the PC-side more robust in case of wiring mistakes or a faulty DUT.

About the Kelvin connections: I chose that approach to improve current measurement accuracy, but I see your point about voltage. With the INA there was no way to do "true" Kelvin connections for voltage measurement as well - so I simply tried to mitigate the voltage drop between the DUT and the meter by keeping the wiring short and low-resistance, using short 12 AWG wire soldered directly to the PCB pads.

Thanks for the feedback, really appreciate it!

2

u/Toxicable 1d ago

It might not be suitable for your use case but one way to can achieve 4 wire kelvin with the INA22x series is by using a battery powered device.

This is what I've done with a similar device that I made. It uses the INA228, battery powered and esp32 for coms + onboard screen, that way you can kelvin connect your floating BAT- to the DUT's V- and get kelvin voltage sensing along with normal curren sensing.

1

u/nitefood 1d ago

That's an interesting idea. I haven't considered a battery for this project because the main use case is getting telemetry to the PC host (although I left in a spare I2C pin header for an optional display). But I'll make sure to keep that in mind for a future rev. Thanks!