Raspberry Pi Waage selber bauen (mit Gewichtssensor HX711)

14. Mai 2017
21 Comments

Da kaum mehr Waagen analog arbeiten, ist es natürlich ebenso möglich mit einer digitalen Raspberry Pi Waage Gewichte zu messen. Dies kann in verschiedenen Anweundungen zum Einsatz kommen und die Gewichtsgrößen, die gemessen werden können, sind auch quasi unbegrenzt. Alles was dazu benötigt wird ist ein Sensor und eine Wägezelle, welche es für verschiedene Gewichtsbereiche gibt.

In diesem Tutorial bauen wir uns mit einfachsten Mitteln eine eigene Raspberry Pi Küchenwaage, deren Präzision erstaunlich genau ist. Natürlich ist es ebenso möglich eine bestehende (Personen-)Waage aufzuschrauben und diese mittels Raspberry Pi auszulesen.

 

Zubehör für die Raspberry Pi Waage

Raspberry Pi Wage - Wägezelle für HX711Das Wichtigste, um eine eigene Waage zu bauen, ist eine sog. „Load Cell“ / Wägezelle, welches ein Metallbalken mit Loch in der Mitte ist (siehe Bild rechts). Dies gibt es für verschiedene Gewichtsklassen (bis 1kg, bis 5kg, bis 50kg, etc.). Auch wenn manche eine andere Form haben, so sind alle jedoch mit vier Kabeln versehen. Um Die Werte auszulesen ist außerdem noch der HX711 Gewichtssensor nötig. Diesen Sensor gibt es in zwei Varianten: Rot und Grün. Die Drucksensoren haben wohl kleine Unterschiede, aber sind – theoretisch – beide kompatibel. Ich habe jedenfalls den grünen HX711 genutzt. Ebenfalls ist auch Befestigungsmaterial nötig.

Zusammenfassend sind das die benötigten Bauteile:

Alternativ kann man auch eine bestehende Personenwaage bzw. Küchenwaage nehmen und diese aufschrauben. In jedem Fall ist eine Wägezelle vorhanden und ggf. auch ein HX711 Drucksensor. Damit könnte direkt losgelegt werden. Da komplette Waagen teilweise nur etwas mehr als die Load Cells kosten, ist dies definitiv eine Überlegung wert.
Falls jemand seine Waage aufgeschraubt hat und beides vorhanden ist, würde ich mich über ein Kommentar mit Namen/Hersteller der Waage freuen.

 

Raspberry Pi Waage – Zusammenbau

Bevor die Wägezelle an den HX711 Gewichtssensor angeschlossen wird, sollte sie auf die beiden Platten montiert werden. Dazu habe ich jeweils Markierungen mit einer Kugelschreibermine auf den Holzbrettern gemacht, an denen die Schrauben rein kommen. Mit einer Bohrmaschine habe ich danach die Löcher gebohrt und die Schrauben eingesteckt. Zwischen Schraube und Ladezelle sollte eine Mutter, die als Absicherung zum Brett dient (siehe Bilder).

Raspberry Pi Waage Wägezelle

Befestige erst die Unterseite der Waage.

Die Muttern sollten gut festgeschraubt sein, damit die Schrauben nicht vom Brett rutschen.

Raspberry Pi Waage Wägezelle seitlich

Seitenansicht der Waage, nachdem beide Bretter montiert sind.

Ist die Konstruktion soweit vollständig, können wir weiter zum HX711 gehen. Die vier Kabel der Load Cell müssen an den Gewichtssensor angeschlossen werden. Der grüne HX711 hat jedoch sechs Anschlüsse, wovon wir lediglich vier für die Kabel brauchen. Der Anschluss ist wie folgt:

  • Rot: E+
  • Schwarz: E-
  • Grün: A-
  • Weiß: A+

Die Pins mit Aufschrift B+/B- bleiben also leer. Anscheinend gibt es auch Versionen des Sensors. wo die Pins statt A+/A- mit S+/S- beschriftet sind.

Nun gilt es nur noch den Sensor an den Raspberry Pi anzuschließen. Da dieser auch nur vier Anschlüsse hat, ist die Verkabelung recht einfach:

  • VCC an Raspberry Pi Pin 2 (5V)
  • GND an Raspberry Pi Pin 6 (GND)
  • DT an Raspberry Pi Pin 29 (GPIO 5)
  • SCK an Raspberry Pi Pin 31 (GPIO 6)

Schematisch sieht der Anschluss an einem Raspberry Pi 3 dann folgend aus:

Raspberry Pi HX711 Steckplatine

Du kannst die Pinbelegung von DT und SCK natürlich auch ändern, z.B. wenn du ein älteres Model hast. Allerdings musst du die entsprechenden Pins dann gleich auch im Code anpassen.

 

 

Raspberry Pi Wiegesensor Software

Um das Gewicht zu messen und den Wert auszulesen nutzen wir eine Python Bibliothek. Zwar gibt es auch entsprechende C++ Bibliotheken, allerdings habe ich damit weniger gute Erfahrungen gemacht. Zunächst klonen wir uns das Projekt:

