INA219 Current Sensor + wemos d1 mini pro

Bonjour

Je vais essayée de utiliser un wemos d1 mini pro avec un INA219 Current Sensor.

Câblage
wemos d1 mini pro INA219
D1 SCL
D2 SDA
+5v +5v
GND GND

j'ai utilisé SCL/SDA deux résistance 4K7 et 5v

j'ai utilisé soft pour Scanner le bus I2C

#include <Wire.h>
 
void setup()
{
  Wire.begin();
 
  Serial.begin(115200);
  Serial.println("\nI2C Scanner");
}
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
 
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknow error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

résultats

10:19:54.782 -> I2C Scanner
10:19:54.782 -> Scanning...
10:19:54.782 -> I2C device found at address 0x40  !
10:19:54.782 -> done
10:19:54.782 ->

semble bon

j'essaie çà

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

Adafruit_INA219  ina219;
//Adafruit_INA219 ina219;

void setup(void) {

  Serial.begin(119200);

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

void loop(void) {

  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);

  Serial.print(busvoltage); Serial.print("\t");
  Serial.print(shuntvoltage); Serial.print("\t");
  Serial.print(loadvoltage); Serial.print("\t");
  Serial.print(current_mA); Serial.print("\t");
  Serial.println(power_mW);

  delay(1000);
}
10:51:30.472 -> Failed to find INA219 chip

Le ina219.begin() est fautif

Pourquoi ???

Merci

Bonjour

j'ai utilisé SCL/SDA deux résistance 4K7 et 5v

l'ESP8266 est , du point de vue de son fabricant, un composant dont les entrées sorties doivent se limiter à 3,3V pour un fonctionnement sûr.

l'INA219 accepte de fonctionner également sous 3,3V
alim INA219.png

Pourquoi donc faire intervenir le 5V qui n'apporte rien de bon à ce montage ?

alim INA219.png

al1fch

Avec 3.3v le Scan est bon mais ina219.begin() sort Failed to find INA219 chip ??

pourquoi

merci

Il n'y a aucune raison pour que le scanner détecte l'INA219 en 0x40 et pas le sketch.
Sauf bien entendu si tu as modifié l'adresse du module (A0 A1)

Remarque: s'il s'agit d'un module INA219 du commerce les résistances de pullup sont déjà présentes, inutile d'en ajouter.

Je n'ai aucun problème pour faire fonctionner ton sketch avec un D1 mini.

hbachetti

J'ai pas fait les ponts et le scan indique l'adresse 40 !!

Sans les résistances de pullup sans succès !!

merci

Je n'ai pas dit qu'ajouter des pullups empêcherait l'INA219 de fonctionner. Elles sont simplement inutiles.
Désolé je ne peux en dire plus.

Le module est-il défectueux ?
L'as-tu essayé avec un ARDUINO ?

Autre chose : la librairie Adafruit_INA219 est-elle la dernière version ?

a tout hasard préciser l'adresse 0x40 bien que cela ne soit en principe pas nécessaire (=adresse par défaut)

 Adafruit_INA219 ina219(0x40);

L'adresse 0x40 dans Adafruit_INA219.h n'a pas changé depuis la v1.0.0.

Par contre à partir de la v1.0.8 begin() retourne un bool. Auparavant, begin() ne retournait rien.

Mais si czio utilisait une ancienne version le compilateur signalerait une erreur sur if (! ina219.begin()) {
could not convert 'ina219.Adafruit_INA219::begin((& Wire))' from 'void' to 'bool'

Mais cela mérite quand même une vérification (fichier library.properties).

Et il existe aussi une possibilité pour que ce ne soit pas la vraie librairie Adafruit :

Également : Adafruit_INA219 repose sur Adafruit_BusIO

Pour résumer :
Adafruit_INA219 version 1.0.8
Adafruit_BusIO : version 1.3.2

Avec tout ça mon D1 mini est tout à fait satisfait :slight_smile:

EDIT :

  Serial.begin(119200);

Non : plutôt 115200