Skip to content

Conception et fonctionnement du module balance

L'objectif de ce module est de concevoir et de réaliser une balance fiable et précise pour surveiller le poids d'une ruche et de l'envoyer au serveur IoT. La balance ainsi construite permettra aux apiculteurs de suivre en temps réel les variations de poids de leurs ruches, indicateurs cruciaux de la santé des colonies d'abeilles et de la production de miel. En utilisant des cellules de charges et des technologies accessibles comme le module HX711 et le Raspberry Pi.

Fonctionnement de la balance :

  1. Réaction des cellules de charges à la force :

    Lorsqu'un objet est placé sur la plate-forme de la balance, il exerce une force sur les cellules de charges. Ces cellules sont conçues pour convertir cette force mécanique en une variation de résistance électrique. En d'autres termes, la déformation mécanique causée par la force appliquée entraîne une modification de la résistance électrique des cellules de charges.

  2. Pont de Wheatstone déséquilibré :

    Lescellules de charges sont disposées dans un circuit électrique appelé pont de Wheatstone. Ce pont est initialement équilibré lorsqu'il n'y a pas de charge sur la balance. Lorsqu'un objet est placé sur la balance, la force qu'il exerce déforme les cellules de charges, provoquant un déséquilibre dans le pont de Wheatstone.

  3. Variation de tension proportionnelle à la force :

    Le déséquilibre dans le pont de Wheatstone provoque une variation de tension sur ses branches. Cette variation de tension est proportionnelle à la force exercée sur les cellules de charges. En d'autres termes, plus la force exercée par l'objet est grande, plus la variation de tension est importante.

  4. Amplification et conversion par le HX711 :

    Le module HX711 est conçu pour amplifier et convertir cette variation de tension en une valeur numérique. Il amplifie le signal électrique pour qu'il soit dans une plage appropriée pour la conversion analogique-numérique (CAN). Ensuite, il convertit ce signal analogique en une valeur numérique digitale.

Construction de la version 1 de la balance

Voici mon schéma de création de la balance:

Schéma balance
Figure 41 — Schéma balance

J'ai commencé par découper 4 chutes de bois pour créer mon plateau, ma balance et mes deux rebords.

Étape 1

Découpage des 4 planches et création du support. J'ai prés percés avant de viser les planches entre elles pour que le résultat soit propre.

Voici le résultat :

Support du dessus
Figure 42 — Support du dessus
Support de côté
Figure 43 — Support de côté

Étape 2

Par la suite j'ai disposé les quatre empreinte qui servent a tenir les cellules de charges dans les quatre coins du support et je l'ai aie visée pour qu'il ne bouge plus et qu'il puisse être enlevé.

Info

J'ai téléchargé cette empreinte 3D dans le projet de Gilles

Voici le résultat :

Support avec empreinte3D
Figure 44 — Support avec empreinte3D
Support avec 4 empreinte3D
Figure 45 — Support avec 4 empreinte3D

Étape 3

J'ai disposé les différentes cellules de charges dans les empreintes et j'ai réuni les fils au milieu de la planche.

Voici le résultat :

Cellules de charge
Figure 46 — Cellules de charge
Support avec les cellules de charge
Figure 47 — Support avec les cellules de charge

Étape 4

Pour la création du plateau j'ai du viser des vises avec des rondelles pour que le contacte avec les cellules de charges puisse ce faire au mieux.

Voici le résultat :

Plateau du dessous
Figure 48 — Plateau du dessous

Étape 5

Pour cette dernière étape, j'ai dû finaliser le plateau pour qu'il touche les 4 cellules de charges en même temps. La planche du plateau n'était pas totalement plate j'ai du rajouter des rondelles aux endroits ou il y avait du jeu.

Finalisation du plateau
Figure 49 — Finalisation du plateau

Voici le résultat final avec le plateau et le support :

Résultat
Figure 50 — Résultat

Construction de la version 2 de la balance

Bien que le schéma de base soit resté inchangé, j'ai agrandi les dimensions du plateau et du socle, les portant désormais à 50 cm x 60 cm. Les premières étapes de construction sont demeurées les mêmes que celles du premier prototype de la balance.

Améliorations apportées

La version précédente présentait des opportunités d'amélioration, que j'ai exploitées comme suit :

  1. J'ai fixé les cellules de charges sur les impressions 3D en utilisant de la colle chaude.
  2. Des rainures ont été réalisées à l'aide d'une défonceuse pour le passage des câbles à l'intérieur.
  3. J'ai découpé des carrés dans une plaque d'acier, que j'ai collés au plateau pour renforcer sa structure.
  4. J'ai adapté un connecteur USB pour assurer la connectivité de la balance.
  5. Des guides ont été ajoutées sur le socle de la balance pour maintenir fermement le plateau en place.
  6. Un boîtier de protection pour le module HX711 et sa connectique a été ajouté.
  7. Deux barres métalliques ont été fixées sur le plateau pour éviter tout contact entre le bois du plateau et celui de la ruche, afin de prévenir la moisissure.

