Füllstandsanzeige: Wemos plus Wägesens. (HX711, Problem) dann Abstandsse. US-100

Begonnen von andies, 17 Juli 2020, 22:48:54

Vorheriges Thema - Nächstes Thema

andies

Ich muss hier mal meinen Ärger loswerden. Ich habe versucht, den Füllzustand meines Entkalkers mit einem HX711 und vier Wägezellen auszulesen. Das das gesamte Gerät ca 30kg wiegt, würde man also den vollen Zustand (plus 25kg Salz drin) sicherlich von einem leeren Zustand unterscheiden können, selbst wenn man die vier preiswerten Zellen á 50kg nimmt. Nur habe ich das nicht zum laufen bekommen:

  • Zuerst habe ich die grüne Variante des HX711 genommen. Dort sind E- und GND nicht verbunden, was schon mal nicht geht. Das kann man verbinden, man kann aber nicht den HX mit 5V betreiben, weil dann die Ausgänge auch 5V haben und ich das an einen Wemos anschliessen wollte. Also für 14€ bei sparkfun ein rotes Board gekauft.
  • Das löst aber die Probleme nicht, Tasmota lässt sich nicht kalibrieren umd die raw Werte sind unbrauchbar. Auf leerer Waage ergibt sich in etwa dieselbe Zahl als wenn ich draufstehe (danke, aber dennoch habe ich 82 kg).
  • Um einen Hardwaredefekt auszuschliessen, habe ich meinen eigenen Sketch geschrieben. Der ergab zwar keinen linearen Anstieg, aber einen fast linearen. Wieso mein Sketch (abgeschrieben von der Vorlage für Theo Arends?!) jetzt besser sein soll, bleibt unklar. Dennoch einfach eingebaut und gelogged.
  • Nun logge ich das Ding seit mehreren Stunden und schaue zu, wie der raw-Wert mal steigt, mal fällt. Und zwar nicht um 0,1%, sondern um Raten wie 15% und mehr. Das kann an der Feuchtigkeit liegen, also warte ich mal ein paar Tage. Es könnte auch sein, dass meine Holzkonstruktion noch arbeitet, weiss der Teufel. Vielleicht ist der ESP auch nicht geeignet und es muss ein arduino dazwischen (inzwischen meine Vermutung).
Das ist aber leider kein Einzelfall. Ich beobachte  seit einiger Zeit, dass Konstruktionen, die früher mit wenigen Handgriffen fertig waren, neuerdings nicht oder nur mit Mühe funktionieren. Manchmal ist es auch so, dass ganze komplette Chargen von Bauteilen, auch von X verschiedenen Händlern, alle denselben Fehler aufweisen. Irgendwie nimmt mir das langsam den Spass an der Sache.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Nachdem ich mich etwas beruhigt habe, kommt jetzt eine ausführlichere Erläuterung, was ich eigentlich vorhabe. Ich besitze eine tumbe  (nicht WLAN-etc-fähige) Entkalkungsanlage, die ca. alle sechs Wochen mit 25kg Salz gefüllt werden muss. Also habe ich eine Erinnerung im Kalender und alle sechs Wochen muss ich alle zwei Tage nachschauen, ob es schon so weit ist. Mal wird dann nachgefüllt, manchmal warte ich noch einige Tage, manchmal bis zu zwei Wochen. Nachschauen kostet mit 1 Minute pro Tag, außerdem muss ich mich bewegen, was ja gesund ist.

Aber trotzdem glaubte ich, man könnte das ja elektronisch machen und in FHEM anbinden. Und vor Corona glaubte ich auch dafür genug Zeit zu haben. Die erste Idee war ein Entfernungsmesser, da das Salz aufgeschichtet ist und man die Höhe der Salzschicht im Anlagenbehälter messen kann. Dem stehen zwei Dinge entgegen: Ich müsste in einem Behälter einen Sensor hängen haben, der ziemlich unmittelbar mit Trinkwasser verbunden ist. Zudem liegt das Salz nicht plan, sondern kreuz und quer und ich dachte, um diese Probiererei komme ich herum. Also ein HX711 und vier Wägezellen; die sind eigentlich für 200kg ausgelegt, aber ich brauche ja nur 0kg versus 25kg, wird schon preiswert gehen. Denn teure Lösungen gibt es sicher, aber es geht um die Opportunität von 1 Minute Treppensteigen pro Monat, dafür will ich keine 50€+ ausgeben. Denkste.

Das erste war das HX711-Board, das aus China kam. Falsches Design. Es ist nun leicht, E- and GND zu legen und diesen Fehler zu beheben. Aber das Board ist für 5V ausgelegt, ich will einen Wemos dafür nehmen und brauche 3,3V. Sparkfun bietet so etwas an und dann sind wir nicht bei 0,6€, sondern 14€. Das schonmal zu Thema preiswert.

