Vous êtes sur la page 1sur 11

Formation Académique Bordeaux 2018

INSTRUMENTER UN SYSTÈME MULTIPHYSIQUE

Power Monitoring via BUS I2C SOUS LABVIEW

On souhaite mesurer la puissance fournie par un panneau photovoltaïque. Pour cela


nous allons mettre en œuvre un composant dédié : INA219. Ce composant permet de
mesurer la tension et le courant fourni au circuit aval. Les résultats de mesure seront
disponibles via une liaison I2C.

Charge
INA219

USB

Dans l’annexe 1 de ce document présente un résumé des caractéristiques de l’INA219.


La documentation complète, Datasheet_INA219.pdf, est disponible dans le dossier.
L’annexe 2 présente les points essentiels du protocole I2C.

I. Configuration logicielle et matérielle

1. Câblage

La ligne SDA doit être connectée sur la pin A4 de la carte Arduino, la ligne SCL sur la
pin A5. Les masses doivent être reliées et Vcc connecté à 5V (carte Arduino), comme
indiqué sur le schéma ci-dessus.

Le courant mesuré rentre par la pin Vin+ du INA219 et le circuit de charge, une
résistance dans notre cas, est connecté entre la pin Vin- et la masse.

2. Configuration logicielle

La procédure complète est détaillée sur ce site : https://forums.ni.com/t5/LabVIEW-


Interface-for-Arduino/LabVIEW-Interface-for-Arduino-Setup-Procedure/ta-p/3521346

I2C Page 1 sur 11


Avant de commencer l’activité sous LabVIEW, il faudra flasher la carte Arduino avec
le script « LIFA_Base.ino », à partir de l’IDE-Arduino, disponible dans le répertoire
‘LIFA_Base’.

Vérifier ensuite, à l’aide de ‘JKI VI Package Manager’ que le package ‘LabVIEW


Interface for Arduino’ soit installé.

II. Prise en main de la communication I2C


Dans cette partie on ne se préoccupe pas de la configuration du INA219, on
conservera les paramètres par défaut présent à la mise sous tension pour mesurer la
tension de shunt et la tension de bus.

Le VI ‘VshuntRegister.vi’ permet de récupérer la valeur du registre 1 (V shunt Register).


Voici le diagramme de ce vi :

Dans cet exemple, l’adresse du composant est 64.

Rappel : il faut d’abord préciser le numéro du registre qu’on souhaite adresser (0


: configuration / 1 : Vshunt / 2 :Vbus / 3 : courant / 4 : puissance / 5 : calibration) et
ensuite lire ou modifier ce registre.

Le résultat de la lecture du registre 1 sera présenté dans un tableau : la 1 ère valeur


correspond à l’octet de poids fort, la 2ème à l’octet de poids faible.

1. Mesure du courant

Modifier ce programme pour afficher la valeur du courant, connaissant la résistance


de shunt utilisée : Rshunt = 100 mΩ (détails sur le registre 1 page 7).

I2C Page 2 sur 11


Astuce :

Dans la palette des fonctions, onglet


Programmation>Numérique>Manipulation de données, le
module « Regrouper des nombres » permet de constituer
un mot de 16 bits à partir de deux octets.

2. Mesure de la puissance

1. Faire un nouveau vi qui donnera la valeur de la tension V bus (registre 2). Voir
détails sur le registre 2 page 7.

Attention : les 3 bits de poids faible ne font pas parti du résultat de la conversion
analogique numérique. Il faudra en tenir compte pour retrouver la valeur décimale
de la tension Vbus.

Maintenant qu’on est capable d’obtenir la valeur du courant et de la tension.

2. Sur un graph déroulant, afficher l’évolution de la puissance fournie par le


capteur solaire.

III. Configuration du INA 219

Dans la configuration par défaut, la tension pleine échelle de Vshunt est de ±320 mV,
ce qui n’est pas forcément adapté aux valeurs mesurées dans cette application. De
plus, les valeurs obtenues sont relativement bruitées : un moyennage permettra
d’obtenir des valeurs plus stables.

Le programme ‘INA219-Cfg.vi’ permet de lire et de modifier le registre de configuration.