Ces ajustements et améliorations ont été pensés pour optimiser les performances et la durabilité de la balance.

Réalisation des rainures

Pour assurer un câblage ordonné, j'ai opté pour l'utilisation d'une défonceuse de la marque Festool. Cette machine m'a permis de créer des rainures dans le bois, facilitant le passage des câbles des capteurs de poids. Grâce à sa précision et à sa facilité d'utilisation, j'ai pu réaliser des découpes nettes et précises.

Rainure dans le bois
Figure 51 — Rainure dans le bois

Après avoir placé les fils dans les rainures, j'ai appliqué une protection pour protéger les câbles.

Protection fils
Figure 52 — Protection fils

Collage des plaques d'acier

Pour assurer une bonne connexion entre les cellules de charges et le plateau, j'ai utilisé une colle instantanée pour fixer des carrés de 5 cm de côté en acier sous le plateau.

Voici le résultat :

Collage des plaques d'acier
Figure 53 — Collage des plaques d'acier

Guide de maintien du plateau

Pour maintenir le plateau sur le support, j'ai fabriqué huit guides à partir de chutes de bois restantes et les ai fixées avec des vis sur le socle. J'ai choisi des vis pour permettre aux guides de bouger légèrement de gauche à droite, offrant une certaine résistance. Cela permet de baisser les guides une fois la ruche correctement placée sur la balance, annulant ainsi le frottement avec le plateau et garantissant des données de capteurs précises.

Quide de maintien du plateau
Figure 54 — Quide de maintien du plateau

Protection du module HX711

La protection du module HX711 a été réalisée avec un couvercle de boîte de dérivation, que j'ai directement vissé dans le support de la balance.

Protection module HX711 du dessus
Figure 55 — Protection module HX711 du dessus

J'ai pris soin de ne pas visser complètement le couvercle pour éviter d'endommager les fils.

Protection module HX711
Figure 56 — Protection module HX711

Fixation des barres métalliques

J'ai découpé des barres métalliques de la même taille que le plateau, puis je les ai percées avec une fraise pour que les vis dépassent le moins possible. Ensuite, j'ai fixé les barres métalliques au plateau avec des vis.

Voici le résultat :

Barre métallique fixée au plateau
Figure 57 — Barre métallique fixée au plateau

Résultat

Voici la version 2 de ma balance :

Balance v2 finie
Figure 58 — Balance v2 finie

Et voici l'intérieur :

Intérieur de la balance v2 finie
Figure 59 — Intérieur de la balance v2 finie

Câblage

Pour réaliser le câblage de la balance, j'ai coupé tous les fils des cellules de charges de la même longueur et je les ai soudés et protégés avec de la gaine thermorétractable, suivant ce schéma :

Câblage de la balance
Figure 60 — Câblage de la balance

Warning

Si les câbles ne sont pas de longueurs égales, les valeurs ne seront pas précises.

L'étape suivante a été de vérifier les connexions et de s'assurer que le signal était correctement transmis. Une fois cette étape validée, j'ai lancé un programme de test pour calibrer la balance et vérifier sa précision. Cela a nécessité quelques ajustements, mais après quelques essais, la balance fonctionnait parfaitement.

Il est essentiel de noter que la stabilité de la balance dépend également de son environnement. J'ai donc placé la balance sur une surface plane et stable, loin de toute source de vibration.

Voici le script que j'ai utilisé pour calibrer la balance.

#!/usr/bin/env python3
import pickle  
import os 
import RPi.GPIO as GPIO 
from lib.hx711 import HX711 
try:
    # Configure le mode des broches GPIO en notation BCM
    GPIO.setmode(GPIO.BCM)

    # Crée un nouvel objet HX711 avec les broches de données (DOUT) et d'horloge (PD_SCK)
    hx = HX711(dout_pin=6, pd_sck_pin=5)

    # Nom du fichier pour la sauvegarde/restauration de l'état de l'objet HX711
    nom_fichier_donnee_balance = 'data_scale.pickle'

    # Vérifie si le fichier de données de la balance
    if os.path.isfile(nom_fichier_donnee_balance):
        # Si le fichier existe, ouvre-le et charge l'objet HX711
        with open(nom_fichier_donnee_balance, 'rb') as fichier_echange:
            hx = pickle.load(fichier_echange)
    else:
        # Si le fichier n'existe pas, effectue la procédure de tare pour calibrer le capteur
        err = hx.zero()
        if err:
            raise ValueError('La tare a échoué.')

        # Effectue une première lecture pour déterminer le décalage initial
        lecture = hx.get_raw_data_mean()

        # Invite l'utilisateur à placer un poids connu sur la balance pour l'étalonnage
        input('Placez un poids connu sur la balance, puis appuyez sur Entrée')
        lecture = hx.get_data_mean()
        if lecture:
            print("Valeur moyenne de l'HX711 soustraite par le décalage :", lecture)
            poids_connu_grammes = input(
                'Indiquez combien de grammes c\'était, puis appuyez sur Entrée : ')
            try:
                valeur = float(poids_connu_grammes)
                print(valeur, 'grammes')
            except ValueError:
                print('Entier ou flottant attendu et j\'ai obtenu :',
                      poids_connu_grammes)

            # Calcule le rapport d'échelle pour convertir les lectures brutes en poids
            ratio = lecture / valeur
            hx.set_scale_ratio(ratio)
            print('Le rapport est défini.')
        else:
            raise ValueError(
                'Impossible de calculer la valeur moyenne. Essayez le mode de débogage. Variable lecture:',
                lecture)

        # Sauvegarde l'état de l'objet HX711 dans un fichier d'échange pour une utilisation ultérieure
        print("Sauvegarde de l'état de l'HX711 dans un fichier d'échange sur la mémoire persistante")
        with open(nom_fichier_donnee_balance, 'wb') as fichier_echange:
            pickle.dump(hx, fichier_echange)
            fichier_echange.flush()
            os.fsync(fichier_echange.fileno())

    # Boucle infinie pour lire en continu les poids mesurés
    while True:
        print(hx.get_weight_mean(20), 'g')

