HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

oreider
Beiträge: 173
Registriert: 28.12.2013, 16:23
Hat sich bedankt: 4 Mal

HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von oreider » 22.01.2021, 12:32

Hallo zusammen,

ich würde gerne mit dem oben genannten Sensor die Salzmenge meiner Wasserenthärtungsanlage messen.
Hier geht es grundsätzlich nicht um absolute Genauigkeit sondern eher um eine Meldung, wenn ich wieder Salztabletten nachfüllen muss.
Ich habe das ganze mit dem "SODIAL(R) Ultraschall Sensor Entfernungsmessung Modul Sensor US-100" realisiert.
Nun schwankt der Wert doch sehr stark. Mögliche Ursache evtl. der kleine Behälter der gemessen werden soll!? Gibt es hierfür einen Sensor der sich besser eignet? Evtl. hat hier schon jemand von euch Erfahrungswerte bevor ich andere Sensoren teste...
Auf den Bildern seht ihr natürlich nur den Versuchsaufbau... Keine Finale Version.
Schönen Dank
Tom
Dateianhänge
Werte 24h.JPG
IMG_0602.jpg
IMG_0604.jpg
IMG_0605.jpg

Benutzeravatar
FUEL4EP
Beiträge: 586
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 78 Mal
Kontaktdaten:

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von FUEL4EP » 22.01.2021, 13:27

Hallo oreider,

versuche mal, Dein verrauschtes Sensorsignal mit einem Kalman-Filter zu filtern.

Beispiele sind z.B. unter

https://github.com/NagarajSMurthy/Kalma ... nic-sensor
https://github.com/VibAruna/Kalman-Filt ... nic-Sensor

zu finden.
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von jp112sdl » 22.01.2021, 15:09

Hier misst jemand seinen Salzbehälter-Stand über das Gewicht... vielleicht wäre das die bessere Lösung für deine Anwendung:
viewtopic.php?f=76&t=49752&start=10#p634672

Ansonsten - wenn du einen reflektierenden Feststoff misst, kannst du es mit optischer Abstandmessung (ToF Sensor VL53L0X) probieren:
https://github.com/jp112sdl/HB-UNI-Sen-LEV-TOF

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

cmjay
Beiträge: 2386
Registriert: 19.09.2012, 10:53
System: CCU
Wohnort: Jottweedee
Hat sich bedankt: 250 Mal
Danksagung erhalten: 351 Mal

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von cmjay » 22.01.2021, 17:48

FUEL4EP hat geschrieben:
22.01.2021, 13:27
versuche mal, Dein verrauschtes Sensorsignal mit einem Kalman-Filter zu filtern.
Für den Anwendungsfall und bei dem gezeigten Messwertverlauf braucht man aus meiner Sicht kein solch schweres Geschütz wie einen Kalman-Filter. Ein gleitender Mittelwert mit Ausschlusskriterium "20%-Abweichung vom Mittelwert", um die wenigen Ausreisser einzufangen, sollte völlig ausreichen. Letztendlich geht es doch hier nicht um eine Präzisionsmessung einer stark fluktuierenden Größe sondern nur darum festzustellen, wann sich der Behälter langsam und stetig einem Füllstand nähert, bei dem man mal ans Auffüllen denken sollte.
Es kann leider nicht ganz ausgeschlossen werden, dass ich mich irre.
HmIP muss leider draussen bleiben. in Ausnahmefällen erlaubt
ACHTUNG! Per Portweiterleitung aus dem Internet erreichbare CCU-WebUI ist unsicher! AUCH MIT PASSWORTSCHUTZ! Daher: Portweiterleitung deaktivieren!

Benutzeravatar
FUEL4EP
Beiträge: 586
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 78 Mal
Kontaktdaten:

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von FUEL4EP » 22.01.2021, 18:22

Hallo cmjay,

im eindimensionalen Fall ist ein Kalman Filter ist kein schweres Geschütz. Es ist im Gegensatz zu einem gleitenden Mittelwertfilter sehr Speicher schonend. Ein gleitender Mittelwert über N Abtastwerte braucht dagegen N Speicherwerte. Vom Prinzip her ist ein Kalman Filter im eindimensionalen Fall es ein rekursives Filter 1. Ordnung, das ganz einfach ist. Hier aus dem zitierten Codebeispiel https://github.com/VibAruna/Kalman-Filt ... 42_IIC.ino:

Code: Alles auswählen

   //Kalman Filter Algorithm
    float mu_bar = A*pre_mu;
    float sigma_bar = A*pre_sigma*A + R;
    float K = sigma_bar*C/(C*sigma_bar*C + Q);
    float mu = mu_bar + K*(range - C*mu_bar);
    float sigma = (1 - K*C)*sigma_bar;
Dazu braucht man noch ein paar Parameter:

Code: Alles auswählen

//---------------------------------------Parameters Related to the Kalman Filter-----------------------------------------------
int A = 1;
int B = 0;
int C = 1;
int u = 0;
float R = 8*pow(10,-3);
float Q = 8.4535*pow(10,-2);
Das ist alles! Selbst wenn man mit der Schätzung des Kovarianz des Messrauschens R oder des Prozessrauschens Q daneben liegt, ist ein Kalman Filter relativ 'gutmütig'. Probiert es doch einfach mal aus und 'spielt' damit.

