Hallo z'samme, mein ATmega ärgert mich gerade. Ich habe hier eine Ladeschaltung für NiMH-Akkus (sehr lose an die AVR-Appnote angelehnt - hat jetzt einen "richtigen" Regler) von einem ATtiny auf den ATmega übernommen. Der erste Stolperstein in Form des echt differenziellen ADCs - negative Differenzen werden als Zweierkomplement ausgegeben - ist umgangen, ein Workaround in der ADC-Routine macht aus den Werten der Differenzeingänge bei >0x1FF eine Null und verdoppelt ansonsten den Messwert, um das Programm vom Tiny erstmal weiter verwenden zu können. So weit so gut, die Spannungsmessungen mittels der Single-Ended-Eingänge 0 und 2 funktioniert auch, aber wenn ich den Strom über MUX=9, d.h. (ADC1-ADC0)x10 messe, bekomme ich ca. 30% zu niedrige Werte, und das anscheinend auch nicht mal linear. Nun ist mir aufgefallen, dass im DB steht, bei differenziellen Messungen dürfe die AREF max. AVCC-0,2V sein. Weiss jemand, ob das mit internen Schaltungen des ATmega zu tun hat, oder soll das lediglich bedeuten, dass der Differenzverstärker nur bis 0,2V an die AVCC herankommt und die AREF deshalb diesen Wert nicht überschreiten darf, wenn der volle Wertebereich bis 0x1FF ausgeschöpft werden soll? Wenn jemand hier Erfahrungen hat und mir bestätigen kann, dass eine AREF gleich AVCC bei differenzieller Messung grundsätzlich zu Fehlern im gesamtem Messbereich führen kann, fädel' ich morgen ein Referenz-IC auf die Platine ;)
Wie immer muss man ein Problem erstmal beschreiben, um es zu erkennen. Die Uhrzeit fordert ihren Tribut - durch das blinde Übernehmen des Codes vom mit internem RC-Takt laufenden Tiny auf den mit 16MHz Quarz betriebenen ATmega wurde der ADC mit 8MHz gefüttert - fand er nicht so toll. Er liegt immer noch 4% über dem Soll, aber da sehe ich mal großzügig drüber hinweg - immerhin sind 4 SMD-Widerstände (1%) und ein 1W-Metallfilmwiderstand (auch 1%) "im Weg".
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.