Wie Temperaturschwankungen filtern ?

Gast #1783703
Lesenswert?

Guten Morgen,

ich habe ein EVA Board mit einem AT90S8535 und einen Display.
Angeschlossen habe ich dabei einen Temperatursensor vom Typ: DS1820.
Nun ist es so das die ankommenden Werte relativ stark schwanken.
Ich hab mir überlegt dafür einen IIR Filter (zeitliche Filterung) zu 
implementieren.
Einen Mittelungsfilter möchte ich nicht einsetzen. Ich möchte
ein paar praktische Erfahrungen dabei sammeln. Wie müsste ich dabei 
genau vorgehen? Danke im voraus.
Gast #1783772
Lesenswert?

Könnte ich so einen IIR-Filter erster Ordnung verwenden?

y(n)= a * x(n) + (1-a)*y(n-1)

Ich muss noch was ergänzen. Ich lese die Werte vom Temp. Sensor in der 
while(1) Schleife von main ein (Polling betrieb). Wie könnte ich da die 
Zeitermitteln wie schnell die Werte eingelesen werden. Ich denke die 
Zeit ist das schon sehr sehr kurz.
Gast #1783808
Lesenswert?

Hi,


"a" ergibt sich aus der gewünschten Filterzeitkonstante und deiner 
Abtastzeit. Setz dir einfach parallel einen Timer auf und lies dessen 
Zählregister, wenn wieder eine aktuelle Temperatur vorliegt. Bilde die 
Differenz mit dem Zählregisterwert, als die letzte Temperatur vorlag und 
berechnet die Zeitdifferenz. Dann kannst du "a" neu berechnen und den 
Filter für den neuen Temperaturwert durchrechnen.

Alternativ einfach in einer Timer-ISR zyklisch ein "lies Temperatur" 
Flag setzen und dieses im Background abpollen. Dann kannst du "a" fix 
lassen. Bei der endlosen Zeit die der Sensor braucht, sollte das die 
bessere und einfachere Variante sein.


Gruß,
Alex

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren