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
Was vergessen: Guck mal nach dem ADLAR-Flag des AD-Wandlers.
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
>Also einfach erst ADCL und dann ADCH einlesen - dann hast du die 10 Bits >beieinander. Oder ADCW...
Es ist Quatsch, bei einer absoluten Genauigkeit von 3 LSB mehr als 8 Bit zu benutzen.
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
> 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.
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.
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
LOL wie bei meinem Digitaltermometer...Auflösung von 0.1° und eine Genauigkeit von +- 1°.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.