mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Signal aus Oszilloskop ausgelesen - Abtastrate?


Autor: Catherine Haug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe hier mal eine Frage bei der ich mir nicht ganz sicher bin die 
richtige Lösung gefunden zu haben:

Ich habe hier ein Signal (genauer: einen Puls mit Vor- und 
Nachschwingen) im Rohformat aus einem Textronix TDS220 ausgelesen. Das 
Oszilloskop hat eine Bandbreite von 100 MHz und 2.5 kPoints Speicher. 
Meine Datendatei umfasst demzufolge 2500 Werte. Als Zeitauflösung war 
100ns pro DIV eingestellt.

Die gesamte Abtastzeit beträgt demnach ja (bei 10 DIVs) 10*100ns=1000ns
In dieser Zeit wurden 2500 Punkte abgetastet, ein Abtastintervall ist 
demnach 4*10^-10s lang (1000ns/2500). Die Abtastfrequenz wiederum ist ja 
der Kehrwert des Abtastintervalls. In diesem Fall also 2.500.000.000 Hz 
(besser 2,5 GHz).

Ist diese hohe Abtastfrequenz realistisch? Ich weiß zwar, dass DSOs mit 
dem Trick der "Zeitdehnung" arbeiten, aber 2,5 GHz erscheint mir schon 
ziemlich hoch.

Autor: IGBT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2,5 GHz sind beim 100 MHz-Signal nur 25 Abtastintervalle pro Periode.
Also kommt das hin.