git clone https://github.com/tatobari/hx711py

Enthalten ist eine example.py Datei, welche die Funktionsweise der Bibliothek darstellt und auch genutzt werden kann. Davor sind aber noch ein paar Anpassungen nötig.

Als erstes bearbeiten wir diese Datei:

cd hx711
sudo nano example.py

Wir suchen die Zeile, in der die Referenz Unit gesetzt wird und kommentieren diese vorerst mit einer Raute aus, sodass die Zeile wie folgt aussieht:

Gespeichert wird nun mit STRG+O und beendet mittels STRG+X. Diese Referenz Einheit ist der Teiler, den wir allerdings erst noch im nächsten Schritt finden müssen. Vorerst kannst du das Beispiel schon einmal laufen lassen (Abbruch mit STRG+C). Die Werte sollten im Bereich 0 bis 200 erscheinen, aber dies ist vorerst nicht weiter wichtig.

sudo python example.py

 

Erster Test unserer Raspberry Pi Waage

Entscheidend ist die richtige Kalibrierung des Gewichtssensors und damit der Raspberry Pi Waage. Dazu brauchen wir ein Vergleichsobjekt, dessen Gewicht wir kennen. Ich habe bspw. zwei Packungen Reis (je 1kg) genommen, da es sich empfiehlt einen mittleren Wert des Maximums zu wählen (meine Wägezelle konnte wie gesagt bis 5 Kilogramm erfassen). Dieser wird platziert und erneut mit sudo python example.py laufen gelassen. Die angezeigten Werte können positiv als auch Negativ sein. In meinem Fall wurden bei 2kg (=2000g) Werte um -882000 angezeigt. Mein Referenzwert ist somit -882000 ÷ 2000 = -441.

Anschließend bearbeiten wir die Beispieldatei wie oben wieder, entfernen die Kommentar-Raute und tragen diesen Wert entsprechend ein. Meine Zeile sieht nun also folgend aus:

Nach dem Speichern und Starten der Datei sollten nun die Gewichte angezeigt werden, wie im nachfolgenden Video auch zu sehen ist. Da ich das Problem hatte, dass manchmal Werte unter 0 rutschten und dies nicht möglich sein sollte, habe ich die Zeile, in der der Wert ausgelesen wird, noch etwas angepasst. Damit werden keine negativen Gewichte mehr angezeigt.

 

In meinen Tests habe ich eine Load Cell mit bis zu 5kg genommen und diese mit 2kg kalibriert. Wie im Video zu sehen ist, ist die Messung erstaunlich genau. Wichtig ist allerdings darauf zu achten, dass sich die montierte Platte nicht zu sehr verbiegt (vor allem die Bodenplatte muss fest sitzen). Du solltest dir aber bewusst sein, dass die Werte außerhalb des Bereichs (bspw. über 5kg) nicht mehr genau sein werden – dafür wird eine andere Wägezelle mit eigener Kalibrierung benötigt.

Die Textanzeige über ein LCD Display habe ich übrigens in diesem Tutorial beschrieben und so im Video auch genutzt.

21 Kommentare

  1. Super Projekt. Schön wäre noch eine Tara-Funktion, damit man die Flüssigkeit oder das lose Material in einer Schüssel oder einem ähnlichen Behältnis wiegen kann. Dabei sollte natürlich die Schüssel nicht mit gewogen werden 😉

    Antworten
    • Das geht relativ einfach (auf zwei Arten): Entweder du packst es zu deiner Referenzgröße (1kg + Schüssel) und teilst nur durch den Referenzwert, oder aber du ziehst das (bekannte) Gewicht der Schüssel am Ende ab.

      Antworten
      • Richtig, ist wirklich einfach!
        Wer die bisherigen Tutorials mitverfolgt hat, sollte in der Lage sein einen Tara Button zu implementieren. Sobald dieser gedrückt wird, wird das aktuell gemessene Gewicht zum Referenzgewicht addiert und anschließend damit weitergewogen.

  2. Hallo
    Kann irgend jemand mir sagen bzw. schreiben …wie fein man mit dem Pi messen kann? dachte so an
    milligramm … oder das Gewicht eines Samenkornes… wenn ja dann müsste es ja einen sensor für solche minigewichte geben…oder ist das dann astromisch teuer…?

    Lg aus Hannover

    Antworten
    • Die günstigste Methode wäre wohl die genauste Waage, die man als Normalverbraucher kaufen kann, zu nehmen und aufzuschrauben. Ob diese aber auf den Milligramm genau messen, weiß ich allerdings nicht 🙁

      Antworten
      • Nicht ohne Grund sind die bezahlbarenLaborwaagen für solche Wiegebereiche nach wie vor analog und in speziellen Gehäusen. Da ist ein Lufthauch vom Atmen ja schon störend. Sowas als DIY ist zumindest für Amateure nicht umsetzbar.
        Das Hauptproblem sind hier neben den Wiegezellen auch das ganze Drum und Dran:
        – Wärmedehnung von Komponenten
        – schwierige Kalibrierung
        – Auflösung des AD-Converters
        – Luftfeuchtigkeit
        usw.

  3. Ich habe mal eine Körperwaage vom Aldi (Sanitas) wegen einer Fehlfunktion auseinandergeschraubt…
    Da sind 4 St. Half Bridge Körper Wägezellen verbaut…
    Gruß Ingo

    Antworten
  4. Hallo,

    Danke für die Erklärung. Ich hab die Waage nachgebaut, leider springen meine Werte sehr oft auf inakzeptable Werte. Bemerkenswert ist, dass die inakzeptablen Werten immer kleiner als der tatsächliche Wert sind.
    Bsp.: Gewicht= 1kg, und so wird mir das in Python angezeigt:
    1002
    1002
    696
    1002
    234
    1000

    Hätte jemand eine Lösung zu diesem Problem? Wäre Euch dafür sehr dankbar!

    Liebe Grüße

    Antworten
      • Habe es nun mit drei kg probiert, selbes Problem. Kann es vielleicht daran liegen, dass die Kabel der Wägezelle einen Wackelkontakt haben? Mir ist nämlich aufgefallen, dass die Werte stark nach oben gehen wenn ich mit dem Finger leichten Druck auf die Kontakte des HX711 ausübe …

  5. Hallo,
    ich möchte eine Bienenwaage bauen. Dafür will ich aber aufgrund des Gewichts und der Stabilität 4 Wägezellen statt nur einer verwenden. Wie kann ich das am besten realisieren? Kann ich hier auch den HX711 verwenden oder geht eventuell auch ein MCP3008, bzw was meinen Sie, dass am geeignetsten wäre und wie müsste das dann angeschlossen werden?
    Vielen Dank

    Antworten
    • Den mcp3008 kannst du,wegen seiner geringen Auflösung, hier nicht gebrauchen. Der hx711 ist hier die beste Wahl.
      Vier Wiegezellen sind nicht wiklich eine Verbesserung, hier dürfte die Mechanik und die Eichung eine erhebliche Herausforderung sein.
      Die imker-nettetal.de Leute haben hier ein tolles Beispiel ins Netz gestellt.

      Antworten
  6. Moin,
    danke für das Tutorial 🙂
    Ich habe ein ähnliches Problem wie Mjoa
    Ich wollte es mit 1,5 kg kallibrieren und es werden mir folgende Werte angezeigt:
    0
    0
    0
    39296
    0
    0
    0
    1671129
    0
    0
    0
    0
    1667021
    3342336
    0
    0
    0
    -6592
    0
    0

    ich bekomme neue Werte (manchmal nur 0en manchmal 7stellige Zahlen), jedes mal wenn ich sudo python example.py neu starte..
    und ich hatte im Code 2 Refenzunits drin (112 und 92 – das erste war mit einer # makiert) ist das normal?
    Leider komme ich gerade nicht mehr weiter..

    Antworten
    • jetzt ist mir aufgefallen, dass ich ein Fehler bei den Pins hatte und nun kommt entweder:

      „sudo python example.py
      /home/pi/hx711py/hx711.py:11: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
      GPIO.setup(self.PD_SCK, GPIO.OUT)“

      oder
      „sudo python example.py
      ^CTraceback (most recent call last):
      File „example.py“, line 12, in
      hx = HX711(5, 6)
      File „/home/pi/hx711py/hx711.py“, line 29, in __init__
      self.set_gain(gain)
      File „/home/pi/hx711py/hx711.py“, line 45, in set_gain
      self.read()
      File „/home/pi/hx711py/hx711.py“, line 54, in read
      while not self.is_ready():
      KeyboardInterrupt“

      Antworten
  7. Hallo,
    ist es möglich zur Überprüfung der Schaltung am Hx711 mit dem Multimeter eine Spannung zu messen oder kann ich das Signal nur mit dem Raspberry auswerten?

    Danke schonmal im Vorraus,
    Tim

    Antworten
    • Hallo Tim,
      Der Biegestab ist eine Widerstandsbrücke ,2 Anschlüsse sind die Speisung die anderen das Signal.
      Nach dem HX711 ist das Signal allerdings digital und nur mit Oszi messbar.

      Antworten
  8. Hallo,

    vielen Dank für den Beitrag.
    Besitze eine defekte Körperwaage (Sanitas). In dieser sind 4 St. Half Bridge Körper Wägezellen mit 3 Anschlüssen verbaut…
    Wie kann ich nun das obige genannte Projekt nachbauen und was benötige ich noch dazu? Wie muß das Python-Skript aussehen?
    Vielen Dank schon mal für die Hilfe.
    Gruß Frank

    Antworten
  9. Hallo und vielen Dank für das Tutorial.
    Beim Lesen ist mir eine Idee für meine RC-Autos gekommen – eine Balance-Waage. Also 4 Einzelwaagen, für jedes Rad eine mit LCD-Ausgabe der Einzelgewichte, Gewicht Vorderachse/Hinterachse, Gesamtgewicht.
    Frage: Kann man vier hx711 gleichzeitig mit dem Pi3 auslesen?

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!