fbpixel
Étiquettes : , , ,
4.5
(2)

Le Capteur INA219 est un capteur de courant et de tension permettant un mesure facile de la puissance. Dans certaines applications, il est intéressant de mesurer la puissance électrique échangée entre des appareils. Par exemple, mesurer la puissance récupérée par un panneau solaire. Nous allons voir dans ce tutoriel comment mesurer les valeurs de puissance avec le capteur INA219.

Prérequis : Donnez des sens à votre robot

Matériel

  • Ordinateur
  • Carte Arduino
  • Câble USB
  • 1x capteur INA219

Schéma

Le capteur INA219 est un capteur de courant et de tension communiquant via I2C. Il suffit de l’alimenter avec la sortie 5V de l’Arduino et de relier les bornes SDA et SLC de la communication I2C.

Schéma de connexion entre Arduino, INA219, moteur et source d'énergie

Il est possible de modifier l’adresse I2C utilisée en rajoutant un pont de soudure sur les borniers A0 et A1:

  • 0x40 l’adresse par défaut
  • 0x41 avec un pont sur A0
  • 0x44 avec un pont sur A1
  • 0x45 avec un pont sur A0 et A1

Code

Pour afficher les mesure de l’INA219, nous allons utiliser la librairie d’Adafruit Adafruit_INA219.h que vous pouvez télécharger ou installer directement depuis l’IDE Arduino.

La puissance électrique échanger par deux appareils se calcule en multipliant la tension et le courant sur le bus les reliant:

P=UxI avec P la puissance(W), U la tension(V) et I le courant(A).

L’énergie est la puissance consommée par l’appareil au cours du temps

E=Pxt avec E l’énergie(Wh), P la puissance (W) et t le temps(h)

Fonctions à connaitre:

  • begin() pour initialiser la communication avec le capteur
  • getBusVoltage_V() pour récupérer la valeur de tension sur le bus Vin- /Vin+
  • shuntVoltage_mV() pour récupérer la tension aux bornes de la résistance de shunt
  • getCurrent_mA() pour récupérer la valeur de courant à partir de la résistance de shunt
#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219;

  float voltage_V = 0,shuntVoltage_mV,busVoltage_V;
  float current_mA = 0;
  float power_mW = 0;
  float energy_Wh=0;
  long time_s=0;

void setup(void) 
{
  Serial.begin(9600);
  uint32_t currentFrequency;
  ina219.begin();
  Serial.println("Measuring voltage and current with INA219");
}

void loop(void) 
{
  getData();
  delay(2000);
}

void getData(){
  
 time_s=millis()/(1000); // convert time to sec
 busVoltage_V = ina219.getBusVoltage_V();
 shuntVoltage_mV = ina219.getShuntVoltage_mV();
 voltage_V = busVoltage_V + (shuntVoltage_mV / 1000);
 current_mA = ina219.getCurrent_mA();
 //power_mW = ina219.getPower_mW(); 
 power_mW=current_mA*voltage_V; 
 energy_Wh=(power_mW*time_s)/3600;   //energy in watt hour
   
  
  Serial.print("Bus Voltage:   "); Serial.print(busVoltage_V); Serial.println(" V");
  Serial.print("Shunt Voltage: "); Serial.print(shuntVoltage_mV); Serial.println(" mV");
  Serial.print("Load Voltage:  "); Serial.print(voltage_V); Serial.println(" V");
  Serial.print("Current:       "); Serial.print(current_mA); Serial.println(" mA");
  Serial.print("Power:         "); Serial.print(power_mW); Serial.println(" mW");  
  Serial.print("Energy:        "); Serial.print(energy_Wh); Serial.println(" mWh");
  Serial.println("----------------------------------------------------------------------------");
}


Application

Une application possible avec un capteur INA219 est de créer un énergie-mètre afin de mesurer la puissance électrique absorbée par un panneau solaire, par exemple. Cela vous permet de vérifier le bon fonctionnement des cellules photovoltaïques, d’une part, et de mesurer ses performances au cours du temps.

Schéma de connexion entre batterie LiPo Arduino, capteur INA219 et panneau solaire

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 4.5 / 5. Vote count: 2

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?