50Hz Softwarefilter

Gast #5836431
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
#5836510
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
}
Gast #5836541
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.
Gast #5836592
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.
Gast #5836623
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.
#5836638
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.
#5836902
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
Persönliche Seite #5837230
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.
Gast #5837244
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.
Gast #5837316
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.
Gast #5837504
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 ;-)
Gast #5837551
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.
#5845012
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...
Gast #5853619
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren