Kalibrierung der Waage

Aus Technische Beeinflussbarkeit der Geschmacksache Kaffee
Zur Navigation springen Zur Suche springen

Breites Logoband.png


Patricia Viebke, 12.05.2024

Kalibrierung mit Nullen

Die Kalibrierung der Waage erfolgt mit Eichgewichten bis 800 $g$. Das Auftreten eines Messwertdrifts wurde bereits ausgeschlossen und die Kalibrierung kann direkt durchgeführt werden. Die Waage wird mit der Elektronikplatine laut Schaltplan verbunden. Über MATLAB wird eine 10 Sekunden Messung gestartet, über welche die Bitwerte der Waage erfasst werden.

Bei einem ersten Kalibrierversuch wird das Python Skript hx\_shot.py verwendet. Hierzu wird zu Beginn jeder Messung mit dem Befehl hx.zero() die Waage genullt. Die Bit Werte streuen um den Wert Null. Nach der Erfassung der Bit Werte ohne Zusatzgewicht, werden die Daten importiert und in MATLAB in einem Struct gespeichert. Das Struct beinhaltet in der ersten Spalte die Messwerte des HX711 und in der zweiten Spalte das Zusatzgewicht in Gramm. Für die nächste Messung wird ein 100 g Eichgewicht auf die Waage gesetzt und der Messprozess wird wiederholt. Bei Vergleichen der Messwerte des Eichgewichts mit dem ohne Eichgewicht fällt auf, dass die Werte identisch sind. Dies ist auf das Nullen zu Messbeginn zurückzuführen.

Erstellung Kalikurve Waage mit Tare

Das Nullen zu Messbeginn hat den Vorteil, dass bei einer späteren Vermessung der Kaffeeauslaufmenge nur der Kaffee gemessen wird, ohne des Gewichts der Tasse. Hier handelt es sich um eine relative Gewichtsmessung. Um hierfür eine Kalibrierkurve zu erstellen, darf das Eichgewicht zu Beginn der Messung nicht auf der Waage stehen. Erst nach einigen Sekunden muss das Gewicht aufgesetzt werden, so dass eine Differenz zu messen ist. Dieses Vorgehen wird für die Gewichte bis 800 Gramm wiederholt. Die Daten weisen durch das Aufsetzen der Gewichte einen Sprung auf. Dieser Sprung muss aus den Vektoren entfernt werden, um einen Kalibrierpunkt pro Gewicht zu erstellen. Die graphische Darstellung a) zeigt die Linien der Eichgewichte, die jedoch Ausreißer enthalten. Dies werden mit der mittleren absoluten Abweichung vom Median entfernt. Als Ausreißer wird hier ein Messpunkt definiert, welcher den dreifachen Wert des Medians überschreitet. Die Linien in Abbildung b) stellen die gefilterten Messwerte ohne Ausreißer dar. Diese Werte werden pro Kalibrierpunkt gemittelt und mit dem jeweiligen Gewicht gegenübergestellt. Mit dem Basic Fitting wird eine Gerade ermittelt. Abbildung c) zeigt die Gegenüberstellung der Kalibrierwerte in blau und die gefittete Gerade in orange. Der für die Messung relevante Bereich bis 30 g zeigt jedoch eine deutliche Abweichung der Kalibrierkurve zur gefitteten Gerade. Bei Verwendung dieser Umwandlung, entspricht die gemessene Menge nicht der Realität. Es wird beschlossen das Nullen zu Beginn des Skriptes wegzulassen, so dass die Messwerterfassung im linearen Bereich liegt. Mit dieser Erkenntnis wird eine neue Kalibrierkurve ohne Nullen erstellt.

ohne Nullen

Für die Erstellung wird analog vorgegangen wie bei der ersten Kalibrierkurve. Es wird erneut in dem Bereich von 0 bis 800 g gemessen. In 100 g Schritten werden Messungen aufgezeichnet.

