Temperaturkompensation für Waage (Hardware/Firmware)

Hallo,

meine Wägezelle (CZL601AC) ist auch recht Temperaturabhängig und habe nun versucht dies mittels der aktuellen Temperatur zu kompensieren. Habe mit verschiedenen Formeln experimentiert und finde, dass diese relativ einfache Formel bereits ein recht gutes Ergebnis liefert:

weight_compensated = current_weight + (current_temp - temp_offset) * compensation_factor

  • temp_offset ist die Temperatur während der Berechnung von offset und scale der Wägezelle.
  • compensation_factor ist ein zusätzlicher Faktor, welchen ich per numerischer Optimierung berechnet habe.

Um Daten zu bekommen, habe ich über mehrere Tage ein konstantes Gewicht outdoor gemessen (mit verschiedenen Gewichten wird es natürlich genauer).

Hier ist mein derzeitiges Ergebnis (linke Y-Achse ist das Gewicht in kg, rechts die Temperatur):

  • load_5 (grün) ist das Gewicht “nur” mittels offset und scale berechnet.
  • compensated_load_optimized (orange) ist das Temperatur-kompensierte Gewicht mittels der obrigen Formel.

Hier eine weiterer Screenshot mit genau 10kg auf der Waage.


Die Temperatur beim Kalibrieren war 20.7 Grad. Deswegen driftet das Gewicht ohne Kompensation bei niedrigeren Temperaturen nach unten.

Zumindest wurde die Schwankungsbreite verringert. Derzeit habe ich die Berechnung im Grafana, doch bin gerade dabei, dies in Terkin zu implementieren und werde den Sourcecode teilen. Die Formel kann dann immer angepasst werden.

3 Likes