Selbst ein mehrdimensionales Kalman Filter passt locker auf einen ATmega1284P.
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

Benutzeravatar
stan23
Beiträge: 2038
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 582 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von stan23 » 22.01.2021, 18:43

FUEL4EP hat geschrieben:
22.01.2021, 18:22
Es ist im Gegensatz zu einem gleitenden Mittelwertfilter sehr Speicher schonend. Ein gleitender Mittelwert über N Abtastwerte braucht dagegen N Speicherwerte.
Es ist aber nur Datenspeicher-schonend.
Die Codegröße ist wesentlich höher, gerade wenn die CPU keine HW-Division unterstützt und mit nur 8 Bit breiten Registern Float-Werte berechnen soll.

Ohne es zu testen, würde ich sagen dass ein gleitender Mittelwert in der Summe RAM+Code-Größe kleiner ist und schneller gerechnet ist.

Natürlich nimmt man dazu keine runde Dezimalzahl an Werten zur Berechnung des Mittels, sondern eine Zweipotenz die sich durch einen Shift ersetzen lässt.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

cmjay
Beiträge: 2386
Registriert: 19.09.2012, 10:53
System: CCU
Wohnort: Jottweedee
Hat sich bedankt: 250 Mal
Danksagung erhalten: 351 Mal

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von cmjay » 22.01.2021, 19:00

Hallo Ewald,
mir ging es primär darum, dass ein gleitender Mittelwert im Gegensatz zu einem Kalman-Filter recht intuitiv verständlich und leicht auf der CCU zu implementieren ist (gibt auch Skriptbeispiele im Forum). Über den Ressourcenverbrauch habe ich mir in dem Zusammenhang gar keine Gedanken gemacht. Da hast du ganz offensichtlich ein viel tieferes Verständnis der Materie als ich.

Meine Sorge war, dass der TE (dessen Background in der Messwertanalyse ich natürlich nicht kenne) bei der Konfrontation mit den kryptischen Parametern eines Kalman-Filters akute Panikattacken bekommt und sofort den Griffel fallen lässt. :lol:

Wie auch immer. Unabhängig von der zu wählenden Methode der Filterung bin ich der Meinung, dass die Performance des US-100 mit einer Schwankungsbreite der Messungen von +/- 1.5cm durchaus ausreichend für die Anwendung des TE ist.

EDIT:
Zwischenzeitlich hat Marco ja auch einen Beitrag verfasst und ich stelle fest, dass ich von den Diskutanten derjenige mit der wenigsten Ahnung von der Materie bin. :lol:
Zuletzt geändert von cmjay am 22.01.2021, 19:04, insgesamt 1-mal geändert.
Es kann leider nicht ganz ausgeschlossen werden, dass ich mich irre.
HmIP muss leider draussen bleiben. in Ausnahmefällen erlaubt
ACHTUNG! Per Portweiterleitung aus dem Internet erreichbare CCU-WebUI ist unsicher! AUCH MIT PASSWORTSCHUTZ! Daher: Portweiterleitung deaktivieren!

Benutzeravatar
FUEL4EP
Beiträge: 586
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 78 Mal
Kontaktdaten:

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von FUEL4EP » 22.01.2021, 19:01

Hallo stan23,

die paar Zeilen Code von oben brauchen nicht viel Flashspeicher. Für einen gleitenden Mittelwert sind ähnlich viele Programmzeilen vonnöten.
Bei einem 328P basierten Ultraschallsensor 'langweilt' sich die MCU, so dass auch Floatingpoint Operationen problemlos machbar sind.
Wollen wir dagegen über 1024 Messwerte einen gleitenden Mittelwert bilden (1 Messwert = 2 Byte), brauchen wir schon 2kByte RAM!
Ein Kalman Filter braucht nur wenige Bytes. Ich nutze gerade auf einem ATmega1284P ein Kalman Filter (n=4,m=1) mit Double Floatingpoint Arithmetik. Die Rechenzeit ist nur 0.2 Sekunden.

Wir können ja eine 'Challenge' machen: klassisches Mittelwertfilter gegen Kalman Filter :D Möge das bessere Filter gewinnen :D

Hier nochmal eine andere, einfach anwendbare Kalman Filter Bibliothek von Github für den trivialen eindimensionalen Fall:

https://github.com/denyssene/SimpleKalmanFilter

Da muss man keinen 'Angstschweiß' auf die Stirn davon bekommen :D
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

Benutzeravatar
stan23
Beiträge: 2038
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 582 Mal
Danksagung erhalten: 336 Mal
Kontaktdaten:

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von stan23 » 22.01.2021, 19:28

Hallo Ewald,
1024 Messwerte finde ich extrem viel, ich dachte eher an 16 :)

Aber vielleicht habe ich den Anwendungsfall nicht richtig verstanden und bin in mein gewohntes Verhalten zurückgefallen, Resourcen (Laufzeit + Speicher) zu sparen.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: HB-UNI-Sen-LEV-US - Ultraschall Füllstandsensor schwankende Werte

Beitrag von jp112sdl » 22.01.2021, 19:30

Bin gespannt, was der TE überhaupt erstmal für ne Meinung zu den Vorschlägen hat :mrgreen:

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“