mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit eines ADCs erkennen


Autor: A. R. (redegle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnt Ihr mir erklären, wie man die Geschwindigkeit eines ADCs 
herrausfindet?
Ich wüsste gerne, wie viele Analogwerte mir der ADC eines Atmega2560 pro 
Sekunde liefern kann.

http://www.atmel.com/dyn/resources/prod_documents/...

Im Datenblatt steht:

>By default, the successive approximation circuitry requires an input clock 
>frequency between 50kHz and 200 kHz.

>A normal conversion takes 13 ADC clock cycles.

Stimmt folgende Überlegung?

Maximaler Takt --> 16Mhz
ADC Prescaler --> 128
Frequenz --> 16Mhz/ 128 = 125kHz
Conversation --> 125kHz / 13 = 9615,88Hz

Stimmt es, dass ich maximal 10000 Werte pro Sekunde einlesen kann?
Wenn ja, wie würde man mehr schaffen?

Zur Anwendung:
Ich möchte die Position eines sich drehenden Objektes erkennen.
Hierzu existieren 2 Sensoren, welche ein analoges Ausgangssignal in 
Abhängigkeit der Position liefern.
Es soll jedes Grad fest erkennt werden.
Bei einer Drehfrequenz von 50Hz sind hierzu 50*360 Samples pro Sekunde 
notwendig.
Das sind 18kHz.
Damit die Positon auch genau erkannt wird bräuchte ich ca. eine 
Samplefrequenz von 100kHz.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. R. schrieb:
> Stimmt es, dass ich maximal 10000 Werte pro Sekunde einlesen kann?

ja.

> Wenn ja, wie würde man mehr schaffen?

Du kannst die Frequenz des ADC hochsetzen, sprich den Vorteiler kleiner 
machen.
Allerdings verlierst du durch "zu" hohe Frequenzen Genauigkeit, mehr als 
8 bit sind da dann nicht mehr drin, das heißt da ists nichts mehr mit 
aufs Grad genau auflösen (360 Stufen).
:-)

Autor: A. R. (redegle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich befürchtet.
Bei 8Bit Auflösung könnte ich nen Vorteiler von 16 einstellen.
Somit käme ich auf 1Mhz und 62,5kHz.

Die Berechnung der Auflösung ist in meinem Fall etwas komplizierter, da 
die Position durch verrechnen 2er analoger Werte geschieht.
Bei 8Bit währe eine minimale Auflösung von 1,6° möglich.
Bei 10Bit währen es 0,4°.

Autor: Balduin T. (balduin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf Seite 275 steht ... 15ksps bei max Auflösung.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. R. schrieb:
> Wenn ja, wie würde man mehr schaffen?

reduziere Die Taktfrequenz auf 12,8MHz und verwende Prescaler = 64.
-> 200kHz ADC-Clock ergibt die maximale Wandelrate.

A. R. schrieb:
> Damit die Positon auch genau erkannt wird bräuchte ich ca. eine
> Samplefrequenz von 100kHz.

nimm einen anderen Prozessor. z.B. ATXMEGA oder DSPIC.

Gruß Anja

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also hab grad noch im DB vom mega32 (zufällig) angeschaut, da heists mit 
1MHz ADC-Takt gibts eine Ungenauigkeit von 3 LSB, das ist grad an der 
Kante.
(1024 / 3 = 341)
Müsstest die Werte mal bei deinem uC nachschauen, vielleich sind sie ja 
besser geworden (da neuer).
:-)

Autor: A. R. (redegle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin leider noch etwas unerfahren, was DAC-Wandler anbelangt.
Auf S. 379 steht:

Single Ended Conversion
VREF = 4V, VCC = 4V,
CLKADC = 1 MHz
Noise Reduction Mode
3 LSB

Das hieße dann, dass ich zwar 62500 Samples pro Sekunde mit einer 
Auflösung von 10Bit einlese, aber nicht gewährleistet wird, dass die 
letzten 3 Bits stimmen.

Z.B. 5V / 2^10 --> 4,88mV pro Bit.
Also könnte der reale Wert um ca. 15mV von meinem eingelesenem Wert 
schwanken.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. R. schrieb:
> Das hieße dann, dass ich zwar 62500 Samples pro Sekunde mit einer
> Auflösung von 10Bit einlese, aber nicht gewährleistet wird, dass die
> letzten 3 Bits stimmen.

Nicht die letzten 3 Bit, das wär ja eine Verschlechterung um Faktor 8, 
sondern 3 mal das letzte Bit :-)

> Z.B. 5V / 2^10 --> 4,88mV pro Bit.
> Also könnte der reale Wert um ca. 15mV von meinem eingelesenem Wert
> schwanken.

Ja, das passt.

Autor: A. R. (redegle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK danke.
Damit habt Ihr mir geholfen.
Ich dachte, man müsste bei einer höheren Frequenz die Genauigkeit 
umstellen.

>Nicht die letzten 3 Bit, das wär ja eine Verschlechterung um Faktor 8,
>sondern 3 mal das letzte Bit :-)

War etwas schlecht ausgedrückt.

Habe gerade ein STK600 vor mir und ein Testprogramm auf einen Atmega2560 
überspielt.
Bei 1Mhz Takt fängt das letzt Bit an zu flackern.
Werde es also riskieren.

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.