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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.