Forum: Analoge Elektronik und Schaltungstechnik Digital verstellbarer Analoger Filter


von Markus H. (haniham) Benutzerseite


Lesenswert?

Hallo Meine Lieben,

In meiner bestehenden Schaltung werden Sensordaten mit dem ADC 
gesampelt(genauer ein Shocksensor mit Ladungsverstärker).
Leider sind sehr viele niederfrequente Störungen auf dem Signal, welche 
ich gerne durch frequenzmäßiges herausfiltern vor der AD-Wandlung 
entfernen möchte.

Prinzipiell sollte es doch ICs geben, welche direkt einen digital 
verstellbaren analogen Filter abbilden.

Leider finde ich zu dem, Thema kaum etwas. Ich habe bloß bisher diese 
für den MHz bereich gefunden: 
http://www.analog.com/en/products/rf-microwave/tunable-filters.html

ideal für mich Wäre ein Banddpass IC welcher im Bereich von etwa 100Hz 
bis 100kHz verstellbar ist.

Hat hier jemand einen Tipp für mich?

Viele Grüße und schonmal besten Dank,
Markus

von THOR (Gast)


Lesenswert?

Digitalfilter als FIR oder IIR lassen sich platzsparend implementieren 
und bieten den benötigten Funktionsumfang.

von pegel (Gast)


Lesenswert?


von Michael B. (laberkopp)


Lesenswert?


von Axel S. (a-za-z0-9)


Lesenswert?

Markus H. schrieb:
> ideal für mich Wäre ein Banddpass IC welcher im Bereich von etwa 100Hz
> bis 100kHz verstellbar ist.

Mit der oberen Grenze wird es etwas aufwendiger, aber im Prinzip macht 
man das heutzutage komplett digital. Einfach hinreichend häufig abtasten 
und dann einen digitalen Filter draufwerfen. Für 100kHz wird es ein DSP 
sein müssen, darunter reicht ein potenter µC wie etwa ein Cortex-M4.

Alternativ kann man den Filter als switched capacitor (SC) Filter 
bauen. Oder ganz analog als state variable filter [1]. Letzteres läßt 
sich per multiplizierendem DAC auch digital in der Frequenz verstellen 
[2].


[1] https://en.wikipedia.org/wiki/State_variable_filter
[2] http://www.ti.com/lit/ug/tidu543/tidu543.pdf

von Rolf S. (audiorolf)


Lesenswert?

Warum muss der Filter im Betrieb verstellbar sein? Wäre es nicht besser, 
die Daten parallel unter mehreren Annahmen zu filtern und bei Auftreten 
einer Störung den besten Pfad heraus zu nehmen?

von Possetitjel (Gast)


Lesenswert?

Axel S. schrieb:

> Alternativ kann man den Filter als switched capacitor (SC)
> Filter bauen. Oder ganz analog als state variable filter [1].
> Letzteres läßt sich per multiplizierendem DAC auch digital
> in der Frequenz verstellen [2].

Wenn man mit gröberen Stufen zufrieden ist, lässt sich der
multiplizierende DAC sicher auch durch Analogschalter
ersetzen.

von Hp M. (nachtmix)


Lesenswert?

Markus H. schrieb:
> Hat hier jemand einen Tipp für mich?

http://www.linear.com/parametric/filters

Das sind S/C-Filter. Bei "Clock tunable = yes" brauchst nur die 
Taktfrequenz zu verändern.

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,


hier findet man einige Grundlagen:

https://www.elektronik-kompendium.de/public/schaerer/scf1.htm

Mit freundlichem Gruß

von A. S. (Gast)


Lesenswert?

Beschreibe doch mal, warum die obere Grenze variabel sein muss.
Das ist meist nur der Fall, wenn der ADC verschiedenen Abtastraten habt.

Beschreibe doch mal, warum die untere Grenze variable sein muss.
Das ist meist nur der Fall, wenn der ADC nicht digital verarbeitet wird.

von Bernhard R. (bernhard_r874)


Lesenswert?

Von LT gibts da einiges, z.B. LTC1069-1
Die Frequenz des Tiefpass kann mit einem PWM-Signal eingestellt werden.
Funktioniert super.
Gibt es vielleicht auch als Hochpass