Das Gewicht wird diesmal zu Beginn der Messung bereits auf die Waage gestellt. Da hier die Nullung nicht stattfindet, wird hier der absolute Bit Wert der Waage ausgegeben. Anschließend werden die Messungen der Eichgewichte gemittelt und mit den Gewichten in Gramm gegenübergestellt. Es entsteht eine stetig steigende Gerade mit einem Nullpunktversatz von etwa -320000 Bit hat.

Über die Funktion fit(gramm,bit,'linearinterp') wird ein cfit Element erstellt. Dieses beinhaltet alle interpolierten Werte der Geraden. Die Umwandlung wird getestet durch die Erfassung eines Gewichtverlauf durch Auflegen unterschiedlicher Eichgewichte. Da dies mit Eichgewichten durchgeführt wird, ist die Umwandlung in Gramm nachvollziehbar. Die Umwandlung ist korrekt verlaufen. Somit wird die Kalibrierkurve bzw. das cfit Element in die GUI für die Umwandlung der Bit Werte implementiert.

Für die Absicherung werden Probemessungen an der Gaggia TE durchgeführt. Hier besteht die Aufgabe die Durchflussrate über die Kaffeeausflussmenge mit der Waage zu ermitteln.

Hierfür werden 20 g Kaffeemehl in einen Siebträger gefüllt und mit 120 N getampert. Das Sieb wird in die vorliegende Maschine eingesetzt. Anschließend wird die Waage mit einer daraufliegenden Tasse vorsichtig auf dem

Über die GUI wird ein Kaffeebezug gestartet, welcher 60 Sekunden dauert. Nach einigen Sekunden wird der Wasserzulauf für den Kaffeebezug über einen Kippschalter gestartet.

Das Auswerten der Auslussmenge zeigt zu Beginn ein sauberes Signal mit einem stabilen Gewicht von 350 g. Nach Einschalten des Wasserzulaufs ist ein Anstieg des Gewichts zu erkennen. Während dem Kaffeebezug ist eine Schwingung im Signal zu erkennen. Eine Signalanalyse zeigt eine Frequenz von 25 Hz. Die Frequenz ist auf das Vibrieren der Pumpe während des Kaffeebezugs zurückzuführen.

Für eine saubere Auswertung der Kaffeeausflussmenge muss ein Tiefpassfilter entwickelt werden, welcher die Schwingung aus dem Signal eliminiert.


Patricia Viebke, 01.05.2023

Erste Kennlinie der JoeFrex Waage

Mit der Vorgehensweise vom 17.12.2022 ist es gelungen eine erste Kennlinie der Waage zu ermitteln.

Für die Erstellung der Kennlinie wurde nicht die finale Elektronikplatine des Messsystems verwendet. Mit der Kalibrierung über den Baustein HX711 musste sichergestellt werden, dass diese funktioniert.

Die Waage weist einen Messbereich von 0 bis 800 auf. In 50 Schritten wurde eine 20 Sekunden Messung durchgeführt. Über das Raspberry Pi wird die Messung in einem Python Skript konfiguriert und ausgeführt. Die Messdaten werden in einer csv Datei gespeichert.

Die Waage misst mit Dehnungsmessstreifen. Über den Baustein HX711 findet eine Umwandlung in 24 Bit Werte statt. Das Raspberry Pi misst somit die 24 Bit Werte. Durch den Einsatz von Eichgewichten ist eine Gegenüberstellung der gemessenen Bit Werte zum Gewicht möglich.

Statistische Auswertung JoeFrex Waage

Die Kennlinie erstreckt sich von 0 bis 800 mit den Bit Werten auf der Abszisse und dem Gewicht in Gramm auf der Ordinate.

Ein weiteres Ziel der ersten Kalibrierung war die Ermittlung der Messgenauigkeit über den gesamten Messbereich der Waage. Hierfür wurden die gemessenen Werte statistisch ausgewertet.

Durch Betrachtung der Messabweichungen ergibt sich die Gaußsche Normalverteilung der aufgenommenen Messwerte während des Kalibriervorgangs. Als relevant wird der Bereich innerhalb bis definiert. Innerhalb dieses Bereichs gilt die Aussage, dass 95,45 % der Messwerte eine Abweichung von 0.05 haben.

