Hallo, ich habe folgendes Problem. Ich lese Sensordaten ein (Druck, Temperatur) und die Werte schwanken um +/- 2 °C bzw. +/- 0.5 bar. Am Sensoreingang habe ich einen TP mit ca. 20Hz Grenzfrequenz. Ich taste mit 200Hz / Kanal ab. Für einen aktiven Filter fehlt mir leider der Platz, Platine ist zudem schon fertig. Im Prinzip sind die Schwankungen nicht relevant fürs ergebniss (bei 900°C sind +/- 2° egal). Es sieht nur leider recht unschön aus wenn die Werte auf der Anzeige / Aufzeichnung schwanken. Ich suche jetzt eine Möglichkeit die Werte so zu Filter, dass die Schwankungen wegfallen und der Wert stabiler ist. Einfache Durchschnittsberechnung hat leider nicht geholfen (16 Samples). Welche Möglichkeiten gibt es? Ich nutze einen 8051 mit 100MHz und 16x16 MAC. Muss ich schon zu einem digitalen Filter greifen? Wenn ja welche gibt es da und wie wird der implementiert (welcher Algorithmus)? Von Digitalen Filtern hab ich bislang absolut keine Ahnung :( Hoffe ihr könnt mir weiterhelfen! Danke!
Du könntest einen Median Filter propieren. Ist einfach zu programmieren.
Hallo! Probiers mit einem diskreten TP-Filter. Implementierung sieht so in etwa aus (in Pseudo-C): float x=0.0; // Speicher float y=0.0; // Ausgang bzw. gefiltertes Messergebnis float u=0.0; // Eingang #define filtereigenschaft 0.9 // Umso näher bei 1, umso mehr wird geglättet void filter() { y=x; x=x*filtereigenschaft+u*(1-filtereigenschaft); }
@Weinga-Unity Danke, das probiere ich mal aus .. sonst versuche ich den Median Filter mal.
Hallo Ego, im Prinzip hast du mit der Mittelwertberechnung ein Moving Avarage Filter implementiert. http://www.dspguide.com/ch15/2.htm Es ist einfach zu implementieren und zur Unterdrückung von weißem Rauschen gut geeignet. Vielleicht funktioniert dein Filter besser wenn du den Gleitenden Mittelwert aus einer größeren Anzahl Samples berechnest? Freundliche Grüße Fritz
Schau Dir mehrere zeitl. Verläufe an. Wenn da zB eine Schwebung drin ist: 50 Hz überlagert ? Rauschen, eine Störung, schlechtes Design der Platine. Ggf. mißt du einen artefakt von außen - und nicht nur das Signal. Ist nur eine Vermutlung, aber bei den Filterkonstellationen, ... 20 Hz, 200 S/sek kannst Du da sicherstellen, dass du nur das Sensorsignal am Eingang des ADUs hast ? C.
Bei 900 Grad ein +/- von 2 Grad entspricht vermutl. der Sensorgenauigkeit => ist vermutl. kein Fehler, ;-) Wenn langsame Änderungen erwartet werden, sind Mittelwert und median nutzbar, aber sie stellen ein Totzeitsystem dar! Man mist erst 3 Werte, um den 2. anzugeben, bei 99 den 50. Ich würde aber mal letzteres versuchen, wenn dein Aufbau das zuläßt. Damit kann man ggf. schnelle störungen (gleichverteilt ?!) eliminieren bzw. reduzieren. C.
Amplitudengang fuer den Mittelwert aus 20 Samples bei einer Abtastfrequenz von 200Mhz.(Anhang) y=(20Samples/20)
Hi, probier es mal damit. Hat mir schon oft geholfen das Rauschen etwas zu unterdrücken. Ist zwar nicht sehr professionell aber dafür ziemlich einfach. Du kannst einfach mit "int" rechnen und um eins schieben anstatt zu teilen. Ich weiß ja nicht was noch an Rechenzeit übrig ist, vielleicht reicht es ja für ein EKF. Das EKF ist bestens geeignet für verrauschte Messsignale. Ist aber vielleicht etwas dick aufgetragen für eine einfache Temperaturmessung. Gruß, Sebastian
Hi Sebastian, Kalman-Filter hört sich spannend an. Hast du vielleicht Beispielcode &| Quellen im Internet zum Kalman-Filter. Bitte Posten!
Hi Fritz, google wirft einem ziemlich viel entgegen mal man das Richtig eingibt... Ich hab hier mal eine relativ gute Erklärung rausgesucht. Darin werden das einfach Kalman Filter (linear) und das EKF (nichtlinear) beschrieben. Nach Beispielcode kannst du wahrscheinlich lange suchen, ich bin auch nicht wirklich fündig geworden. Am besten du schauts dir das PDF erst mal an und entscheidest dann ob sich der Aufwand lohnt. Gruß Sebastian!
Ein "normaler" Tiefpass sollte normalerweise völlig ausreichen. Ansonsten ist es leicht möglich, daß eben sonstige Störungen in den ADC reinspinnen. Wichtig ist häufig , dass direkt am AD Eingang ein Kondensator hängt. Je nach Geschwindigkeit ein paar nF bis ca. 100nF. Thomas
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.