Forum: Digitale Signalverarbeitung / DSP / Machine Learning Tiefpassfilter / Anti-Aliasfilter


von ich (Gast)


Lesenswert?

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!

von Bri (Gast)


Lesenswert?

Du könntest einen Median Filter propieren. Ist einfach zu programmieren.

von Weinga-Unity (Gast)


Lesenswert?

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);
}

von Weinga-Unity (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch die Implementierung in Scilab/Scicos.

von ich (Gast)


Lesenswert?

@Weinga-Unity

Danke, das probiere ich mal aus .. sonst versuche ich den Median Filter 
mal.

von fritz (Gast)


Lesenswert?

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

von Christian (Guest) (Gast)


Lesenswert?

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.

von Christian (Guest) (Gast)


Lesenswert?

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.

von fritz (Gast)


Angehängte Dateien:

Lesenswert?

Amplitudengang fuer den Mittelwert aus 20 Samples bei einer 
Abtastfrequenz von 200Mhz.(Anhang)
y=(20Samples/20)

von Sebastian H. (Gast)


Angehängte Dateien:

Lesenswert?

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

von fritz (Gast)


Lesenswert?

Hi Sebastian,
Kalman-Filter hört sich spannend an.
Hast du vielleicht Beispielcode &| Quellen im Internet zum 
Kalman-Filter.
Bitte Posten!

von Sebastian H. (Gast)


Lesenswert?

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!

von Sebastian H. (Gast)


Angehängte Dateien:

Lesenswert?

Hm, was zum Lesen wolltest du ja auch...

von Thomas S. (Gast)


Lesenswert?

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