samedi 10 octobre 2020

Balance à base d'Arduino

Dans cet article, nous mesurons la masse d'un objet au moyen d'une balance branchée à un module HX711 et à un Arduino Uno.


Matériel

Je me suis procuré un kit constitué d'une cellule de charge, d'un module HX711 (convertisseur analogique/numérique à 24 bits spécialement conçu pour traiter le signal d'une cellule de charge), de deux plaques circulaires en acrylique et de la quincaillerie nécessaire pour assembler le tout.

Si vous préférez, il est facile d'acheter uniquement la cellule de charge et le module HX711.


Principe de fonctionnement

La cellule de charge (load cell), ou capteur de force, est un morceau de métal sur lequel on a collé quatre jauges de contrainte (ou jauges de déformations): il s'agit de résistances qui varient lorsque la cellule de charge se déforme. Ces quatre jauges sont branchées 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 un microcontrôleur.

Assemblage

Chacun des disques en acrylique est fixé à un côté de la cellule de charge, de façon à former un profil qui ressemble un peu à un "S":


Sur la cellule de charge, une flèche indique le sens de la déflexion: cette flèche pointera vers le bas pendant l'utilisation de la balance.


Une fois l'assemblage terminé, un des disques en acrylique forme la base de la balance, alors que l'autre constitue son plateau.


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


La cellule de charge est branchée 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.

Connexion du module HX711 à l'Arduino

Le module HX711 est branché à l'Arduino Uno de cette façon:

  • GND du HX711: GND de l'Arduino
  • DT du HX711: broche 2 de l'Arduino (données numériques)
  • SCK du HX711: broche 3 de l'Arduino (signal d'horloge)
  • VCC du HX711: sortie 5 V de l'Arduino


Installation de la bibliothèque HX711

Le gestionnaire de bibliothèques présente plusieurs bibliothèques spécialement conçues pour faciliter l'utilisation du HX711. J'ai choisi celle qui a été mise au point par Bogdgan Necula, qui est également compatible avec l'ESP8266, l'ESP32 et le STM32.


Pour vérifier le fonctionnement correct de votre balance, vous pouvez utiliser le sketch "HX711_basic_example" qui est fourni avec la bibliothèque.


Ce sketch affiche dans le moniteur série les données brutes issues du HX711. N'espérez pas obtenir une valeur déjà calibrée en kilogrammes, mais si la valeur affichée augmente lorsque vous augmentez la masse sur le plateau, tout va bien!


Calibration et utilisation de la balance

Le sketch ci-dessous affiche la masse en grammes, à la condition d'avoir trouvé le bon paramètre de calibration.

-

-

Pour calibrer la balance, il faut modifier la ligne 34 pour que set_scale soit utilisé sans paramètres:

balance.set_scale();

On exécute le sketch pendant que le plateau de la balance est vide et, une fois la balance en fonction, on place sur le plateau une masse dont on connaît la valeur.

Dans mon cas, la valeur 76486 s'affichait lorsqu'une masse de 200 g était placée sur le plateau. 

76486 divisé par 200 donne 382, et j'ai donc ajouté le paramètre "382" à la méthode set_scale (ligne 34):

balance.set_scale(382);

Voici les résultats obtenus après calibration, lorsque le plateau est vide, puis lorsque j'y place 200 grammes, 400 grammes et 600 grammes:




À lire également

La même balance a été branchée à un Raspberry Pi et à un ESP32/ESP8266.

Il y a quelques années, une tentative de mesurer une masse avec un ressort et un potentiomètre s'était révélée beaucoup plus approximative.

Yves Pelletier (TwitterFacebook

4 commentaires:

  1. Bonjour,
    Dans le cadre d'un projet universitaire, je dois concevoir une balance pour suivre la masse d'une ruche. Je dispose pour l'instant d'une Carte Arduino MKR 1200 Fox. Est-ce que ce programme est le même que pour un capteur allant jusqu'à 80kg ?

    Merci d'avance.

    RépondreSupprimer
  2. Bonjour,
    Je suis sur un projet similaire, avec un envoie de la Masse de façon journalière via Lora (pour au final passer par TTN). J'ai trouvé des jauges de 50kg.En en mettant 4 cela fait 200kg largement suffisant pour une ruche voir 2. Mon but final est une batterie et un petit panneau solaire. Bonne chance

    RépondreSupprimer