: Bearbeitet durch User
von Henrik V. (henrik_v)


Lesenswert?

Wenn dig. Filtern nicht möglich ist, zB weil die Eingangsstufe 
übersteuert wird, sollte auch in der Eingangsstufe des LV am R_k 
'gedreht' werden.
Z.B. ein digitales Poti vom OP-Ausgang gen Masse an dessen Wiper der R_k 
hängt.
Eingangsstufe Übersteuert wg. LF passt aber irgendwie nicht zu Shock ...
Also ein kleiner IIR HP ist doch nicht soo wild.

(Für die, die nicht wissen, was ein Ladungsverstärker ist: Die 
Verstärkung wird über C_k eingestellt, das HP-Verhalten über den R_k)

von Alex W. (a20q90)


Lesenswert?

THOR schrieb:
> FIR oder IIR

Lieber FIR als IIR denn IIR bringt grundsätzlich ein Grundrauschen mit! 
Das kann man nicht abstellen wegen dem "Infinite" (Ausgang ist mit 
Eingang verknüpft)!

von Der Andere (Gast)


Lesenswert?

Was ist die Abtastrate?
Muss der obere Wert wirklich verstellbar sein?
Man braucht eh einen Alti Aliasing Filter.
Und den Rest (untere Grenzfrequenz) kann man wie schon gesagt sehr 
wahrscheinlich in Software machen.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Vor einiger Zeit habe ich genau so ein Filter aufgebaut, hier ein paar 
Bilder, eine Tabelle zu den einstellbaren Taktfrequenzen und drei 
Messungen mit "Visual Analyzer" von sillanumsoft mit der Soundkarte.
Das ist alles etwas alte Technik aus den 90ern, aber noch erhältlich. 
Die ICs hatte ich von RS Conponents.
Der I2C-Bus des Dallas-Oszillators war etwas seltsam, im Datenblatt 
fehlte die Info, dass nach Schreibvorgängen auf das interne Flash eine 
Totzeit entsteht. Eine Anfrage beim Techsupport von TI habe ich hier am 
Ende gepostet:
https://www.raspberrypi.org/forums/viewtopic.php?f=32&t=168873

von Markus H. (haniham) Benutzerseite


Lesenswert?

Danke schon mal für den vielen Input. Gerade in Richtung Digitaler 
Filter sollte soetwas ja auch möglich sein. Jedoch erfordert dass dann 
einiges an Softwareändderungsarbeit, insbesondere in Richtung 
(logischerweise) Filterung und Signaltriggerung. Wenn ich halt einfach 
vorher den Filter hinsetze wäre das Problem auf die Schnelle weg.

Also ich glaube ich muss noch etwas weiter ausholen:
Aktuelle MCU ist ein STM32F411 mit maximal 100MHz CPU Takt und der ADC 
muss aufgrund von einer geforderten genauen Zeiterkennung bei aktuell 
mindestens 1 MHz Sampeln.
Das wären dann etwa 100 Takte/Sample

Die Störungen liegen im Bereich von 20-100Hz das Signal etwa bei wenigen 
kHz (17 kHz)

Aktuell gehen die Signalleitung vom Ladungsverstärker direkt in den ADC.

Nur zu Digitalen Filtern auf dem STM32 habe ich überhaupt keine Ahnung. 
Vermutlich muss ich dann bei jedem Sample einen Interrupt generieren 
darauf meinen Filter loslassen, die Grenzwerte kontrollieren und die 
Daten im Ram abspeichern.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Markus H. schrieb:
> Aktuelle MCU ist ein STM32F411 mit maximal 100MHz CPU Takt und der ADC
> muss aufgrund von einer geforderten genauen Zeiterkennung bei aktuell
> mindestens 1 MHz Sampeln.
>
> Die Störungen liegen im Bereich von 20-100Hz das Signal etwa bei wenigen
> kHz (17 kHz)

Wenn du keine Probleme mit Übersteuerung oder so hast, dann kannst du 
das mit einem relativ einfachen Filter digital herausrechnen.

> Nur zu Digitalen Filtern auf dem STM32 habe ich überhaupt keine Ahnung.

