Hallo, da ich nicht weis ob Analog oder Digital Forum, da ja beides benötigt wird habe ich den post in beide Kategorien gestellt. Wenn das stört bitte löschen! beim Einsatz von ADC mit hoher Auflösung und Abtastrate spricht man immer wieder über eine 50/60Hz Rückwirkung welche als Brummen von der Netzspannung eingestreut wird. Als Softwarelösung wird daher empfohlen mehrere Messungen durchzuführen und den Mittelwert zu errechnen um diese Störungen zu unterdrücken. Nur was macht man in zeitkritischen Systemen? Nehmen wir an man muss aller 4ms Auswerten ob ein Wert noch im Limit liegt und ggf. Reagieren. Wie kann man da softwaremäßig solch ein Filter realisieren? Bitte um Hinweise und Tipps. Mit freundlichen Grüßen Peter
Peter schrieb: > Nehmen wir an man muss > aller 4ms Auswerten ob ein Wert noch im Limit liegt und ggf. Reagieren. > Wie kann man da softwaremäßig solch ein Filter realisieren? IIR-Filter einsetzen, hier mal ein Anlaufpunkt der das Thema aufgreift: http://www.electronicdesign.com/analog/use-software-filters-reduce-adc-noise
Peter schrieb: > Nur was macht man in zeitkritischen Systemen? Nehmen wir an man muss > aller 4ms Auswerten ob ein Wert noch im Limit liegt und ggf. Reagieren. Abschirmen > Wie kann man da softwaremäßig solch ein Filter realisieren? Wenn die Größe der Einstreuung stabil ist, kannst du die Amplitude der 50/60Hz Komponente aus den Samples berechne und phasenrichtig von den Messdaten abziehen. Das setzt voraus, dass keine Signalanteile bei der Frequenz liegen. Vielleicht geht auch ein Notch-Filter, wenn du mit dessen Frequenzgang leben kannst.
Angenommen man würde DMS auswerten wo ja an sich das Ergebnis stabil ist also ohne Frequenz würde es reichen das streuen am Anfang zu ermitteln und daraus den Nullpunkt zu errechnen? Dann würde das Ergebnis ja noch genauer werden? Bei. fIR Filter habe ich die Angst mir die Reaktionszeit zu zerstören da man ja mehrere Samepls benötigt?
Peter schrieb: > Wie kann man da softwaremäßig solch ein Filter realisieren? Wenn sowohl deine Störung als auch das zu messende Nutzsignal sich normalerweise(!) zeitlich nur langsam ändert, kannst du durch Mittlung des AC-Anteils von Nutzsignal + Störung (alle 20 ms eine 20 ms-Sequenz akkumulieren, so wie bei digitalen Oszis die Average-Funktion bei Netztrigger) die wahrscheinliche "Zukunft" des Störsignals vorhersagen und vom momentan gemessenen Wert abziehen. Es hängt natürlich von der natürlichen Änderung deines Nutzsignals und der Konstanz der Störung ab, die die mögliche Messgenauigkeit bzw. Selektion begrenzen, ob dein Ziel erreicht werden kann. Ein FIR-Filter verzögert per Definition mindestens um die niedrigste zu filternde Periodendauer, also > 20 ms. Mit einer IIR Bandsperre (oder mehreren, für die zu erwartenden Oberwellen) sollte es gehen - allerdings dürfte das oben geschilderte Verfahren im Prinzip nichts anderes sein, sich aber leichter in Software realisieren lassen.
FIR: Es werden die letzten Samples in einen Speicher geschrieben, das können sehr viele sein. Mindestens so viele, wie die Periodendauer der niedrigsten zu filternden Frequenz. Für jede neue Sample werden alle Samples mit einem bestimmten Wert multipliziert und akkumuliert. Das kann sehr rechanaufwändig sein. Das Ergebnis ist das gefilterte Zeitsignal. IIR: Wesentlich weniger Rechenaufwand, aber man muss, je nach Verhältnis Sample-Rate und niedrigste zu filternde Frequenz sowie Filterordnung und natürlich der Genauigkeit (= Auflösung) mit erheblich breiteren Worten als üblich rechnen. 32 Bit Integer ist ganz schnell viel zu wenig, Float sowieso, 64 Bit Integer kann reichlich, aber auch viel zu wenig sein (Double Float auch). Wer analoge Filter kennt und berechnen (lassen) kann, kann die zugehörigen digitalen Algorithmen und Koeffizienten vielleicht ganz gut aus http://www.beis.de/Elektronik/Filter/AnaDigFilt/AnaDigFilt.html ermitteln und mit einem Programm berechnen.
Habe nun über 40 ms 10 Messwerte gesammelt und bilde daraus den Mittelwert. Auf den ersten Blick ist das sehr genau...
Peter schrieb: > Habe nun über 40 ms 10 Messwerte gesammelt und bilde daraus den > Mittelwert. In dem Falle werfe ich zusätzlich den Kleinst- und den Größtwert weg und teile durch acht.
Das mit dem kleinsten und größten Wert löschen werde ich prüfen ob es eine Verbesserung / Änderung ergibt.
M. K. schrieb: > IIR-Filter einsetzen, hier mal ein Anlaufpunkt der das Thema aufgreift: > http://www.electronicdesign.com/analog/use-software-filters-reduce-adc-noise Mit einem IIR schleppt man sich die Störung aber mitunter ins System. FIR-Sperr-Filter auf die konkrete Frequenz ist da besser (und z.T. auch einfacher).
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.
