Forum: Mikrocontroller und Digitale Elektronik AD Wandler Problem


von Stache (Gast)


Lesenswert?

Nun habe ich schon so viel mit den AVR's gemacht, MIDI, Programmer für 
29F040 usw. Aber mit einer einfachen Temperatursteuerung hapert es. Ich 
faß es nicht.
Beim 2333 habe ich Probleme mit dem AD-Wandler. Trotz richtiger 
Einstellung des ADC Prescaler, werden bestimmte Werte einfach 
weggelassen. Er überspringt sozusagen einige Stellen. Ich habe das 
Ergebnis auf 8 Bit reduziert (ror, ror usw.) und bekomme z.B. nach dem 
Wert 184 gleich die 192, anstatt die 185 usw..
Wer kann helfen?

von Steffen (Gast)


Lesenswert?

Das wird weniger am AD-Wandler liegen als an deinem Temp-Sensor.
Was verwendest du für einen?

von Lars (Gast)


Lesenswert?

Also ich habe einige Erfahrungen mit PT1000 welche ich ueber einen 
Instrumentenverstaerker (sozusagen ein "optimaler" OpAmp) an den A/D 
eines AVR gebe. Dabei ist es schon so ausgelegt das ich einen 
Temperaturbereich von -20 bis +120 Grad Celsius abdecke ueber den 
gesamten Wandlungsbereich.

Durch die Ungenauigkeit des A/D-Wandlers komme ich so bei 2 
aufeinanderfolgenden Messungen des gleichen Wertes nie auf das gleiche 
Ergebnis, selbst wenn ich 64 oder 128 Messungen in Folge ausfuehre und 
diese dann Mittele ergeben sich Schwankungen von 0.3 bis 0.8 Grad 
Celsius.

Ich verwende (und empfehle :) einen extra A/D-Wandler Chip mit 24Bit 
Aufloesung zu verwenden, der hat zwar leider eine Wandlerzeit von um die 
100ms, aber da es mir eher um die Genauigkeit als die Geschwindigkeit 
geht, kann ich damit leben.

von Stache (Gast)


Lesenswert?

Vielen Dank, es hat aber nichts mit dem Sensor zu tun. Bei einem 
einfachen Poti am Eingang fehlen auch einzelne Werte (und vor allem 
immer in dem selben Bereich), der Wandler springt sozusagen immer an der 
gleichen Stelle, auch bei Verwendung eines zweiten Potis oder einer 
anderen U-Ref. Da ich immer mit "hohen" Taktfrequenzen arbeite (8MHz), 
bin ich jetzt mal auf 4MHz herunter gegangen. Es wird besser, aber kann 
es denn daran liegen? Die Controller sind doch für 8 MHz ausgelegt. Beim 
4434 übrigens taucht das Problem nicht auf, aber den gibt es ja nicht 
mehr.
Eine Alternative wäre vielleicht ein Digitaltemperatursensor mit I2C 
Ausgang

von Michael Schänzler (Gast)


Lesenswert?

> bin ich jetzt mal auf 4MHz herunter gegangen. Es wird besser, aber kann es denn 
daran liegen?

Wenn es mit geringerem Takt besser wird, könnte es auch an 'Dreck' auf 
deiner Analog-Masse liegen. Wie sieht denn dein AGND aus (ditto für 
AVCC)?

Michael

von Stache (Gast)


Lesenswert?

Ja, habe ich auch schon überlegt, vielleicht probier' ich da mal noch 
was. Jetzt ist es wie folgt: Potimasse = Anschluß zur Außenwelt geht 
direkt zum Pin: AGND. Gleich am Chip ist ein Kondensator von 10nF(laut 
Datenblatt) zwischen AGND und AVCC. Danach geht der AGND- Leiterzug zum 
GND an einen zentralen Punkt (Programmierbuchse). Vielleicht ändere ich 
mal den Punkt?
Von AVCC geht ein Widerstand (100 Ohm) zu VCC. AVCC habe ich direkt mit 
AREF verbunden.

Übrigens beim 4434 hatte ich dieses Problem komplett über den 
ADC-Prescaler gelöst, da ja der ADC nur unter 200kHz richtig arbeitet.

von Siegfried (Gast)


Lesenswert?

Irgentwo in der AVR-Doku gibts einen Hinweis, das die Genauigkeit des 
AD-Wandlers mit steigender Taktrate abnimmt. Von den 12Bit bleiben dann 
u.U. nur noch 8 überig. Damit der Spannungsbreich stimmt, werden wohl 
die LSBs abgeschnitten.

Siegfried

von Thomas (Gast)


Lesenswert?

@Lars korrigiere doch mal deine @mail-adresse die stimmt nicht mehr.

von Jürgen Lang (Gast)


Lesenswert?

Hi!
Vielleicht hast Du wirklich den Oszillator für den AD-Wandler zu schnell 
eingestellt. Ich könnte mir vorstellen, daß deshalb vielleicht die 
Wandlungszeit für die 3 LSBs nicht ausreicht. Ich habe den Prescaler auf 
128 bei einem Quarz von 7,3 MHz gestellt. Es ist sogar das LSB stabil, 
obwohl ich nicht einmal die Versorgungsspannung für den AD-Wandler 
abgekoppelt habe. Eine andere Erklärung wäre, daß Dein 2333 kaputt ist.

Gruß, Jürgen

von Erwin Stache (Gast)


Lesenswert?

Ja, danke, jetzt mit 4MHz läuft die Sache auch ganz gut und vor allem 
für eine einfache Temperatur - Dreipunktregelung völlig ausreichend. Bei 
Gelegenheit werde ich mal noch ein paar andere 2333 testen.
Bei genaueren Sachen sollte man wohl dann doch einen externen Wandler 
nehmen.

von Lars (Gast)


Lesenswert?

(OT): korrigierte e-mail (muss .de statt .net  sein)

von Jürgen Lang (Gast)


Lesenswert?

Man kann übrigens den AVR auch während der Wandlung in den Sleep-Mode 
schalten. Dann wirken sich die Rechtecksignale der CPU nicht so auf das 
gemessene Signal aus. Wenn die Wandlung abgeschlossen ist, wacht er 
selbständig wieder auf. Der Nachteil ist allerdings, man kann 
währenddessen nichts machen.

von Thomas (Gast)


Lesenswert?

Hallo,

kann mir jemand mal nen externen A/D-Wandler erklären.

Wandelt der bei anliegender Spannung sofort um und aktualisiert den Wert 
immer wieder oder braucht er ein Startsignal oder soetwas.

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.