Ausreißer bei den Temperaturwerten, Drift bei den Gewichtswerten

Einleitung

Je nach Software- und Hardwarekonfiguration des Geräts gibt es unterschiedliche Ausreißer (Glitches) bei einigen Sensoren sowie teilweise beobachtetes Driftverhalten. Hier können wir das Thema des Auslesevorgangs der 1-Wire/DS18X20 Sensoren und des HX711 ADC genauer beleuchten.

Have fun!

Also ich bin über die Genauigkeit … ich will nicht sagen Schätzeisen … meiner Wägezellenkonfiguration mittlerweile sprachlos …

Temperaturdrifts
Feuchtigkeitsdrifts

eine Ableitung der gelieferten Daten ist so nicht möglich.
hx

Hi Ingo,

vielen Dank für Deine Rückmeldung!

Mit welcher Software bekommst Du denn diese Ausreißer? Bei beiden Firmwares [1] [2] entdecken wir weiterhin Verbesserungsmöglichkeiten und realisieren sie auch. Vielleicht hilft ein Upgrade auf einen aktuellen Softwarestand.

Unabhängig davon gibt es aber noch Dinge bei der Hardware zu beachten bzw. ggf. zu verbessern. Unten habe ich Dir dazu ein wenig Linkfutter angehängt.

Viele Grüße,
Andreas.

P.S.: Verschiedene Dinge zu Forschungsarbeiten rund um die Temperaturabhängigkeit des Wägezellen-Subsystems haben wir hier gesammelt:


  1. GitHub - Hiverize/FiPy ↩︎

  2. GitHub - hiveeyes/hiveeyes-micropython-firmware: Hiveeyes MicroPython Datalogger - data logging for humans ↩︎

Das ist die urpsüngliche Kölner Software.

Ich glaube dass es ein Architekturproblem ist, und kein Softwareproblem.

Feuchtigkeits und damit Wiederstandsänderungen an den Anschlussklemmen am HX711 Board zum Beispiel.

temperaturbedingte Wiederstandsänderungen an der Messbrücke (Kabel, Schraubterminals)

1 Like
  1. Die Glitches beim Auslesen der DS18B20-Sensoren sind höchstwahrscheinlich Timing-Problemen der Software geschuldet. Mittlerweile haben wir hier per https://github.com/pycom/pycom-micropython-sigfox/pull/356 den C-level modonewire Treiber von Genuine MicroPython für uns erschlossen und erzielen damit deutlich bessere Ergebnisse als bisher [1].

  2. Die temperatur- und wetterabhängigen Dinge spielen definitiv bei der Hardware eine Rolle. Hierzu habe ich Dir oben ein paar Aspekte zum HX711 dargelegt.


  1. Testing the custom "dragonfly" builds on Pycom devices ↩︎

Welche Verbesserungen sind denn aus den bei Reading the HX711 from MicroPython geschilderten Prozessen durch das Auflösen der Abhängigkeit hervorgegangen?

Vor allem die Timing-relevanten Dinge konnten dadurch verbessert werden. Der von Dir referenzierte Post ist jedoch nur ein retrospektiver Bericht, es handelt sich nicht um aktuelle Verbesserungen. Die dort verwendeten Dinge (Treiber von David Gerber mit Verbesserungen von Robert Hammelrath – danke!) sind im Terkin-Datenlogger schon seit längerem enthalten.

Leider ist auf dem aktuell verwendeten HX711 Breakout kein externer Oszillator verbaut, siehe auch:
Das bei Erfahrungsaustausch und Diskussion zu verschiedenen Breakout-Varianten für den HX711 ADC beschriebene

Dadurch, dass wir durch die Median-Bildung bereits solche Timing-kritischen Dinge herausfiltern, bekommt man Netto trotzdem annehmbare Messwerte, wie wir über Langzeittests über die letzten fünf Monate bestätigt sehen. Der Ausreißer am 5.11.2019 kam daher, dass die Katze das Testgewicht [1] heruntergeworfen hatte – not kidding here ;].

Zur Optimierung des Auslesevorgangs haben @clemens und ich gerade eben noch geringfügige Anpassungen vorgenommen, siehe Optimize reading the HX711. · hiveeyes/hiveeyes-micropython-firmware@2e673be · GitHub.


  1. 1 Kilo Kathi Weizenmehl, allerdings ist die Waage nicht ordentlich justiert, daher ist das Kilo ein wenig schwerer als es soll. ↩︎

