Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeit eines ADCs erkennen


von A. R. (redegle)


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/doc2549.PDF

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.

von Floh (Gast)


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

von A. R. (redegle)


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

von Balduin T. (balduin)


Lesenswert?

Auf Seite 275 steht ... 15ksps bei max Auflösung.

von Anja (Gast)


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

von Floh (Gast)


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

von A. R. (redegle)


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.

von Floh (Gast)


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.

von A. R. (redegle)


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.

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.