Forum: Digitale Signalverarbeitung / DSP / Machine Learning 50Hz Softwarefilter


von Mini Maus (Gast)


Lesenswert?

Kennt jemand den Weg / Möglichkeiten eines 50Hz Filter in Software?

: Verschoben durch Moderator
von Jemand (Gast)


Lesenswert?

Ja.

von Joe F. (easylife)


Lesenswert?

https://en.wikipedia.org/wiki/High-pass_filter

-> Algorithmic implementation

von Jemin K. (jkam)


Lesenswert?

sliding mean über 20 ms.

von Mini Maus (Gast)


Lesenswert?

gilt das auch für Gleichspannungssignale?
Also einfache Spannungsmessung am ADC?
Die dort abgebildeten Filter sind doch für AC - oder?
 function highpass(real[0..n] x, real dt, real RC)
   var real[0..n] y
   var real α := RC / (RC + dt)
   y[0] := x[0]
   for i from 1 to n
     y[i] := α * y[i-1] + α * (x[i] - x[i-1])
   return y

von Jemin K. (jkam)


Lesenswert?

Hä?

von HildeK (Gast)


Lesenswert?

Mini Maus schrieb:
> gilt das auch für Gleichspannungssignale?

Wenn du nur Gleichspannung hast, was willst du dann wegfiltern? Gut, mit 
einem Hochpass kannst du auch die Gleichspannung wegfiltern, aber es ist 
dann einfacher, einfach das Kabel durchzuschneiden ...

von Adam P. (adamap)


Lesenswert?

Mini Maus schrieb:
> Kennt jemand den Weg / Möglichkeiten eines 50Hz Filter in Software?

Such mal nach "WinFilter", der erzeugt dir dann auch C-Code.

Bei mir hab ich ein Bandpass 4 Ordnung für 380Hz laufen, funktioniert 
super.

Für den Offset nutze ich dies:
1
struct offset_filter_t
2
{
3
  long last_f;
4
  uint32_t last_s;
5
  int32_t filtered;
6
};
7
typedef struct offset_filter_t offset_filter_t;
8
9
10
int32_t dc_offset_filter(offset_filter_t *data, uint32_t sample)
11
{
12
  data->filtered = 0.999 * (data->last_f + (long)sample - (long)data->last_s);
13
14
  data->last_f = data->filtered;
15
  data->last_s = sample;
16
17
  return (int32_t)data->filtered;
18
}

: Bearbeitet durch User
von Mini Maus (Gast)


Lesenswert?

"Wenn du nur Gleichspannung hast, was willst du dann wegfiltern? "
störende Wechselspannung dazwischen?!...

Im Audiobereich habe ich Wechselspannung und will dort Wechselspannungen 
filtern..ich messe aber Gleichspannung und will die Wechselspannung 
filtern.könnte ja sein das das einen Untetrschied macht..
Habe Beispiele gesehen, wo ein C in Reihe und ein R Parallel ist..kannte 
vorher aber nur R in reihe und C Parallel..


Danke für die restlichen Hinweise, ich werde mir auch mal Winfilter 
ansehen

Beitrag #5836577 wurde von einem Moderator gelöscht.
von HildeK (Gast)


Lesenswert?

Mini Maus schrieb:
> könnte ja sein das das einen Untetrschied macht..
> Habe Beispiele gesehen, wo ein C in Reihe und ein R Parallel ist..kannte
> vorher aber nur R in reihe und C Parallel..

Es macht insofern einen Unterschied, dass diese Beschreibungen auf einen 
Hochpass (C in Reihe und R parallel) und einen Tiefpass (R in Reihe und 
C parallel) hindeuten (wenn ich deine Prosa richtig verstehe, einen Link 
auf deine Infos oder ein Bild wären nützlich gewesen).
Beide Lösungen können 50Hz dämpfen, mit einem Hochpass ist die 
Gleichspannung dann aber auch weg.

von oszi40 (Gast)


Lesenswert?

Es gibt Hochpass, Tiefpass, Bandpass und Bandsperre.
Filtern ist leider immer die zweitbeste Möglichkeit, da die URSACHE oft 
woanders liegt! Gegen Brummen hilft z.B. auch ausreichende Abschirmung.