2 Likes

Oha … da sind aber einige sehr tief in der Materie … GEIL :-)

Ich glaube da haben wir noch ein Stück Arbeit vor uns …
perspektivisch würde ich über kurz oder lang die HX711 von der Platine herauslösen und unmittelbar an der Wägezellen sehen … dann von der HX711 eine Datenleitung des Digitalsignales zur BoB Hat … So hat man mindestens schon einmal die Kabel Thermoschwankung eliminiert.

Dann die Platine in eine absolut hermetisch dichte Verpackung und ggf. ist dann die Feuchtigkeitsthematik weg …

1 Like

So dearly true.

Hm, ich kann jetzt nicht ganz nachvollziehen in welchem Wertebereich das Gewicht bei Dir schwankt. Laut linker y-Achsen-Beschriftung soll diese Achse Celsius, Feuchtigkeit, Millibar und Kilogramm abbilden: Demnach hättest Du in der Tat ne krasse Schwankung von knapp 20kg bis knapp 40kg (ich nehm mal an bei eigentlich gleichbleibendem Gewicht).

Da aber der Millibar-Wert von 999.4 in der linken y-Achse bei 50 eingezeichnet ist, möcht ich mir jetz eben auch nicht sicher sein, dass der letzte Kilogramm-Wert nicht zufällig mit der linken y-Achsen-Beschriftung harmoniert.

Bei welchem Wert lag das Gewicht denn um “Do. 0u”?

1 Like

Do 00:00 17.1 kg

die mBar Skala ist nicht links sondern rechts … :slight_smile:

Bei der Temperaturmessung mit den DS18B20 würde ich den von @robert-hh überarbeiteten Onewire-Treiber onewire.py und dx18x20.py übernehmen. Meine Tests zeigen deutlich weniger Ausreisser. Jetzt kommt im Durchschnitt nur alle 500. Messung ein CRC-Fehler vor, den man gut abfangen kann.
Ich bin dabei, den Treiber in Hiverize/Fipy einzubauen, bin aber noch nicht ganz fertig…

Bei der Gewichts-Messung muss man mehrere Dinge beachten: die relative und die absolute Genauigkeit. Es ist sehr aufwendig, mit einer Bosche-Wägezelle die bis zu 200 kg messen kann, eine Briefwage mit einer absoluten Genauigkeit von 1 g zu bauen. Besonders mit einem billigen AD-Wandler HX711 aus China. Da muss man Abstriche machen. Die Auflösung von 24 bit kann nur theoretisch erreicht werden, in der Praxis ist man über 18 - 20 bit froh. Ebenfalls muss man die Temperaturdrift von vielen Wägezellen berücksichtigen. Mit meiner China-Wägezelle von 1 kg teste ich nur den HX711 und die Software. Mein “Testgewicht” von 10 g wiegt je nach Temperatur und anderen Faktoren von 5 bis 14 g. Da nützt keine Temperaturkompensation sondern nur eine bessere ( teurere ) Wägezelle.
Z.Z. teste ich verschiedene HX711-Treiber und den Einfluss von analoger und digitaler Masse ( Jumper auf BOB-HAT-V5 ). Die Bosche-Wägezellen werden mit dem abgeschirmten Kabel bis zur Messelektronik benutzt. Deshalb glaube ich nicht, das der HX711 ausgelagert werden muss.

Hi Didi,

hier kurz noch ein paar weitere Meldungen zum 1-Wire/DS18X20 Treiber.

Viele Grüße,
Andreas.

Hi Ingo, so krasse Werte habe ich bisher nicht gesehen. Auch die Ausreißer bei den DS18B20 sind deutlich mehr als ich bisher bei meinen setups beobachtet habe, wie gesagt wollen wir die in den Griff bekommen mit:

  • austausch der Treiber
  • statt Verwendung eines einzigen Messwerts nehmen wir den Median von 10 aufeinanderfolgenden Messungen

Beides ist schon in der Hiveeyes-Firmware implementiert und könnte von da nach BOB protiert werden.

Bei der Wägezelle stimmt was prinzipielles nicht!! Schwankungen über 20 kg hatte ich noch nie beobachtet! Das sind keine “normalen” temperaturbedingten Abweichungen, die liegen maximal im Bereich von 50-100 g, wenn überhaupt so hoch.