Dann findet man viele Seiten, die einem erläutern, wie man das verkabelt, wie toll das misst, 24-Bit-Auflösung und was weiß ich. Tatsache ist etwas anderes:

  • Es gibt einen Unterschied zwischen Auflösung ("wie genau könnte ich messen") und Genauigkeit ("wie genau messe ich"), auch hier https://www.mikrocontroller.net/articles/Aufl%C3%B6sung_und_Genauigkeit schön erläutert. Wenn nun die Genauigkeit kleiner als die Auflösung ist, misst man rauschen. Das ist leider bei dem HX711 und den Wägesensoren der Fall.
  • Wenn die mechanische Konstruktion ist perfekt ist, wirkt die Kraft nicht senkrecht auf die Sensoren. Durch die Scherkräfte wird das Ergebnis verzerrt. Ich habe mir eine einfache Holzkonstruktion gebaut und einfach nur Glück gehabt, dass das Problem bei mir nicht auftrat. Auf dem Schirm hatte ich das nicht.
  • Temperatur und Luftfeuchtigkeit beeinflussen das Ergebnis. Bei mir zum Glück kein Drama, weil das Gerät im Keller steht und diese Größen über längere Zeit hinweg konstant sind. 
  • Es gibt eine zeitliche Drift, bei mir beobachtbar. Mit der Zeit ändert sich trotz gleichem Gewicht der ausgegebene Wert. 
  • Die Bibliothek von Tasmota funktioniert nicht, obwohl er sie anscheinend von Bogde abgeschrieben hat. Die von Bogde ging bei mir. Also musste ich mir selbst einen Sketch schreiben und hochladen. Es ist mir nicht erklärlich, was da los ist und ich wollte keine Zeit mehr dafür aufwenden.
Nun kann ich Rohdaten auslesen und beobachte genau das, was oben angegeben ist: Während einer Stunde driftet der Wert wunderschön. Also ist Auflösung>Genauigkeit und ich messe rauschen. Ich werde jetzt die Genauigkeit schrittweise senken, bis ich erstmal einen über eine Stunde verlässlichen, also konstanten Wert habe. Den werde ich dann tageweise beobachten und hoffen, daraus einen Schluss auf den Füllstand ziehen zu können.

Das Gerät ist bei mir so angelegt, dass der HX711/Wemos letztlich eine Webseite aufspannt, die nur diesen Zahlenwert enthält:
Zitatraw=-108235
Diesen Wert lese ich mit httpmod aus
defmod Waage HTTPMOD http://waage.fritz.box/ 300
attr Waage userattr reading01Name reading01OExpr reading01Regex
attr Waage group Messen
attr Waage reading01Name raw
attr Waage reading01OExpr -$val
attr Waage reading01Regex raw=([-]?[\d]*)
attr Waage room Info
attr Waage stateFormat kalibriert
attr Waage timeout 15
attr Waage userReadings kalibriert {int(ReadingsVal($name, "raw",0)/2)}

Der Wert ist wegen falscher Verkabelung negativ und das Reading "kalibriert" ist der Versuch, die Auflösung an die Genauigkeit anzupassen.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Papa Romeo

#2
Hallo andies,

meine Flaschenfüllanlage funktioniert auf dem ähnlichen Prinzip. Ich nutze dabei aber nur einen Wäge-Sensor in der Mitte und der Prototyp liefert eigentlich recht genaue Anzeigen und es ist auch nach dem Beenden des Füllvorganges kaum ein Unterschied im Füllstand der Flaschen zu erkennen. 

Die Weiterentwicklung erkennt dann sogar den Flaschentyp und den Füllstand und weiß, wieviel Wasser noch zugeführt werden muss. 

Als ,,Auswerte-Einheit"  nutze ich einen Kannix mit einem OLED-Display.  Der Wäge-Sensor ist für 10 kg ausgelegt,  gibt´s aber auch für höhere Endlasten. Der HX7111 arbeitet an 3,21 Volt (gerade nachgemessen!) und ist eine einfache ,,Billigausführung" aus China.

Im Anhang ein paar Bilder dazu.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

Schon allein die mechanische Konstruktion Deiner Waage sieht beeindruckend aus. Ich habe da was mit Holz in einer Stunde gebastelt und fertig. Vielleicht liegt es schon mal daran, ich dachte ich löte da was zusammen und fertig...
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Christoph Morrison

Zitat von: andies am 17 Juli 2020, 22:48:54

  • Zuerst habe ich die grüne Variante des HX711 genommen. Dort sind E- und GND nicht verbunden, was schon mal nicht geht. Das kann man verbinden, man kann aber nicht den HX mit 5V betreiben, weil dann die Ausgänge auch 5V haben und ich das an einen Wemos anschliessen wollte. Also für 14€ bei sparkfun ein rotes Board gekauft.

nb: Man kann die 5V-H711-Boards relativ trivial auf 3V3 umrüsten, dazu muss man nur ein oder zwei Widerstände tauschen oder man benutzt einfach einen Level Shifter für ein paar Cent. Siehe z.B. hier: https://hackaday.io/project/1741-honeybee-hive-monitoring/log/9780-modifying-the-hx711-breakout-board-for-33v-operation

