Hi. ich betreibe den Atmega8 mit interner 2,56 AREF am ADC, dazu noch ein 10nF folie gegen gnd. das ging auch bisher, aber plötzlich liegen an AREF nicht mehr 2,56 v sondern 2,60-2,64 v an. dadurch wird natürlich das meßergebnis entsprechend verändert. kann mir einer sagen warum das so ist und was man dagegen tun kann? vcc ist zwischen 4,95 und 5,15, und hat anscheinend keinen einfluß auf aref. gruß, jan
Sieh ins Datenblatt: Vref 2,3 -> 2,7 Volt. Die 2,56 V sind ein 'frommer Wunsch'.
blöd... :) muss ich halt die 2,56 V vom max6610 nehmen, die wirken recht konstant. gibts überhaupt konstantspannungsquellen mit dieser genauigkeit? muss ja eigenltich, was soll mir sonst eine auflösung von 10bit bringen... gruß, jan
Man muss unterscheiden: Die Spannung wird von AVR zu AVR streuen. Das ist die eine Sache. Wie stabil die dann beim Einzelnen AVR bleibt, in Bezug auf Temperatur und Langzeit, ist eine andere Sache. Ich vermute, dass letzteres so sein wird, dass auch die 10 Bit Auflösung Sinn machen, also Abweichung nur wenige mV. Vielleicht steht dazu ja was im Datenblatt. Dein obig angegebener Wert erscheint mir zu hoch. Vielleicht hast du ja ein anderes Exemplar von AVR benutzt. Du musst im Grunde jeden Prozessor kalibrieren. Winfried
wie können denn konstante und fehlerfreie 5,0V bzw 2,56V für Aref erzeugt werden? oder reicht es, wenn ich aref=vcc setze? da ja die 5V da konstant sein müssten.
Für ne Konstante Referenz gibt es einige Möglichkeiten. -Eine Z-Diode Billigste Methode mit mäßiger Stabilität in bezug auf Temperatur- und Belastungsdrift -Einen Spannungsregler Schon besser -Eine Präzisionsspannungsquelle wie zb. LM336 (5V 1%) oder LT1021DCN (5V 0.05%) oder....etc. Die beste Möglichkeit aber dann auch etwas Teurer je nach Ansprüche an Konstanz der Ausgangsspannung. Ich greife zur letzteren Möglichkeit wenn die Messergebnisse im vordergrund stehen denn wer mit Mist mißt mißt Mist ;-)
irgendwo hab ichs schon mal hier geschrieben, ziemlich gute Ergebnisse habe ich mit ICL8069 + LM358 erzielt. Der ICL als Referenzquelle über 6k8 an +5V (bringt ca. 1,25V, Bandgap), dann verstärken mit dem LM358. Damit kann man gut Referenzspannungen zwischen 1,25 und 4,096V erzeugen. Temperaturabhängigkeit beider Bauteile ist gegenläufig, gleicht sich zumindest teilweise aus. Ist immer noch ne Billiglösung. Klar, geht noch besser, aber dann wird die Referenz schnell teurer als der MC. Vcc als Referenz ist nicht so geeignet, erstmal sind die üblichen 5V-Regler auch nicht gerade Präzisionsteile, ausserdem sind Störungen drauf, kriegt man zwar ziemlich ausgebügelt, aber ums ausmessen der Regler kommt man nicht drumherum, Temperaturabhängigkeit ziemlich hoch. Mit LM317L habs ichs auch schon mal gemacht, Temperaturdrift wie bei 78L05.
@Crazy Horse >Ist immer noch ne Billiglösung. >Klar, geht noch besser, aber dann wird die Referenz schnell teurer als >der MC. Also Teuer muß ne Refffferenz nicht unbedingt sein. Den LM336 (5V 1%) gibt es selbst beim großen "C" schon für 1.7 Euronen zu erstehen.
Viele Wege führen nach Rom... Für die Praxis ausreichend behandelt ist das Thema hier: http://www.sprut.de/electronic/referenz/
Ja ,genau,da ist es schön erklärt. Den Link halte ich mal fest für den Fall wenn wieder einer fragt. THX
Nabend hatte ich auch schonmal erklärt? meine Atmels driften von Typ zu Typ. 2.6xV sind durchaus die Regel in der letzten Charge. Ich habe die Referenzspannung als Konstante im EEPROM. Dann nehm ich mein Zeuchs in Betrieb, messe die Referenzspannung und trage den abgelesenen Wert im EEPROM ein. Ich benutze den AVR, um u.A. Batteriespannungen zu messen. Sollte schon einigermaßen genau sein, weil ich 1zu16 runterteilen muss. Weil wir gerade dabei sind: Wenn ich von aussen eine genaue Spannung anlege, müsste ich doch "rückwärts intern" auf meine Referenzspannung schliessen können? Ich habe nämlich eigentlich garkeine Zeit, jedes Gerät in die Finger zu nehmen, um die Referenz zu messen und das im EEPROM abzulegen. (man kommt auch blöd ran). Ich und Mathe, wisst Ihr ja. Im moment rechne ich u= (u_ref/1024)*ADC(kanal0)*16. das funktioniert super. nach u_ref umstellen kann ja so schwer nicht sein, oder? u_ref=(u/1024)*ADC(kanal0)*16 ? (nicht schlagen) Gruß und danke AxelR. Das sind so die Momente, wo ich froh bin, das es hier auch "schlaue Kinder" gibt ;-))
Ich hab da: uref = ( u * 64 ) * ADC(Kanal0) raus... Und die rste Gleichung läßt sich auf: u= ( u_ref * ADC(kanal0) ) / 64 vereinfachen oder?
uref = ( u * 64 ) / ADC(Kanal0) natürlich... sorry :P
@AxelR
>>Im moment rechne ich u= (u_ref/1024)*ADC(kanal0)*16.
das funktioniert super.
Nur um die Verwirrung zu vergrößern: Muss das nicht durch 1023 sein,
weil doch der größte Wert (zum Beispiel 5V) nur 1023 liefert? Mit 1024
verrechnet würde nur 4.995 rauskommen.
Sven
Yep 1023 ist richtig denn der Wert 0 ist ja auch noch da also ..... Uref/2^n-1 für die Teilung. Wers nicht gleich versteht der kann auch mal einen 2 oder 3 Bit ADC annehmen um eine bessere Übersicht zu bekommen.
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.