Eine Frage an die Signalverarbeitungs-Cracks: Ich möchte das Rauschen
von Verstärkerschaltungen wie z.B. OPVs messen. Dafür will ich die
Rohdaten eines USB Oszilloskops (Bitscope Micro) in Octave einlesen und
dort eine FFT machen, um nach etwas Rechnen z.B. zu der Aussage zu
gelangen: Bei 300 Hz hat der Mikrofonvorverstärker eine Noise Figure von
X dB.
Mit dem Bitscope Micro kann ich aber nur ca. 3000 Samplewerte
hintereinander aufnehmen. Die Samplefrequenz kann ich dabei von wenigen
kHz bis 20 MHz ändern - aber immer nur ca. 3000 Werte dieser Taktung
hintereinander in eine Datei schreiben. Auch wenn ich im kHz Bereich
sample, dann beträgt die Analogbandbreite aber immer volle 20 MHz! Ich
muss mich also an Herrn Nyquist erinnern.
Hat der zu messende Verstärker eine Bandbreite von 100 oder 200 kHz,
dann bin ich mit z.B. 1 MHz Samplingfrequenz auf der sicheren Seite.
Damit erreiche ich in der folgenden FFT aber nur eine Auflösung von
1MHz/3000 also ~300 Hz. Das ist mir zu grob - ich will das feiner haben.
Lasse ich das Schreiben der Rohdaten in die Datei einfach etwas länger
laufen, dann landen in der .csv Datei nicht nur ein Durchgang mit 3000
Werten, sondern mehrere Durchgänge mit Pausen dazwischen (undefiniert,
Sekundenbereich).
Hier kommt die Frage: Wenn ich 3000 Werte 100 mal hintereinander
aufnehme und in eine FFT packe, also 3000*100=300.000 Werte, dann hätte
ich rechnerisch in der FFT die 100 fache Auflösung - aber ist das
zulässig? Bildet mir das so generierte Spektrum noch die Realität ab?
Oder verhäcksel ich mir irgendwie das Spektrum?
Das gesampelte Signal ist natürlich kein rein weißes Rauschen (dann
würde mein Vorhaben vermutlich gehen?), sondern sicherlich irgendwie
gefärbtes Rauschen.
Ja ich weiß, ich könnte eine Soundkarte nehmen - will ich aber nicht.
Ich will bis DC runter messen können. Und ja, ich kann mir einen
Antialiasing-Tiefpass bauen und bei kleinerer Samplingfrequenz arbeiten.
Frage ist, ob ich mir diesen Aufwand sparen kann.
Grüße, Bernhard
Wenn du zwischendrin Pausen hast, hast du m.E. Pech gehabt mit der
Auflösung. Je nach zusätzlichem Wissen über das Signal kann man sich
vielleicht etwas cleveres überlegen, ich denke bei einem rauschartigen
Signal stehen die Chancen aber schlecht. Einfach die Stücke
aneinanderhängen und zusammen transformieren geht definitiv nicht.
Im Endeffekt ist das die Energie-Zeit-Unschärfe, die ist ziemlich
fundamental und wird entsprechend schwer auszutricksen sein. ;)
Im Prinzip geht das schon, Du musst halt immer jeweils fenstern und die
Ergebnisse überlagern. Allerdings hast Du damit das Auflösungproblem
noch nicht wirklioch gelöst. Du brauchst schon eine genügend lange UND
schnelle Abtastung. Am Besten ist es, wenn man sicherstellen kann, dass
die Stücke reproduzierbare Daten haben und sie passend aneinander legt.
Das wird aber wohl bei Dir nicht funktionieren.
Vielleicht kann man das auch komplett sampeln und aufzeichnen und in
Excel machen. Excel hat nämlich eine FFT eingebaut. Ist ein wenig
umständlich zu bedienen aber funktioniert.
Besser ist es allerdings, die einzelnden Frequenzbänder zu messen:
Wenn Du das nur mit jeweils 3000 samples machen kannst, musst Du die
Frequenzbereiche aufteilen und langsamer sampeln, allerdings zuvor auch
passend filtern, weil Du sonst verfälschte Ergebnisse erhälst.
Du könntest z.B. bei 10facher Überabtastung jeweils den Filter auf 1/20
der Abtastfrequenz stellen, also als Beispiel: 3000 Hz, 300Hz Filter und
kämst dann mit der FFT runter bis auf 1 Hz. Dann mit 30kHz Abtastund und
3kHz Filter Auflösung mit 10Hz für die Mitten und dann mit 300kHz und
30kHz Filter die Messung für die Höhen.
Sowas wird real auch indirekt gemacht, indem parallel gefiltert und
gesampelt wird z.B. mit einer Kaskade aus Halbbandfiltern.
Jürgen S. schrieb:> Im Prinzip geht das schon, Du musst halt immer jeweils fenstern und die> Ergebnisse überlagern. Allerdings hast Du damit das Auflösungproblem> noch nicht wirklioch gelöst.
Oder in anderen Worten, im Prinzip geht es nicht, denn das trägt zur
Lösung des Problems leider gar nichts bei. ;p
> Wenn Du das nur mit jeweils 3000 samples machen kannst, musst Du die> Frequenzbereiche aufteilen und langsamer sampeln, allerdings zuvor auch> passend filtern, weil Du sonst verfälschte Ergebnisse erhälst.
Das geht, ja.
Bernhard schrieb:> Ich möchte das Rauschen von Verstärkerschaltungen wie z.B. OPVs messen.> Dafür will ich die Rohdaten eines USB Oszilloskops einlesen und> dort eine FFT machen,
Die Wahrscheinlichkeit ist gross, das Dein Billig-Oszi mehr rauscht
als Deine zu testende Schaltung. Ausserdem ist eine FFT m.E. nicht
unbedingt geeignet, um Rauschen zu messen.
Sven B. schrieb:> Jürgen S. schrieb:>> Im Prinzip geht das schon, Du musst halt immer jeweils fenstern und die>> Ergebnisse überlagern. Allerdings hast Du damit das Auflösungproblem>> noch nicht wirklioch gelöst.> Oder in anderen Worten, im Prinzip geht es nicht, denn das trägt zur> Lösung des Problems leider gar nichts bei. ;p>>> Wenn Du das nur mit jeweils 3000 samples machen kannst, musst Du die>> Frequenzbereiche aufteilen und langsamer sampeln, allerdings zuvor auch>> passend filtern, weil Du sonst verfälschte Ergebnisse erhälst.> Das geht, ja.
Wie man es nimmt. Wenn man immer auf derselben Frequenz misst und
stückelt, erwischt man durchaus ja die verschiedensten Anteile zu
unterschiedlichen Zeiten, also vor allem auch die Wellenanteile der
niederen Frequenzen. Damit werden die (durch Überlagerung) durchaus
genauer gemessen.
Überlagerung ist auch das Mittel bei der Rauschmessung mit FFT:
Harald W. schrieb:> Ausserdem ist eine FFT m.E. nicht> unbedingt geeignet, um Rauschen zu messen.
Bei einer ausreichend langen Überlagerung = Akumulation werden die
Frequenzanteile auch entsprechend dem Signalgemisch - unabhängig vom
Zufall - abgebildet.
Naja, aber schau dir zum Beispiel mal den untersten Bin der FFT an. Der
geht immer von 0 bis 2/T und alles zwischendrin an Frequenzen ist da
reingemittelt. Das kannst du nicht trennen, außer du hast wirklich eine
zusammenhängende Kette an Messwerten die länger ist als T.
Sven B. schrieb:> außer du hast wirklich eine> zusammenhängende Kette an Messwerten die länger ist als T.
... das war die Überlegung dahinter. Die gebündelte Information einer
Stützstelle im output der FFT repräsentiert den Anteil der Frequenzen
mit einer gleichförmigen Überlappung mit den Nachbarbereichen. Mit einer
erhöhten Anzahl von FFTs / Abschnitten erreicht man Dasselbe(?), wie mit
einer längeren Periode: Eine Verschärfung der Repräsentanz hin zu den
tatsächlichen Frequenzen. Das steigert die Auflösung.
Allerding muss Ich nun hinzufügen, daß man dann auch die Frequenzen
shiften müsste, um wieder zur gleichen Überdeckung zu kommen - wie ich
gerade sehe.
Es führt also kein Weg darum herum, die unterschiedlichen Abschnitte mit
unterschiedlichen Abtastraten zu scannen.
Du kannst eine zweidimensionale Repräsentation des Spektrums basteln
(Spectrogram). Dabei kannst du, wenn du möchtest, jeden einzelnen
Abschnitt mit Nullen auffüllen um die Frequenzauflösung zu erhöhen (vor
dem Auffüllen die gewählte Fensterfunktion anwenden, nicht danach).
Dann könntest du mal nachsehen, was es für Methoden zur numerischen
Auswertung von Spectrogrammen gibt. Normalerweise schaut man sich die ja
nur an.
Meine Lösungsansätze wären allerdings:
- Wenn der Chef es bezahlt: Vernünftige Messgeräte kaufen/mieten
- Wenn nicht: Mir statt der FFT andere Transformationen, z.B.
Wavelet-Transformationen, anzusehen ob die bessere Eigenschaften bei den
gegebenen Messwerten haben.
Nebenbei:
> Auch wenn ich im kHz Bereich sample, dann beträgt die Analogbandbreite> aber immer volle 20 MHz!
Die könntest ein Filter vorschalten wenn du gar nicht die 20 MHz
brauchst (Audio?).
Sven B. schrieb
> Einfach die Stücke> aneinanderhängen und zusammen transformieren geht definitiv nicht.
Ich habe es befürchtet! Aber danke für die Bestätigung.
Jürgen S. schrieb
> Vielleicht kann man das auch komplett sampeln und aufzeichnen und in> Excel machen. Excel hat nämlich eine FFT eingebaut. Ist ein wenig> umständlich zu bedienen aber funktioniert.
Ich bin halt mit der Hardware auf die ca. 3000 Stück Samples begrenzt.
FFT geht in Excel, das stimmt, ich nehme Octave, das ist Freeware und
geht ziemlich gut.
> Besser ist es allerdings, die einzelnden Frequenzbänder zu messen
Ja, ich werde das so machen müssen.
Harald Wilhelms schrieb
> Die Wahrscheinlichkeit ist gross, das Dein Billig-Oszi mehr rauscht> als Deine zu testende Schaltung. Ausserdem ist eine FFT m.E. nicht> unbedingt geeignet, um Rauschen zu messen.
Vor allem sind es nur 8 Bit vertikal... meine Idee war die Verstärkung
der Schaltung hoch genug zu machen, damit die 8 Bit zumindest ausgenutzt
werden und über etliche Durchgänge zu mitteln.
Was würdest du anstatt der FFT machen? Ich möchte eine Noise Figure in
Abhängigkeit der Frequenz ermitteln, das wüsste ich nur mit FFT zu
machen.
Jay schrieb
> - Wenn der Chef es bezahlt: Vernünftige Messgeräte kaufen/mieten
Fällt aus, das ist alles Privatbastelei :-)
> statt der FFT andere Transformationen, z.B. Wavelet-Transformationen
Muss ich mich mal einlesen, mit Wavelet hatte ich bisher noch gar nichts
zu tun.
> Die könntest ein Filter vorschalten wenn du gar nicht die 20 MHz> brauchst (Audio?).
Genau das werde ich wohl machen müssen.
Wenn du eine Noise Figure messen willst, sind 8 bit vertikal schon total
übertrieben. 2 bit würden genügen. Also in dem Punkt keine Sorge ;)
Problematisch wird vielleicht eher tatsächlich genug Samples
zusammenzumitteln dass das Spektrum hinreichend glatt wird.
Sven B. schrieb:> Harald W. schrieb:>> Bernhard schrieb:>>>>> Was würdest du anstatt der FFT machen?>>>> DFT?>> FFT ist ein Algorithmus der die DFT berechnet ...
Nein, FFT ist eine "Krücke", die mal "erfunden" wurde, um mit
der begrenzten Rechenleistung der Rechner von vor fünfzig Jahren
trotzdem in überschaubarer Zeit ein Ergebnis zu bekommen. Die
Schwächen dieser Berechnungsmethode hat man da in Kauf genommen.
Harald W. schrieb:>> FFT ist ein Algorithmus der die DFT berechnet ...>> Nein, FFT ist eine "Krücke", die mal "erfunden" wurde, um mit> der begrenzten Rechenleistung der Rechner von vor fünfzig Jahren> trotzdem in überschaubarer Zeit ein Ergebnis zu bekommen. Die> Schwächen dieser Berechnungsmethode hat man da in Kauf genommen.
Huch, was? Nein. Die FFT ist mathematisch exakt. Jedes andere Verfahren
führt im Rahmen numerischer Fehler auf dasselbe Ergebnis. Oder welche
Fehler führt die FFT deiner Meinung nach ein?
Sven B. schrieb:> Oder welche Fehler führt die FFT deiner Meinung nach ein?
Die FFT berücksichtigt nur ganzzahlige Vielfache einer Grundfrequenz.
Gerade beim Rauschen gibt es aber auch Frequenzen "dazwischen".
Harald W. schrieb:> Nein, FFT ist eine "Krücke", die mal "erfunden" wurde, um mit> der begrenzten Rechenleistung der Rechner von
Das muss hier unbedingt klargestellt werden: Die FFT ist nichts anderes
als eine effiziente Implementation der DFT. Die FFT ist kein
Sonderfall oder sonst irgendeine "ungenau" Version der DFT!
Analog zu (stabilen) Sortieralgorithmen: Mit welchen Algorithmus Du
etwas sortierst, spielt keine Rolle. Das Ergebnis ist gleich, unabhängig
davon, ob der Algorithmus langsam oder schnell ist.
Die FFT ist sozusagen das "Quick-Sort" der DFT.
Die DFT ist:
N ist dabei die Anzahl der Samples, von der Du die DFT rechnen möchtest.
Den Index k kannst Du eigentlich beliebig wählen, da die DFT aber
periodisch ist, wiederholt sich das X[i] alle k Elemente. Die Periode
von k ist auch N, die Anzahl der Samples Deiner Einganssequenz!
D.h, wenn Du von 1000 Samples die DFT rechnest, bekommst Du ein Spektrum
mit 1000 Werten raus.
Diese DFT kannst Du nun exakt so wie oben hingeschrieben ausrechnen. Für
kleine N, z.B. 10 oder so, ist es eine sehr lehrreiche Übung das von
Hand zu machen.
Und die FFT berechnet genau diese DFT, nur nicht auf den naiven Weg,
sondern durch cleveres Ausnutzen bestimmter Zusammenhänge mit deutlich
weniger Multiplikationen. Dafür hat die FFT die Einschränkung, dass sie
eben nur für 2er-Potenzen funktioniert. Das ist aber schon alles.
Um es nochmals ganz deutlich zu sagen: FFT und DFT sind im Ergebnis
exakt gleich! FFT ist eine DFT-Implementierung!
Harald W. schrieb:> Die FFT berücksichtigt nur ganzzahlige Vielfache einer Grundfrequenz.> Gerade beim Rauschen gibt es aber auch Frequenzen "dazwischen".
Wie mein Vorredner schon gesagt hat ist das nicht von Belang; diese
"Frequenzen dazwischen" gibt es zwar, aber die Information ist schon in
den ursprünglichen Messwerten nicht enthalten. Dass die FFT diese nicht
zu Tage fördern kann ist keine Beschränkung der FFT, sondern vielmehr
einfach die Energie-Zeit-Unschärfe der QM.
Harald W. schrieb:> Die FFT berücksichtigt nur ganzzahlige Vielfache einer Grundfrequenz.> Gerade beim Rauschen gibt es aber auch Frequenzen "dazwischen".
Das ist nur eine Frage der Auflösung.
Kleines Gedankenexperiment:
a.) Ein Sinus mit 1Hz wird eine Sekunde lang mit 10Hz gesampelt. Die
Auflösung des AD-Wandler sei 8 Bit. D.h. das gibt 10 Werte mit je 8 Bit.
b.) Ein Sinus mit 1,00001 Hz wird auch mit 8 Bit und 10Hz eine Sekunde
lang gesampelt. Also auch 10 Messwerte mit 10 Bits
Nun die Frage: Siehst Du einen Unterschied in den beiden
Messwert-Sätzen? Ich hab's jetzt nicht nachgerechnet, aber die Antwort
dürfte Nein sein.
Nächster Teil des Gedankenexperiments: Was verändert sich, wenn Du diese
beiden Signale nicht nur eine Sekunde lang misst bzw. beobachtest,
sondern 10 Stunden?
Als Ergebnis hättest Du zwei Datensätze mit jeweils 360000 Messungen.
Dann würdest Du (u.a.) nach 10 Stunden sehen, dass im Fall b sich die
Sinusschwingung um ca. 4 Samples gegenüber Fall a verschoben hat.
Ein interessantes Gedankenexperiment, aber ich denke die
Vertikalauflösung hat damit nur indirekt zu tun. Selbst wenn du
beliebige Vertikalauflösung hast wird die Frequenzunschärfe bestehen
bleiben; es gibt einfach unendlich viele Möglichkeiten, das beobachtete
Signal als Gemisch von Grundfrequenzen darzustellen, die innerhalb des
Bins liegen der nach der FFT die Energie enthält. Es kommt wirklich nur
darauf an, wie groß der betrachtete Zeitraum ist.
Wenn du tatsächlich weißt, dass das Signal echt monochromatisch ist,
kannst du wahrscheinlich mit genug Vertikalauflösung etwas mehr
rauslesen, das kann sein. Ist in der Praxis aber ohnehin nie der Fall.