Current/Power Monitor HAT

From Waveshare Wiki
Jump to: navigation, search
Current/Power Monitor HAT
Power Management HAT





This is a 4-ch current and power monitor HAT designed for Raspberry Pi. Via the I2C or SMBus interface, it is easy to monitor each channel's current, voltage, and power consumption, as well as the voltage between both sides of the sampling resistor.


  • Standard Raspberry Pi 40PIN GPIO extension header, supports Raspberry Pi series boards.
  • 4-ch monitoring, via I2C/SMBus interface.
  • Onboard 0.1Ω 1% sampling resistor, allows measuring bi-directional current up to 3.2A.
  • Embedded 12-bit ADC, supports multiple successive converting, 0~26V voltage measuring range.
  • Directly calculate and output measured power value through additional multiply register.
  • I2C control pins for connecting with other host boards.
  • Comes with online development resources and manual (examples for Raspberry Pi/Arduino/STM32).


  • Operating voltage: 3.3V/5V
  • Control interface: I2C/SMBus
  • Sampling resistor: 0.1Ω 1%
  • Voltage range: 0~26V
  • Current range: ±3.2A
  • Resolution: 0.8mA (±3.2A range) OR 0.1mA (±400mA range)
  • Dimensions: 65mm × 30mm
  • Mounting hole size: 3.0mm



This module can be used to test currents and voltages of four channels, they are (IN1+ IN1-), (IN2+ IN2-), (IN3+ IN3-), and (IN4+ IN4-).

INx+ is the current input, and INx- is the current output. The module measures the differential voltage of the sample resistor connected between INx+ and INx-, with the voltage, we can measure the working current.

The module supports measuring bidirectional current, so users can invert the input and output.

Note that you must connect GND when testing different power adapters, otherwise, the VBus voltage cannot be measured.

Raspberry Pi examples

Enable the I2C Interface

Open the Raspberry Pi terminal and enter the following command to access the configuration screen:

sudo raspi-config 
Select Interfacing Options -> I2C -> yes to start the i2C kernel driver

Current Serial.png
And then reboot the Raspberry Pi:

sudo reboot
PS: If you are using the system of the Bullseye branch, you need to change "apt-get" to "apt". The system of the Bullseye branch only supports Python3.

To test the example, you should first attach the monitor HAT to Raspberry Pi, or you can connect the monitor HAT to the I2C interface of Raspberry Pi by wires.

Open the terminal of Raspberry Pi and follow the commands:

sudo apt-get install p7zip
7zr x Current-Power_Monitor_HAT_Code.7z -r -o./Current-Power_Monitor_HAT
cd Current-Power_Monitor_HAT/RaspberryPi

You can get data on the VBus voltage, the differential voltage of the sampling resistor, voltage input, power, and current.

STM32 examples

The examples provided are based on NUCLEO-F103RB, you can connect it to the table.

VCC 3.3V

Download the demo code from #Resources, unzip and go to the directory of the STM32 project. Open the project by Keil5.

Program the demo codes to your NUCLEO board and test.

The data of the VBus voltage, the differential voltage of the sampling resistor, voltage input, power, and current will be printed to the serial port.


The example provided is based on Waveshare UNO Plus.

VCC 3.3V

If you use other Arduino boards, please check the working voltage of your Arduino board, and change the VCC to 5V/3.3V according to it.

Download the demo codes from #Resouces. unzip and go to the directory of Arduino codes. Open it with Arduino IDE and program it to your board.

The data of the VBus voltage, the differential voltage of the sample resistor, voltage input, power, and current will be printed to the serial port.



Demo codes



Open and find the following:

Power Monitor HAT01.png




The monitor HAT uses INA219 IC, which is used for DC power monitors only.



The current power monitor HAT doesn't support changing the I2C address.
PCB doesn't reverse pad for modifying I2C address, in this case, you cannot stack them for more channels.



Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)