Moin, ich möchte gerne ein Signal am Eingang des AD-Wandlers auf eine Frequenz testen. Dafür möchte ich 128 AD-Messungen durchführen, und diese in einem Array speichern, um hinterher in Ruhe die Analyse durchzuführen. Die Abtastrate soll dabei ca. 60kHz betragen. Meine Frage nun an Euch: wie würdet Ihr das umsetzen??? Ich dachte zuerst an einen Timer, der Singe-Conversions anstößt. Wenn die Wandlung fertig ist, geht es in den ADC-Interrupt, wo die Daten im Array gespeichert werden. Würdet Ihr das auch so machen? Dabei stelle ich aber gerade fest, dass ich wohl mit dem Atmega keine Abtastrate von 60khz erreichen werde... Wenn ich eine CLK von 14.7456Mhz habe, und den Prescaler auf 128, also max setzte, habe ich einen ADC-Takt von 115.2Khz. Im Single-Conversion Mode braucht er aber 25 Takte. Wären also 217us, wobei ich eigentlich alle ca. 17us ein Ergebnis bräuchte... Selbst, wenn ich einen OSC von 11.0592Mhz nehme, und den Prescaler auf 64 setze, dann habe ich eine Geschwindigkeit von 172.8Khz. Und selbst im Freerun-Modus mit nur 12 Takten komme ich noch auf ca. 70us. Also was machen? Externen ADC mit höherer Rate, und über SPI anschließen, um die Geschwindigkeit hinzubekommen? Könnte das was helfen? MfG, und vielen Dank, Ozzy
Ozzy, Und wirst Du auch verraten, welchen Frequenzbereich zu überhaupt erfassen willst, und welche Genauigkeit dabei verlangt wird? Willst Du nur die Frequenz ermitteln oder auch die Kurvenform? Fragen über Fragen... Jochen Müller
Christoph O. wrote: > Im Single-Conversion Mode braucht er aber 25 > Takte. Wären also 217us, wobei ich eigentlich alle ca. 17us ein Ergebnis > bräuchte... Nö, der braucht 13 Takte, nur für die jeweils erste Wandlung nach dem Einschalten (setzen von ADEN) bzw. nach einem Kanalwechsel braucht er 25. Und das Ergebnis dieser ersten Wandlung sollte man sowieso wegschmeißen. Wenn man das ADEN gesetzt lässt und nur auf einem Kanal misst, dann sind es 13 Takte. Und je nachdem, was für einen "ATMega" Du hast, kann der ADC auch Auto-Trigger, wobei der ADC hardwaremäßig z.B. von einem Timer "angestoßen" werden kann. Und ja, 60 kS/s sind bei voller Auflösung mit einem AVR-ADC nicht erreichbar (was aber auch im Datenblatt ganz vorne steht: max. 15 kS/s bei 10 Bit). Wenn Du nur 8 Bit Auflösung brauchst, kannst Du aber i.d.R. mit der Taktrate höher gehen.
Christoph O. wrote: > Also was machen? Externen ADC mit höherer Rate, und über SPI > anschließen, um die Geschwindigkeit hinzubekommen? Könnte das was > helfen? Wenn der externe ADC schnell genug beim Wandeln ist und Dein AVR schnell genug bei der Verarbeitung der Ergebnisse, dann könnte das gehen... Allerdings ist eine serielle Übertragung per SPI da auch wieder eher hinderlich (60 kS/s und bei jedem Sample 16 Bit Daten schieben macht eine erforderliche mindest-Datenrate von 1 MBit/s, und das ohne großartige Totzeiten...)
mit einem geeigneten externen Wandler ist das durchaus möglich, die Datenrate schafft man mit Hardware-SPI. Notfalls eine kleine Assembler-Routine einbauen..
Hi, danke für Eure Antworten. @Jochen Müller: ich will Daten aufnehmen, und die anschließend auf 2 Frequenzen überprüfen. Die Frequenz mit dem höheren Wert hat gewonnen, der Rest interessiert mich nicht... Danke für den Tip für den AD-Wandler. I2C kommt ja nicht in Frage wegen der geringen CLK. @Johannes M.: Wenn ich nur 8 Bit nehme, und die rechts ausrichten will (ich erwarte nur kleine Werte am Eingang): auf wieviel khz könnte man dann maximal gehen??? MfG, und vielen Dank noch einmal, Ozzy
Christoph O. wrote: > @Johannes M.: Wenn ich nur 8 Bit nehme, und die rechts ausrichten will > (ich erwarte nur kleine Werte am Eingang): auf wieviel khz könnte man > dann maximal gehen??? Schau doch einfach mal ins Datenblatt Deines immer noch nicht näher spezifizierten AVR unter "ADC Characteristics". Da steht eine Tabelle mit den Eckdaten des ADC, u.a. mit der "absolute accuracy" für unterschiedliche Taktfrequenzen...
>... und die anschließend auf 2 Frequenzen überprüfen.
Wie sieht es mit analogen Filtern aus? Diese könnten u.U. weniger
aufwendig sein.
@Johannes: entgültiges Zielsystem steht noch nicht fest, denke aber, es wird ein ATmega128... MfG, Ozzy
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.