@Thias erzählte mal von ähnlichen Beobachtungen nachdem er ein Steckbrett duch eine gelötete Platine ersetz hat. Der vermutete pysikalische Hintergrund war damals, dass feuchtigkeitliebende Reste von Flussmittel zwischen den Pins dafür gesorgt haben, dass schwach Strom geflossen ist. D.h. du könntest etwas Spiritus nehmen und mit einer alten Zahnbürste die Flussmittelüberreste am HX711-Platinchen entfernen. Vielleicht hilft das. Ansonsten Schraubklemmen nochmal überprüfen, vielleicht auch ein Päckchen Silica in die Box legen. Aber “normal” sind 20 kg delta nicht!

1 Like

Es geht nicht um die DS18B20, nur um die Wägezelle.

Es ist eine BOSCHE Wägezelle, die Kontakte sind Schraubbar … es ist das original BOSCHE Kabel an der Wägezelle.
Nach Deiner Aussage sollte alles gut funktionieren … OHNE dieses Extremen Drift. Tut es aber nicht, und eine Auflösung der g Werte sind auch nicht das vorliegende Problem.
Das vorliegende Problem ist, dass die Messwerte hier nicht zu gebrauchen sind. Es wird also so hart das klingt Datenmüll produziert.

ein HX711 kann nur die Messbrückenwerte in ein digitalen Wert umwandeln…

ColdJunction Kompensation sehe ich auch an dieser Stelle nicht … alleine die Übergangswiderstände der Klemmverbindungen in Abhängigkeit zur Temperatur PLUS nochmal Feuchtigkeit sind massiv – potenziert durch die Länge des Wägezellenkabels.

Wir haben an dieser Stelle Freilandsysteme und keine auf dem Schreibtisch mit gedämpften Umweltfaktoren.

Das mit den Überresten werde ich mal testen!!! Guter Tip.
Hilft da Ethanol … oder welches Fluid ist da möglich? Bremsenreiniger, also Waschbenzin?

Die Schraubklemmen werde ich nochmal nachziehen … aber die sollten ja wenn überhaupt einen langsamen Drift über tage haben, wenn diese Korrosionsbedingt Ihren eigenwiderstand verändern…

Schade ist, dass ich von den ganzen Kölnern so gut wie kein Feedback zu den Daten erhalte.

hier mal vom gestrigen Tag in komplett
hx2

Das sieht ja fast so aus wie (viel) Regen oder – viel wahrscheinlicher! – Sonnenschein aufs Kabel um die Mittagszeit.

1 Like

Sonnenschein :-)

und das nur auf das Kabel aussen und die FiPy Box

Die WAAGE selbst ist in meiner Dämmkiste

Ein Softwareproblem sind die Ausreißer bei den Temperaturen, bei der Waage ist es etwas anderes, denke aber, kein Softwareproblem. Nur um die letzte Möglichkeit bei der Software auszuschließen. Ist die Waage korrekt justiert? Was passiert, wenn du ca. 1 kg zusätzlich drauflegst?

Dafür ist das board schon vorbereitet, siehe die nächste Abbildung. Dafür müsste man den HX711 auf dem BOB hat herunternehmen, den Stecker bei der Waage entfernen, statt dessen eine Schraubklemme auf das board löten (3,5 mm Pin-Abstand) und dort ein 4-adriges Kabel für das digitale Signal anschrauben. Auf dem Foto sieht man auch eine HX711-Platine an die ich Schraubklemmen (“Standard”-RM 2,54) gelötet habe an die Wägezelle und digital-Kabel angeschlossen werden können.

Ich habe hier einige Wäge-Systeme mit genau unseren Komponenten schon über verschiedene Jahreszeiten und Zeitperioden im Einsatz und mir sind solche Sprünge noch nicht aufgefallen, daher bin ich recht zuversichtlich, dass es kein allgemeines Architekturproblem der Hardware ist, sondern ein Einzelfall. Auch die Messungen hier Strain gauge load cell tests in a DIY climate chamber mit Bosche-Zelle und HX711 sprechen nicht für ein generelles Problem.

Wenn gar nichts hilft müssen wir auch an einen defekten HX711 oder eine defekte H40 / Platine denken, könnte ja auch sein.

1 Like