Files
notes-techniques/notes/technologie/HX711- Amplificateur 24-bits pour cellule de charge - code.c
Cédric Abonnel ab087228aa 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-).
2026-02-15 16:46:07 +00:00

75 lines
1.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
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 laffichage 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);
}