Forum: Digitale Signalverarbeitung / DSP / Machine Learning Abtasttheorem in der Praxis


von db (Gast)


Lesenswert?

Hallo Leute,

ich hab' mal eine Frage, vielleicht könnt ihr etwas Licht ins Dunkle 
bringen.

Angenommen ich habe ein beliebiges Signal im Zeitbereich. Dieses möchte 
ich an diskreten Zeitpunkten abtasten.

Zum Beispiel habe ich einen Sinus mit einer bestimmten Frequenz f0. Dann 
muss ich mein Signal mit einer Frequenz f > 2*f0 (manchmal auch >=, aber 
das ist blöd, wenn ich z.B. genau die Nulldurchgänge treffe) abtasten.

Will ich dieses nun als diskrete Wertepaare vorliegendes Signal 
rekonstruieren (z.B. über einen DA Wandler, oder auch nur zum Plotten in 
matlab), müsste ich einen sinc Interpolator verwenden. Das ist mir klar 
und ich verstehe über die Fourier Trafo auch, warum (Rechteckfenster im 
Frequenzbereich ist nunmal in sinc im Zeitbereich), siehe z.B. 
http://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem .

Möchte ich etwas komplizierteres, als einen Sinus rekonstruieren, müsste 
ich das Signal per Fourier Analyse (Reihe oder Trafo) zerlegen und 
gucken, bis zu welcher Frequenz ich maximal gehen möchte. Dann begrenze 
ich das Signal per Tiefpass darauf und gut is. Diese Filterung müsste 
jedoch analog, vor der Digitalisierung stattfinden.

Das obige macht Sinn für mich; ich kann es aber nicht auf meine 
Anwendung transferieren.



Ich habe zum Beispiel einen Sensor, z.B. ein Gyro, das meine 
Winkelgeschwindigkeit (deg/sec) misst. Der Chip wird intern mit 
meinetwegen 10 kHz gesampelt. Damit könnte ich also Frequenzen, also 
Veränderungen meiner Winkelgeschwindigkeit (also Winkelbeschleunigung, 
deg/sec/sec ???) von bis zu 5e3 deg/sec^2 messen, stimmt das? Natürlich 
nur, wenn die Winkelbeschleunigung sich sinusförmig verändert, sonst 
entsprechend geringer.

Wenn ich aber dieses Signal nun viel langsamer, z.B. mit 100 Hz über SPI 
abrufe, bekomme ich nur jedes 100. sample ab. Was hat das für 
Konsequenzen? Kann ich damit auch nur Bewegungen bis 5e3/100 deg/s^2 = 
50 deg/s^2 detektieren? Wenn ja warum?
Im Prinzip will ich das Signal ja gar nicht rekonstruieren, also das 
Ursprungssignal wieder vollständig darstellen, z.B. durch einen DA 
Wandler.

Vielleicht ein anderes Beispiel: Ich habe einen Beschleunigungssensor, 
der in einer vibrierenden Umgebung eingebaut ist. Wenn ich den mit 100 
Hz abtaste, kann ich nur Vibrationen bis max 50 Hz erkennen. Es kann 
aber (wird auch) sein, dass deutlich höhere Frequenzen auftreten. Wenn 
man es so will, betreibe ich ja eine Unterabtastung dann. Wie wirkt sich 
das aus? Erhalte ich dann Alias Effekte, wenn ich einfach die Samples 
gegen die Zeit plotte (ist ja im Prinzip auch eine Rekonstruktion, nur 
ohne sinc Interpolation)?

Ich bin mir einfach nicht sicher, wie gut ich die ermittelten Daten 
verwenden kann, um Rückschlüsse auf die Umgebung zu ziehen.

Vielleicht versteht ja jemand mein Problem und kann mir helfen :)

Vielen Dank im Voraus,
db

von hubert (Gast)


Lesenswert?

Du wirst auch die Signale mit höherer Frequenz erkennen, d.h. sie 
hinterlassen eine Spur in deinen Daten. Nur eben mit einer anderen 
Frequenz. Ein Signal mit dem doppelten oder mehrfachem deiner 
Abtastfrequenz wirst du z.B. als DC-artiges Signal in deinen 
abgetasteten Werten vorfinden, da du ja immer an der gleichen Phase des 
Signals abtastest.
Manchmal macht man das sogar absichtlich um ein Signal auf diese Weise 
"runterzumischen".

von dma (Gast)


Lesenswert?

db schrieb:
> Erhalte ich dann Alias Effekte, wenn ich einfach die Samples
> gegen die Zeit plotte

Ja, wenn du in deinen Samples eine Frequenz f' siehst, weißt du nicht, 
bei welcher der Ursprungsfrequenz
1
f = n * fa +/- f'
 die Quelle lag.

von lalala (Gast)


Lesenswert?

