Die Temperaturkompensation für die Waage und vielleicht auch mehr ist wichtig, wenn wir ordentlichen Outdoorbetrieb anstreben. Am besten solide mit dem ADS1232 machen und nicht lange fackeln. Mindestens aber die Kabel kürzen.
Hier wird die Problematik näher beschrieben und detaillierter darauf eingegangen:
Nein, automatisch geht das natürlich nicht. Wir brauchen noch entsprechenden Code, der das tut. Der Temperatursensor für die Kompensation sitzt so aber schonmal an genau der richtigen Stelle und kann damit exakt auf die Temperatur des Chips reagieren. Diese hängt vermutlich auch davon ab, wie lange er jeweils im Meßintervall läuft bzw. mit Strom versorgt wird.
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:
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.
Starten kann man es mit folgendem Kommando: docker run --rm -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes -v <LOCAL_PATH_TO_NOTEBOOK>:/home/jovyan/work jupyter/datascience-notebook
entschuldige bitte die späte Antwort. Wir kommen gerade erst wieder ein wenig zu weiteren Enwicklungsarbeiten an Terkin zurück, nachdem eine etwas längere Pause eingetreten war.
Herzlichen Dank für diesen Beitrag! Wir haben ihn gerade eben integriert, die Verbesserungen sind damit auch Bestandteil von Terkin 0.12.0.
Hallo @Werner, hi Community
ich bin neu hier in der Community und möchte mich als erstes recht herzlich für das bereitsstellen den Python-Notebooks bedanken.
Ich bin auf dieses Forum gestoßen weil ich beim aufbauen meiner eigenen Waage den Fehler durch die Temperatur kompensieren möchte.
Wenn ich es richtig verstanden habe ist Grundprinzip die Temperatureabhängigkeit von Wägezellen vereinfacht über eine Geradengleichung abzubilden und mit der Steigung dann den Temperaturfehler zu minimieren.
Die Formel zu Komensation weight = curr_weight + ((current_temperature - temperatureOffset)) * compensationFactor)
temperatureOffset = Temperatur bei der Kalibierung
compensationFactor = Steigung
Dein Notebook liefert mir
fun: 14049578.647211663
message: '\nOptimization terminated successfully;\nThe returned value satisfies the termination criteria\n(using xtol = 1e-07 )'
nfev: 10
nit: 4
success: True
x: -2.6928858611707756
21307644.35044237
CompensationFactor: 14049578.647211663
fun: 14049578.647211663
message: '\nOptimization terminated successfully;\nThe returned value satisfies the termination criteria\n(using xtol = 1e-07 )'
nfev: 10
nit: 4
success: True
x: -2.6928858611707756
21307644.35044237
CompensationFactor: 14049578.647211663
Fragen
Ist mein Verständis CompensationFactor = Slope korrekt?
Wieso weicht das Ergebnis deines Notebooks (=14049578.6) soll gravierend von der Steigung (=11.5) ab?
slope = dy/dx = (11195-11080)/(26-16) = 11,5[gramm/°C]
Leider darf ich als neues Mitglied noch keine Anhänge hochladen, gerne kann ich dir meine log Daten zukommen lassen
Im Anhang das Notebook, meine Logdatei @Andreas dankeschön fürs Freischalten CalcTempCompensationFactor_Andy.zip (1001,4 KB)