Hallo Zusammen, Mich wurmt die Frage, wie richtig gesampelt wird mit dem ADC. Eine durchaus triviale Frage, aber der Wurm steckt im Detail. Annahme: -10 Bit Wandler -Einfaches AAF(RC-Filter) vor dem ADC -Sampelrate abgestimmt auf das AAF -Statische Messsignale, Beispiel Temperatur Aufgrund bewusst gewählter Abtastrate, im Bezug auf das AAF vor dem ADC, sample ich zu schnell für meine Anwendung. Ein Downsampling ist zwar erlaubt, aber jedoch mit der Gefahr verbunden, das Alias-Effekte reinkommen. Wenn ich also 4 Samples/Kanal abtaste und nur den letzten Wert nehme, dann ist das ja eine Art downsampling, richtig? Muss hier dann eigentlich ein Dezimationsfilter eingesetzt werden? Beispiel der Abtastung mit Multiplexen: CH1,CH1,CH1,CH1................................................ ...............CH2,CH2,CH2,CH2................................. ..............................CH3,CH3,CH3,CH3.................. .............................................CH1,CH1,CH1,CH1... ............................................................CH2,... Auch wenn ich 4x sample pro Kanal, ist die eigentliche Abtastrate des Kanals ja viel geringer. Imho müsste eig. ein Dezimationsfilter eingesetzt werden, da immer die ersten 3 Samples verworfen werden. Gilt das eig. auch für den Fall, dass ein Delta Sigma ADC z.b. erst beim 3.Wert einen gültigen Wert liefert? Freue mich auf eine spanndende Diskussion! Grüße Jo
:
Bearbeitet durch User
Moin, Joe J. schrieb: > Annahme: > -10 Bit Wandler > -Einfaches AAF(RC-Filter) vor dem ADC > -Sampelrate abgestimmt auf das AAF Kannst du da mal ein simples Beispiel mit "echten" Zahlenwerten (Samplingrate, Grenzfrequenz des RC-Filters,etc.) geben, was da so eine auf das AAF abgestimmte Samplerate ist? Gruss WK
Hi! Beispiel: Samplerate:100k F/2:50k feck: 100Hz Danke/Grüße
Spezial Trick, einfach 4 werte Addieren peng fertig. Hast dann halt 12 Bit Wertebereich. Ggf noch 2bit nach rechtsschriften um wieder 10 Bit zu erhalten.
ECL schrieb: > Spezial Trick, einfach 4 werte Addieren peng fertig. Hast dann > halt 12 > Bit Wertebereich. > > Ggf noch 2bit nach rechtsschriften um wieder 10 Bit zu erhalten. Wie kommst denn darauf? Oversampling? 4Fach wäre 1-Bit-Info-Zugewinn. Bringt das überhaupt was bei quasi-statischen SignaleN? Dank/Gruß
Moin, Ich werd da immernochnicht schlau draus. Wie ist der Aufbau? Du hast da 4 Kanaele, jeder hat ein RC-Tiefpass, dann den Multiplexer und dann den ADC? Oder irgendwie anders? Wieso gehst du davon aus, dass die ersten 3 Messungen eh nix taugen und grad' die 4. stimmt dann? Was soll das denn insgesamt werden? Gruss WK
Dergute W. schrieb: > Moin, > > Ich werd da immernochnicht schlau draus. Wie ist der Aufbau? > Du hast da 4 Kanaele, jeder hat ein RC-Tiefpass, dann den Multiplexer > und dann den ADC? Oder irgendwie anders? > Wieso gehst du davon aus, dass die ersten 3 Messungen eh nix taugen und > grad' die 4. stimmt dann? > Was soll das denn insgesamt werden? > > Gruss > WK Nö, einfach einen AAF vor dem ADC, nach dem Multiplexer. Die taugen schon was, möchte aber dass mein AAF auch wirken kann und entsprechend bis F/2 alles absägt. Mir gehts um die theoretische Betrachtung, nagel mich daher bitte nicht auf genaue Werte fest. Anzahl an Kanälen im obigen Beispiel - 3. Habe versucht das mit der Sequenz oben dar zu stellen.
:
Bearbeitet durch User
Joe J. schrieb: > Mich wurmt die Frage, wie richtig gesampelt wird... Guck erstmal genauer auf die Analog-Peripherie deines µC drauf. Viele heutige µC haben einen ADC und davor ne Menge ADC-Kanäle, die auf verschiedene Pins gehen. Manche davon können per Hardware alle diese ADC-Eingänge (oder einen programmierbaren Teil davon) abscannen. Wenn du so einen µC hast, dann laß diese Logik einfach durchrattern und bilde für jeden abgetasteten Kanal einfach einen gleitenden MW über die letzten 4..16 Ergebnisse - alternativ die schlichte Summe über jeweils 4..16 Ergebnisse (das wäre dann gleich auch das "Downsamplen"). Auf diese Weise schmeißt du nämlich auch diverses Zappeln der 1..3 LSB's so einigermaßen aus deinen Meßwerten heraus. W.S.
Moin, Joe J. schrieb: > Nö, einfach einen AAF vor dem ADC, nach dem Multiplexer. Die taugen > schon was, möchte aber dass mein AAF auch wirken kann und entsprechend > bis F/2 alles absägt. Mir gehts um die theoretische Betrachtung, nagel > mich daher bitte nicht auf genaue Werte fest. Neenene, die genauen Werte sind schon wurscht. Nur eben die Groessenordnungen. Wenn du mit einem z.B. 100Hz RC-Tiefpass dein gemultiplextes Signal filterst, kannst du halt mit deinem Multiplexer auch nur seeehr langsam umschalten. Der Tiefpass muss ja erst "eingeschwungen sein" - d.h. die Impulsantwort von der Messung ein Kanal vorher muss auf < 1/10 bit abgeklungen sein. Wenn du da schneller umschaltest, misst du halt ein Gemisch aus deinen Eingaengen, bzw. immer die Vorgeschichte vom Nachbarkanal mit. Gruss WK
Joe J. schrieb: > Imho müsste eig. ein Dezimationsfilter eingesetzt werden, da immer die > ersten 3 Samples verworfen werden. Bei einem (sinnvoll ausgelegten) Dezimationsfilter wirfst du eben keine Samples weg...
>Beispiel der Abtastung mit Multiplexen: >CH1,CH1,CH1,CH1................................................ >...............CH2,CH2,CH2,CH2................................. >..............................CH3,CH3,CH3,CH3.................. >.............................................CH1,CH1,CH1,CH1... >............................................................CH2,... Sieht aus, wie potenziert geballtes Halbwissen! So kann eine Änderung des Eingangssignals erst nach 12 Sample- Zyklen festgestellt werden. Bei den genannten 4 Kanälen sogar erst nach 16. Mit CH1,CH2,CH3,CH4, CH1,CH2,CH3,CH4, CH1,CH2,CH3,CH4, .... hast du schon mal ein 4-fach besseres Verhältnis von AAF zum Sample-Zyklus. Selbst wenn du nach jeder Kanalumschaltung sicherheitshalber erst den jeweils zweiten Sample für brauchbar erklärst: ch1,CH1,ch2,CH2,ch3,CH3,ch4,CH4, ch1,CH1,ch2,CH2,ch3,CH3,ch4,CH4... (die kleingeschriebenen werden ignoriert) liefert ein 8-fach besseres Verhältnis von AAF zum Sample-Zyklus. Änderungen sind aber immer noch doppelt so schnell erfassbar... Um welche möglichen Änderungsraten und Störfrequenzen in Relation zu AAF und Sample-Rate es geht, hast du dir wohl offensichtlich noch nicht überlegt. - Na dann träum schön weiter...
Jakob schrieb: >>Beispiel der Abtastung mit Multiplexen: >>CH1,CH1,CH1,CH1................................................ >>...............CH2,CH2,CH2,CH2................................. >>..............................CH3,CH3,CH3,CH3.................. >>.............................................CH1,CH1,CH1,CH1... >>............................................................CH2,... > > Sieht aus, wie potenziert geballtes Halbwissen! > > So kann eine Änderung des Eingangssignals erst nach 12 Sample- > Zyklen festgestellt werden. Bei den genannten 4 Kanälen sogar > erst nach 16. > > Mit > CH1,CH2,CH3,CH4, CH1,CH2,CH3,CH4, CH1,CH2,CH3,CH4, .... > hast du schon mal ein 4-fach besseres Verhältnis von AAF zum > Sample-Zyklus. > > Selbst wenn du nach jeder Kanalumschaltung sicherheitshalber > erst den jeweils zweiten Sample für brauchbar erklärst: > > ch1,CH1,ch2,CH2,ch3,CH3,ch4,CH4, ch1,CH1,ch2,CH2,ch3,CH3,ch4,CH4... > (die kleingeschriebenen werden ignoriert) > liefert ein 8-fach besseres Verhältnis von AAF zum Sample-Zyklus. > Änderungen sind aber immer noch doppelt so schnell erfassbar... > > Um welche möglichen Änderungsraten und Störfrequenzen in Relation > zu AAF und Sample-Rate es geht, hast du dir wohl offensichtlich > noch nicht überlegt. > - Na dann träum schön weiter... Moin! Einige interessante Aspekte hast Du erwähnt. Der Grund für die Wahl dieses Verfahrens ist der, dass ich einfach auf diese Art und Weise die Verarbeitungszeit etwas dehnen möchte, damit ich auch was vernünftiges in der Zeit machen kann. Vielleicht hast Du vor dem Hintergrund den Einen oder Anderen Tip, passend zu der Fragestellung . Es handelt sich sowieso, wie oben erwähnt, um statische Signale. Davon ausgeschlossen allerdings sind Störungen und Rauschen nicht.
Michael R. schrieb: > Joe J. schrieb: >> Imho müsste eig. ein Dezimationsfilter eingesetzt werden, da immer die >> ersten 3 Samples verworfen werden. > > Bei einem (sinnvoll ausgelegten) Dezimationsfilter wirfst du eben keine > Samples weg... Wie meinst Du das?Nicht ganz verstanden.
Dergute W. schrieb: > Moin, > > Joe J. schrieb: >> Nö, einfach einen AAF vor dem ADC, nach dem Multiplexer. Die taugen >> schon was, möchte aber dass mein AAF auch wirken kann und entsprechend >> bis F/2 alles absägt. Mir gehts um die theoretische Betrachtung, nagel >> mich daher bitte nicht auf genaue Werte fest. > > Neenene, die genauen Werte sind schon wurscht. Nur eben die > Groessenordnungen. > Wenn du mit einem z.B. 100Hz RC-Tiefpass dein gemultiplextes Signal > filterst, kannst du halt mit deinem Multiplexer auch nur seeehr langsam > umschalten. Der Tiefpass muss ja erst "eingeschwungen sein" - d.h. die > Impulsantwort von der Messung ein Kanal vorher muss auf < 1/10 bit > abgeklungen sein. > Wenn du da schneller umschaltest, misst du halt ein Gemisch aus deinen > Eingaengen, bzw. immer die Vorgeschichte vom Nachbarkanal mit. > > Gruss > WK Guten Morgen! Das ist klar, die Frage ging eher in eine andere Richtung. Grüße!
Joe J. schrieb: > Michael R. schrieb: >> Bei einem (sinnvoll ausgelegten) Dezimationsfilter wirfst du eben keine >> Samples weg... > > Wie meinst Du das?Nicht ganz verstanden. Ist in deinem Fall vermutlich overkill, da deine Frequenzen weit genug auseinanderliegen (100kHz Sample, 100Hz Eck) Wenns da eng wird, kann es schwierig sein, das AAF analog scharf genug auszulegen. Dann kann man das "aufteilen" in analog und digital, n-fach oversamplen, und die Samples dann in einen FIR-Filter mit polyphase decimation leiten. Dabei werden keine Samples verworfen, sondern alle wirken auf den FIR; und mit "polyphase" kannst du die (CPU-) Last auch noch recht gleichmäßig verteilen.
@Michael: Das ist ein inter Wie verhält es sich eigentlich mit dem Multiplexen? Wenn ich das Dezimationsfilter einbaue, betrachte ich das Signal, was der ADC sieht oder hat jeder Kanal für sich ein Filter, das durchgerödelt wird. Der Oppenheim konnte mir da auch keine Antwort darauf geben;-)
Joe J. schrieb: > @Michael: > > Das ist ein inter Das ist eine gute > Wie verhält es sich eigentlich mit dem Multiplexen? Wenn ich das > Dezimationsfilter einbaue, betrachte ich das Signal, was der ADC sieht > oder hat jeder Kanal für sich ein Filter, das durchgerödelt wird. Der > Oppenheim konnte mir da auch keine Antwort darauf geben;-) Es braucht schon jeder Kanal sein eigenes Filter. Die Werte müssen aber auch mit konstanten zeitlichen Abständen reinkommen. Daher würde ich (wie schon oben von jakob vorgeschlagen) jeden Kanal zweimal lesen, aber nur das zweite Sample verwenden. Für deine quasi-stationären Werte tuts aber ein simples PT1-Filter: http://www.lothar-miller.de/s9y/archives/25-Filter-in-C.html
Michael R. schrieb: > Ist in deinem Fall vermutlich overkill, da deine Frequenzen weit genug > auseinanderliegen (100kHz Sample, 100Hz Eck) > > Wenns da eng wird, kann es schwierig sein, das AAF analog scharf genug > auszulegen. Dann kann man das "aufteilen" in analog und digital, n-fach > oversamplen, und die Samples dann in einen FIR-Filter mit polyphase > decimation leiten. Dabei werden keine Samples verworfen, sondern alle > wirken auf den FIR; und mit "polyphase" kannst du die (CPU-) Last auch > noch recht gleichmäßig verteilen. Hallo! Also ich habe die ganze Sache so verstanden, dass das Dezimationsfilter verhindert, das Alias Effekte entstehen. Daher durch das Filter leiten und dann einfach danach jeden X-ten Wert verwenden. Oder bin ich da komplett falsch?
Michael R. schrieb: > Wenns da eng wird, kann es schwierig sein, das AAF analog scharf genug > auszulegen. Dann kann man das "aufteilen" in analog und digital, n-fach > oversamplen, und die Samples dann in einen FIR-Filter mit polyphase > decimation leiten. Die Grenze des Systems ista aber ja meine maximale Abtastrate des Kanals. Digital kann ich ja kein AAF bauen. Daher sehe ich gerade den Vorteil nicht, es wäre nett wenn Du mich etwas aufschlauen könntest;-)
Stimme das Dezimationsfilter auf die Abtastfrequenz des ADC ab, dann müsste es ja hinhauen, da ja n*Fabt_CH gilt und n=Anzahl/Kanäle ist. Das wäre so mein theoretisches Konstrukt.
Joe J. schrieb: > Digital kann ich ja kein AAF bauen. natürlich kannst du, du musst sogar. Wenn ich mal aus dem Niesen rauskomme (verflixter Virus!) versuch ich das zu erklären...
ich versuchs mal (hatschi!) Nehmen wir an du möchtest ein Audi-Signal digitalisieren, und zwar bis 16 kHz. Darüber hast du allerdings Störungen, die du ausblenden willst. Um einen Respektabstand zum Herrn Nyquist einzuhalten, tastest du mit 40 kHz ab. Deine 16 kHz sollen möglichst ungetrübt rüberkommen, Störungen (welche Alias-Effekte verursachen würden) sollen möglichst ausgeblendet sein. bei Abtastung mit 10 bit sollen die Störungen +/- 1 LSB sein, dein AAF müsste also bei 16 kHz möglist alles durchlassen (-1dB tolerierst du), ab 24 kHz soll aber mit -60db gedämpft sein (dB-Rechenfehler sind bitte meinem Virus anzulasten). Dein (analoger) AAF wäre also allermindestens "sportlich". Nun kommt dir die rettende Idee: Oversampling! Statt mit 40 kHz tastest du mit 160 kHz ab (4-fach Oversampling). Dein analoger AAF wird damit viel einfacher: Passband bis 16 kHz, und erst bei 80 kHz -60 dB, das ist viel einfacher realisierbar. Als Ergebnis hast du ein sauberes digitale Abtastung, mit hoher Sicherheit kaum Aliasing. Aber: eine zu hohe Abtastrate, du wolltest ja 40 kHz haben... jetzt kommt aber der entscheidende Punkt: Dein digitales Signal enthält neben dem gewünschten Nutzsignal auch Frequenzen von 20 bis 80 kHz (weil die dein einfacherer AAF ja nicht vollständig unterdrückt hat); wenn du jetzt einfach jeden vierten Wert nimmst, hast du wieder genau die Aliasing-Effekte, welche du eigentlich verhindern wolltest... Daher musst du dein digitales Signal auch noch mal über einen (digitalen) Tiefpass leiten, bevor du dezimierst. Dafür bieten sich IIR- oder FIR-Filter an. IIR bieten zwar eine höhere Ordnung bzw. bei definierter Ordnung weniger Aufwand, aber bei Dezimation greift man meist zu FIR, aus mehreren Gründen: - FIR ist immer stabil (Feedback fehlt, IIR kann schwingen) - Koeffizienten sind bei geschickter Auslegung im Bereich -1 .. +1 was sich sehr effizient implementieren lässt (und Sättigung verhindert) - in Kombination mit Dezimation müssen nicht benötigte Ergebnisse auch nicht berechnet werden (beim IIR schon wegen Feedback) - mit "polyphase decimation" lassen sich die Operation schön gleichzeitig auf die Abtastungen verteilen Als Ergebnis hast du jetzt schlussendlich dein sauber digitales Signal in der gewünschten Abtastrate, mit optimal unterdrückten Alias-Anteilen. Und - du hast keine Samples verworfen (darfst du ja gar nicht!) hatschi!
:
Bearbeitet durch User
Gsundheit! ;-) Logisch, eine Sache wäre ja fast Untergegangen. Wenn ich künstlich meine Samplerate des ADC minimiere, wie oben angegeben, dann ist es als ob ich langsamer sample. Ist mir grad klar geworden. Daher die Dezimationsfilter anwenden, statt einfach samples weglassen.Muss man im Auge behalten. Jetzt fügt sich alles wieder zusammen. Danke für die Gedult und Tapferkeit;-=)
Kann man eigentlich ein gemultiplexted Signal als ein interpoliertes Signal sehen? Ich würde die Behauptung aufstellen, dass das Multiplexen im Zeitbereich nix anderes ist als eine Interpolation, also eine Addition der einzelnen Signale, gemessen an den Kanälen, die gemultiplext werden. Wie muss dann folglich ein AAF ausgelegt werden? Oder bin ich da wieder auf einem Holzweg?
:
Bearbeitet durch User
Moin, Ein so wie von dir skizziertes gemultiplextes Signal wuerde ich so sehen: * Im Zeitbereich als Multiplikation deines Analogsignals mit einem Rechteck, der entweder 0 oder 1 ist. Bei 3 Kanaelen dann 2x so lange 0 ist, wie 1, also 33% duty cycle. * Deshalb im Frequenzbereich als Faltung deines Analogsignalspektrums mit dem Spektrum deines Rechteckpulses, wodurch dann schon vor der Abtastung im ADC Aliasspektren entstanden sind. Gruss WK
Ohne genau zu wissen worauf der TO hinaus will, denke ich es hängt davon ab wo gemultiplext wird: Analog vor dem AAF, analog nach dem AAF, oder digital. (sagt man "gemultiplext" oder "multigeplext"? ;-)
:
Bearbeitet durch User
Michael R. schrieb: > Ohne genau zu wissen worauf der TO hinaus will, denke ich es hängt > davon > ab wo gemultiplext wird: Analog vor dem AAF, analog nach dem AAF, oder > digital. > > (sagt man "gemultiplext" oder "multigeplext"? ;-) Ist eine reine Verständnisfrage. Analog vor dem ADC wird 'gemultiplext';-)
Dergute W. schrieb: > Moin, > > Ein so wie von dir skizziertes gemultiplextes Signal wuerde ich so > sehen: > * Im Zeitbereich als Multiplikation deines Analogsignals mit einem > Rechteck, der entweder 0 oder 1 ist. Bei 3 Kanaelen dann 2x so lange 0 > ist, wie 1, also 33% duty cycle. > * Deshalb im Frequenzbereich als Faltung deines Analogsignalspektrums > mit dem Spektrum deines Rechteckpulses, wodurch dann schon vor der > Abtastung im ADC Aliasspektren entstanden sind. > > Gruss > WK Danke für die Antwort und den Hinweis. Muss es mal bei Gelegenheit auseinadnerdividieren. Grüße!
Dergute W. schrieb: > Moin, > > Ein so wie von dir skizziertes gemultiplextes Signal wuerde ich so > sehen: > * Im Zeitbereich als Multiplikation deines Analogsignals mit einem > Rechteck, der entweder 0 oder 1 ist. Bei 3 Kanaelen dann 2x so lange 0 > ist, wie 1, also 33% duty cycle. > * Deshalb im Frequenzbereich als Faltung deines Analogsignalspektrums > mit dem Spektrum deines Rechteckpulses, wodurch dann schon vor der > Abtastung im ADC Aliasspektren entstanden sind. > > Gruss > WK Hi! Also bezogen auf einen Kanal kann man das so sehen. Was aber sieht der adc? Eine Idee?
Was für ein Spektrum erwartet mich da?Kann man das so ohne weiteres mathematisch beschreiben?
Moin, Der ADC "sieht" eine Ueberlagerung der Spektren der Eingangssignale gefaltet mit dem Multiplexsignal. Also z.b. mit den Zahlenbeispielen aus Post 1+3 wird ja alle 12 ADC samples umgeschaltet, also mit 8.33Khz. Wenn auf dem Kanal 1 jetzt ein 50 Hz Signal waere, auf Kanal 2 60 Hz, auf Kanal 70 Hz, dann wuerde der ADC ein Spektrum "sehen" mit z.B. 50,60,70 Hz, 8333-50, 8333-60, 8333-70, 8333+50, 8333+60, 8333+70 Hz, ... usw. Gruss WK
Neues Projekt, alte Sorgen. Ein bischen spät, aber ich denke der letzte Beitrag stimmt - bis auf die Behauptung mit der Faltung, die ist theoretisch richtig, aber muss in der Praxis nicht beachtet werden. Denn der Multiplexer ist ja transparent. Somit sieht der ADC einfach nur eine Überlagerung der Spektren der Eingangssignale. Und um eineen Bezug zum Herrn Nyqist herzustellen - der ADC muss höchstens so schnell sampeln können, dass er bezogen auf jeden Kanal das Abtasttheorem einhält. Die analoge Filterung würde ich daher entweder nach dem Muxer anbringen, wenn technisch nicht möglich kriegt halt jeder Kanal ein analoges Filter.
:
Bearbeitet durch User
Eines ist aber ein Widerspruch zur Theorie der Überlagerung: *Würde der ADC nur so schnell sampeln wie 2*F vom Signalanteil(Signal nach dem Muxer) mit der größten Frequenz, wäre das Abtasttheorem theoretisch berücksichtigt. Praktisch aber heißt das, dass es ausreichen würde aber um beim obigen Beispiel zu bleiben.... Dergute W. schrieb: > Wenn auf dem Kanal 1 jetzt ein > 50 Hz Signal waere, auf Kanal 2 60 Hz, auf Kanal 70 Hz ....das fabt(ADC) mit 140Hz alles Abdecken würde. Das ist aber nicht der Fall, denn wenn ich fabt(ADC) auf die 3 Signale verteile, dann taste ich Kanal 3 nur noch mit der Abtastrate von 140Hz/3 ab(Alias Frequenzen vorprogrammiert).
Joe J. schrieb: > Die analoge Filterung würde ich daher entweder nach dem Muxer anbringen, > wenn technisch nicht möglich kriegt halt jeder Kanal ein analoges > Filter. Bei aller Theorie, die hier bzgl. Spektren, Nyquest und Co. diskutiert wird, halte ich ein analoges Anti-Aliasing Filter HINTER dem Multiplexer praktisch für eine ziemlich dumme Idee!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.