db schrieb:
> Will ich dieses nun als diskrete Wertepaare vorliegendes Signal
> rekonstruieren (z.B. über einen DA Wandler, oder auch nur zum Plotten in
> matlab), müsste ich einen sinc Interpolator verwenden. Das ist mir klar
> und ich verstehe über die Fourier Trafo auch, warum (Rechteckfenster im
> Frequenzbereich ist nunmal in sinc im Zeitbereich

Aber nur wenn Du das Signal mit einer anderen 'Taktrate' ausgeben 
willst. Ansonsten plottest Du einfach die Werte, oder schickst sie 
direkt an den DA Wandler.

db schrieb:
> Möchte ich etwas komplizierteres, als einen Sinus rekonstruieren, müsste
> ich das Signal per Fourier Analyse (Reihe oder Trafo) zerlegen und
> gucken, bis zu welcher Frequenz ich maximal gehen möchte. Dann begrenze
> ich das Signal per Tiefpass darauf und gut is. Diese Filterung müsste
> jedoch analog, vor der Digitalisierung stattfinden.

Was meinst Du mit rekonstruieren? Du misst das Signal. Und ja, richtig 
erkannt, an dem Eingang solltest Du einen guten Tiefpassfilter 
betreiben.

Ja, Du erhältst Aliasing Effekte. Simulier das am besten mal, ist sehr 
instruktiv. Mit dem Daten lässt sich dann i.A. leider nichts mehr 
anfangen.

von db (Gast)


Lesenswert?

Ersteinmal vielen Dank für die Antworten. Bin gerade unterwegs, werde 
später ausführlicher antworten, eine Frage habe ich aber bereits.

Die meisten gyros, accs, Magnetometer etc spreche ich doch digital an. 
Die werden intern mit ad Wandlern gesampelt. Da KANN ich gar nicht mehr 
analog filtern. Die Sensoren haben zwar noch einen konfigurierbaren 
Tiefpass eingebaut, aber der ist doch garantiert digital.

Wie passt das zusammen mit der Aussage, dass die Daten eigentlich vorher 
gefiltert werden mussten (was ja Sinn macht), diese Dinger werden doch 
millionenfach eingesetzt..

Danke!

von hubert (Gast)


Lesenswert?

db schrieb:
> Wie passt das zusammen mit der Aussage, dass die Daten eigentlich vorher
> gefiltert werden mussten (was ja Sinn macht), diese Dinger werden doch
> millionenfach eingesetzt..

Das ist auch eigentlich gar kein Problem, wenn dein Messobjekt sich was 
sein Spektrum betrifft an die Spielregeln hält. Die Sensoren liefern 
immer brav wenn du abfragst (im Rahmen des Datenblattes) einen Wert. 
Enthält das was du misst zu hohe Frequenzen, dann kommt es zu den oben 
beschriebenen Effekten, die du berücksichtigen musst. Bei einem 
"einfachen" ADC musst du eben analog Filtern. Wenn du ein zeitlich 
veränderliches Magnetfeld oder eine mechanische Schwingung misst, das du 
nicht beeinflussen kannst, dann musst du dein Messsystem bzgl Sensorik 
und Abtastung so auslegen, dass du Nyquist einhältst oder mit den 
Aliasen leben.

Grüße

von alex (Gast)


Lesenswert?

Moin,

der Sensor wird intern einen analogen Tiefpass besitzen. Vielleicht 
steht dazu was im Datenblatt(?). Bei manchen Sensoren kann man an eine 
Kapazität anschließen und so den Pol des Filters verschieben für andere 
Abtastraten.

von db (Gast)


Lesenswert?

Also beim Accelerometer ist tatsächlich ein fester Tiefpass mit 1kHz, 
danach wird gesampelt.

Aber guckt mal beim Gyro: 
http://www.invensense.com/mems/gyro/documents/PS-MPU-3300-00.pdf

Da ist die interne Abtastfrequenz variabel, der Tiefpass ebenfalls. Wie 
kann das funktionieren?

von alex (Gast)


Lesenswert?

Nur weil ein Filter "programmierbar" ist, heisst es nicht das es digital 
sein muss. Z. B. SC-Filter, oder Filterbänke wo entsprechend der 
eingestellte Filter durchgeschaltet wird.

Oder es wird immer mit der höchsten Frequenz mit festen TP davor 
abgetastet, dann digitaler Tiefpass und dezimierung der Abtastrate.

von db (Gast)


Lesenswert?

Okay, sehe ich ein. Vielen dank erstmal.

Macht es überhaupt Sinn, den Gyro z.B. mit 1 kHz zu sampeln (intern), 
dann aber nur mit 100 Hz Daten abzufragen? Ich verstehe leider noch 
nicht genau, warum Alias auftreten kann, wenn ich das trotzdem mache. 
Erfasse ich dann maximal Frequenzen von 100 Hz, obwohl die Daten 
schneller gesampelt wurden?

Unter was fällt das hier? Ist das eine Dezimierung oder Undersampling? 
Wonach könnte ich suchen (Stichwörter)

Schöne Grüße und danke

von Udo S. (urschmitt)


Lesenswert?

db schrieb:
> Macht es überhaupt Sinn, den Gyro z.B. mit 1 kHz zu sampeln (intern),
> dann aber nur mit 100 Hz Daten abzufragen?

Ja wenn du durch Mittelwertbildung Auflösung erhöhen oder (weißes) 
Rauschen eliminieren willst.
Dann musst du aber auch genau das mit den Werten machen.
Wenn du einfach nur jeden 10. Wert benutzt dann kannst du auch 10 mal 
niedriger sampeln.
Nachtrag: Dann aber auch den Antialiasing Filter entsprechend der 
Samplerate anpassen.

: Bearbeitet durch User
von db (Gast)


Lesenswert?

Okay, ich könnte z.B. 10 Werte per eingebautem FIFO im burst mode 
abholen und dann mitteln. Abtastrate weiterhin auf 1 kHz, den internen 
Tiefpass auf 500 Hz oder 50 Hz? Weil durch die Mittelung (zumindest ein 
einfacher ungewichteter MW Filter) werden ja nicht zwangsläufig alle 
hohen Signalanteile gedämpft (oszillierendes Verhalten im 
Frequenzbereich).

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.