Auch beim Einsatz hochwertiger Wägezellen, wie das beim Arduino Datenlogger mit Stockwaage für Imker verwendeten H30A von Bosche, sind Abweichungen des Gewichtes aufgrund von Temperaturschwankungen, die auf das Gesamtsystem von Wägezelle, Kabel, Verbindungen, HX711, Arduino und der Trägerkonstruktion einwirken, zu verzeichnen. Grade der HX711 ist relativ temperaturempfindlich. Zudem sollte die Elektronik inkl. HX711 mit einem Gehäuse gegen kurzfristige Temperaturschwankungen geschützt werden. Um den generellen Einfluss der Temperatur zu verringern, kann mit einem temperaturabhängigen Korrekturwert gearbeitet werden. Für unseren Einsatz ermöglicht dies eine ausreichende Genauigkeit. In unseren Tests konnten wir mit Hilfe der Temperaturkompensation innerhalb einer Temperaturdifferenz von 25 Grad eine maximale Abweichung von 45g erreichen (vereinzelte Ausreißer ausgenommen).
Voraussetzung für die Nutzung der Temperaturkompensation, ist die Verwendung eines Temperatursensors zur Ermittlung der Außentemperatur. Sofern in der Konfiguration des Sketch kein Temperatursensor für die Aussenwerte aktiviert ist und keine andere Konfiguration vorgenommen wurde, liefert die DS3231-RTC den Temperaturwert für Korrektur.
Die Korrekturwerte sind serverseitig in die Konfiguration einzutragen. Die Korrektur wird auf vom Serverskript beim Empfang der Daten automatisch durchgeführt.
Zur Ermittlung des Wertes für die Korrektur in ‘KilogrammproGrad‘ und ‘Kalibriertemperatur’ wird die kalibrierte Stockwaage zunächst mit einem fixen Referenzgewicht belastet. Über einen längeren Zeitraum wird nun das gemessene Gewicht sowie die Außentemperatur aufgezeichnet. Hierbei sollte möglichst ein Ort mit entsprechenden Temperaturschwankungen gewählt werden. Ein Wohnraum mit konstanter Temperatur wird keine verwertbaren Daten liefern. Hierfür werden der Programmcode und die Webserverskripte verwendet, wobei darauf zu achten ist, dass der Wert in der Temperaturkompensation ‘KilogrammproGrad‘ den Wert ‘0’ hat.
Dadurch, dass die neuen Webserverscripte und Sketche die Gewichtsdaten sowohl unkompensiert als auch kompensiert aufzeichnen, lässt sich der Temperaturkompensationswert recht einfach ermitteln.
Schritt für Schritt-Anleitung zur Ermittlung des Korrekturwertes “KilogrammproGrad”:
So sieht beispielsweise der Gewichtsverlauf einer “schlechten” Wägezelle für ein Festgewicht von ca. 2,6kg aus:
Nun wählt man sich in der Temperaturkurve einen möglichst hohen Hub:
Im Anschluss wird der Bereich zwischen diesen Werten durch die beiden Rangeselectoren eingeengt:
Dann wählt man nur den Temperatursensor an und liest rechts die Differenz ab. In diesem Beispiel -9 Grad.
Und macht das Gleiche für den unkomprimierten Gewichtswert “Gewichtswert(1A) unkomp.” – hier: 0.32 Kg
Den Korrekturwert in ‘KilogrammproGrad erhält man dann ganz einfach durch folgende Formel:
Korrekturwert [kg/°C] = (-1) * Gewichtsdifferenz / Temperaturdifferenz
Beispiel:
Korrekturwert [kg/°C] = (-1) * (2.72 – 2.4) [kg] / ( 7 – 16) [C] => (-1) * (0,32) / (-9) = 0.0355
Die Kalibriertemperatur ist die Temperatur bei der kalibriert wurde – bzw. die Temperatur bei der die Waage den Wert des aufgestellten Wertes exakt anzeigt.
Im Beispiel: Das Gewicht von 2,5kG wird bei 13°C gemessen (Di.17.Sep. 22:00)
Ältere Sketche und die Sketche für System ohne direkte Anbindung an den Webserver verwenden in den Programmcodes Werte für die Temperaturkompensation. Zur Konfiguration werden lediglich die Werte für zwei Variablen benötigt, die Temperatur zum Zeitpunkt der Kalibrierung (‘Kalibriertemperatur’) sowie der Korrekturwert (‘KorrekturwertGrammproGrad’).
const float Kalibriertemperatur = 0.0; // Temperatur zum Zeitpunkt der Kalibrierung const float KorrekturwertGrammproGrad = 0.0; // Korrekturwert zur Temperaturkompensation - '0.0' für Deaktivierung
Sketche, die die Messdaten an einen Server versenden, benötigen die o.g. Werte nicht.