Hallo. Ich möchte eine Temperatur mit meinem ATMega64 messen. Ich habe dazu einen Spannunsgteiler aufgebaut mit einem 2,7k Ohm Widerstand und einem KTY-81. Ich messe die Spannung die über dem KTY-81 abfällt. Ich habe zunächst auf einen Experimentierbrett mit einem ATMega32 gearbeitet und dort den ADC programmiert und konnte die richtige Temperatur messen (Ausbage über ein LCD, Temperaturvergleich mit anderem digitalen Messgerät). Jetzt habe ich meine Platine fertig und arbeite mit einem ATMega64. Nach der Einbindung meiner Routinen für den ATMega32 ist die gemssene Temepratur um ca. 5-8°C zu hoch. Ich habe schon alle notwendigen Register überprüft und entsprechende Änderungen durchgeführt. Ohne Erfolg. Ist der ADC eventuell beschädigt? Kann mit jemand einen Tip geben? Danke euch. Stefan
Interne Referenz von 2,56V. VREF ist über Kondensator gegen GND gepuffert.
Hallo, die interne Referenz ist zwar recht stabil, hat aber durchaus nicht unbedingt 2,56V. Im Datenblatt steht der Bereich, den sie exemplarabhängig haben kann. Gruß aus Berlin Michael
Ist die Temp. immer genau den selben wert zu hoch gemessen? (also stabiler Offset?) Wenn ja: Wie genau ist der Widerstand? Lösung: Differenz entgegenrechnen!?! ;)
Das stimmt, jedoch hatte ich am ATMega32 auch die interen Referenz verwendet ohne dass die Temperatur wesentlich zu hoch war. Stefan
Ob der Offset stabil ist oder nicht, weiß ich nicht, da ich bisher noch keine Temperaturrampe gefahren bin und gemessen habe. Und wo könnte denn so ein Offset herkommen?
>Und wo könnte denn so ein Offset herkommen?
Von der internen Referenz !
Schau doch einfach mal ins Datenblatt, da steht drin wie groß der
Offset ist.
Wenn du als Referenz die selbe Spannung verwendest, die auch der KTY
Spannungsteiler bekommt, dann kompensiert sich der Fehler.
Ein Beispiel:
Spannung am KTY ist halbe Betriebsspannung, also 2,5V
am ADC liegen also 2,5V an, der ADC hat 5V als Referenz. Der gemessene
Wert liegt also bei halbem Werte Bereich, also bei etwa 512.
Jetzt bricht die Betriebsspannung zusammen, beträgt nur noch 3V
Am KTY liegen jetzt 1,5V an, der ADC bekommt aber auch nur 3V, der
gemessene Wert liegt also wieder in der Mitte, etwa bei 512.
Lt. Datenblatt kann int. Ref. zwischen 2,3V und 2,7V liegen, das ist u. U. schon ein Haufen Holz. Ohne Kennntnis der genauen Referenz ist natürlich jede Messung für die Katz. Du könntest natürlich die Ref. so "hinschätzen" das deine Messung stimmt, sofern nicht andere Fehler noch eine Rolle spielen. Schon mal dran gedacht, sich eine Präzisions-Referenz zu besorgen? Ist im ersten Moment a bisserl teuer, kann man aber immer wieder gebrauchen. Alles hängt natürlich von deinen Genauigkeits Vorstellungen ab.
Hallo, die Lösung ist, daß Du eine Referenzmessung für die Referenzspannung durchführst: Bedigung ist, daß man eine echte Referenz im System hat (z.B. 5V Spannungsregler. dann geht das so: 1) Du nimmtst für eine Messung die 5V als Referenzspannung und schaltetst die AVR-Referenz auf einen AD-Wandler durch 2) Der gewandelte AD-Wert sei ADWrefmess 3)Du schaltest auf die AVR-Referenz wieder um 4) danach kannst Du mit dem AD-W die Spannungen messen: Uad=(ADW*ADWrefmess*VccAVR)/(ADWmax*ADWrefmessmax) Dabei ist ADW: der AD-Wert der Wandlung ADWrefmess: Das Ergebnis der Referenzmmessung von 2) VCCAVR: Die Versorgungsspannung des AVR, die bei 1)und 2) als AVR-AD-Referenzspannung genutzt wirde ADWmax: der maximale Wert, den eine Wandlung ausgegeben werden kann: Bei 8 Bit: 255; Bei 10 Bit: 1023 ADWrefmessmax: der maximale Wert, der bei der Referenz-Wandlung (bei 1) und 2)) ausgegeben werden kann: Bei 8 Bit: 255; Bei 10 Bit: 1023 Gruß Wolfgang -- www.ibweinmann.de Brushless Motor Control
Vielen Dank für Eure Tips. Ich werde mal einiges versuchen und bei weiteren Problemen wieder zurück kommen. Also vielen Dank nochmal. Stefan
Sind die REFS0 und REFS1 - Bits benauso wie beim Mega32? (Register ADMUX)? Bin da gestern auch drüber gestolpert, hatte nach der Portierung versehentlich die Referenz-Betriebsart 'Reserved' eingestellt, brachte einen ähnlichen Effekt!
REFS0 und REFS1 sin didentisch zu ATMega32 genau wie der Rest des ADC. Hab meinen Fehler bisher jedoch nicht gefunden.
Die Ungenauigkeit der internen REF ist egal, denn sie kürzt sich in dieser Anwendung raus, wenn man die Beschaltung geschickt genug wählt. An welcher Spannungsquelle hast Du den Spannungsteiler angeschlossen? Wichtig ist, dass der Spannungsteiler von derselben Spannungsquelle gespeist wird, aus der der ADC auch seine Referenz bezieht. Die Höhe der Spannung ist egal. Sinnvoll ist, den Spannungsteiler an AVCC anzuschliessen und AVCC dann als Referenz zu wählen. Entscheidend ist, dass Dich das Verhältnis von R-kty und R-2k7 interessiert. Gruß, Stefan
Der Anschluss des Spannungsteilers war wirklich zunächst an einem anderen Stromkreis angeschlossen (GND ist für beide Stromkreise gleich). Aber auch nach dem Anschluss des Spannungsteilers an die gleiche Spannung VCC des Controllers brachte keine Änderung. Da ich die Fehlersuche nun satt hatte, habe ich den Controller getauscht. Und siehe da, der neue mist die Spannung richtig und somit auch die Temperatur. Fehler behoben. Frag ich mich nur, wie der ADC bechädigt werden kann? Gruß Stefan
Hast du den eingang gegen Überspannung abgesichert? Also mind. den Widerstand reingemacht damit die internen Dioden nicht überlastet werden? Vielleicht ist das ganze auch bei der AVCC passiert.
Nein hab ich nicht vorgesehen!? Sollte ich vielleicht noch vorsehen!?
> Der Anschluss des Spannungsteilers war wirklich zunächst an einem > anderen Stromkreis angeschlossen (GND ist für beide Stromkreise > gleich). Aber auch nach dem Anschluss des Spannungsteilers an die > gleiche Spannung VCC des Controllers brachte keine Änderung. Du sollst den Spannungsteiler auch nicht an Vcc des Controllers anschliessen sondern an ARef. Dort stellt dir der Controller die Referenzspannung zur Verfügung die er selbst für die Messung benutzt. Wenn also an deinem ADC Eingang dieselbe Spannung anliegt, wie sie an ARef herauskommt, dann meldet der ADC den Wert 1024. Das ist völlig unabhängig davon, wie hoch den nun ARef tatsächlich ist. > Fehler behoben. Frag ich mich nur, wie der ADC bechädigt werden > kann? Du hast keinen Fehler behoben, da gar keiner vorhanden ist, ausser dem dass du die Beschaltung des Spannungsteilers falsch vornimmst. Ich bin 100% sicher, dass der ADC nicht beschädigt ist.
Wie wäre es denn, einfach mal eine (bekannte) Spannung an den ADC-Pin zu legen und zu messen? >Wenn also an deinem ADC Eingang dieselbe Spannung anliegt, >wie sie an ARef herauskommt, dann meldet der ADC den Wert >1024. Das ist völlig unabhängig davon, wie hoch den nun >ARef tatsächlich ist. Es sind nur 1023...(aber so kleinlich wollen wir nicht sein ;)
ist der Eingang des ADC richtig konfiguriert. Ich vermute pull-up Widerstand am ADC-Pin. Was zeigt der ADC, wenn Input auf Masse?
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.