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?
Das wird weniger am AD-Wandler liegen als an deinem Temp-Sensor. Was verwendest du für einen?
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.
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
> 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
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.
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
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.