Arduino Projekt: Bau einer Art digitalen Personenwaage

In diesem kleinen Tutorial zeige ich wie man mit ein paar Wägezellen, den Analog Wandler HX711 und dem Arduino UNO R4 WiFi ganz einfach eine Art digitale Personenwaage baut. Das Gewicht wird direkt auf der eingebauten LED-Matrix des Arduino R4 angezeigt. Wie so eine Wägezelle funktioniert, habe ich im Detail bei dem Bau einer Briefwaage gezeigt.

Benötigte Komponenten

Schaltung und Anschluss

Vier Halbbrücken-Wägezellen mit je drei Kabeln (meist rot, schwarz, weiß) lassen sich zu einer Vollbrücke verschalten. Dabei werden je zwei Sensoren elektrisch zu einer Brücke kombiniert. Die Farbzuordnungen können jedoch variieren.

Verdrahtung:

HX711 an Arduino UNO R4 WiFi:

  • VCC → 5V
  • GND → GND
  • DT → Pin 3
  • SCK → Pin 2

HX711 an Zellen:

ZelleRotWeißSchwarz
1E+Zelle 2Zelle 3
2A+Zelle 1Zelle 4
3A-Zelle 4Zelle 1
4E-Zelle 3Zelle 2

Montage

  • Die Sensoren werden mit doppelseitigem Klebeband oder Schrauben unter die Holzplatte geklebt.
  • Die Kabel werden sauber verlegt.

Bibliotheken installieren

Du brauchst die Bibliothek GyverHX711 von AlexGyver. Einfach in der Arduino IDE unter Bibliotheken installieren suchen:

Sketch → Bibliothek einbinden → Bibliotheken verwalten → „GyverHX711“

So auch für die benötigten Arduino_LED_Matrix und ArduinoGraphics von Arduino:

Code zur Kalibrierung

Lade folgenden Sketch hoch, um deinen Kalibrierungsfaktor zu finden.

#include <GyverHX711.h>          // Bibliothek für den HX711 AD-Wandler
#include "ArduinoGraphics.h"     // Bibliothek für grafische Darstellung
#include "Arduino_LED_Matrix.h"  // Bibliothek für die integrierte LED-Matrix des Arduino R4 WiFi

#define REFERENZGEWICHT 1.0  // 1 kg als Referenzgewicht

GyverHX711 sensor(3, 2, HX_GAIN64_A); // DT → Pin 3 / SCK → Pin 2

float faktor = 0;  // Skalierungsfaktor
long taraWert = 0; // Nullwert nach Tarierung

void setup() {
  Serial.begin(9600);
  delay(2500);

  sensor.tare();  // Nullpunkt setzen
  taraWert = sensor.read();  // Den Nullpunkt speichern
  
  Serial.println("Lege das Referenzgewicht auf!");
  delay(5000);  // 5 Sekunden Zeit zum Platzieren des Gewichts

  long messwert = sensor.read();  // Messwert mit Referenzgewicht
  faktor = (messwert - taraWert) / REFERENZGEWICHT; // Skalierung berechnen
  // faktor = Wert; //Der ausgegebene Kalibrierungsfaktor kann dann hier eingetragen werden

  Serial.print("Kalibrierungsfaktor: ");
  Serial.println(faktor);  //Der ausgegebene Kalibrierungsfaktor kann oben eingetragen werden 
}

void loop() {
  if (sensor.available()) {
    float gewicht = (sensor.read() - taraWert) / faktor;  // Gewicht berechnen
    Serial.print("Gewicht: ");
    Serial.print(gewicht, 2);  // 2 Nachkommastellen für genauere Anzeige
    Serial.println(" kg");
  }
}

Lege ein bekanntes Gewicht (in meinem Beispiel 1Liter Milch etwa 1.0 kg) bereit. Wählt du ein anderes Gewicht dies in Zeile 4 dann eintragen. Nach der Übertragung warten bis im Seriellen Monitor „Lege das Referenzgewicht auf!“ angezeigt wird und lege nun dein Referenzgewicht auf die Waage. Der berechnete Kalibrierungsfaktor wird dir im Seriellen Monitor dann angezeigt. Diesen nun in den nächsten Sketch in Zeile 6 eintragen.