von Joe F. (easylife)


Lesenswert?

Mini Maus schrieb:
> gilt das auch für Gleichspannungssignale?
> Also einfache Spannungsmessung am ADC?

Ein HP wäre da nicht passend.
Wichtig zu wissen wäre, welche Signalanteile du nicht herausfiltern 
möchtest.
Wenn die Frequenz für die du dich interessierst unterhalb 50 Hz liegt 
(sagen wir mal, die Abtastrate des ADC ist ohnehin < 25 Hz), hilft ein 
Tiefpass mit Grenzfrequenz (deutlich) unterhalb von 50 Hz.
Möglichst höherer Ordnung, denn ein Filter 1. Ordnung reduziert den 
Brumm nur um 6dB pro Oktave.

Falls auch Frequenzen oberhalb 50 Hz durchgelassen werden soll hilft ein 
Notch-Filter bei genau 50 Hz.

: Bearbeitet durch User
von Burkhard K. (buks)


Lesenswert?

Mini Maus schrieb:
> Im Audiobereich habe ich Wechselspannung und will dort Wechselspannungen
> filtern.

Was hast Du denn überhaupt vor?

Nachträglich Brumm aus Aufnahmen entfernen?
  Audacity -> Effekt -> Notch oder HP -> Filtergüte (Q) wählen -> 
speichern

Oder was ganz anderes? Und wie groß ist der Brumm im Vergleich zum 
Nutzsignal?

BTW: 50 Hz entspricht in etwa dem Kontra-G (E-Seite) auf dem Bass - das 
fehlt dann nach dem Filtern

von Mini Maus (Gast)


Lesenswert?

@Burkhard K. (buks)

"Was hast Du denn überhaupt vor?"

"gilt das auch für Gleichspannungssignale?
Also einfache Spannungsmessung am ADC?"

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Burkhard K. schrieb:
> Nachträglich Brumm aus Aufnahmen entfernen?
>   Audacity -> Effekt -> Notch oder HP -> Filtergüte (Q) wählen ->
> speichern

Würde ich auch, als Test auf jeden Fall mal empfehlen.

Könnte sich nämlich herausstellen, das es sich hier nicht um einen 
reinen, 50Hz-Sinus handelt, sondern um verformte 100Hz (nach der 
Gleichrichtung), schlimmstenfalls sogar um Nadelimpulse mit der 
entsprechenden Grundfrequenz, in diesem Falle mit einer reinen 
Bandsperre kaum auszufiltern.

von Peter Petersson (Gast)


Lesenswert?

Mini Maus schrieb:
> gilt das auch für Gleichspannungssignale?
> Also einfache Spannungsmessung am ADC?
> Die dort abgebildeten Filter sind doch für AC - oder?
>  function highpass(real[0..n] x, real dt, real RC)
>    var real[0..n] y
>    var real α := RC / (RC + dt)
>    y[0] := x[0]
>    for i from 1 to n
>      y[i] := α * y[i-1] + α * (x[i] - x[i-1])
>    return y

Vielleicht grundlegend nochmal anschauen was überhaupt der Sinn eines 
Filters ist. Ich weiß nicht ob ich lachen oder weinen soll.

von Peter Petersson (Gast)


Lesenswert?

Oder was ein Signal und eine Frequenz, AC und DC überhaupt bedeuten. Du 
scheinst das grundlegend nicht zu verstehen.

von HildeK (Gast)


Lesenswert?

Burkhard K. schrieb:
> Was hast Du denn überhaupt vor?

Ja, das habe ich mich auch lange gefragt. Wenn man gut ist im Lesen 
zwischen den Zeilen, könnte man ahnen, dass er eine verbrummte 
Versorgungsspannung überwachen will. Nix Audio etc.
@Mini Maus (Gast): Ist das so? Dann bitte bestätigen!

Dann hilft auf der analogen Seite ein schön tief angelegter Tiefpass 
oder eben ein Tiefpass in Software. Wenn man bei der 
Spannungsüberwachung einen langsamen Drift aus den Spezifikationen 
erfassen will, dann reicht vermutlich schon eine einfache oder eine 
gleitende Mittelwertbildung über eine Reihe von Samples.

von Mini Maus (Gast)


Lesenswert?

