Forum: Digitale Signalverarbeitung / DSP / Machine Learning schnelles Filter für Oversampling möglich?


von J.Newsom (Gast)


Lesenswert?

Hallo,
angenommen, ich habe alle 10µs einen Eingangswert von 0..10 und möchte 
die Auflösung durch Oversampling auf 0.. 1000000 (1M) erhöhen.


Dann würde ich im ersten Schritt ein Filter mit 100k *1µs, also 1s 
dahinter schalten.

Nachteil, das Filter ist sehr langsam.

Folgender Gedanke: Jetzt habe ich für mehrere Sekunden einen 
Eingangswert von 2 gehabt, und als Folge einen gefilterten Ausgangswert 
von 200000.
Nun springt der Eingangswert von 2 auf 5. Dann könnte ich das Filter 
doch schnell nachziehen, damit es grob mal Richtung 500000 läuft.

Gibt es so ein Filter?

Meine Anwendung ist die schnelle Messung einer Frequenz, die nicht 
rauscht, die aber Sprünge machen kann, und die ich nur grob erfassen 
kann. Frequenz liegt zum Beispiel bei 100kHz .. 900kHz, und wenn ich mit 
1MHz Basis die Periodenzeit messe, dann hätte ich Werte wie im Beispiel.

Ich brauche also beides: sowohl eine hohe Auflösung für stabile 
Frequenzen, als auch ein schnelles (dann aber gröberes) Reagieren bei 
größeren Änderunge.

von Sven B. (scummos)


Lesenswert?

Äh, moment, du möchtest durch Oversampling 5 Größenordnungen Auflösung 
gewinnen? Ich glaube das wird eher nichts. Zumindest brauchst du 10^10 
Messwerte pro Samplepunkt dafür, und dann geht es auch nur wenn 
statistisch alles stimmt.

: Bearbeitet durch User
von Possetitjel (Gast)


Lesenswert?

J.Newsom schrieb:

> Meine Anwendung ist die schnelle Messung einer Frequenz,
> die nicht rauscht, die aber Sprünge machen kann, und die
> ich nur grob erfassen kann. Frequenz liegt zum Beispiel
> bei 100kHz .. 900kHz, und wenn ich mit 1MHz Basis die
> Periodenzeit messe, dann hätte ich Werte wie im Beispiel.

Nun ja... man kann sich natürlich die Arbeit beliebig
schwer machen, aber man ist ja nicht dazu verfplichtet.

Ich würde versuchen, irgend eine interpolierende Methode zu
verwenden. Falls die "Frequenz" ein Sinussignal ist: Mit mehr
als 2fmax abtasten und FFT.
Falls die "Frequenz" ein Rechteck ist: Hochwertigen Sinus
mit f < 1/2 * f_min erzeugen (DDS), von Eingangssignal
getriggert abtasten, FFT, passend umrechnen.

Man kann sich sicher auch Freistil-Methoden ausdenken, z.B.
auf der Basis von Polynomen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Wasch' mir den Pelz, aber mach' mich nicht nass...
Wird schwierig. Du brauchst ja einen Tiefpass, der eine Sperrdaempfung 
erreicht, die so hoch ist, dass du auf deine gewuenschte Genauigkeit 
kommst. Andererseits sollte der dann eine moeglichst kleine 
Gruppenlaufzeit haben, damit du schnell an dein Ergebnis kommst.
Wahrscheinlich wirst du mit einem Cauertiefpass als IIR sowas noch am 
ehesten erreichen. Kriegst halt dann die Riesenbeule in der 
Gruppenlaufzeit kurz vorm Sperrberich - das darf dich halt nicht 
stoeren...

Gruss
WK

von dc (Gast)


Lesenswert?

Dergute W. schrieb:
> Wasch' mir den Pelz, aber mach' mich nicht nass...

Man spricht hier auch von einem so genannten Zielkonflikt .

von DSP-Beginner (Gast)


Lesenswert?

Wieviel könnte man denn idealerweise durch oversampling gewinnen?
Sicher nicht den linearen Faktor der Überabtastung, oder?

Also bei seinen 100kHz (10us) z.B. 10MHz abtasten und Faktor 100 
gewinnen?
Eher Faktor Wurzel(100) oder?

Und woher kommt die gewonnene Auflösung? Durch das Rauschen, das den 
AD-Wert glättet, ist es hier wohl nicht. Wenn das Rauschen weg soll, 
muss man mitteln und Sprünge mit diskreter Betrachtung umsetzen, meine 
ich.

von Sven B. (scummos)


Lesenswert?

Wurzel der Sample-Zahl im Fall normalverteilten Rauschens, ja.

Und doch, es ist das Rauschen, was dir diesen Auflösungsgewinn 
ermöglicht -- es gibt sogar ein Wort dafür, "Dithering". Im Extremfall 
kann es hilfreich sein, Rauschen künstlich hinzuzufügen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Das hängt aber davon ab, welche Amplitude das Rauschen im Verhältnis zu 
dem Signal hat. Je geringer diese Dynamik, desto mehr bringt 
zusätzliches Rauschen und Dithering, wobei man da unterscheiden muss, 
was davon im Zeit- und was im Frequenzbereich stattfindet.

Zudem tut der Wandler da schon sein Möglichstes, um LSBs zu gewinnen. 
Wenn also der Messwert rauscht, funktioniert nur eine Filterung und die 
wiederum braucht nicht unbedingt oversampling.

Die intelligenten Sprünge, die in solchen Fällen erwartet werden, lassen 
sich nur durch ein diskretes Filter managen, das seine Charakteristik 
anpasst, z.B. auch durch ein AKF.

von Jürgen W. (Firma: MED-EL GmbH) (wissenwasserj)


Lesenswert?

Du kannst Folgendes versuchen (wir nehmen ein offset-behaftet Signal 
an):

0. Lass als Zeitreferenz einen Timer mit hoher Taktung laufen.

1. Wenn Du bis zu 900kHz über AD-Konversion sicher erkennen willst, 
solltest Du schon mit deutlich mehr als 1,8MHz sampeln - eher 3-9MHz.

2. Berechne das TP-gefilterterte Signal mit fg=10kHz (wenn 100kHz Deine 
niedrigste Frequenz ist

3. Subtrahiere den TP-Ausgang vom Rohsignal.

4. Nach jeder Subtraktion kontrolliere, ob Du den positiven/negativen 
Nulldurchgang durchschritten hast und lies den Timer (siehe Pkt 0) aus.
Subtrahiere den aktuellen Timer-Wert vom letzten Wert und Du hast Deine 
Periodendauer.


Bzgl. Deiner Frage mit dem Sprung von 2 auf 5: Ist das ein Offset oder 
die Signalamplitude? Wenn es ein Offset ist und dein Signal deutlich 
kleiner als dieser Sprung, kannst Du ja den LPF resetten, ansonsten aber 
geht das nicht - das könnte man nur retrospektiv bewerten.

von DSP-Beginner (Gast)


Lesenswert?

Hast Du den Verschlag simuliert oder ist das Theorie? Wer auf diese 
Weise Nulldurchgänge bestimmt, dürfte ziemlich chaotische Werte 
bekommen, da in dem TP-Signal allesmögliche an Dreck drin steckt, dass 
den Offset verschiebt. Das ist höchstens eine PI x Daumen Information 
für die Nulllinie.

von Harald W. (wilhelms)


Lesenswert?

Sven B. schrieb:

> Äh, moment, du möchtest durch Oversampling 5 Größenordnungen Auflösung
> gewinnen? Ich glaube das wird eher nichts.

Oooch, wenn man sowas simuliert, wird das sicherlich funktionieren.
Aber da Auflösung ungleich Genauigkeit ist, macht das praktisch
keinen Sinn.

von Sven B. (scummos)


Lesenswert?

Harald W. schrieb:
> Sven B. schrieb:
>
>> Äh, moment, du möchtest durch Oversampling 5 Größenordnungen Auflösung
>> gewinnen? Ich glaube das wird eher nichts.
>
> Oooch, wenn man sowas simuliert, wird das sicherlich funktionieren.
> Aber da Auflösung ungleich Genauigkeit ist, macht das praktisch
> keinen Sinn.

Ne, das funktioniert auch in der Simulation nicht. Dazu brauchst du 
10^10 mal so viele Samples, also 10 Milliarden Samples pro Messpunkt der 
rausfallen soll.

von Harald W. (wilhelms)


Lesenswert?

Sven B. schrieb:

> Ne, das funktioniert auch in der Simulation nicht. Dazu brauchst du
> 10^10 mal so viele Samples, also 10 Milliarden Samples pro Messpunkt der
> rausfallen soll.

Gibts da in der Simu zu wenig Stellen hinter dem Komma
bei der Berechnung?

von Sven B. (scummos)


Lesenswert?

Harald W. schrieb:
> Sven B. schrieb:
>
>> Ne, das funktioniert auch in der Simulation nicht. Dazu brauchst du
>> 10^10 mal so viele Samples, also 10 Milliarden Samples pro Messpunkt der
>> rausfallen soll.
>
> Gibts da in der Simu zu wenig Stellen hinter dem Komma
> bei der Berechnung?

Seufz. Nein. Aber schon das Ergebnis, was in der Simulation rauskommt, 
ist realitätsfern, sprich, wenn man sich überlegt was das Ergebnis 
bedeutet, bemerkt man dass man das so nicht umsetzen kann. Das ist ja 
ein Unterschied zu einer unrealistisch angelegten Simulation, bei der 
herauskommt, dass etwas eigentlich funktionieren könnte.

Irgendwie habe ich in diesem Forum oft das Gefühl, man wird absichtlich 
missverstanden, nur damit sich jemand als schlau darstellen kann.

: Bearbeitet durch User
von Signalverarbeiter (Gast)


Lesenswert?

Sven B. schrieb:
> Irgendwie habe ich in diesem Forum oft das Gefühl, man wird absichtlich
> missverstanden, nur damit sich jemand als schlau darstellen kann.
+1

Dergute W. schrieb:
> Du brauchst ja einen Tiefpass, der eine Sperrdaempfung
> erreicht, die so hoch ist, dass du auf deine gewuenschte Genauigkeit
> kommst. Andererseits sollte der dann eine moeglichst kleine
> Gruppenlaufzeit haben, damit du schnell an dein Ergebnis kommst.

Wie würde man den bauen?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Signalverarbeiter schrieb:
> Wie würde man den bauen?

Naja, wohl nicht wirklich. Aber spasshalber z.B. als Cauer in 
Octave/Matlab vielleicht so:

x=irgendeine dir genehme Filterordnung
[b,a]=ellip(x, 8.6e-6, 120,1e-6);

Gruss
WK

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.