Zitat von: andies am 17 Juli 2020, 22:48:54
Das ist aber leider kein Einzelfall. Ich beobachte  seit einiger Zeit, dass Konstruktionen, die früher mit wenigen Handgriffen fertig waren, neuerdings nicht oder nur mit Mühe funktionieren. Manchmal ist es auch so, dass ganze komplette Chargen von Bauteilen, auch von X verschiedenen Händlern, alle denselben Fehler aufweisen. Irgendwie nimmt mir das langsam den Spass an der Sache.

Siehe das Debakel mit den fehlerhaften CC1101-Modulen. X verschiedene Händler sind auch oft nur Fronten für den gleichen Produzenten. Dank Konzentrationsprozesse hat man dann halt nur einen oder nur einen für eine Grundkomponente und plötzlich zieht sich der Fehler durch ein ganzes Produkt. Schaut man auf den Markt für Arzneigrundstoffe bekommt man aktuell das kalte Grausen und wir sollten schnellst möglich umdenken.

Papa Romeo

...zu fehlerhaften Modulen, hätte ich gerade ganz aktuell ein Beispiel.

Ich bin gerade an einem ESP8266-NRF24 Gateway dran und für die Clienten (Sensoren) habe ich mir fünf Arduino pro mini besorgt.

Für die Batterie-Version der einfachen Sensorplatine hab ich dann, wegen Energie sparen und so, ein Modul "abgelastet".

Nachdem ich nun alle, für den Betrieb nicht unbedingt benötigten Bauteile entfernt hatte und das Modul "flashen" wollte,
teilte mir Arduino-IDE mit, dass das Modul nicht erkannt wird, bzw. dass es nicht vorhanden ist.

Mein erste Gedanke war natürlich, dass ich durch das Entfernen der Bauteile irgwendwo eine Signal- oder Spannungsunterbrechung
verursacht habe, aber dem war nicht so. Nach genauerem Betrachten und Vergleichen mit einem der anderen Modulen war der Fehler
dann bald zu erkennen.

Vergleicht mal auf dem Bild im Anhang die Positionen der Quarze (Bauteil unter Pin 2).

LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

PeMue

Fazit:
- optische Kontrolle versagt
- Funktionskontrolle versagt
Wie haben die denn den Bootloader gebrannt? Direkt auf den Atmega?

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Papa Romeo

#7
Zitat von: PeMue am 18 Juli 2020, 17:17:50
Direkt auf den Atmega?

...denk ich mal...und ob da noch so viel "Funktionskontrolle" gemacht wird...

bzw. ich werd mal versuchen ob ich den Quarz "gerade" rücken kann und dann mal schauen ob da überhaupt ein Bootlader drauf ist.

Bei Arduino Nano´s hatte ich auch schon welche ohne.


Gruß

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

#8
... Operation erfolgreich !

LED blinkt jetzt etwa im Sekundentakt...also ist ein Bootloader drauf

und Arduino IDE kann das Modul auch ansprechen.

LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

TomLee

Die Lötpads der Bauteile die du entfernt hast sehen auf den Bildern aus wie unbenutzt.

Wie hast das gemacht, mit Entlötlitze das restliche Lötzinn entfernt ?

Gruß

Thomas

Papa Romeo

...ja...genau so...und dann die Flächen mit techn. Alkohol reinigen.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

Hallo andies,

sorry, jetzt haben wir irgendwie unbeabsichtigt deinen Thread gekapert.

Nochmal zu deinem Problem.

Wenn du willst und es für dich irgendwie hilfreich erscheint, lass ich dir gerne meinen Sketch
vom Prototyp, also noch ohne Stepper- und Servo-Steuerung, zukommen.

LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

kein Problem, ich lerne ja was dabei. Mich interessiert eigentlich nur, wie Du (oder jemand anders) den HX711 ausliest. Ich nehme an, das geht mit Bogdes Bibliothek. Gibt es da Anpassungen? Welche? Wie kalibriert Ihr?

Ich bin jetzt bei
kalibriert {int(ReadingsVal($name, "raw",0)/256)}
(also 24-8 bits) und ich habe sehr wenige Abweichungen, siehe Screenshot. Ich plotte das parallel zum Wasserverbrauch, weil ich vermute, dass die Schwankungen etwas mit dem Wasserbezug zu tun haben.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Papa Romeo

Da kann ich dir jetzt leider nicht weiter helfen, denn mit

Zitat von: andies am 19 Juli 2020, 20:53:19
kalibriert {int(ReadingsVal($name, "raw",0)/256)}

und "Bogdes Bibliothek"

kann ich nicht viel anfangen.

Ich mach das Ganze im Sketch, bzw. wenn das doch irgendwo nötig ist, dann wir wohl die "Lib" das übernommen haben.

LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

Das war mal wieder zu knapp von mir. Ich lasse mir den 24bit-raw-Wert ausgeben, ohne jede Kalibrierung. Ich kalibriere nicht im sketch, sondern will das in FHEM tun. Dazu dividiere ich das raw-Ergebnis durch 256 und lese nur den ganzzahligen Teil aus, werfe also alles hinter dem Komma weg. Und dann schwanken die Ergebnisse recht wenig. Vorher ging es heftig rauf und runter.

Das auslesen erfolgt bei mir so wie in Bogdes Bibliothek, ich nehme an, die nimmst du auch, oder?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann