PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC - Spannung auslesen für Temperatursensor



xrtm4e
31.08.2012, 15:48
Hi,

ich möchte die die Umgebungstemperatur mit einem NTC Heißleiter-Temperatursensor messen und brauche muss dazu die Spannung an einem ADC Pin messen. Das Ganze wird auf einem LCD ausgegeben. Leider bekomme ich entweder 0000 oder 1023 als Ausgabe.

Verwendete Schaltung: http://www.rn-wissen.de/images/3/30/Avrtutorial_grundschaltung_mitquarz.gif mit Temeratursensor an ADC0.
Verwendetes Programm: http://www.rn-wissen.de/index.php/ADC_(Avr)#Programmbeispiele

Ich verwende den internen Takt von 8MHz.

Kann es sein, dass ich AVCC und AREF falsch beschaltet habe? Wenn ja, wie geht es richtig, dass es mit dem oberen Programm funktioniert?

Gruß xrtm4e

Kampi
31.08.2012, 16:04
Hallo,

wie hast du den den Temperatursensor beschaltet?
Hast du mit ihm einen Spannungsteiler aufgebaut?

xrtm4e
31.08.2012, 16:09
ein ende an gnd, dass andere an den adc pin

Kampi
31.08.2012, 16:26
Du musst einen Spannungsteiler aufbauen, damit du den Spannungsabfall am Widerstand messen kannst.
Schau mal hier:

http://www.umnicom.de/Elektronik/Mikrokontroller/Atmel/AtFan/AtFan.html

xrtm4e
31.08.2012, 16:31
Ah, ok. Werde ich aus versuchen.

Vielen Dank!

Kampi
31.08.2012, 16:44
Je nachdem welcher Widerstand der NTC ist, steigt die Spannung entweder wenn der NTC wärmer oder wenn er kälter wird.

xrtm4e
31.08.2012, 19:57
Ok, jetzt bekomme ich schon mal viel bessere Werte. Habe das bei mikrocontroller.net gefunden: http://preis-ing.de/e_calc/index.php?seite=auternzc
Kannst du mir sagen, was in die Felder "Anzahl der Stützpunkte" und "Einheit in °C" hineinkommt?

Kampi
31.08.2012, 20:04
Dort generierst du eine Lock up Table wodurch der ADC-Wert einem bestimmten Temperaturwert zugeordnet wird.
Die Anzahl der Stützpunkte sind die Werte die in der LUT stehen, sprich bei 256 stehen dort 256 Werte drin.
Die Einheit in C ist die gewünschte Genauigkeit.

xrtm4e
02.09.2012, 18:45
Ich hätte noch eine Frage zu dem Link, den du mir geschickt hast ( http://www.umnicom.de/Elektronik/Mikrokontroller/Atmel/AtFan/AtFan.html ). Bei dem Rechenbeispiel zu Rp steht, dass ich den Widerstand für die untere/mittlere/obere Temperatur Wissen muss. Bezieht sich die untere Temperatur auf die 20°C und die obere auf 80° (weil man in diesem Bereich ein möglichst genaues Ergebnis möchte) oder auf den absolut untersten/obersten, also auf -60 und 150°C ? Wenn ich den richtigen Widerstand verwende, muss ich den ausgelesenen ADC-Wert dann noch mit einer extra-Formel in °C umwandeln?

Kampi
02.09.2012, 19:24
Das bezieht sich auf das Beispiel da.
Da es auf der Seite um eine Lüftersteuerung geht, musst du die obere Temperatur wissen, damit du weißt ab wann du den Lüfter einschalten bzw. schneller laufen lassen musst. Dasselbe bei der unteren Grenze.
Wenn du so ein Verhalten mit berücksichtigen musst, musst du natürlich den Widerstandswert bei der gewünschten Temperatur wissen, damit du weißt welche Spannung dann am Widerstand abfällt und der Mikrocontroller dementsprechend reagieren kann.
Der Controller kann ja nur mit den ADC Werten arbeiten, sprich du musst ihm sagen "Hey wenn der ADC Wert 512 beträgt schalte den Lüfter an".
Du selber weißt natürlich das der Lüfter bei 60° eingeschaltet werden soll und da dein Spannungsteiler bei 60° aus einem NTC mit Widerstanswert von 1k und einem 1k Festwiderstand besteht fällt dann natürlich die Hälfte der Spannung am NTC ab (das alles ist nur ein Beispiel!).
Wenn du aber sagst, dass du nur die Temperatur angezeigt haben möchtest ist dir das im Prinzip egal, weil dich dann nur die Spannung interessiert die am NTC abfällt.
Aus dieser Spannung berechnest du anschließend den Widerstandswert. Ich glaube in den Datenblättern der NTCs gibt es immer eine Formel womit du die Temperatur ausrechnen kannst wenn du nur den Widerstandswert weißt.
Ansonsten hilft die Kennlinie weiter. Von dieser Kennlinie speicherst du einfach ein paar Punkte und dann guckst du zwischen welchen Werten der ADC Wert liegt.
So kannst du eine Annäherung an die Temperatur erreichen.
Je mehr Werte du speicherst desto genauer wird die Annäherung ;)
Ob du den ADC Wert in °C umrechnen willst, musst du wissen. Je nachdem was du brauchst.