Beispiel: Passe diesen Wert im Sketch float faktor = -11367; an.

Ausgabe im Seriellen Monitor:

Haupt-Sketch mit LED-Matrix-Ausgabe

Jetzt kommt der fertige Sketch mit Anzeige auf der LED-Matrix:

#include <GyverHX711.h>          // Bibliothek für den HX711 AD-Wandler
#include "ArduinoGraphics.h"     // Bibliothek für grafische Darstellung
#include "Arduino_LED_Matrix.h"  // Bibliothek für die integrierte LED-Matrix des Arduino R4 WiFi

ArduinoLEDMatrix matrix;          // Erstellen einer Instanz der LED-Matrix

GyverHX711 sensor(3, 2, HX_GAIN64_A); // DT → Pin 3 / SCK → Pin 2

float faktor = -11367;  // Setze Skalierungsfaktor aus deiner Messung
long taraWert = 0; // Nullwert nach Tarierung

void setup() {
  Serial.begin(9600);
  delay(1000);

  sensor.tare();  // Nullpunkt setzen
  taraWert = sensor.read();  // Den Nullpunkt speichern

    matrix.begin();              // Initialisiert die LED-Matrix
    matrix.beginDraw();          // Beginnt die Zeichnung auf der LED-Matrix
    matrix.stroke(0xFFFFFFFF);   // Setzt die Textfarbe auf Weiß
    matrix.textFont(Font_5x7);   // Setzt die Schriftart auf 5x7 Pixel
    matrix.beginText(1, 1, 0xFFFFFF);  // Startet den Text auf der Matrix
    matrix.println("Warten");   // Noch kein Gewicht auflegen
    matrix.endText(NO_SCROLL);   // Deaktiviert Scrollen für statische Anzeige
    matrix.endDraw();            // Beendet die Zeichnung und zeigt das Ergebnis an

    Serial.print("Messung beginnt: ");
      delay(2000);
    

}

void loop() {
  if (sensor.available()) {
    float gewicht = (sensor.read() - taraWert) / faktor;  // Gewicht berechnen
    Serial.print("Gewicht: ");
    Serial.print(gewicht, 2);  // 2 Nachkommastellen für genauere Anzeige
    Serial.println(" kg");

    //Ausgabe auf der LED-Matrix des Arduino R4 Wifi
        matrix.beginDraw();          // Beginnt die Zeichnung auf der LED-Matrix
        matrix.stroke(0xFFFFFFFF);   // Setzt die Textfarbe auf Weiß
        matrix.textFont(Font_5x7);   // Setzt die Schriftart
        matrix.beginText(10, 1, 0xFFFFFF);  // Startet die Textanzeige
        matrix.println(gewicht);     // Zeigt das Gewicht an
        matrix.textScrollSpeed(140);
        matrix.endText(SCROLL_LEFT);   // Deaktiviert das Scrollen
        matrix.endDraw();            // Beendet die Zeichnung
  }
}

Ausgabe im Seriellen Monitor zeigt deutlich eine schwankende Messung:

Tipps zum Aufbau

  • Stelle sicher, dass die Sensoren plan aufliegen.
  • Nutze kleine Abstandshalter, um Verwindungen zu vermeiden.
  • Wägezellen Halterung zum Ausdrucken mit dem 3D Drucker findest du hier:
    Abstandshalterung in der Größe 34mm x 34mm

Fazit

Mit wenig Aufwand baust du dir eine digitale Waage mit Arduino und bekommst ein tolles Praxisprojekt für Gewichtsmessung und Sensorintegration. Die Anzeige über die LED-Matrix macht richtig was her!

Viel Spaß beim Nachbauen!

Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzerkomfort bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst und hilft uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.