# Nettoie les broches GPIO lorsqu'on quitte le programme
finally:
    GPIO.cleanup()

Cellule de charge

Warning

Sur ma balance le câble d'alimentation (Vcc) est de couleur blanche.

Cellule de charge
Figure 61 — Cellule de charge
  1. Alimentation (Vcc) : Les alimentations des cellules de charges sont reliées entre elles pour assurer une alimentation uniforme et stable, garantissant ainsi un fonctionnement cohérent du pont de Wheatstone.

  2. Mise à la Terre (GND) : Les mises à la terre des cellules de charges sont également reliées entre elles pour fournir une référence de tension commune, minimisant les interférences électromagnétiques et maintenant la stabilité du système de mesure.

  3. Signal de Sortie : Les signaux de sortie des cellules de charges, connectés aux branches du pont de Wheatstone, varient en fonction de la force appliquée, permettant ainsi une mesure précise de cette force.

Connecteur USB personnalisé pour le module HX711

Dans le cadre de mon projet, j'ai entrepris de créer un connecteur USB sur mesure afin de relier le module HX711 à un boîtier externe. Cette démarche visait à faciliter l'intégration du HX711 dans un système plus vaste, notamment en utilisant les ressources disponibles sur un Raspberry Pi.

Schéma de câblage du HX711 via USB
Figure 62 — Schéma de câblage du HX711 via USB

Voici la procédure que j'ai suivie pour adapter l'USB à mes besoins :

Correspondance des fils du câble USB avec les broches du HX711 :

  • Le fil rouge (VCC) est associé à l'alimentation VCC du HX711.
  • Le fil noir (GND) est connecté à la masse GND du HX711.
  • Le fil blanc (Data-) est relié à la broche DT (Data) du HX711.
  • Le fil vert (Data+) est connecté à la broche SCK (Clock) du HX711.

Pour une meilleure compréhension, voici un schéma illustrant les connexions :

[HX711](../../environnement_de_developpement/composant.md#module-hx711)        | Câble USB        | Raspberry Pi
-------------|------------------|-----------------------
VCC          | Rouge (VCC)      | Broche 2 (5V power)
GND          | Noir (GND)       | Broche 6 (Ground)
DT (Data)    | Blanc (Data-)    | Broche 31 (GPIO 6)
SCK (Clock)  | Vert (Data+)     | Broche 29 (GPIO 5)

Résultat

Dans un premier temps, j'ai dû déplacer la ruche pour pouvoir installer la balance sur le support de ruche. Ce déplacement est crucial pour assurer une installation précise et éviter toute perturbation des abeilles pendant la procédure.

Balance sur le support de ruche
Figure 63 — Balance sur le support de ruche

Après avoir vérifié la stabilité de la balance sur le support de ruche, j'ai pu remettre la ruche à son emplacement d'origine. Il est essentiel de s'assurer que la balance est bien en place pour obtenir des mesures précises et éviter tout basculement de la ruche.

Balance installée sous la ruche
Figure 64 — Balance installée sous la ruche

Voici une vue de profil de la ruche une fois installée sur la balance. Cette perspective permet de vérifier que la balance est correctement alignée et qu'elle supporte bien le poids de la ruche sans déséquilibre.

Balance installée profil
Figure 65 — Balance installée profil

Pour finir, j'ai connecté la balance au serveur IOT pour qu'elle soit alimentée et puisse transmettre les données.

Bibliographie

Pour créer cette balance, je me suis inspiré de plusieurs projets que j'ai trouvés sur internet.

https://pesetaruche.blogspot.com/2019/02/peser-sa-ruche-de-facon-simple-et-pour.html

https://iot.educ.cloud/balance-de-ruche-a-30eu-episode-1-fabrication-du-capteur/