mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Tiefpassfilter / Anti-Aliasfilter


Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest einen Median Filter propieren. Ist einfach zu programmieren.

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

Autor: Weinga-Unity (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch die Implementierung in Scilab/Scicos.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Weinga-Unity

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

Autor: fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian (Guest) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian (Guest) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: fritz (Gast)
Datum:
Angehängte Dateien:

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

Autor: Sebastian H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: fritz (Gast)
Datum:

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

Autor: Sebastian H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Sebastian H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hm, was zum Lesen wolltest du ja auch...

Autor: Thomas S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.