- Fonctionnement de la machine de pesage Arduino
- Composants requis pour la peseuse basée sur Arduino
- Machine de pesage basée sur Arduino - Schéma de circuit
- Faire le circuit sur un Perfboard pointillé
- Construire un boîtier pour une machine de pesage basée sur Arduino
- Machine de pesage Arduino - Code
Les balances de charge numériques sont un autre miracle de l'ingénierie et de la conception modernes. Oui, nous parlons de la balance que nous voyons souvent dans la plupart des épiceries et autres endroits, mais vous êtes-vous déjà demandé comment fonctionne une balance? Pour répondre à cette question, dans ce projet, nous allons jeter un coup d'œil sur la cellule de pesée et son fonctionnement. Enfin, nous allons construire une balance de charge portable basée sur Arduino avec le capteur de poids HX711, qui peut mesurer des poids allant jusqu'à 10 kg.
Cette peseuse est parfaite pour les magasins locaux, où ils emballent des articles en grande quantité. Tout comme les produits commerciaux, notre balance aura un bouton zéro qui met à zéro la balance. En outre, il a une option pour définir le poids pour la mesure, lorsque le poids de mesure atteint le poids défini, un signal sonore retentit rapidement et s'arrête lorsque le poids défini est égal au poids de mesure. De cette façon, l'utilisateur peut l'emballer simplement en entendant le son et n'aurait pas à regarder l'écran. Comme il s'agit d'un projet très simple, nous le construirons très facilement en utilisant des composants tels que Arduino et une cellule de charge à jauge de contrainte. Alors, sans plus tarder, allons droit au but.
Dans un article précédent, nous avons réalisé des projets tels que le capteur de poids basé sur Raspberry Pi et le conteneur intelligent IoT avec alerte par e-mail et surveillance Web à l'aide du module amplificateur de cellule de charge HX711 populaire. Alors, vérifiez si c'est votre exigence.
Fonctionnement de la machine de pesage Arduino
Le composant principal de ce projet est une cellule de charge et un module amplificateur de cellule de charge HX711. Comme vous pouvez le voir, un côté est marqué de dix kilogrammes. En outre, vous pouvez remarquer une sorte de colle protectrice blanche sur la cellule de charge et quatre couleurs différentes de fils qui sortent, découvriront le secret sous la colle protectrice blanche et la fonction de ces fils à quatre couleurs plus tard dans l'article.
Une cellule de pesée est un transducteur qui transforme la force ou la pression en sortie électrique. Il a deux côtés, disons le côté droit et le côté gauche, et il est fait de blocs d'aluminium. Comme vous pouvez le voir au milieu, le matériau est aminci en mettant un gros trou. C'est pourquoi c'est le point qui subit une déformation lorsqu'une charge est placée côté monture. Imaginez maintenant que la cellule du côté droit est montée sur la base et que le côté gauche est l'endroit où la charge est placée, cette configuration déforme la cellule de charge de la jauge de contrainte à cause du trou géant au milieu.
Lorsqu'une charge est placée du côté charge de la cellule de pesée, la partie supérieure subira une tension et la partie inférieure subira une compression. C'est pourquoi la barre en aluminium se plie vers le bas sur le côté gauche. Si nous mesurons cette déformation, nous pouvons mesurer la force qui a été appliquée sur le bloc d'aluminium et c'est exactement ce que nous allons faire.
Maintenant, la question reste ce qu'il y a à l'intérieur de la colle protectrice blanche? A l'intérieur de cette colle protectrice, on retrouvera un composant élastique très fin qui s'appelle une jauge de contrainte. Une jauge de contrainte est un composant utilisé pour mesurer la déformation. Si nous regardons de plus près ce composant, nous pouvons voir deux plots de connexion, puis nous avons un motif de fil conducteur avec des déflexions répétitives. Ce fil conducteur a une résistance définie. Lorsque nous le plions, la valeur de résistance changera? Ainsi, un côté de la jauge de contrainte est monté et fixé à un endroit, si nous plaçons un poids de l'autre côté de la barre en aluminium, cela forcera la jauge de contrainte à se plier, ce qui entraînera un changement de résistance. Comment cela se passe-t-il réellement? Le motif conducteur de la jauge de contrainte est en cuivre, ce fil aura une certaine surface et une certaine longueur, donc ces deux unités donneront la résistance du fil. La résistance d'un fil s'oppose à la circulation du courant. Maintenant, il est évident que si la zone de ce fil devient plus petite,moins d'électrons pourraient passer, ce qui signifie un courant plus faible. Maintenant, si nous augmentons la surface, cela augmentera la résistance d'un conducteur. Si une certaine force est appliquée à ce fil, cela étendra la zone et elle deviendra plus petite en même temps, la résistance augmentera. Mais cette variation de résistance est très faible. Si nous étirons la jauge de contrainte, la résistance augmentera et si nous la compressons, la résistance diminuera. Pour mesurer la force, nous devons mesurer la résistance. Mesurer directement la résistance n'est pas toujours pratique, car le changement est très faible. Ainsi, au lieu de mesurer la résistance, nous pouvons mesurer les tensions facilement. Donc, dans ce cas, nous devons convertir la sortie de jauge des valeurs de résistance en valeurs de tension.Si une certaine force est appliquée à ce fil, cela étendra la zone et elle deviendra plus petite en même temps, la résistance augmentera. Mais cette variation de résistance est très faible. Si nous étirons la jauge de contrainte, la résistance augmentera et si nous la compressons, la résistance diminuera. Pour mesurer la force, nous devons mesurer la résistance. Mesurer directement la résistance n'est pas toujours pratique, car le changement est très faible. Ainsi, au lieu de mesurer la résistance, nous pouvons mesurer les tensions facilement. Donc, dans ce cas, nous devons convertir la sortie de jauge des valeurs de résistance en valeurs de tension.Si une certaine force est appliquée à ce fil, cela étendra la zone et elle deviendra plus petite en même temps, la résistance augmentera. Mais cette variation de résistance est très faible. Si nous étirons la jauge de contrainte, la résistance augmentera et si nous la compressons, la résistance diminuera. Pour mesurer la force, nous devons mesurer la résistance. Mesurer directement la résistance n'est pas toujours pratique, car le changement est très faible. Ainsi, au lieu de mesurer la résistance, nous pouvons mesurer les tensions facilement. Donc, dans ce cas, nous devons convertir la sortie de jauge des valeurs de résistance en valeurs de tension.la résistance diminuera. Pour mesurer la force, nous devons mesurer la résistance. Mesurer directement la résistance n'est pas toujours pratique, car le changement est très faible. Ainsi, au lieu de mesurer la résistance, nous pouvons mesurer les tensions facilement. Donc, dans ce cas, nous devons convertir la sortie de jauge des valeurs de résistance en valeurs de tension.la résistance diminuera. Pour mesurer la force, nous devons mesurer la résistance. Mesurer directement la résistance n'est pas toujours pratique, car le changement est très faible. Ainsi, au lieu de mesurer la résistance, nous pouvons mesurer les tensions facilement. Donc, dans ce cas, nous devons convertir la sortie de la jauge des valeurs de résistance en valeurs de tension.
Nous pouvons le faire avec l'aide du pont de Wheatstone. Nous plaçons la jauge de contrainte dans le pont de Wheatstone si le pont est équilibré, la tension au point médian doit être nulle (auparavant, nous avons construit un projet dans lequel nous avons décrit le fonctionnement d'un pont de Wheatstone, vous pouvez le vérifier si vous le souhaitez. en savoir plus sur le sujet). Lorsque la jauge de contrainte change de résistance, elle déséquilibre le pont et la tension change également. C'est ainsi que le pont de Wheatstone convertit les variations de résistance en valeurs de tension.
Mais ce changement de tension est encore très faible, donc pour l'augmenter, nous devons utiliser le module HX711. Le HX711 est un CAN différentiel 24 bits, de cette façon, nous pourrions mesurer de très petits changements de tension. il donnera des valeurs de 0 à 2 exponentielles 24.
Composants requis pour la peseuse basée sur Arduino
Pour rendre ce projet aussi simple que possible, nous avons utilisé des composants très génériques que vous pouvez trouver dans n'importe quel magasin de bricolage local. L'image ci-dessous vous donnera une idée des composants. De plus, nous avons la nomenclature (BOM) ci-dessous.
- Cellule de charge (Nous utilisons une cellule de charge de 10 kg)
- Module amplificateur HX 711
- Arduino Nano
- I2C LCD 16X2 - Compatible I2C
- Résistance 1k -2 Nos
- LED -2Nos
- Avertisseur sonore
- PCB commun
- Batterie 7.4V (si vous le voulez portable)
- Régulateur de tension LM7805
Machine de pesage basée sur Arduino - Schéma de circuit
La cellule de pesée a quatre fils qui sont rouge, noir, vert et blanc. Cette couleur peut varier selon les fabricants, il est donc préférable de se référer à la fiche technique. Connectez le rouge à E + de la carte HX711, connectez le noir à E-, connectez le blanc à A + et connectez le vert à A-, Dout et l'horloge de la carte à D4 et D5 respectivement. Connectez une extrémité des boutons-poussoirs à D3, D8, D9 et d'autres extrémités à la terre. Nous avons un écran LCD I2C, alors connectez SDA à A4 et SCL à A5. Connectez la terre de l'écran LCD, HX711 et Arduino à la terre, connectez également les VCC au 5Vpin d' Arduino. Tous les modules fonctionnent sur 5V, nous avons donc ajouté un régulateur de tension LM7805. Si vous ne le souhaitez pas comme portable, vous pouvez directement alimenter l'Arduino à l'aide d'un câble USB.
Faire le circuit sur un Perfboard pointillé
Nous avons soudé tous les composants sur un tableau de bord en pointillé commun. Nous avons utilisé des en-têtes femelles pour souder l'Arduino et l'ADC avec le circuit imprimé, nous avons également utilisé des fils pour connecter tous les boutons-poussoirs et les LED. Une fois que tout le processus de soudage est terminé, nous nous sommes assurés que le 5V approprié sort du LM7805. Enfin, nous avons mis un interrupteur pour allumer / éteindre le circuit. Une fois que nous avons tous terminé, cela ressemblait à l'image ci-dessous.
Construire un boîtier pour une machine de pesage basée sur Arduino
Comme vous pouvez le voir, le capteur de force a des filets de vis, nous pouvons donc le monter sur une plaque de base. Nous allons utiliser un panneau en PVC pour la base de notre balance, pour cela, nous avons d'abord découpé un carré de 20 * 20 cm et quatre rectangles de 20 * 5 dans le panneau de PVC. Ensuite, à l'aide de colle dure, nous avons collé chaque pièce et fabriqué une petite enceinte.
N'oubliez pas que nous n'avons pas réparé un côté, car nous devons placer les boutons poussoirs, les LED et l'écran LCD dessus. Ensuite, nous avons utilisé une planche en plastique pour le haut de l'échelle. Avant de rendre cette configuration permanente, nous devons nous assurer que nous avons suffisamment d'espace entre le sol et la cellule de pesée, afin qu'elle puisse se plier, nous avons donc placé des vis et des écrous entre la cellule de charge et la base, nous avons également ajouté des entretoises en plastique entre la cellule de pesée et la partie supérieure. nous avons utilisé une feuille de plastique ronde comme le meilleur de l'équilibre.
Ensuite, nous avons placé l' écran LCD, les LED et les boutons-poussoirs sur le panneau avant, et tout ce qui est connecté avec un long fil isolé. Après avoir terminé le processus de câblage, nous avons collé le panneau avant à la base principale avec une certaine inclinaison, afin que nous puissions lire les valeurs de l'écran LCD très facilement. enfin, nous avons attaché l'interrupteur principal sur le côté de la balance et c'est tout. C'est ainsi que nous avons fabriqué le corps pour notre échelle de poids.
Vous pouvez concevoir avec vos idées, mais n'oubliez pas de placer la cellule de pesée comme dans l'image.
Machine de pesage Arduino - Code
Comme nous avons maintenant terminé le processus de construction de notre balance numérique, nous pouvons passer à la partie programmation. Pour une programmation facile, nous allons utiliser la bibliothèque HX711, la bibliothèque EEPROM et la bibliothèque LiquidCrystal. Vous pouvez télécharger la bibliothèque HX711 à partir du référentiel officiel GitHub, ou aller dans outils > inclure la bibliothèque > gérer la bibliothèque, puis rechercher la bibliothèque à l'aide du mot-clé HX711, après avoir téléchargé la bibliothèque, installez-la dans Arduino ide.
Tout d'abord, nous devons calibrer la cellule de pesée et stocker cette valeur sur EEPROM, pour cela, allez dans fichier> exemples> HX 711_ADC, puis sélectionnez le code d'étalonnage. Avant de télécharger le code, placez la balance sur une surface plane stable. Ensuite, téléchargez le code sur Arduino et ouvrez le moniteur série. Puis changez le débit en bauds à 572600. Maintenant, surveillez demander de prendre le poids, pour cela nous devons appuyer sur t et entrer.
Maintenant, nous devons placer le poids connu sur la balance, dans mon cas, c'est-à-dire 194 g. Après avoir placé le poids connu, tapez le poids sur le moniteur série et appuyez sur Entrée.
Maintenant, le moniteur série vous demande si vous souhaitez enregistrer la valeur dans l'EEPROM ou non, alors tapez Y pour choisir oui. Nous pouvons maintenant voir le poids sur le moniteur série.
Le code principal de ce projet, que nous avons développé à partir de l'exemple d'esquisse de la bibliothèque HX711. Vous pouvez télécharger le code de ce projet ci-dessous.
Dans la section de codage, tout d'abord, nous avons ajouté les trois bibliothèques. La bibliothèque HX711 sert à prendre les valeurs des cellules de pesée. EEPROM est la bibliothèque intégrée d'Arduino ide, qui est utilisée pour stocker des valeurs dans EEPROM et la bibliothèque LiquidCrystal est pour le module LCD l2C.
#comprendre
Ensuite, défini des entiers pour différentes broches et valeurs attribuées. La fonction de cellule de charge HX711_ADC sert à régler le Dout et la broche d'horloge.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; long t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; float buttonPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; float down_lastButtonState = 0;
Dans la section de configuration, tout d'abord, nous avons démarré le moniteur série, c'est uniquement pour le débogage. Ensuite, nous avons défini les modes de broche, tous les boutons poussoirs sont définis comme entrée. Avec l'aide de la fonction Arduino PULL UP, nous définissons les broches à un niveau logique élevé normalement. Donc, nous ne voulons pas utiliser de résistances externes pour cela.
pinMode (tpin, INPUT_PULLUP); pinMode (6, SORTIE); pinMode (12, SORTIE); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Les lignes de code suivantes servent à régler l'écran LCD I2C. Tout d'abord, nous avons affiché le texte de bienvenue en utilisant la fonction LCD.print () , après deux secondes, nous avons effacé l'affichage en utilisant lcd.clear () . C'est-à-dire qu'au début, l'écran affiche ARDUINO BALANCE comme texte de bienvenue, et après deux secondes, il efface et affiche les poids de mesure.
lcd.init (); LCD rétro-éclairage(); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("mesurons"); retard (2000); lcd.clear ();
Ensuite, nous avons commencé à lire les valeurs de loadcell en utilisant la fonction loadCell.begin () , après cela, nous lisons l'EEPROM pour les valeurs calibrées, nous le faisons en utilisant la fonction EEPROM.get () . Autrement dit, nous avons déjà stocké la valeur à l'aide du croquis d'étalonnage dans l' adresse EEPROM, nous ne faisons que reprendre cette valeur.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
Dans la section boucle, tout d'abord, nous vérifions si des données de la cellule de charge sont disponibles en utilisant LoadCell.update (), si disponible, nous lisons et stockons ces données, pour cela, nous utilisons LoadCell.getData () . Ensuite, nous devons afficher la valeur stockée sur l'écran LCD. Pour ce faire, nous avons utilisé la fonction LCD.print () . également, nous imprimons le poids défini. Le poids réglé est réglé à l'aide du compteur à bouton - poussoir. Cela a expliqué dans la dernière section.
if (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("set wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("poids:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Ensuite, nous définissons la valeur de la tare, pour cela, nous lisons d'abord l'état du bouton poussoir de tare en utilisant la fonction digitalRead () , si l'état est bas, nous tarons ce poids à zéro. La fonction de tare de cette balance est de ramener les lectures à zéro. Par exemple, si nous avons un bol dans lequel les choses sont chargées, alors le poids net sera le poids du bol + le poids des choses. Si nous appuyons sur le bouton de tare avec le bol sur la cellule de charge avant de charger les choses, le poids du panier sera annulé et nous pouvons mesurer le poids des choses seuls.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Maintenant, nous devons définir les conditions pour différentes indications telles que le réglage du délai du buzzer et de l'état de la LED. Nous l'avons fait en utilisant des conditions if , nous avons un total de trois conditions. Tout d'abord, nous calculons la différence entre le poids défini et le poids de mesure, puis nous stockons cette valeur dans la variable k.
float k = boutonPushCounter-i;
1. Si la différence entre le poids réglé et le poids de mesure est supérieure ou égale à 50 g, le buzzer émet un bip avec un délai de 200 millisecondes (lentement).
si (k> = 50) { digitalWrite (6, HIGH); retard (200); digitalWrite (6, FAIBLE); retard (200); }
2. Si la différence entre le poids réglé et le poids de mesure est inférieure à 50 et supérieure à 1 gramme, le buzzer émet un bip avec un délai de 50 millisecondes (plus rapide).
if (k <50 && k> 1) { digitalWrite (6, HIGH); retard (50); digitalWrite (6, FAIBLE); retard (50); }
3. Lorsque le poids de mesure est égal ou supérieur à la valeur définie, cela allumera le voyant vert et éteindra le buzzer et le voyant rouge.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, HIGH); }
Nous avons deux autres fonctions d'annulation () pour régler le poids réglé (pour compter la pression sur le bouton).
La fonction augmentant la valeur de consigne de 10 g à chaque pression. Cela se fait en utilisant la fonction digitalRead d'Arduino si la broche est basse, cela signifie que le bouton est enfoncé et cela incrémentera la valeur de 10 g.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
De même, checkdown permet de diminuer la valeur définie de 10 g à chaque pression.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
Ceci marque la fin de la partie programmation.
Cette balance électronique basée sur Arduino est parfaite pour mesurer les poids jusqu'à 10 kg (nous pouvons augmenter cette limite en utilisant une cellule de charge plus élevée). Ceci est précis à 99% par rapport aux mesures originales.
Si vous avez des questions concernant ce circuit de machine d'équilibrage de poids LCD basé sur Arduino, veuillez le poster dans la section des commentaires, merci!