1. Modifier ce vi de manière à pouvoir choisir le mode de fonctionnement du CAN :


l’utilisateur choisit par un menu déroulant le nombre de moyennage à chaque
mesure.
2. Après vérification du bon fonctionnement, le transformer en sous-vi.

I2C Page 3 sur 11


Note le vi ‘INA219-Cfg.vi’ servira à vérifier les modifications réalisées sur le
registre de configuration.

3. Proposer un vi qui affiche la puissance consommée sur un menu déroulant en


donnant la possibilité de configurer le CAN. Visualiser ainsi l’influence du
moyennage.

Bonus :

4. On pourrait aussi concevoir un vi qui permette de modifier les valeurs des bits
PG1 et PG0 du registre de configuration.
5. Faire un programme qui règle automatiquement le gain PGA en fonction de la
valeur du courant.

I2C Page 4 sur 11


Annexe 1 : Principales caractéristiques de l’INA219

L’INA219 permet de mesurer le courant absorbé ainsi que la tension d’alimentation


d’un circuit de charge. Les principales applications sont le contrôle charge de batterie,
le suivi de consommation électrique …

Exemple de circuit de configuration (d’après le datasheet INA219 Texas Instrument)

Adresse du composant INA219

Sur le shield INA219, les slots A0 et A1 permettent de modifier l’adresse du


composant. Par défaut, les bornes A0 et A1 sont reliées à la masse par une résistance
de pull down et l’adresse est 64. En reliant les deux pastilles par un pont, on peut
mettre les entrée A0 ou A1 à Vcc, l’adresse est alors :

A0 A1 Adresse
0 0 64
0 1 65
1 0 68
1 1 69

Mesures effectuées :

L’INA219 deux mesures de tension :

- La tension Vshunt aux bornes de la résistance de shunt, connectée entre les


bornes Vin+ et Vin- pour avoir l’image du courant ;
- La tension entre la borne Vin- et la masse, appelée Vbus, qui correspond à la
tension d’alimentation de la charge.

I2C Page 5 sur 11


Dans le montage utilisé, la résistance de shunt Rshunt est de 100 mΩ. Par conséquent
la courant maximal que l’on pourra mesurer est de ±3,2 A. La tension maximale V bus
est de 26V.

Les registres :

Le composant dispose de 5 registres de deux octets chacun :

Le registre de configuration et celui de calibration sont accessible en lecture et en


écriture. Les trois autres registres sont disponibles uniquement en lecture.

Le registre de configuration permet d’accéder à divers paramètres, notamment la


valeur pleine échelle de la tension Vshunt par les bit PG1 et PG0 d’une part et d’autre à
la configuration du CAN (nombre de bits, nombre d’échantillons moyennés) par les bits
BADC et SADC .

PG1 PG0 Vshunt Max


0 0 ± 40 mV
0 1 ± 80 mV
1 0 ± 160 mV
1 1 ± 320 mV

I2C Page 6 sur 11


Pour optimiser les performances de la mesure du courant, il convient de choisir la
valeur pleine échelle la mieux adaptée.

Le résultat de la dernière conversion analogique numérique de la tension de shunt


Vshunt (= Vin+ − Vin-) est automatiquement stockée dans le registre 1, shunt voltage
register. Quels que soient les paramètres utilisés dans le registre de configuration, le
LSB vaut 10µV.

Exemple :

De même la valeur de la tension de Vbus est stockée dans le registre 2, bus voltage
register. Quels que soient les paramètres utilisés dans le registre de configuration, le
LSB vaut 4mV.

Exemple :

Remarque importante : ici les 3 bits de poids faible ne font pas parti du résultat de la
conversion analogique numérique. Il faudra en tenir compte pour retrouver la valeur
décimale de la tension Vbus.

I2C Page 7 sur 11


Le registre de calibration permet de mettre à l’échelle la valeur du courant stockée
dans le registre 4, current register, ainsi que la valeur de la puissance dans le registre
3, power register. Cette calibration est nécessaire après chaque mise sous tension
pour obtenir une valeur dans les registres de courant et de puissance (3 et 4).