"zwischen den Zeilen, könnte man ahnen, dass er eine verbrummte
Versorgungsspannung überwachen will. Nix Audio etc.
@Mini Maus (Gast): Ist das so? Dann bitte bestätigen!"

Ja, logo ist ja irgendwie naheliegend..
Ich schrieb
Spannungsmessung, ADC 50Hz Filter..da muss man ja kein Genie sein, zu 
wissen was ich meine ;-)

von HildeK (Gast)


Lesenswert?

Mini Maus schrieb:
> Ja, logo ist ja irgendwie naheliegend..
> Ich schrieb
> Spannungsmessung, ADC 50Hz Filter..da muss man ja kein Genie sein, zu
> wissen was ich meine ;-)

So glasklar war dein Anliegen nicht. Ich war ja offensichtlich nicht der 
Einzige, der länger gebraucht hat um es zu verstehen.

Spannungen sind nicht nur bei DC vorhanden.
Auch das ist dann sinnlos und wenig hilfreich, um auf eine DC-Messung zu 
kommen:
Mini Maus schrieb:
> function highpass(real[0..n] x, real dt, real RC)

Und du redest von "Gleichspannungssignale". Oder meinst du doch nur 
Versorgungsspannungen? Signal wechseln irgendwann, sonst könnten sie 
nichts signalisieren ...
Mini Maus schrieb:
> gilt das auch für Gleichspannungssignale?

50Hz stören auch oft in Audiosignalen und bei vielen anderen 
Anwendungen.

Warum hast du überhaupt auf einer DC-Spannung unerwünschte 50Hz? Oder 
werden die dort benötigt? Wenn nicht, solltest du da schon mal ansetzen, 
das hilft auch andere Probleme zu vermeiden.
Ansonsten: ein Widerstand und ein dickes C vor den ADC-Eingang.

von Manfred (Gast)


Lesenswert?

Mini Maus schrieb:
> Ich schrieb
> Spannungsmessung, ADC 50Hz Filter..da muss man ja kein Genie sein, zu
> wissen was ich meine ;-)

Ein sehr netter Tonfall um Hilfe zu bekommen :-(

Beschreibe endlich eindeutig, wie Dein zu messendes Signal aussieht und 
aus welcher Quelle es stammt.

von Logikpolizei (Gast)


Lesenswert?

Adam P. schrieb:
> Bei mir hab ich ein Bandpass 4 Ordnung für 380Hz laufen, funktioniert
> super.

Na? Wer hat da die Aufgabenstellung nicht gelesen?

Mini Maus schrieb:
> Kennt jemand den Weg / Möglichkeiten eines 50Hz Filter in Software?

1. Falsche Frequenz
2. Faslche Filterkurve

1+2 = falsche Antwort!

von Joe F. (easylife)


Lesenswert?

Logikpolizei schrieb:
> 2. Faslche Filterkurve

False Sreibweise.

von Adam P. (adamap)


Lesenswert?

Logikpolizei schrieb:
>> Bei mir hab ich ein Bandpass 4 Ordnung für 380Hz laufen, funktioniert
>> super.
>
> Na? Wer hat da die Aufgabenstellung nicht gelesen?

Hättest du verstanden, dass meine Filter ebenfalls mit WinFilter erzeugt 
wurden, dann würdest du erkennen, dass es lediglich ein 
Erfahrungsbericht war und "Mini Maus" sich ihren eigenen Filter selbst 
zusammenklicken kann...

von GEKU (Gast)


Lesenswert?

Mini Maus schrieb:
> Möglichkeiten eines 50Hz Filter in Software?

Man könnte durch die Software ermitteln mit welcher Amplitude und 
Phasenlage das 50 Hz Signal im Nutzsignal vorkommt. (Fourier Analyse)

Kennt man diese beiden Werte, dann kann man dieses Signal vom Nutzsignal 
abziehen.
Man kann natürlich auch mit den Oberwellen so verfahren.

von T.U.Darmstadt (Gast)


Lesenswert?

GEKU schrieb:
> Man könnte durch die Software ermitteln mit welcher Amplitude und
> Phasenlage das 50 Hz Signal im Nutzsignal vorkommt.

Kommt aber einer Filterung gleich :-)

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.