Damit ist die Waage präzise genug, um in das Messsystem implementiert zu werden.

Die Vorgehensweise muss nach Fertigstellung der Elektronik wiederholt werden.

Patricia Viebke, 17.12.2022

Für die Kalibrierung der Waage wurde ein Python Skript auf dem Raspberry Pi geschrieben. Es befindet sich auf dem Raspberry Pi in folgendem Verzeichnis "/home/pi/hx711/hx711_test.py".

In dem Skript wird zuerst eine Initialisierung durchgeführt. Dort werden die Pins GPIO Pins 5 und 6 des Raspberrys definiert für die Datenkommunikation mit dem HX711. Der GPIO Pin 5 gibt die 224 Werte an das Raspberry weiter. Das Skript ist so ausgebaut, dass beim Aufrufen dieses eine Zahl mitgegeben wird, die die Messdauer definiert. Die Werte werden zu einem Array data hinzugefügt. Der Array wird aufbereitet, so dass Sonderzeichen wie Klammern eliminiert werden. Nach abgeschlossener Aufbereitung werden die Elemente des Arrays in eine csv-Datei geschrieben. Die Werte sind dort zeilenweise angeordnet. Es wird eine csv-Datei "csv_data.csv" in dem gleichen Verzeichnis erstellt.

Für die Kalibrierung werden Eichgewichte von 0 bis 800 Gramm verwendet. In 50 g Schritten wird jeweils eine Messung von 20 Sekunden in MATLAB mit der Anweisung "system(rpi, '/home/pi/hx711py/hx711_test.py 20')" gestartet. Anschließend wird das csv-File von dem Raspberry Pi in MATLAB übertragen und vom Raspberry Pi gelöscht. Die Daten müssen in ein MATLAB Array transferiert werden und abgespeichert werden. Ziel ist es, bei jedem Messpunkt (Gewichtsstufe) eine Messung von 20 Sekunden zu erzeugen. Dadurch soll ein eventueller Messwertdrift über die Zeit von 20 Sekunden untersucht werden.

Anschließend werden die Daten dazu verwendet eine Kennlinie zu erzeugen.

Patricia Viebke, 28.11.2022

Für die Aufnahme von Messwerten mit der Waage von JoeFrex wurde ein neuer Messaufbau definiert. Die Ausgänge der Wägezelle werden an eine Aufbereitungsplatine mit dem Baustein HX711 angeschlossen.

Anschluss der Waage am Mikrofonkabel
Kabel Bezeichnung
gelb E -
weiß A-
grün A+
rot E+
Zuordnung Raspberry Pi PIN
Bezeichnung Beschreibung Pin-Nr. Raspi
VCC 3,3 V 01
DAT GPIO5 29
CLK GPIO6 31
GND GND 39

Die Ausgänge der HX711-Platine sind mit 3,3 V, GND, GPIO5 und GPIO6 Pin verbunden.

Durch eine SSH-Verbindung des Raspberry Pis über das Terminal kann ein passendes Skript für die Messung geschrieben werden. Es wurde ein Python Skript "hx711_test.py" programmiert, welches die Werte vom DAT (GPIO5) aufnimmt. Dort werden Werte im Bereich von 0 bis 224 gemessen. Beim Starten des Skriptes gibt es eine Verzögerung von etwa 4 s bis die Messung tatsächlich startet. Die Verzögerung lässt sich auf den Initialisierungsprozess des HX711 zurückführen. Im nächsten Schritt wird der Wertebereich ohne Gewicht und mit einem 800 g Eichgewicht überprüft. Weiter muss das Python Skript weiter programmiert werden, so dass die Problematik mit der Verzögerung umgangen wird. Auch in MATLAB bedarf es ein Skript, welches den Kalibrierprozess definiert und die Kennlinie erstellt.

Es muss festgelegt werden wie der Kalibrierprozess abläuft:

  • Messdauer pro Messung
  • Anzahl an Messungen pro Eichgewicht
  • Auswertungsweg der Daten