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
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".
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
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.
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!
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
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.
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?
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.
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
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.
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).