Autor: Kevin K. (nemon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es gibt Tricks, wie die Abtastfrequenz beim Auslesen periodischer 
Signale künstlich erhöht werden kann. Mein TDS420 kann auch ich glaube 
maximal 5GSamples durch solche Verfahren.

Autor: Catherine Haug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, also wenn das stimmt habe ich wohl einen Fehler in meinem 
Matlab-Code. Hintergrund: ich möchte gerne die Bandbreite des 
aufgezeichneten Pulses wermitteln. Also nehme ich meine Messwerte und 
berechne die Fourier-Transformierte.

Die Frequenzachse geht dabei ja von 0 bis zur Abtastfrequenz von 2,5 
GHz. Jeweils in 1 MHz-Schritten (dF=fa/N).

Abtastpunkte: N=2500;
Abtastintervall: T=4*10^-10s;
Abtastfrequenz: fa=1/T = 2,5*10^9 Hz
Frequenzänderung: dF=fa/N = 1000000 Hz

Irgendwie liegt mein Peak aber bei 1,25 GHz auf der Frequenzachse, ich 
würde ihn aber so um die 3 MHz erwarten. Habe ich da irgendetwas 
übersehen? Oder muss man die Skalierung der Frequenzachse anders 
berechnen?

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das TDS220 kann maximal 1GS/s und hat auch nicht den von Kevin
beschriebenen Equivalent-Mode, um periodische Signale höher abzutasten.

Bei 250ns/div entspricht jeder der 2500 Punkte einer Aufzeichnung gerade
einem Sample in einem Zeitraster von 1ns.

Bei 100ns/div werden nur noch 1000 Punkte gemessen und die Messkurve per
(sin x)/x-Interpolation auf 2500 Punkte "gestreckt".

> Irgendwie liegt mein Peak aber bei 1,25 GHz auf der Frequenzachse, ich
> würde ihn aber so um die 3 MHz erwarten.

Da ist sicher zusätzlich in der Auswertung noch etwas faul. Könnten die
1,25GHz, die nach obiger Korrektur zu 0,5GHz würden, irgendetwas mit der
Abtastfrequenz zu tun haben?

Autor: Andrew Taylor (marsufant)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yalu schrieb:
> Das TDS220 kann maximal 1GS/s und hat auch nicht den von Kevin
> beschriebenen Equivalent-Mode, um periodische Signale höher abzutasten.


Das ist korrekt.


>
> Bei 100ns/div werden nur noch 1000 Punkte gemessen und die Messkurve per
> (sin x)/x-Interpolation auf 2500 Punkte "gestreckt".


Das kann so sein, muß aber nicht.
Catherine hat uns hier bisher nicht verraten, wie sie den Trigger für 
ihr Gerät gewählt hat.

Bei single shot Trigger wäre Deine Vermutung wohl zutreffend.
Bei repetitive Trigger mittelt das Scope wohl eher (zumindest tun dies 
die TDS 2xx die ich hier habe).

Ich finde aber jetzt im Manual auch keine Details, die das verwendete 
Verfahren im Detail erläutern.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andrew Taylor schrieb:
>> Bei 100ns/div werden nur noch 1000 Punkte gemessen und die Messkurve per
>> (sin x)/x-Interpolation auf 2500 Punkte "gestreckt".
>
> Das kann so sein, muß aber nicht.
> Catherine hat uns hier bisher nicht verraten, wie sie den Trigger für
> ihr Gerät gewählt hat.

> Bei single shot Trigger wäre Deine Vermutung wohl zutreffend.

Wieso sollte die Interpolation vom Trigger-Modus abhängen?

> Bei repetitive Trigger mittelt das Scope wohl eher (zumindest tun dies
> die TDS 2xx die ich hier habe).

Triggermodus, Interpolation und Mittelung sind drei völlig voneinander
unabhängige Dinge: Interpoliert wird dann, wenn die Abtastrate nicht
mehr ausreicht, um die dabei entstehenden Lücken durch berechnete
Messpunkte zu füllen. Gemittelt wird dann, wenn man den Average-Mode
aktiviert hat. Diese Mittelung erfolgt über die jeweils einander
entsprechenden Samples in nacheinander aufgenommenen Waveforms. Dadurch
entstehen aber, im Gegensatz zur Interpolation, keine zusätzlichen
Messpunkte. Beides, Interpolation und Mittelung, ist sowohl im Single-
Shot- als auch im repetitive Trigger möglich.

> Ich finde aber jetzt im Manual auch keine Details, die das verwendete
> Verfahren im Detail erläutern.

Hab' gerade das Manual runtergeladen und S. 67 aufgeschlagen:

  The maximum sample rate is 1 GS/s. At 100 ns and faster settings, this
  sample rate does not acquire 2,500 points. In this case, a Digital
  Signal Processor interpolates points between the sampled points to
  make a full 2,500 point waveform record.

Und S. 96:

  Horizontal
  Sample Rate Range        50 S/s to 1 GS/s
  Waveform Interpolation   (sin x)/x

Autor: Catherine Haug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also die Pulse wurden mittels repetitivem Trigger dargestellt, Trigger 
dabei auf einen konstanten Anregungspuls - der von mir auszuwertende 
Puls ist die Reaktion auf diese Anregung. Zeitauflösung stand auf 100ns, 
also tritt die Passage auf dem Handbuch ja zu. Das Problem sind weniger 
die Messwerte selbst, sondern deren Interpretation.

Mein Abtastintervall bei einer eingestellten Zeitbasis von 100ns 
berechnet sich doch wie wie folgt: 100ns * 10 DIVs = 1000ns = 1us auf 
dem gesamten Bildschirm. Innerhalb dieser 1us werden dann 2500 Punkte 
gemessen. Also alle 0,4 ns einer. Damit beträgt mein Abtastintervall 
doch 0,4ns und die Abtastfrequenz 1/0,4ns und somit 2,5 GHz.
Eine andere Lösung des Problems welche mir zur Verfügung steht geht von 
einem Abtastintervall von 2,5us aus bei einer Zeitbasis von 250ns. Macht 
eine Abtastfrequenz von 400 MHz.

Wo ich absoult keinen Ansatz zu finde ist die Skalierung der 
Frequenzachse nach der FFT. Ich habe meine 2500 Messwerte aus dem 
Oszilloskop die ich Fouriertransformiere. Zu jedem Messwert gehört doch 
dann die Frequenz 1/t (t des jeweiligen Messwerts) oder?

Autor: Hannes Jaeger (pnuebergang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grundsätzlich ist die sin(x)/x-Interpolation bezüglich des Spektrums 
harmlos. Theoretisch. Praktisch muss sie über -Unendlich bis +Unendlich 
gerechnet werden, was natürlich kein Oszilloskop kann. Tektronix mag zum 
Ausgleich zusätzlich eine Fensterfunktion benutzt haben. Ich würde daher 
dazu tendieren die interpolierten Zwischenwerte wegzuwerfen. Zumindest 
würde ich mal beides zum Vergleich FFTen. Das Spektrum kann man bei der 
FFT sowieso "aufblasen" (*) um eine Glättung zu erhalten, also warum 
sich mit interpolierten Werten rumschlagen?

Unabhängig davon, mit

dt: Zeitintervall zwischen zwei (realen oder interpolierten) Messwerten
f_abtast: f_abtast = 1 / dt
N: Anzahl der Werte über die die FFT berechnet wurde (*)

ergibt sich eine Frequenzskala in Schritten von df = N / dt = N * 
f_abtast


(*) Die Anzahl der Werte über die man die FFT berechnet ist nicht 
notwendigerweise die Anzahl der Messwerte (egal ob real gemessene oder 
interpolierte). Man kann Nullen anfügen um so eine höhere spektrale 
Auflösung zu bekommen, was einem glatteren Spektrum entspricht.

Autor: Catherine Haug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Hannes, an das Zero-Padding hatte ich gar nicht gedacht. Habe die 
2500 Messwerte jetzt auf 2^14 Werte für die FFT mit Nullen erweitert.

Dazu habe ich aber noch einen schweren Fehler bei meiner FFT gemacht, 
ich habe einen FFT_Shift durchgeführt aber dies nicht bei meiner 
Frequenzskalierung berücksichtigt. Durch das Shift befindet sich doch 
der "Nullpunkt" der Frequenzskalierung genau in der Mitte der Achse...

Autor: Hannes Jaeger (pnuebergang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Catherine Haug schrieb:
> Dazu habe ich aber noch einen schweren Fehler bei meiner FFT gemacht,
> ich habe einen FFT_Shift durchgeführt aber dies nicht bei meiner
> Frequenzskalierung berücksichtigt. Durch das Shift befindet sich doch
> der "Nullpunkt" der Frequenzskalierung genau in der Mitte der Achse...

Was OK ist. Das ist nur eine Darstellungsfrage. Viel lustiger sind die 
gängigen Fehler.

Zum Beispiel wird gerne ein Wert bei der Konvertierung des 
FFT-Ergebnisses in ein Spektrum verschlampt. Da erwischt es entweder den 
Gleichanteil (f = 0) oder die höchste Frequenz, da vergessen wird, dass 
eine N-Punkt FFT zwar N Werte liefert diese aber ein Spektrum aus N / 2 
+ 1 Frequenzen ergeben, nicht etwa N/2 Frequenzen.

Ähnlich oft wird die Magnitude nicht richtig skaliert. Die Energie des 
Signals steckt, mit Ausnahme des Gleichanteils und der höchsten 
Frequenz, jeweils zur Hälfte in den positiven und negativen Frequenzen. 
Bildet man den Betrag und pickt sich einfach die N / 2 + 1 Werte für das 
Spektrum raus (normalerweise die positiven Frequenzen und wenn man nicht 
geschlampt hat den Gleichanteil), sind diese (mit Ausnahme des 
Gleichanteils  und der höchsten Frequenz) um den Faktor 2 zu klein.

Will man auf Spannungen kommen (schließlich misst ein Oszilloskop das), 
wird gerne die Normierung auf 1 / L vergessen. Wobei L die Anzahl der 
ursprünglichen Werte ist, bevor man mit Nullen auf N Werte aufgefüllt 
hat.

Autor: Catherine Haug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Hannes! Da hast du mich direkt auf die nächsten 2 Fehler 
aufmerksam gemacht.

Nach der Bildung des Betrags werfe ich den 'negativen' Frequentzeil 
quasi weg da ich mir nur die Frequenzen ab 0Hz anschaue (genauer: wegen 
der ansonsten ungünstigen Darstellung der Werte schneide ich einen 
Bereich von 0 bis 25 MHz aus). Also muss ich nach deiner Aussage die 
Amplitudenwerte erstmal verdoppeln . Klingt soweit logisch auch wenn ich 
das selbst vorher nicht beachtet hatte.

Dann werden die verdoppelten Amplitudenwerte noch mit 1/N multipliziert 
(normiert). N ist in meinem Fall ja 2500 da mein TDS220 ja 2500 Werte 
liefert. Das Ergebnis ist dann die korrekt skalierte Amplitudenachse in 
der Einheit Volt, oder?

Nochwas zur Nomenklatur: gibt es (fachlich gesehen) einen Unterschied 
zwischen der Bezeichnung Amplitude und Magnitude?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.