Forum: Digitale Signalverarbeitung / DSP / Machine Learning Wie Temperaturschwankungen filtern ?


von Leo (Gast)


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.

von Leo (Gast)


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.

von Alex (Gast)


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

von Maik W. (werner01)


Lesenswert?

ein stück metall am sensor ist ein guter lp-filter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.