mikrocontroller.net

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


Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jochen Müller (taschenbuch)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: Gast SPI (Gast)
Datum:

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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

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

Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oz zy (ozzy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johannes: entgültiges Zielsystem steht noch nicht fest, denke aber, es 
wird ein ATmega128...

MfG, Ozzy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.