Forum: Mikrocontroller und Digitale Elektronik Atmega 8: AD Wandler - 10 Bit wirklich nutzen


von Malte (Gast)


Lesenswert?

Hi zusammen,

ich habe mal eine Frage:

Ich habe eine Zeit/Temperatursteuerung gebastelt, die durch einen 
ATMEGA8 gesteuert wird.

Mir fehlt nur noch eine Kleinigkeit, nämlich die Auswertung der 
AD-Wandlung.

Ich habe den 10-Bit Wandler genutzt um die Spannung über dem Temp-Sensor 
zu messen, was auch funktioniert.

Die meisten lesen nun nur die oberen 8 Bit aus und stellen den Wandler 
auf leftshift oder sie nehmen nur die unteren 8 bit bei rightshift.

zur zeit tendiere ich auch dazu, nur die unteren 8 bit zu nehmen - aber 
was ist die eleganteste Möglichkeit die vollen 10 Bit zu nutzen? Ich bin 
mir nicht sicher, wie der Atmega8 10 Bit verarbeiten kann - es gibt doch 
nur 8 Bit register und die 16 Bit bestehen aus 2 a 8 Bit, oder?
Also muss ich immer getrennt rechnen?

Schön wäre ja, wenn ich die 10 Bit zusammen führen könnte, bequem damit 
rechnen den Wert irgendwie in 8 Bit caste, damit ich ihn auf dem LCD 
ausgeben kann...

Tipps?

Danke schonmal...

Malte

von STK50-Besitzer (Gast)


Lesenswert?

Ein AVR kann auch mit 16Bit (10 sind eine Untermengr von 16Bit) umgehen, 
wenn man es will...

von STK50-Besitzer (Gast)


Lesenswert?

Was vergessen: Guck mal nach dem ADLAR-Flag des AD-Wandlers.

von Kai G. (runtimeterror)


Lesenswert?

Seite 198: http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf
"If the result is left adjusted and no more than 8-bit precision is 
required, it is sufficient to read ADCH. Otherwise, ADCL must be read 
first, then ADCH, to ensure that the content of the Data Registers 
belongs to the same conversion."

Also einfach erst ADCL und dann ADCH einlesen - dann hast du die 10 Bits 
beieinander.

Gruß

Kai

von STK500-Besitzer (Gast)


Lesenswert?

>Also einfach erst ADCL und dann ADCH einlesen - dann hast du die 10 Bits
>beieinander.

Oder ADCW...

von clio (Gast)


Lesenswert?

Es ist Quatsch, bei einer absoluten Genauigkeit von 3 LSB mehr als 8 Bit 
zu benutzen.

von werner (Gast)


Lesenswert?

Woher kommt das immer? "Quatsch".

Ich finde das geht echt gut bis auf ein LSB. Auch 10 Bit.

Ich denke, man kann da viele oft aufgezählte "analoge" Fehler machen.

http://www.razyboard.com/system/morethread-wrd-ug1-und-u3-regeln-messen-grid-voltage-for-curve-tracers-wiesollichnurheissen-1542510-4247905-0.html

Ich bin zufrieden ;0).

Unter dem "Monsterlink" bei "Notizen"

mfg werner

von Dietmar E (Gast)


Lesenswert?

> Es ist Quatsch, bei einer absoluten Genauigkeit von 3 LSB mehr als 8 Bit
zu benutzen

Es ist nicht klar, in welcher Richtung der Wert abweicht (nach oben oder 
unten) und um welchen Betrag. Wenn man einfach die niedrigsten Bits 
wegwirft, kann man den Fehler noch vergrössern. Die bessere Lösung wäre 
IMHO, die vollen 10 Bit zu nehmen und das Zappeln mit einem digitalen 
Filter wegzurechnen.

von sechsmalzwei (Gast)


Lesenswert?

Ich habe Anwendungen, da lasse ich den 10Bit ADC des AVR mit 13bit 
Aufloesung laufen. Das geht auch shr gut. 256 Summationen ergibt eine 
Wurzel(256). 16 fache Verbesserung, das waeren dann 4 Bit. Ich werf 
davon einz weg. Bleiben noch 13 Bit.

von Patrick (Gast)


Lesenswert?

sechsmalzwei:
Wäre mit sowas vorsichtig, wenn das letzte Bit nicht näher am realen 
Wert liegt sondern nur Rauschen enthält (durch die ADC-Architektur 
bedingt) sind die lethten 3 Bit bei 13Bit auch nur aufsummiertes 
Rauschen. wenn man nur die Temperatur sehr genau meseen möchte so würde 
ich lieber einen externen 16Bit ADC nehmen (für die Temp tut´s so ein 
lamer ADxxxx alle mal), als auf Verbesserungen des Wertes mit Hilfe des 
Durchschnitts mehrerer Werte zu hoffen

von clio (Gast)


Lesenswert?

LOL wie bei meinem Digitaltermometer...Auflösung von 0.1° und eine 
Genauigkeit von +- 1°.

von Andreas W. (xlomx)


Lesenswert?

das rauschen nimmt beim aufsummieren nur mit wurzel(n) zu dein signal 
aber mit n. Also bekommt man schon eine höhere Auflösung.

zum 10 Bit ADW wenn man ihn sauber aufbaut hat er 10 Bit. Das kann man 
leicht mit einer batterie und einen Spannungsteiler prüfen. Ich kann 
damit die Bits einzeln einstellen. ganz sauber und nur in einen kleinen 
bereich zwischen 2 digits zappelt er zwischen diesen beiden. Wenn der 
ADW also linear arbeitet dann stimmen die einzellnen Bits. Ist nur die 
Frage nach dem Aufbau und der Quelle.

von Peter D. (peda)


Lesenswert?

sechsmalzwei wrote:
> Ich habe Anwendungen, da lasse ich den 10Bit ADC des AVR mit 13bit
> Aufloesung laufen. Das geht auch shr gut. 256 Summationen ergibt eine
> Wurzel(256). 16 fache Verbesserung, das waeren dann 4 Bit. Ich werf
> davon einz weg. Bleiben noch 13 Bit.

Das ist quatsch!

10 Bit bleiben 10 Bit, da helfen keine Pillen.

Die AVR-ADCs stehen wie ne 1, wenn die Eingangsspannung und die Referenz 
sauber sind.

Um mehr als 10 Bit zu erreichen, muß man auf die Eingangsspannung noch 
ein Dreieck oder Sägezahn addieren.

Mit Rauschen oder 50Hz-Brummen erreicht man auch Zwischenstufen, aber 
die sind dann natürlich nichtlinear.


Peter

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.