Skip to product information
1 of 4

Axiometa

Power Monitor (INA219)

Power Monitor (INA219)

SKU:

Out of stock

Monitor voltage, current, and power consumption in real time with this INA219-based sensor module. Measure up to 26V and 3.2A on the high side without disrupting your circuit, perfect for battery monitoring, solar projects, or tracking power draw in embedded systems. The onboard INA219 handles the math internally, delivering voltage, current, and power readings over I²C so your microcontroller doesn't have to crunch numbers. Screw terminals make it easy to insert into your power path, while STEMMA QT connectors let you daisy-chain I²C devices. Drop it into any AX22 backplane and start tracking power consumption with Arduino IDE, MicroPython, or MicroBlocks.

Regular price $6.49
Regular price Sale price $6.49
Sale Sold out
Taxes included. Shipping calculated at checkout.
View full details
  • - 22 mm × 22 mm square
    - 4× ⌀2.7 mm Mounting Holes
    - INA219 power monitor IC
    - I²C interface
    - 3.3 V, 5.0 V
    - Arduino IDE Compatible
    - MicroPython Compatible
    - MicroBlocks Compatible

    Material Datasheet 

Technical Resources

Power Monitor (INA219) - (AX22-0048)

PCB FRONT

PCB BACK

🟢 Live 3D Model

🖱️ Click & drag to rotate
#include "INA219.h"
#include <FastLED.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>

#define NUM_LEDS 64
#define DATA_PIN 9
#define TFT_CS    8
#define TFT_DC    45
#define TFT_RST   15
#define TFT_MOSI  11
#define TFT_SCLK  13

INA219 INA(0x40);
CRGB leds[NUM_LEDS];
SPIClass mySPI(FSPI);
Adafruit_ST7735 tft = Adafruit_ST7735(&mySPI, TFT_CS, TFT_DC, TFT_RST);

void setup() {
  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  
  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("INA219_LIB_VERSION: ");
  Serial.println(INA219_LIB_VERSION);

  // Initialize TFT Display
  mySPI.begin(TFT_SCLK, -1, TFT_MOSI);
  tft.initR(INITR_MINI160x80);
  tft.setRotation(3); // Landscape orientation
  tft.fillScreen(ST77XX_BLACK);
  
  // Display title
  tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK);
  tft.setTextSize(1);
  tft.setCursor(5, 2);
  tft.print("LED Power Monitor");
  
  // Draw separator line
  tft.drawLine(0, 12, 160, 12, ST77XX_CYAN);

  Wire.begin(47, 48);
  if (!INA.begin()) {
    Serial.println("Could not connect. Fix and Reboot");
    tft.setTextColor(ST77XX_RED, ST77XX_BLACK);
    tft.setCursor(10, 30);
    tft.print("INA219 Error!");
    while(1); // Halt if sensor not found
  }

  INA.setMaxCurrentShunt(5, 0.1);
  
  // Turn all LEDs white to prepare for brightness sweep
  fill_solid(leds, NUM_LEDS, CRGB::White);
  
  delay(1000);
  
  // Print header once
  Serial.println("\nBrightness Sweep Test");
  Serial.println("BRIGHTNESS\tVOLTAGE(V)\tCURRENT(mA)\tPOWER(mW)");
  Serial.println("-----------------------------------------------------------");
}

void loop() {
  // Sweep brightness from 0 to 255
  for (int brightness = 0; brightness <= 255; brightness++) {
    // Set brightness
    FastLED.setBrightness(brightness);
    FastLED.show();
    
    // Small delay to let current stabilize
    delay(50);
    
    // Read measurements
    float voltage = INA.getBusVoltage();
    float current = INA.getCurrent_mA();
    float power = INA.getPower_mW();
    
    // Print to Serial
    Serial.print(brightness);
    Serial.print("\t\t");
    Serial.print(voltage, 3);
    Serial.print("\t\t");
    Serial.print(current, 2);
    Serial.print("\t\t");
    Serial.print(power, 2);
    Serial.println();
    
    // Update TFT Display
    displayData(brightness, voltage, current, power);
    
    // Optional: adjust delay for faster/slower sweep
    delay(50);
  }
  
  Serial.println("\nSweep complete. Restarting in 3 seconds...\n");
  delay(3000);
}

void displayData(int brightness, float voltage, float current, float power) {
  // Clear data area (below header line)
  tft.fillRect(0, 14, 160, 66, ST77XX_BLACK);
  
  // Display Brightness
  tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK);
  tft.setTextSize(1);
  tft.setCursor(5, 16);
  tft.print("Brightness:");
  tft.setTextSize(2);
  tft.setCursor(5, 26);
  tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  tft.print(brightness);
  tft.print("   "); // Extra spaces to clear previous digits
  
  // Display Voltage
  tft.setTextColor(ST77XX_GREEN, ST77XX_BLACK);
  tft.setTextSize(1);
  tft.setCursor(5, 44);
  tft.print("V:");
  tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  tft.print(voltage, 2);
  tft.print("V  ");
  
  // Display Current
  tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK);
  tft.setCursor(80, 44);
  tft.print("I:");
  tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  tft.print(current, 0);
  tft.print("mA  ");
  
  // Display Power
  tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK);
  tft.setTextSize(1);
  tft.setCursor(5, 62);
  tft.print("Power:");
  tft.setTextColor(ST77XX_WHITE, ST77XX_BLACK);
  tft.print(power, 1);
  tft.print("mW    ");
}