Programmation

Pour accéder à un registre particulier de l'INA219, il faut dans un premier temps écrire
l’adresse du registre visé. Ensuite le master peut lire ou écrire sur ce registre.

Exemple : Pour lire le registre 1 (Vshunt), le master doit d’abord écrire la valeur ‘1’ à
l’adresse du composant (64 par défaut) et ensuite lire 2 octets.

I2C Page 8 sur 11


Annexe 2 : Quelques notions sur le protocole I2C

I2C vient de l’anglais Inter-Integrated Circuit. Ce protocole a été développé par Philips
pour les applications domotiques, à partir de 1982. Il est généralement utilisé pour
relier sur un même réseau de communication un microprocesseur et des composants
annexes.

Mise en œuvre

Le bus I2C est un bus série (1 seul fil de données), synchrone (l’horloge est transmise),
bidirectionnel et half-duplex (principe des talkies walkies), permettant de relier un
maitre (le microprocesseur en général) et un ou des esclaves. Seul le maitre peut initier
la communication, mais un composant peut devenir maitre et un maitre esclave. La
communication entre deux composants esclaves n’est pas possible.

Au minimum trois fils sont nécessaire pour établir une communication :

- le fil de masse, la masse devant être commune à tous les composants,


- SDA (Serial Data Line) : ligne de données, bidirectionnelle,
- SCL (Clock) : le signal d’horloge de synchronisation.

Les deux lignes SDA et SCL sont tirées au potentiel V DD par des résistances de pull-
up Rp. Au repos, les lignes SDA et SCL sont donc au niveau haut.

(https://fr.wikipedia.org/wiki/I2C)

Le nombre maximal d’équipement connectés sur un même bus I2C n’est en théorie
limité que par le nombre d’adresse disponible : 128, les adresses des esclaves étant
codées sur 7 bits. Dans la pratique, un certain nombre d’adresses sont réservées ou
déjà attribuées par les fabricants. Aussi, un nombre important de composants
connectés sur le bus peut générer des problèmes de couplage capacitif et donc limiter
le débit du bus.

Niveaux électriques :

0 logique : compris entre -0,5V et 0,3.VDD

1 logique : compris entre 0,7.VDD et VDD


I2C Page 9 sur 11
Fréquence de transmission :

Il existe 5 vitesses de transmission. En mode standard (le plus lent) le débit est
inférieur à 100kbits/s, tandis que dans la version la plus rapide le débit peut atteindre
5 Mbits/s.

Transmission d’un octet :

- Bit de Start : les lignes étant au repos, le composant qui veut transmettre des
données met la ligne SDA à 0 et commence à émettre le signal d’horloge.
- Les 8 bits de l’octet à transmettre sont émis sur la ligne SDA en modifiant la
valeur uniquement lorsque le signal SCL est à 0. Le bit de poids fort est placé
en premier. La valeur de chaque bit est lue par le récepteur lorsque l’horloge
est à 1.
- AKN : le 9ème bit sur la ligne SDA est un bit d’acquittement émis par le récepteur
si l’octet a bien été reçu.
- Bit de Stop : lorsque l’horloge est à 1, SDA passe de 0 à 1.

Protocole

Seul le maitre peut initier la communication. Il doit donc obligatoirement commencer


par envoyer l’adresse du composant esclave visé (7 bits) et le 8ème bit envoyé précise
si l’octet suivant sera émis par le master (Write) ou par l’esclave (Read). La
communication se termine par un bit de Stop.

Mise en œuvre sous LabView via une carte Arduino

3 fonctions sont disponibles :

- Initialisation de la liaison I2C : cette fonction n’admet pas d’argument.

I2C Page 10 sur 11


- Lecture : on doit préciser l’adresse du composant et le nombre d’octet à lire.
Les données lues sont disponibles dans un tableau d’entiers non signés codés
sur 8 bits (type U8)

- Ecriture : il faut préciser en entrée l’adresse du composant et les données à


écrire sont placés dans un tableau d’entiers non signés codés sur 8 bits (type
U8)

I2C Page 11 sur 11

Vous aimerez peut-être aussi