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 :¶
-
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.
-
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.
-
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.
-
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:
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 :
É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 :
É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 :
É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 :
É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.
Voici le résultat final avec le plateau et le support :
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 :
- J'ai fixé les cellules de charges sur les impressions 3D en utilisant de la colle chaude.
- Des rainures ont été réalisées à l'aide d'une défonceuse pour le passage des câbles à l'intérieur.
- J'ai découpé des carrés dans une plaque d'acier, que j'ai collés au plateau pour renforcer sa structure.
- J'ai adapté un connecteur USB pour assurer la connectivité de la balance.
- Des guides ont été ajoutées sur le socle de la balance pour maintenir fermement le plateau en place.
- Un boîtier de protection pour le module HX711 et sa connectique a été ajouté.
- 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.
Après avoir placé les fils dans les rainures, j'ai appliqué une protection pour protéger les câbles.
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 :
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.
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.
J'ai pris soin de ne pas visser complètement le couvercle pour éviter d'endommager les fils.
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 :
Résultat¶
Voici la version 2 de ma balance :
Et voici l'intérieur :
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 :
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.
-
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.
-
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.
-
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.
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.
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.
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.
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/