vendredi 21 juillet 2023

Peser des objets avec le Raspberry Pi Pico (Micropython)

Ce projet consiste à mettre au point une balance constituée d'une cellule de charge, d'une module HX-711 et d'un Raspberry Pi Pico programmé en Micropython.


La cellule de charge (load cell), ou capteur de force, est un morceau de métal sur lequel quatre jauges de déformations on été collées: ces jauges sont des résistances qui varient lorsque la cellule de charge se déforme. Vous devez vous procurer une cellule de charge dont la charge (masse) maximale correspond à vos besoins. Il est possible d'acheter un kit comportant la cellule de charge, une paire de plaques de plexiglas et un module HX-711,


Ces quatre jauges sont branchées ensemble de façon à former un pont de Wheatstone.  Le module HX711 amplifie la très faible variation de signal engendrée par la très subtile déformation de la cellule de charge, et la convertit en un signal numérique qui pourra ensuite être traité par le Raspberry Pi Pico.

Connexion de la cellule de charge au module HX711

Le module HX711 comporte 6 connecteurs servant à brancher la cellule de charge (E+, E-, A-, A+, B-, B+), et quatre connecteurs servant à l'alimentation et à la communication avec un microcontrôleur (GND, DT, SCK, VCC).


J'ai branché ma cellule de charge au module HX711 de la façon suivante:

  • Fil rouge: E+
  • Fil noir: E-
  • Fil blanc: A-
  • Fil vert: A+

E+ et E- sont des sorties (signal d'excitation du pont de Wheatstone), alors que A+ et A- sont des entrées.  Je n'ai pas eu besoin de B- ni de B+.


Connexions du module HX711 au Raspberry Pi Pico

Voici comment j'ai branché le module HX711 au Raspberry Pi Pico

  • GND du HX711: une des broches GND du Pico
  • DT du HX711: GP15 du Pico *
  • SCK du HX711 : GP14 du Pico *
  • VCC du HX711: sortie 3,3 V du Pico
* Vous pouvez choisir n'importe quelle broche du Raspberry Pi Pico pour le branchement de DT et SCK, puisqu'on les définit à l'intérieur du programme.



Installation de la bibliothèque hx711-pico-mpy

Daniel Robertson a créé un pilote en micropython spécialement pour l'utilisation d'un module HX-711 avec un Raspberry Pi Pico: il est disponible ici sur Github. Afin d'utiliser ce pilote, il faut installer dans le Raspberry Pi Pico le fichier intitulé hx711.py.


Script en Micropython

Voici un script minimaliste (en micropython) qui affiche la masse dans la console, de façon répétitive.

-

-

Le pilote hx711.py s'occupe de la prise de mesure et notre script n'a donc qu'à utiliser la méthode get_value() chaque fois qu'on désire qu'une mesure soit prise. La valeur obtenue, toutefois, est un nombre entier qui n'est pas nul lorsque le plateau de la balance est vide, et qui ne correspond à aucune unité de mesure de masse.

Pour afficher la masse en gramme, notre programme doit faire un calcul à partir de la valeur retournée par get_value(); c'est ce qui est fait à la ligne 28. Les valeurs numériques utilisées pour cette conversion (aux lignes 18 et 19) sont spécifiques à la cellule de charge que j'ai utilisée, et doivent être modifiées pour chaque cellule de charge (même lorsqu'elles sont du même modèle). Cette calibration n'est pas très difficile à faire, il s'agit de récupérer le résultat brut de get_value() lorsqu'une masse connue se trouve sur le plateau de la balance.

Dans mon cas, les valeurs obtenues étaient très fluctuantes si je tentais d'afficher les dixièmes de grammes, c'est pourquoi j'ai arrondi au gramme près.

Bien entendu, l'ajout d'un afficheur OLED vous permettra de transformer le montage en une véritable balance autonome. De plus, le zéro a tendance à se désajuster légèrement d'une utilisation à l'autre; l'ajout d'un bouton "tare" serait certainement pertinent.

À lire également:


Yves Pelletier

Aucun commentaire:

Enregistrer un commentaire