Signalanalyse

Jan 04, 2006 4 Replies

Hallo zusammen,



erstmal allen ein "Frohes Neues Jahr".



Zum Thema:



Ich habe eine grunds=E4tzliche Frage zur Signalanalyse. Ein Microcontroller digitalisiert mit einer festen frequenz das Messsignal eines Sensors. Die Aufnahmedauer betr=E4gt ca. 400ms. Nach dem Auslesen der Daten ist das Signal jedoch so stark verrauscht, das eine Auswertung der Daten nicht m=F6glich ist. Zus=E4tzlich zum Microcontroller existieren noch einige weitere Baugruppen, wie DC/DC-Wandler, Signalverst=E4rker, Bluetooth-Modul.



Ziel ist es nun, die St=F6rungen zu eliminieren. Und genau darin liegt das Problem. Wie geht man es bei einer solchen sache am besten an. Die empfangenen Daten sind als Textdatei vorhanden.



Als L=F6sung dachte ich mir eine Filterstufe welche die St=F6rsignal d=E4mpft. Wie ist es nun m=F6glich, festzustellen was f=FCr Frequenzanteile in dem Signal vorhanden sind, und einen passenden filter daf=FCr zu dimensionieren? Ich habe schon von der M=F6glichkeit der FFT-Analyse erfahren, jedoch fehlt mir dazu der n=F6tige hintergrund die Ergebnisse zu interpretieren.



=DCber ein paar Anregungen in welche Richtung ich suchen muss, w=E4re ich sehr dankbar.



Viele Gr=FC=DFe Thomas Langer



"Tom Knox" wrote in news:1136373797.067926.261620 @o13g2000cwo.googlegroups.com:

Sind wirklich 400 Millisekunden gemeint? Dann wäre das Eingangssignal ja schon fast Gleichspannung - und über ein RC-Glied (eventuell auch einen aktiven Tiefpass) könnten Störungen eleminiert werden. Aber: besser wäre es, die Störquellen zu beseitigen - Versorgungsspannungen entkoppeln, Schaltungsteile abschirmen, DC-Wandler und Bluetooth während der Messung abschalten.

Den Weg, das Ergebnis hinterher rechnerisch wieder auf die Füsse zu stellen, halte ich für den falschen Ansatz - höchstens in wenig runden (zB neuerWert:= (alterWert*2 + Messung) / 3 alterWert:= neuerWert

Sich das Signal am Oszilloskop ansehen. Wenn die Ursache der Störung z.B. Ripple des DC/DC-Wandlers oder falsche Erdung ist, diese in Hardware beheben, nicht in Software doktern sondern Ursache beseitigen. Wenn das Rauschen aus Sensor kommt, dann in Software filtern.

Typisch ein Tiefpaßfilter. Die einfachste Implementierung für Controller ( soweit der nicht richtig multiplizieren kann ) ist Averager:

formatting link
Heft 10 S. 23

Wenn das "Rauschen" nicht Gaußverteilung hat sind Median-Filter nominell besser. Aber aufwendig. "Natürliches" Rauschen aus Halbleitern,z.B. thermisches Rauschen hat Gaußverteilung. Technisch bedingte Störungen wie Spikes nicht. Man kann aus den Orginaldaten via Histogramm oft schon erkennen was der Fall ist.

MfG JRD

Wie andere hier schon geschrieben haben, solltest Du versuchen, die St=F6rungen zu vermeiden, statt sie hinterher zu entfernen. Ohne n=E4here Kenntnis des erwarteten Signals, kannst Du garnichts filtern, denn auch das Rauschen k=F6nnte ja Teil des Signals sein. Erst wenn Du wei=DFt, da=DF das Signal z.B. nur einen bestimmten Frequenzbereich belegt, kannst Du filtern. Da=DF das Eingangsspektrum des Signals vor der Digitalisierung auf allerh=F6chstens die H=E4lfte der Abtastfrequenz begrenzt werden mu=DF, sollte bekannt sein.

Michael

hier wären einige Angaben sinnvoll gewesen, z.B. welche Abtastfrequenz, welches Signal liefert der Sensor etc.

Ergänzend zu den anderen könnte ich noch den Vorschlag machen, unter der Voraussetzung von gauß'schem Rauschen, eine nichtlineare Polynomapproximation oder im einfachsten Falle eine sogenannte lineare Regression durchzuführen. Solche Approximationen funktionieren aber nur dann ohne nennenswertes Überschwingen, wenn die Meßkurve wenig gekrümmt ist. Mit solchen Approximationen habe ich mich schon beschäftigt, man muß dann mehr oder weniger gut konditionierte und evtl. sehr große lineare Gleichungssysteme lösen. Im Grunde ist das ein Standardverfahren, das z.B. in Matlab drin ist, was Du aber sicher nicht hast. Man kann es aber selbst kostenlos programmieren. In Echtzeit kann man aber so sicher nicht vorgehen.

Für Tiefpaßfilter gilt auch das Problem mit der Krümmumg und dem Überschwingen, es sei denn man nimmt speziell optimierte wie Besselfilter. Außerdem haben Filter immer den Nachteil der Laufzeit, die Du mit berücksichtigen müßtest. Vor dem AD-Wandler, der vermutlich in Deinem uC eingebaut ist, sollte _zwingend_ ein solcher _analoger_ Tiefpaß vorhanden sein. Falls Du den vergessen haben solltest, was ich sogar glaube, dann hast Du schonmal den 1. Ansatzpunkt für die Störungsbeseitigung, denn dann verletzt Du sicher durch eingekoppelte Störungen das Abtasttheorem.

Dieser Tiefpaß könnte im einfachsten Fall 1. Ordnung sein, also 1 R vor dem AD-Eingang und 1 C vom AD-Eingang nach Masse, das wird vermutlich schon spürbare Verbesserung bringen. Wie dieser Tiefpaß bei Dir genau aussehen sollte könnte ich erst sagen, wenn ich Daten über Dein System habe, denn die fehlen völlig. Das Abtasttheorem besagt, daß Du alle Frequenzanteile von der halben Abtastfrequenz aufwärts herausfiltern _mußt_, sonst ist Dein Signal irreversibel zerstört. Einen solchen Tiefpaß kannst Du nicht ideal realisieren, aber zumindest näherungsweise, im 1. Versuch vielleicht erstmal 1. Ordnung.

Zur FFT könnte ich auch was sagen. Unter der Vorraussetzung, der Antialias-TP vor dem AD-Wandler ist da und funktioniert, dann kannst Du im Spektrum mit FFT auch erkennen, wie Dein Signal aussieht. Wenn Du die FFT sehr lang machst, z.B. 2**20 Abtastwerte, dann wird gauß'sches Rauschen schon um mehr als 100 dB unterdrückt. Dann kannst Du Dir das Signal genauer ansehen. FFT-Programme gibt es auch frei überall, GNU-PLot gibt es auch kostenlos zum angucken. Man kann dann noch mit Fensterung die FFT verbessern, wenn man nicht sehr viel Stützwerte hat, ist bei sehr langer FFT aber nicht unbedingt notwendig. Also ich habe hier schon 2**23 FFTs über Tabellen aus Dateien durchgeführt, das geht.

Worauf man bei FFT-Programmen noch achten muß, sie liefern vom Betrag immer nur die Hälfte der Amplitude, jedoch den Gleichanteil richtig. Bei Fensterung muß man da auch sehr aufpassen.

mfg. Winfried

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required