Mehrere HX711 mit einem einzigen Clock Pin (SCK_PIN) betreiben

Hallo zusammen,

an einigen Stellen bin ich an der Frage vorbeigekommen, ob es möglich ist, mehrere HX711 mit nur einem Clock Pin (SCK_PIN) zu betreiben. Die Antwort: ja, es funktioniert (erprobt mit drei HX711, ESP8266 und folgender Bibliothek: GitHub - bogde/HX711: An Arduino library to interface the Avia Semiconductor HX711 24-Bit Analog-to-Digital Converter (ADC) for Weight Scales.).

Deshalb hier zur Doku ein kleines “How To” in Form von etwas Pseudo-Code.

Initialisierung im Code:

#include <HX711.h>                              // https://github.com/bogde/HX711

HX711 loadcell[3];
const int LOADCELL_SCK_PIN = 0;                 // D3/GPIO0
const int LOADCELL_DOUT_PIN[3] = {4, 5, 14};    // D2/GPIO4, D1/GPIO5, D5/GPIO14

Waagen “benutzen” geht dann bequem per Schleife:

for (i=0;i<3;i++) {
   loadcell[i].begin(LOADCELL_DOUT_PIN[i], LOADCELL_SCK_PIN);
   //.set_scale(), .set_offset(), .get_units(), .power_up() etc. funktionieren analog. 
}

Hoffe das erspart die ein oder andere Suche.

Grundsätzlich ginge es auch noch etwas schneller (genauer gesagt simultan), siehe: GitHub - compugician/HX711-multi: An Arduino library to interface multiple HX711 units simultaneously. Diesem Fork fehlen jedoch ein paar andere Verbesserungen (u.a. ESP32 issue, clock speed too fast · Issue #75 · bogde/HX711 · GitHub), deswegen habe ich ihn nicht getestet.

4 Likes