Dann wäre jetzt ein guter Zeitpunkt, dich darin einzulesen.

Aber auch ein analoger Filter ist bei dieser Konstellation einfach: du 
brauchst ja nur einen Hochpaß, der dein Signal durchläßt und alles 
darunter dämpft. Wenn dein Signal bei 17kHz liegt (wieso sind deine 
Angaben da immer so vage?) dann leg die Grenzfrequenz halt auf 10kHz. Da 
muß dann auch nichts einstellbar sein. Schon ein simpler Filter 1. 
Ordnung (RC-Glied) fällt im Sperrbereich mit 6dB pro Oktave. Deine 
Störung bei 100Hz wird dann schon um 40dB unterdrückt.

von Der Andere (Gast)


Lesenswert?

Markus H. schrieb:
> Die Störungen liegen im Bereich von 20-100Hz das Signal etwa bei wenigen
> kHz (17 kHz)

Wofür willst du dann einen Bandpass der über 3 Dekaden einstellbar ist. 
Da reicht wie Axel schon rschreibt

Axel S. schrieb:
> brauchst ja nur einen Hochpaß, der dein Signal durchläßt und alles
> darunter dämpft. ...


> dann leg die Grenzfrequenz halt auf 10kHz.

Wenn er bei 17kHz und vieleicht auch noch etwas darunter messen will. 
würde ich die Grenzfrequenz vieleicht etwas darunter legen so auf 1-2 
kHz und dann halt eher 2. Ordnung.

Markus H. schrieb:
> Aktuell gehen die Signalleitung vom Ladungsverstärker direkt in den ADC.

Ich hoffe doch du hast ein Ali Aliasing Filter oder kannst garantieren 
daß keine höhere Frequenzen als 500kHz in dem Signal enthalten sind.

von A. S. (Gast)


Lesenswert?

Markus H. schrieb:

> aufgrund von einer geforderten genauen Zeiterkennung bei aktuell
> mindestens 1 MHz Sampeln.

> das Signal etwa bei wenigen kHz (17 kHz)

Wieso beschleicht mich hier ein komisches Gefühl?

von Ich (Gast)


Lesenswert?

Hallo,

wenn deine Signalfrequenz unter 20 kHz bleibt, solltest du dir auch mal 
den TPIC8101 anschauen. Der ist für die Auswertung Klopfsensoren im KFZ 
gedacht, also auch für adungsemttierende Sensoren. Der hat 
Ladungsverstärker, Alising-Filter und Bandpass integriert.
Hier im Forum und im Wiki Gibt es auch viele Informationen zu dem. 
Nachteil ist nur, dass der IC im Einzelstück ziemlich teuer ist, 5-8€ 
pro Stück.

Bitte schön.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ein Bandpass ist wahrscheinlich zu schmalbandig, das klingt eher nach 
einer Hintereinanderschaltung von Hoch- und Tiefpass. Muss das 
Nutzsignal nicht herunter bis DC erfasst werden?
Ein Hochpass ist digital immer problematisch, weil weiter oben die 
Taktfrequenzen und irgendwelche Aliasfrequenzen liegen.

von Markus H. (haniham) Benutzerseite


Angehängte Dateien:

Lesenswert?

Achim S. schrieb:
> Markus H. schrieb:
>
>> aufgrund von einer geforderten genauen Zeiterkennung bei aktuell
>> mindestens 1 MHz Sampeln.
>
>> das Signal etwa bei wenigen kHz (17 kHz)
>
> Wieso beschleicht mich hier ein komisches Gefühl?

