Hallo, ich werde ein Signal digitalisieren und muss da Entscheidungen treffen. Das Signal selbst (ohne Rauschen) geht von DC bis so 100 kHZ. Rauschen ist da auch drauf (ich weiß aber noch nicht wie sehr), aber nehmen wir mal weißes Rauschen mit sagen wir 10 mV Amplitude an. Das Signal selbst ist Unipolar zwischen 0 und 12 V. Verwendet man einen ADC mit 16 Bits ist ca. 0,2 mV eine Stufe (12 V/2^16). Das liegt also schon sehr weit im Rauschen, es werden also mehrere niederwertige (10 mV/0,2 mV = 50 sind zwischen 5 und 6 in binär) Bits rauschen. Weil ich auch mit der Datenrate zum PC haushalten muss stellt sich die Frage was sinnvoller ist: Schneller abtasten dafür mit weniger Bits oder langsamer und mit mehr Bits. Ich kann zwischen grob zwischen 10 Bits und 2,5 MSamples/s und 24 Bits und 1 MSample/s alle Kombinationen auswählen. Wenn ich noch vor der Übertragung zum PC z. B. Mittelwerte bilde sind auch höhere Abtastraten möglich. Die Frage: Wie entscheidet man wieviele Bits der ADC haben soll den man verwendet? Vielen Dank!
Du musst die mögliche Bandbreite bestimmen (ggf. zusätzlich durch die Schaltung begrenzen) und dann etwas mehr als das doppelte der Bandbreite als Abtastrate nehmen.
Gut, das ist mir schon klar, dass ich also mindestens mit etwas mehr als dem Doppelten abtasten muss, also hier mit etwas über 200 kHz Minimum. Weil mein Signal aber nicht periodisch ist und ich nicht abtaste um nur die Frequenz zu bestimmen hätte ich auch gerne möglichst viele Samplewerte. Die Frage ist eher wie man bestimmt wie viele Bits sinnvoll sind.
Je nachdem wie gut deine Schaltung ist kann ein Oversampling hilfreich sein um die Qualität des digitalen Signals zu verbessern. Dann wäre der Ansatz mehrere Messungen mit weniger Bits zu bevorzugen. Allerdings kannst du das eventuell ja auch direkt in einem MCU implementieren und die Datenrate zum PC gering halten. Durch Oversampling werden die am Ende aufgezeichneten Daten ja nicht mehr. Das Shannon-Nyquist Kriterium musst du hierbei natürlich trotzdem noch erfüllen. Aber das hast du ja im Prinzip selbst gesagt.
Normalerweise dimensioniere ich so, dass die letzten beiden Bits Rauschen sind. Dann kann man hinterher durch Mittelwertbildung die effektive Auflösung erhöhen. Also nimm irgendwas mit 3-4 Bit Rauschen und fertig. Was genau Du brauchst, wirst Du nur durch Testen herausfinden. Wir wissen ja nicht, was Du mit den Werten genau vorhast, welche Bandbreite das Rauschen hat etc...
Du verstehst auch mit dem Doppelten von was? Bestimme erst einmal die notwendige Abtastrate und was überbleibt nimmst Du dann für die Genauigkeit.
Chris F. schrieb: > Du verstehst auch mit dem Doppelten von was? Naja also das Signal (das echte Signal ohne Rauschen geht so bis 100 kHz), also muss ich mindestens mit dem Doppelten davon abtasten. Es geht im ein Transmissionselektronenmikroskop, unter der Probe sitzen quasi Photodetektoren, die gehen in einen Transimpedanzwandler und da kommt dann das Signal raus das ich digitalisieren soll. Gescannt/also mit dem Strahl über die Probe gerastert wird so mit 10 us/Pixel. Ist die Probe an einem Pixel also durchläsig und am nächsten nichtmehr, so ändert sich die von mit zu messende Spannung schlagartig innerhalb der 10 us von z. B. 10 V nach 1 V. Willem B. schrieb: > Allerdings > kannst du das eventuell ja auch direkt in einem MCU implementieren und > die Datenrate zum PC gering halten. Durch Oversampling werden die am > Ende aufgezeichneten Daten ja nicht mehr. Das stimmt, ich werde das im FPGA machen. Die Frage ist eben ob es besser ist mit weniger Bits aber schnell zu abzutasten oder nur langsam mit z. B. 500 kHz aber dafür 24 Bits. Mein Gedanke ist halt dass ich während das Mikroskop ein Pixel der Probe durchleuchtet sich die Intensität am Detektor eigentlich nicht ändert. Sampelt man für jedes Pixel einmal dann bekommt man einen Wert mit Rauschen. Sampelt man öfter kann man das Rauschen wegmitteln.
Gustl B. schrieb: > Das stimmt, ich werde das im FPGA machen. Die Frage ist eben ob es > besser ist mit weniger Bits aber schnell zu abzutasten oder nur langsam > mit z. B. 500 kHz aber dafür 24 Bits. Das ist eigentlich äquivalent wenn du richtig dezimierst. Stell dir nen SigmaDelta ADC vor: Der hat 1 Bit Auflösung, tastet dafür aber mir ner hohen Abtastrate ab (sagen wir 1MS/s). Dann wird dezimiert und es wird aus 1Bit pro µs zum Beispiel 24bit pro 24µs (sind etwa 41kS/s glaube ich). Der Vorteil besteht daraus dass die Rauschleistung des Quantisierungsrauschens in höhere Frequenzbereiche verschoben wird, wo du Sie leicht mit einem TP erster Ordnung wegfiltern kannst. Ich persönlich würde daher vorsichtig (denn ich kenne die genauen Projektparameter nicht) zu der schnellsten Abtastrate tendieren, die dein ADC noch mit fast maximaler Auflösung abtasten kann. Bei einem 24 Bit ADC so 22-23 Bit. Das Signalrauschen und das Quantisierungsrauschen mitteln sich dann im nachgeschalteten TP raus, aber das Quantisierungsrauschen in der relevanten Bandbreite ist niedriger weil sich die Rauschleistung verteilt.
Sascha_ schrieb: > Ich persönlich würde daher vorsichtig (denn ich kenne die genauen > Projektparameter nicht) zu der schnellsten Abtastrate tendieren, die > dein ADC noch mit fast maximaler Auflösung abtasten kann. Bei einem 24 > Bit ADC so 22-23 Bit. Na noch habe ich keinen ADC rausgesucht. Ich bin mir eben unsicher ob 24 Bits oder 20 da sinnvoll sind und ich nicht vielleicht lieber mit 12 Bits aber 10 MSamples/s abtasten sollte. > Das Signalrauschen und das Quantisierungsrauschen mitteln sich dann im > nachgeschalteten TP raus, aber das Quantisierungsrauschen in der > relevanten Bandbreite ist niedriger weil sich die Rauschleistung > verteilt. Das TP Filter, das muss ich dann aber selber noch nachschalten oder? Ich habe das alles leider nie gelernt und stehe jetzt vor dem Problem dass ich aus den vielen unterschiedlichen ADCs die es so zu kaufen gibt ein Modell raussuchen muss. In einem ersten Demoboard das ich baue werde ich wohl mehrere ADC Modelle testen.
Wenn dein Rauschen im Bereich 10 mV Amplitude hat und ein LSB bei 16 Bit ist 0,2 mV, dann bringt eine noch höhere Auflösung keinen Vorteil mehr. Wenn du das im FPGA auswertest, dann solltest du versuchen, vom A/D-Wandler eine möglichst hohe Sample-Rate zu bekommen und dann im FPGA Filtern. Ein weißes Rauschen kann man damit sehr gut abschwächen und dadurch die effektive Anzahl der Bits deutlich erhöhen. 16 Bit mit 1 MSPS oder schneller hört sich für mich sinnvoll an, 14 Bit wären vermutlich auch noch ausreichend, wenn das Signal sowieso schon so verrauscht ist. In so einem Fall ist eine hohe Abtastrate wichtiger als eine hohe Auflösung. Wenn du einen A/D-Wandler mit Parallel-Interface verwendest, gibt es noch wesentlich schnellere Wandler, da könnte man z.B. mit 20 MSPS bei z.B 14 Bit aufzeichnen und dann im FPGA so filtern, dass man wieder auf eine Datenrate kommt, die der PC gut verarbeiten kann.
Gustl B. schrieb: > Ist die Probe an einem Pixel also durchläsig und am nächsten > nichtmehr, so ändert sich die von mit zu messende Spannung schlagartig > innerhalb der 10 us von z. B. 10 V nach 1 V. Hallo Gustl, dann hast du aber kein Signal mit nur 100kHz Bandbreite. Und ist 10mV Rauschen RMS? Dann ist das Spitze-Spitze Rauschen vermutlich in der Größenordnung von so 100mVpp. Ich würde mal probieren mit 12 Bit so schnell wie möglich abzutasten. MfG egonotto
Johannes E. schrieb: > [...] wenn das Signal sowieso schon so > verrauscht ist. In so einem Fall ist eine hohe Abtastrate wichtiger als > eine hohe Auflösung. Genau solche Aussagen wollte ich hier hören in dem Thread, vielen Dank! Ja gibt noch viel schnellere ADCs, das weiß ich, aber ich brauche am Ende 9 davon die gleichzeitig 9 solche Signale abtasten. Wenn die jeweils ein Parallel-Interface haben wird es schnell knapp mit den FPGA IOs (da muss ja auch noch anderes Zeug ran). Ich werde wohl ADCs mit SPI Interface verwenden. egonotto schrieb: > dann hast du aber kein Signal mit nur 100kHz Bandbreite. Und ist 10mV > Rauschen RMS? Dann ist das Spitze-Spitze Rauschen vermutlich in der > Größenordnung von so 100mVpp. > > Ich würde mal probieren mit 12 Bit so schnell wie möglich abzutasten. Das ist auch eine brauchbare Antwort, Danke! Wie geschrieben weiß ich noch nicht wie stark das rauscht, die 10 mV waren nur ein Beispiel, gut möglich, dass es viel stärker rauscht. Genaueres kann ich ab nächstem Mittwoch sagen, da darf ich mal ein gutes Oszi ranhängen. Welche Bandbreite hat mein Signal dann? Also wenn das Mikroskop beim Scannen von einem zum nächsten Pixel geht, dann kann das schon ordentlich große Sprünge im Signal gehen, aber für die Dauer eines Pixels sollte die Spanung dann relativ konstant sein, nur eben mit Rauschen drauf.
egonotto schrieb: > dann hast du aber kein Signal mit nur 100kHz Bandbreite. sobald er das begriffen hat, findet er die Lösung auf Anhieb selber :D
Schon klar, schneller sampeln aber: Wieso eigentlich? Das Mikroskop ist ja für 10 us bei jedem Pixel. Also reicht es doch wenn ich innerhalb dieser 10 us dieses jeweilige Pixel einmal messe. Dann geht es zum nächsten Pixel und das messe ich dann wieder einmal. Wo wäre da der Fehler? Ausser dass man dann nur einen Wert je Pixel bekommt und da irgendein Rauschen drauf ist das man nicht wegmitteln kann.
Gustl B. schrieb: > Das TP Filter, das muss ich dann aber selber noch nachschalten oder? Ich > habe das alles leider nie gelernt und stehe jetzt vor dem Problem dass > ich aus den vielen unterschiedlichen ADCs die es so zu kaufen gibt ein > Modell raussuchen muss. In einem ersten Demoboard das ich baue werde ich > wohl mehrere ADC Modelle testen. FIR; digitaler Filter. In nem FPGA sehr einfach umzusetzen, einfach in Matlab die Koeffizienten geben lassen und dann das "Blockschaltbild" eines FIR nachbauen. Bei dem was ich jetzt gelesen habe, hat dein Signal vermutlich Frequenzanteile bis in den MHz Bereich hinein und ein nicht zu unterschätzendes Rauschen (wobei man das ggf. mit analogen, aktiven Tiefpassfiltern bekämpfen sollte weil das nunmal praktisch immer zu Aliasing führt, egal wie schnell man abtastet). Meine Herangehensweise wäre: - Signal erstmal an einen Spektrumanalysator und ein Oszi hängen - Herausfinden welche Amplitude und Bandbreite dein Nutzsignal hat. So wie ich das verstanden habe, ist diese 10V 1V Schaltflanke wichtig. - TP 2. Ordnung bauen der das Signal vorm ADC erstmal bandbeitenbegrenzt - ADC wählen der ausreichende Samplingrate und Auflösung bietet Der ADC Baustein selbst ist eigentlich für den Erfolg des Projekts ein eher unwichtiger Teil, was vor dem ADC kommt ist entscheidend. Selbst der beste ADC haut dir fiese Aliasing Artefakte rein, wenn du ein verrauschtes, nicht bandbreitenbegrenztes Signal direkt draufgibst. Um das entstehende Quantisierungsrauschen noch weitestgehend zu unterdrücken, würde ich dann einen Sigma Delta Wandler mit 16-24 Bit einsetzen der mit mindestens 500kS/s abtastet. Die meisten käuflich zu erwerbenden Bausteine machen die Dezimierung schon selbst, du kannst mit einem FPGA natürlich die Sigma Delta Wandlung auch selbst machen. Brauchst du nur nen Komparator für. Son FPGA ist ja sehr leistungsfähig wenn es um repetetive Aufgaben geht, diese Leistungsfähigkeit würde ich versuchen einzusetzen.
Sascha_ schrieb: > Der Vorteil besteht daraus dass die Rauschleistung des > Quantisierungsrauschens in höhere Frequenzbereiche verschoben wird, wo > du Sie leicht mit einem TP erster Ordnung wegfiltern kannst. Ja, so reduziert man das Quantisierungsrauschen, nicht aber das Rauschen, das In-Band im Signal vorhanden ist. Er hat aber einen 16Bit- oder 24Bit-Wandler zur Verfügung und da spielt der Anteil des Quantisierungsrauschens keine Rolle mehr.
Gustl B. schrieb: Ausser dass man dann nur einen Wert je Pixel bekommt und > da irgendein Rauschen drauf ist das man nicht wegmitteln kann. "irgendein Rauschen" wird dann zu "irgendein Messfehler".
HildeK schrieb: > Sascha_ schrieb: >> Der Vorteil besteht daraus dass die Rauschleistung des >> Quantisierungsrauschens in höhere Frequenzbereiche verschoben wird, wo >> du Sie leicht mit einem TP erster Ordnung wegfiltern kannst. > > Ja, so reduziert man das Quantisierungsrauschen, nicht aber das > Rauschen, das In-Band im Signal vorhanden ist. > Er hat aber einen 16Bit- oder 24Bit-Wandler zur Verfügung und da spielt > der Anteil des Quantisierungsrauschens keine Rolle mehr. Ja, auf das Inband Rauschen bin ich mittlerweile eingegangen. Das muss natürlich weg.
Sascha_ schrieb: > FIR; digitaler Filter. In nem FPGA sehr einfach umzusetzen, einfach in > Matlab die Koeffizienten geben lassen und dann das "Blockschaltbild" > eines FIR nachbauen. Das hab ich schonmal gemacht. War nicht sonderlich schwer. Sascha_ schrieb: > - Signal erstmal an einen Spektrumanalysator und ein Oszi hängen Das ist geplant für nächste Woche. Sascha_ schrieb: > - Herausfinden welche Amplitude und Bandbreite dein Nutzsignal hat. So > wie ich das verstanden habe, ist diese 10V 1V Schaltflanke wichtig. Also die Flanke hat natürlich hohe Frequenzanteile aber mir ist nicht klar ob die selber wichtig ist. Es wird von Pixel zu Pixel gerastert und während eines Pixels ist die Spannung eher stabil. Also wie Gleichspannung mit Rauschen. Wenn ich zu jedem Pixel die Spannung messe (das wird ja sowas wie eine Helligkeit jedes Pixels) dann ist die Flanke doch egal. HildeK schrieb: > Er hat aber einen 16Bit- oder 24Bit-Wandler zur Verfügung und da spielt > der Anteil des Quantisierungsrauschens keine Rolle mehr. Noch habe ich keine Wandler. Ich kann mir beliebige kaufen. Vielleicht auch einen 14 Bit mit dann 5 MSamples/s. Sascha_ schrieb: > "irgendein Rauschen" wird dann zu "irgendein Messfehler". Exakt. Daher ist es für mich logisch bei jedem Pixel das Signal öfters abzutasten und so das Rauschen (das auf dem Signal selbst) durch Mittelung etwas kleiner zu bekommen.
Sascha_ schrieb: > Ja, auf das Inband Rauschen bin ich mittlerweile eingegangen. Das muss > natürlich weg. Das ist aber unklar ob ich das wegbekomme. An den Geräten und Detektoren selbst kann ich nichts machen.
Gustl B. schrieb: > Noch habe ich keine Wandler. Ich kann mir beliebige kaufen. Vielleicht > auch einen 14 Bit mit dann 5 MSamples/s. Vielleicht bin ich schon zu lange aus dem Thema draußen. Du hast ja oben gezeigt, dass 14Bit reichen müssten. OK, kann ich zustimmen. Warum dann aber mit 5MS/s arbeiten, wenn die Bandbreite des Signals nur 100kHz beträgt? Um einen einfacheren Eingangstiefpass haben zu können? Wenn ja, dann hast du natürlich den Rauschanteil zwischen den 100kHz und der ausreichenden Sperrdämpfung des 'einfachen' TP nachher auch mit im digitalisierten Signal. Natürlich kannst du dann mit einem digitalen Filter und einer Dezimierung noch nacharbeiten, das bei vorhandenen Ressourcen (FPGA) durchaus sinnvoll sein kann. Sollte allerdings keine digitale Filterung im Fokus sein, dann würde ich mit einem steilen Eingangstiefpass arbeiten und die Abtastfrequenz so klein wie möglich halten - auch in Hinblick auf die Tatsache, dass der Datenpfad zum PC limitiert ist.
Dann ist halt die Frage: Lieber einen analogen Tiefpass am Eingang oder Werte mitteln? Ich bin für die Mittelung und zwar weil: Wenn das Mikroskop mehrere Pixel (im Beispiel hier 3) nacheinander scannt, dann ist die Ausgangsspannung grob wie eine Treppe, also die Werte sind dann nur als Beispiel (bei 4 Samples/Abtastungen je Pixel) mit etwas Rauschen: (vorherige Pixel) ..., 100, 98, 102, 103, 180, 200, 195, 198, 154, 151, 149, 153, ... (weitere Pixel) Ein Tiefpass macht da die Kanten weg, aber bei der Mittelung kann ich eben jeweils genau die vier Werte eines Pixels zusammenzählen. Das ist dann also kein gleitender Mittelwert. Aus meiner Sicht wird das Ergebnis dann besser wie wenn ich vorher ein analoges Filter habe und nur einmal je Pixel abtaste.
:
Bearbeitet durch User
Für ein gutes Ergebnis sollte man sowohl analog als auch digital filtern. Durch die Kombination mit digitaler Filterung hinter den ADC kann man das analoge Filter einfacher auslegen, ganz einsparen kann man es aber nicht. Nur analog filtern tut man sich heute (seit etwa 1990) eigentlich nicht mehr an, wenn es nicht besonders schnell sein muss. Sigma delta Wandler haben die digitale Filterung schon drin - besser kriegt man es im FPGA auch nicht unbedingt hin. Man könnte also tatsächlich auch einen SD ADC mit 100 kHz Abtastrate (halt so schnell wie die Pixel reinkommen sollten) nutzen. Wenn man schon so viel Rauschen hat, wären auch 16 Bit Auflösung ausreichend. Ein Grund ggf. doch schneller abzutasten wäre, wenn man die Filterkurve individuell anpassen will da sollten dann etwa 500 kHz, also 5 mal mehr als die Zieldaten ausreichend sein. Mit einem abtastenden ADC (z.B. SAR) muss man dagegen schneller abtasten. Also eher so 1-10 MHz und dann digital filtern, denn sonst wird das analoge anti-aliasing Fitler zu aufwändig. Mitteln wäre dabei ein möglicher, aber nicht unbedingt guter Filter. Eine 16 fache Überabtastung entspricht 2 zusätzlichen Bits an Auflösung - entsprechend geringer darf die Auflösung also ausfallen. ggf. würden auch schon 12 Bit ausreichen. Die schnellere Abtastung macht aber das Interface aufwändiger.
Gustl B. schrieb: > Dann ist halt die Frage: Lieber einen analogen Tiefpass am Eingang > oder > Werte mitteln? Beides. Analoger Anti-Aliasing Filter ist sowieso nötig. Auf Analogseite hast du die Möglichkeit, entweder NUR AAF zu betreiben, dann wird der Analogfilter eher einfach. Im krassesten Fall ein RC Glied. Dann musst du allerdings stark oversamplen. Oder du machst auf der Analogseite einen aktiven Tiefpass zweiter Ordnung gefolgt von einem Integrator (Optimalfilter gegen Rauschen) und kannst dann relativ langsam samplen. Bei Verwendung eines FPGA würde ich das Zwischending "AAF 2.Ordnung + Oversampling" wählen. Der hat genug Rechenleistung um digital zu machen, was der Integrator analog tun würde.
Bei einer Grenzfrequenz im Bereich 500 kHz für den analogen Filter kann man auch bereits an LC Filter denken. Auch der TIA für den Sensor kann bereits einen Teil der Filterfunktion übernehmen.
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.