INA219 ARDUINO NANO Power Meter

Hier ist mal ein Projekt was ich die Tage so gemacht habe. Vielleicht kann ja jemand was damit anfangen. Es handelt sich um das INA219 Module, mit diesem Module kann man eine indirekte Strommessung über einen verbauten Shunt-Widerstand machen. Weiter kann man sich mit den U=RxI (Ohmsche Gesetz) & P=UxI (elektrische Leistung) Formeln alles weitere selber ausrechnen.

Ich habe da mal einen Arduino Sketch den ich im Netz gefunden habe, für mich angepasst. Das LCD zeigt die Spannung, Shuntspannung, Leistung bis 1000mW in mW ab 1001mW in W, Strom bis 1000 mA in mA ab 1001 mA in A.

Als Last verwende ich einen Zement Widerstand 10W / 10 Ohm.

INA 219 Module

I2C BUS

LiquidChyrstalDisplay 1602

I2C BUS

LCD Rückseite

I2C Interface Platine mit Kontrasteinstellung über Poti

Das INA Module und das LiquidChrystalDisplay sind beide am I2C BUS am NANO Pin A4 und A5 angeschlossen.

Blockschaltbild / Schematic

ARDUINO SKETCH / Programm hier

INA219 Library hier

LiquidChrytalLCD library hier

#include <Wire.h>
#include <Adafruit_INA219.h>
#include <LiquidCrystal_I2C.h>

Adafruit_INA219 ina219;
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() 
{
  Serial.begin(9600);
  lcd.begin();
  while (!Serial) {
      // will pause Zero, Leonardo, etc until serial console opens
      delay(1);
  }

  uint32_t currentFrequency;
     
   if (! ina219.begin()) {
    Serial.println("Failed to find INA219 chip");
    while (1) { delay(10); }
  }
 }

void loop() 
{
lcd.clear();
  
  float shuntvoltage = 0;
  float busvoltage = 0;
  float current_mA = 0;
  float loadvoltage = 0;
  float power_mW = 0;

  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  current_mA = ina219.getCurrent_mA();
  power_mW = ina219.getPower_mW();
  loadvoltage = busvoltage + (shuntvoltage / 1000);

if(power_mW >= 1000)   
  {
  lcd.setCursor(10, 1);
  lcd.print(power_mW/1000,1);
  lcd.setCursor(15, 1);
  lcd.print("W ");                                      
  }
 else 
 {
  lcd.setCursor(10, 1);
  lcd.print(power_mW,0);
  lcd.setCursor(14, 1);
  lcd.print("mW"); 
 }

  if(current_mA >= 1000)   
  {
  lcd.setCursor(0, 1);
  lcd.print(current_mA/1000,1);
  lcd.setCursor(5, 1);
  lcd.print(" A");                                      
  }
 else 
 {
  lcd.setCursor(0, 1);
  lcd.print(current_mA,0);
  lcd.setCursor(4, 1);
  lcd.print("mA");      
 }
 
  lcd.setCursor(0, 0);
  lcd.print(busvoltage,2); 
  lcd.setCursor(5, 0);
  lcd.print("V");
 
  lcd.setCursor(9, 0);
  lcd.print(shuntvoltage,1); 
  lcd.setCursor(14, 0);
  lcd.print("mV");
 
  delay (500); 
 
}

Aufbau Breadboard

Hier ein kleines Video, man sieht wie die mW auf W und mA auf A springen.

Viel Spass beim nachbauen…..

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert