Bonjour,
J'essaie de construire une balance pour une ruche. Voici mon montage :
Voici mon code
#include <HX711.h>
#define DOUT 4
#define CLK 5
HX711 scale;
// Facteurs de calibration pour chaque jauge
// Remplacez les valeurs par les facteurs de calibration que vous souhaitez utiliser
const float calibrationFactors[4] = {0.005, 0.005, 0.005, 0.005};
void setup() {
Serial.begin(9600);
scale.begin(DOUT, CLK);
}
void loop() {
float sumMass = 0.0;
int numMeasurements = 5;
// Mesurer les masses pour chaque jauge et calculer la somme
for (int i = 0; i < numMeasurements; i++) {
for (int j = 0; j < 4; j++) {
float measuredMass = measureScale(j);
sumMass += measuredMass;
Serial.print("Jauge ");
Serial.print(j + 1);
Serial.print(": ");
Serial.print(measuredMass);
Serial.println(" g");
delay(100);
}
}
// Calculer la moyenne des masses mesurées
float averageMass = sumMass / (numMeasurements * 4);
Serial.print("Moyenne des masses mesurées: ");
Serial.print(averageMass);
Serial.println(" g");
delay(1000);
}
float measureScale(int index) {
// Appliquer le facteur de calibration à la lecture brute
float calibratedReading = scale.read() * calibrationFactors[index];
return calibratedReading;
}
Voici le retour de la console
07:56:37.773 -> Jauge 1: 1258.87 g
07:56:37.874 -> Jauge 2: 1258.95 g
07:56:37.974 -> Jauge 3: 1258.85 g
07:56:38.054 -> Jauge 4: 1258.66 g
Je n'ai placé aucune masse sur le plateau reposant sur les jauges
Je ne comprends pas pourquoi j'obtiens cela.
Pourriez vous m'aider, je vous en remercie beaucoup
il est normal que les 4 valeurs soient ideniques .....et pas surprnnant que cette valeur commune diffère un peu de zéro
le HX711 amplifie et convertit la tension unique résultat du déséquilbre d'un pont de Wheatstone formé par 4 jauges correctement montées.Ce déséquilibre étant ci-dessous traité par les entrées INA= et INA- (extrait de la doc du composant HX711)
la faible tension destinée à être amplifiée et convertie est (Vina+ - Vina-)
INA+ et INA - formant l'entrée différentielle principale des HX711
Acquérir 4 valeurs indépendantes et en faire la moyenne ne correspond pas au principe de fonctionnement des HX711
L'écart à zéro constaté se gère en faisant la tare pour compenser le poids du plateau et les petites inégalités entre les 4 jauges supposées parfaitement identiques en théorie
Merci beaucoup. Si je comprends bien il faut que je modifie le code pour obtenir une seule mesure en tarant l'ensemble (4 jauges de contraintes + plateau) est ce bien cela ?
oui , c'est cela le pont de Wheatstone pouvant éventuellement comporter 4 jauges en en faisant travailler 2 en compression et 2 , opposés ,en extension
/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/arduino-load-cell-hx711/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
// Calibrating the load cell
#include "HX711.h"
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 4;
const int LOADCELL_SCK_PIN = 5;
HX711 scale;
void setup() {
Serial.begin(57600);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
}
void loop() {
if (scale.is_ready()) {
scale.set_scale();
Serial.println("Tare... remove any weights from the scale.");
delay(5000);
scale.tare();
Serial.println("Tare done...");
Serial.print("Place a known weight on the scale...");
delay(5000);
long reading = scale.get_units(10);
Serial.print("Result: ");
Serial.println(reading);
}
else {
Serial.println("HX711 not found.");
}
delay(1000);
}
//calibration factor will be the (reading)/(known weight)
j'obtiens sur la console (masse de ref de 3000g)
15:51:53.342 -> Tare... remove any weights from the scale.
15:51:59.086 -> Tare done...
15:51:59.086 -> Place a known weight on the scale...Result: 68105
15:52:05.853 -> Tare... remove any weights from the scale.
15:52:11.577 -> Tare done...
15:52:11.577 -> Place a known weight on the scale...Result: -21
15:52:18.379 -> Tare... remove any weights from the scale.
15:52:24.073 -> Tare done...
15:52:24.073 -> Place a known weight on the scale...Result: 7
15:52:30.867 -> Tare... remove any weights from the scale.
15:52:36.613 -> Tare done...
15:52:36.613 -> Place a known weight on the scale...Result: -4
15:52:43.361 -> Tare... remove any weights from the scale.
15:52:49.097 -> Tare done...
15:52:49.097 -> Place a known weight on the scale...Result: 8
15:52:55.845 -> Tare... remove any weights from the scale.
15:53:01.572 -> Tare done...
15:53:01.572 -> Place a known weight on the scale...Result: -26
15:53:08.357 -> Tare... remove any weights from the scale.
15:53:14.103 -> Tare done...
15:53:14.103 -> Place a known weight on the scale...Result: -34
15:53:20.858 -> Tare... remove any weights from the scale.
15:53:26.576 -> Tare done...
15:53:26.576 -> Place a known weight on the scale...Result: -3
15:53:33.358 -> Tare... remove any weights from the scale.
15:53:39.087 -> Tare done...
15:53:39.087 -> Place a known weight on the scale...Result: 10
15:53:45.857 -> Tare... remove any weights from the scale.
15:53:51.568 -> Tare done...
15:53:51.568 -> Place a known weight on the scale...Result: -1
15:53:58.378 -> Tare... remove any weights from the scale.
15:54:04.078 -> Tare done...
15:54:04.078 -> Place a known weight on the scale...Result: -10
15:54:10.853 -> Tare... remove any weights from the scale.
15:54:16.583 -> Tare done...
15:54:16.583 -> Place a known weight on the scale...Result: 13
15:54:23.389 -> Tare... remove any weights from the scale.
15:54:29.095 -> Tare done...
15:54:29.095 -> Place a known weight on the scale...Result: -15
15:54:35.862 -> Tare... remove any weights from the scale.
15:54:41.578 -> Tare done...
15:54:41.578 -> Place a known weight on the scale...Result: -11
15:54:48.346 -> Tare... remove any weights from the scale.
15:54:54.078 -> Tare done...
15:54:54.078 -> Place a known weight on the scale...Result: -19
15:55:00.846 -> Tare... remove any weights from the scale.
15:55:06.574 -> Tare done...
15:55:06.574 -> Place a known weight on the scale...Result: 11
15:55:13.373 -> Tare... remove any weights from the scale.
15:55:19.078 -> Tare done...
15:55:19.078 -> Place a known weight on the scale...Result: -32
15:55:25.856 -> Tare... remove any weights from the scale.
15:55:31.595 -> Tare done...
15:55:31.595 -> Place a known weight on the scale...Result: -15
15:55:38.345 -> Tare... remove any weights from the scale.
15:55:44.074 -> Tare done...
15:55:44.074 -> Place a known weight on the scale...Result: 29
15:55:50.880 -> Tare... remove any weights from the scale.
15:55:56.597 -> Tare done...
15:55:56.597 -> Place a known weight on the scale...Result: 17
15:56:03.364 -> Tare... remove any weights from the scale.
15:56:09.115 -> Tare done...
15:56:09.115 -> Place a known weight on the scale...Result: -20
15:56:15.870 -> Tare... remove any weights from the scale.
15:56:21.568 -> Tare done...
15:56:21.568 -> Place a known weight on the scale...Result: 12
15:56:28.358 -> Tare... remove any weights from the scale.
15:56:34.067 -> Tare done...
15:56:34.067 -> Place a known weight on the scale...Result: 18
15:56:40.880 -> Tare... remove any weights from the scale.
15:56:46.568 -> Tare done...
15:56:46.568 -> Place a known weight on the scale...Result: -25
15:56:53.380 -> Tare... remove any weights from the scale.
15:56:59.112 -> Tare done...
15:56:59.112 -> Place a known weight on the scale...
Que pensez vous de ces valeurs , avant que je ne calcul de facteur de calibration ?
#include "HX711.h"
#define DOUT 3 // modification selon le branchament
#define CLK 2 // modification selon le branchament
HX711 scale(DOUT, CLK);
float calibration_factor = -7050; //valeur de base peut etre mise à - 10 000
void setup() {
Serial.begin(9600);
Serial.println("HX711 calibration sketch");
Serial.println("Remove all weight from scale");
Serial.println("After readings begin, place known weight on scale");
Serial.println("Press + or a to increase calibration factor");
Serial.println("Press - or z to decrease calibration factor");
scale.set_scale();
scale.tare(); //remise à zero de la tare, ne rien poser
long zero_factor = scale.read_average(); //Obtenir une lecture de base
Serial.print("Zero factor: "); //Cela peut être utilisé pour supprimer le besoin de tarer la balance. Utile dans les projets à échelle permanente.
Serial.println(zero_factor);
}
void loop() {
scale.set_scale(calibration_factor); //Ajuster à ce facteur d'étalonnage
Serial.print("Reading: ");
Serial.print(scale.get_units(), 3); // 3 = 3 decimales, 2 ......
Serial.print(" Kgs");
Serial.print(" calibration_factor: ");
Serial.print(calibration_factor);
Serial.println();
if(Serial.available())
{
char temp = Serial.read();
if(temp == '+' || temp == 'a')
calibration_factor += 10;
else if(temp == '-' || temp == 'z')
calibration_factor -= 10;
}
}
je lance a vide puis je mets un poids connu. en effectuant des + ou -, tu obtiens ton poids avec la valeur de calibration que tu utiliseras dans tes programmes.
Merci beaucoup à tous. J'y suis arrivé.
Est ce que la température a un impact significatif ? La balance se trouvera sous une ruche avec une température extérieure de 42°c environ en plein après midi en été.
Si oui, comment intégrer la fluctuation de T°c ?
Certainement la température aura un effet.
La question est de savoir s'il sera gênant.
Ce sujet a déjà été traité.
La balance pour les ruches et la porte de poulailler automatique sont les deux sujets qui ont les plus étés traités sur ce forum.
Le forum a un moteur de recherche, tu l'utilises pour profiter de l'expérience des autres.
J'y ai entré : Balance ruche
et j'ai obtenu 33 réponces.
Bonjour Frankydu13
Je vous confirme que vous allez avoir des fluctuations en fonction de la température. Je suis actuellement en train de travaillez pour compenser ces fluctuations. J'obtiens quelques résultats intéressants même si je suis encore loin d'une annulation : j'arrive à les réduire d'un facteur 2.5 environ. Si cela vous intéresse on peut en discuter