Ajouter notes/technologie/HX711- Amplificateur 24-bits pour cellule de charge - code.c
Calibration (méthode simple) : poser une masse connue (ex. 1 kg), lire la valeur affichée, puis ajuster CALIBRATION_FACTOR jusqu’à obtenir la bonne valeur. Si l’affichage part en négatif quand tu ajoutes du poids, inverse le signe du facteur (ou inverse A+/A-).
This commit is contained in:
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
ESP32 + HX711 (Arduino framework)
|
||||||
|
- DOUT (DT) -> GPIO 4
|
||||||
|
- SCK -> GPIO 5
|
||||||
|
- VCC HX711 -> 3V3 (recommandé) ou 5V si module compatible
|
||||||
|
- GND -> GND
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Calibration (méthode simple) : poser une masse connue (ex. 1 kg), lire la valeur affichée, puis ajuster CALIBRATION_FACTOR jusqu’à obtenir la bonne valeur.
|
||||||
|
Si l’affichage part en négatif quand tu ajoutes du poids, inverse le signe du facteur (ou inverse A+/A-).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "HX711.h"
|
||||||
|
|
||||||
|
static const int PIN_DOUT = 4;
|
||||||
|
static const int PIN_SCK = 5;
|
||||||
|
|
||||||
|
HX711 scale;
|
||||||
|
|
||||||
|
// Ajuster après calibration
|
||||||
|
static float CALIBRATION_FACTOR = -7050.0f; // exemple (le signe dépend du câblage)
|
||||||
|
|
||||||
|
void waitReadyOrFail(uint32_t timeoutMs = 2000) {
|
||||||
|
uint32_t start = millis();
|
||||||
|
while (!scale.is_ready()) {
|
||||||
|
if (millis() - start > timeoutMs) {
|
||||||
|
Serial.println("HX711 non prêt (timeout). Vérifier câblage/alimentation.");
|
||||||
|
delay(1000);
|
||||||
|
start = millis();
|
||||||
|
}
|
||||||
|
delay(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
// (Optionnel) Fixer explicitement les modes
|
||||||
|
pinMode(PIN_DOUT, INPUT);
|
||||||
|
pinMode(PIN_SCK, OUTPUT);
|
||||||
|
|
||||||
|
scale.begin(PIN_DOUT, PIN_SCK);
|
||||||
|
|
||||||
|
// Si la lib le permet (selon version), choisir gain/canal :
|
||||||
|
// scale.set_gain(128);
|
||||||
|
|
||||||
|
Serial.println("Initialisation HX711...");
|
||||||
|
waitReadyOrFail();
|
||||||
|
|
||||||
|
Serial.println("Tare (ne rien mettre sur la balance)...");
|
||||||
|
scale.set_scale(); // échelle à 1
|
||||||
|
scale.tare(20); // moyenne sur 20 mesures
|
||||||
|
Serial.println("Tare OK.");
|
||||||
|
|
||||||
|
scale.set_scale(CALIBRATION_FACTOR);
|
||||||
|
|
||||||
|
Serial.println("Lecture en cours. Utiliser une masse étalon pour calibrer.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
waitReadyOrFail();
|
||||||
|
|
||||||
|
// Moyenne sur N lectures (réduit le bruit)
|
||||||
|
const int N = 10;
|
||||||
|
float units = scale.get_units(N);
|
||||||
|
|
||||||
|
Serial.print("Poids (unités calibrées) : ");
|
||||||
|
Serial.println(units, 3);
|
||||||
|
|
||||||
|
delay(250);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user