Forum: Mikrocontroller und Digitale Elektronik ADC 50/60Hz Rückwirkung


von Peter (Gast)


Lesenswert?

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

von M. K. (sylaina)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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?

von Der Zahn der Zeit (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

Wie würde FIR und IIR in Codeform aussehen?

von Der Zahn der Zeit (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

Habe nun über 40 ms 10 Messwerte gesammelt und bilde daraus den 
Mittelwert. Auf den ersten Blick ist das sehr genau...

von c-hater (Gast)


Angehängte Dateien:

Lesenswert?

Peter schrieb:

> Wie kann man da softwaremäßig solch ein Filter realisieren?

So z.B. (siehe Anhang)

von Manfred (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

Das mit dem kleinsten und größten Wert löschen werde ich prüfen ob es 
eine Verbesserung / Änderung ergibt.

von J. S. (engineer) Benutzerseite


Lesenswert?

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