Forum: Mikrocontroller und Digitale Elektronik Feste Abtastrate bei AD-Wandlung?


von Oz z. (ozzy)


Lesenswert?

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

von Jochen M. (taschenbuch)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?

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.

von Johannes M. (johnny-m)


Lesenswert?

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...)

von Gast SPI (Gast)


Lesenswert?

mit einem geeigneten externen Wandler ist das durchaus möglich, die 
Datenrate schafft man mit Hardware-SPI. Notfalls eine kleine 
Assembler-Routine einbauen..

von Benedikt K. (benedikt)


Lesenswert?

Ja, sowas wie der ADS7822 ist schön. Den verwende ich gerne für ähnliche 
Anwendungen.

von Oz z. (ozzy)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?

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...

von Gast (Gast)


Lesenswert?

>... und die anschließend auf 2 Frequenzen überprüfen.

Wie sieht es mit analogen Filtern aus? Diese könnten u.U. weniger 
aufwendig sein.

von Oz z. (ozzy)


Lesenswert?

@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
Noch kein Account? Hier anmelden.