Das weiß ich nicht - Lebensmittelvergiftung vielleicht ? (-;
Nein, was bereitet dir denn Sorgen.

Ich möchte für meine MA die Ausbreitungsgeschwindigkeit bzw. die Zeit 
von Erschütterungswellen in Materialien untersuchen. Und auf so etwa 1 
Meter wird sich das voraussichtlich im 3-Stelligen uS Bereich abspielen.

Da das alles halt recht Forschungslastig ist sollte es halt universell 
einstellbar und optimierbar sein. Deswegen auch der verstellbare Filter, 
falls sich eben mal die Sörung ändern sollten oder andere Objekte 
gemessen werden sollen.

Der Verstellbare Filter vor dem ADC Port wäre halt die Quick and Dirty 
Lösung gewesen

Anbei mal ein Bild wie es der STM Sampelt und dann heraus schreibt.

Ja Anti-Aliasing Filter vor dem Sampeln fehlt definitiv - und der kann 
ja nicht in SW realisiert werden, "da dann das Kind schon in den Brunnen 
gefallen ist"

Hat zufällig jemand eine Gute Ressource wie ich einen Filter 
entrsprechender Ordnung auf dem STM32 realisiere?

von Johnny B. (johnnyb)


Lesenswert?

Markus H. schrieb:
> Ja Anti-Aliasing Filter vor dem Sampeln fehlt definitiv - und der kann
> ja nicht in SW realisiert werden

Da reicht aber oft schon ein RC-Glied, an dem sollte es also nicht 
scheitern.

von Possetitjel (Gast)


Lesenswert?

Markus H. schrieb:

> Da das alles halt recht Forschungslastig ist sollte
> es halt universell einstellbar und optimierbar sein.
> Deswegen auch der verstellbare Filter, falls sich
> eben mal die Sörung ändern sollten oder andere Objekte
> gemessen werden sollen.

Naja.

In der Guten Alten Zeit (tm) hätte man da eine Pfosten-
steckerleiste hingebaut, auf der Eingang, Ausgang,
GND, +/- Ub anliegen. Dort kommt dann ein Tocherplatinchen
drauf, das entweder eine Brücke von IN zu OUT enthält
oder aber ein Filter 5. Ordnung, aufgebaut mit einem
Doppel-OPV.

Aber da das einfach, billig und analog ist, ist das
voll Achtziger und geht schonmal gar nicht...

von Lurchi (Gast)


Lesenswert?

In dem Fall sollte ein festes Filter ausreichen, zwischen 100 Hz für die 
Störungen und 17 kHz für das Signal ist reichlich Raum. Steckbar zum 
ggf. analogen anpassen ist keine so schlechte Option. Einen kleinen Rest 
bei niedrigen Frequenzen kann man auch gut digital per Filter 
unterdrücken. Je nach Ausführung darf das auch eine IIR Version sein.

Der AA filter kann wahrscheinlich auch eher einfach sein. Der 
Ladungsverstärker dämpft von sich aus schon die wirklich hohen 
Frequenzen und zwischen den 17 kHz und 1 MHz Samplingrate ist auch viel 
Abstand.

Allerdings kann so ein Piezosensor auch recht hochfrequente Anteile 
auffangen. 17 kHz sind schon recht niedrig für Messungen mit 
Körperschall. An sich würde man der eher deutlich höhere Frequenzen (MHz 
Bereich) bevorzugen - da hat man dann eine saubere Trennung in Volumen 
und Oberflächen-moden (z.B. Reighly Wellen).

von Duennwandiger Troll (Gast)


Lesenswert?

Allenfalls ein LTC1564-8

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Den finde ich nirgends. Ohne die -8 ist es jedenfalls auch nur ein 
Tiefpass.

von Markus H. (haniham) Benutzerseite


Lesenswert?

Christoph K. schrieb:
> Den finde ich nirgends. Ohne die -8 ist es jedenfalls auch nur ein
> Tiefpass.

Genau - ich auch nicht

Es wird jetzt wohl so werden, dass ich einfach mit Steckbrücken die 
Grenzen einstellbar mache.

Den hochpass direkt als variabler Widerstand über dem Speicher C (da 
hätte mir die Hochohmigkeit mit automatischer Verstellbarkeit einiges an 
Problemen bereitet) und danach noch steckbar veränderlicher Tiefpass.

Wenn die Schaltpläne soweit sind teile ich Sie auch mal hier (-;

von Lurchi (Gast)


Lesenswert?

Für ein 17 kHz Nutzsignal und wenn man eine sehr hoch aufgelöste 
Zeitmessung haben will, ist ein switched capacitor filter nicht die 
passende Wahl. Da hat man eine Art Abtastung mit einer Art S&H im 50-100 
kHz Bereich - da dann schon lieber gleich ganz digital.

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.