www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC in ATMega64 wandelt nicht korrekt ???


Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verwendest du als Referenzspannung ?

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interne Referenz von 2,56V. VREF ist über Kondensator gegen GND
gepuffert.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!?! ;)

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das stimmt, jedoch hatte ich am ATMega32 auch die interen Referenz
verwendet ohne dass die Temperatur wesentlich zu hoch war.

Stefan

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Jörn Paschedag (jonnyp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für Eure Tips. Ich werde mal einiges versuchen und bei
weiteren Problemen wieder zurück kommen.

Also vielen Dank nochmal.
Stefan

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werd ich überprüfen. Danke für den Tip
Stefan

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
REFS0 und REFS1 sin didentisch zu ATMega32 genau wie der Rest des ADC.
Hab meinen Fehler bisher jedoch nicht gefunden.

Autor: Stefan Kleinwort (_sk_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: StefanKM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein hab ich nicht vorgesehen!?
Sollte ich vielleicht noch vorsehen!?

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;)

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist der Eingang des ADC richtig konfiguriert. Ich vermute pull-up
Widerstand am ADC-Pin. Was zeigt der ADC, wenn Input auf Masse?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.