From ab087228aa4f00e5a257ac2c3163ee3ae646ddb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Abonnel?= Date: Sun, 15 Feb 2026 16:46:07 +0000 Subject: [PATCH] Ajouter notes/technologie/HX711- Amplificateur 24-bits pour cellule de charge - code.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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-). --- ...ur 24-bits pour cellule de charge - code.c | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 notes/technologie/HX711- Amplificateur 24-bits pour cellule de charge - code.c diff --git a/notes/technologie/HX711- Amplificateur 24-bits pour cellule de charge - code.c b/notes/technologie/HX711- Amplificateur 24-bits pour cellule de charge - code.c new file mode 100644 index 0000000..255faef --- /dev/null +++ b/notes/technologie/HX711- Amplificateur 24-bits pour cellule de charge - code.c @@ -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 +#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); +}