Forum: Mikrocontroller und Digitale Elektronik adc-wert in Grad Celsius umrechnen..


von Thomas V. (linuxer7)


Lesenswert?

Hallo Leute,

ich steh momentan etwas auf dem Schlauch und komme einfach nicht weiter.
Folgendes Problem.

Ich habe an einem Atmega16 am ADC-Port "Porta.0" 2 x 1N4148 in Reihe mit 
einem 1Kohm als Vorwiderstand hängen.

Also 5V VCC - Widerstand - Diode - Diode - GND
Zwischen der ersten Diode und dem Widerstand greife ich das Signal ab 
und lege es auf den ADC Port.

Die ADC-Wandlung funktioniert und ich habe bei 23°C einen ADC-Wert von 
273. Bei einer Portspannung von 1,346 Volt.(bei 2 Dioden).
Referenzspannung des Controllers ist genau 5.04 Volt.

Die 1N4848 soll 1.9mv/K° machen.
1°K = -273,15°C

Mein Problem ist nun das ich nicht genau weiß wie ich die Portspannung 
(Porta.0) 1.346 V, einer Temperatur in Grad °C zuweise.

Was für eine Portspannung habe ich in Bezug zur Temp. in Grad °C
Ich hoffe ich konnte mich einigermaßen klar ausdrücken.

Bitte helft mir auf die Sprünge ich stehe echt im Nebel.


Gruß
Thomas

von (prx) A. K. (prx)


Lesenswert?

Wirst wohl nicht drum herum kommen, das zu kalibrieren. Also die Dioden 
auf die gleiche Temperatur wie ein bekanntes Thermometer bringen. Und 
wenns dein Fieberthermometer ist (die sind ziemlich genau). Dann weisst 
du es. Der Rest ist dann die Rechnung über die 1,9mV/K.

von Ingo L. (Gast)


Lesenswert?

Thomas Voegtlin schrieb:
> Die 1N4848 soll 1.9mv/K° machen.
> 1°K = -273,15°C

ist etwas merkwürdig, deine Rechnung passt so also nicht.

23°C => 273K + 23K = 296K.

Sollte nach deiner Rechnung 1,9mV/K * 296K = 0,5623V sein.
Wo hast du die Angebe mit den 1,9mV/K her?

Es gibt übrigens kein °K.



Ingo

von Kein Name (Gast)


Lesenswert?

Ähmm...

diese Faustformel mit den 1,9mv gilt doch nur bei normalen Temperaturen, 
nicht beim absoluten Nullpunkt.

Du kannst da ja nur 1,346V ~ 23° fest ins Programm reinschreiben und 
dann die Differenz zu den 1,346V in die Differenz zu den 23° umrechnen.

-- Grüße

von Mario (Gast)


Lesenswert?

Kelvin ist gleich ° nur mit anderem Nullpunkt, -273,15°C = 0K, 0°C = 
273,15
Du hast also für jeweils +3,8mV (zwei Dioden) ein °C mehr.
Den Rest darfst Du selber ausrechnen

von Mario (Gast)


Lesenswert?

ups, 0°C=273,15K

von Karl H. (kbuchegg)


Lesenswert?

Mario schrieb:
> Kelvin ist gleich ° nur mit anderem Nullpunkt, -273,15°C = 0K, 0°C =
> 273,15
> Du hast also für jeweils +3,8mV (zwei Dioden) ein °C mehr.
> Den Rest darfst Du selber ausrechnen

theoretisch.
Praktisch hat auch der Widerstand eine Temperaturdrift, wodurch sich der 
Strom durch die Dioden verändert, was wiederrum eine andere 
Vorwärtsspannung bewirkt.

Das ganze theortetisch durchzurechnen halte ich ehrlich gesagt nicht für 
sinnvoll.
 Ein Glas Eiswasser her, die Dioden abkühlen lassen, ADC Wert 
feststellen
 Zimmertempertur, ADC Wert feststellen
 Körpertemperatur (mit Fieberthermometer kontrollieren), ADC Wert 
feststellen
 wenn geht noch ein paar andere Temperaturen kontrolliert messen.

Die gemessenen Temperaturen dem ADC Wert gegenüberstellen und erst mal 
im zb. Excel nachsehen, ob der Zusammenhang einigermassen linear ist. 
Wenn nein, dann eben in ein paar Bereiche aufteilen.

Gleichungen dafür aufstellen, programmieren und sich an einer 
Temperaturanzeige erfreuen.

von Thomas V. (linuxer7)


Lesenswert?

Hallo Ingo.

Die 1,9mv habe ich hier her:
Beitrag "Diode als Temperatursonsor"

Diese Rechnung habe ich auch gemacht.
23°C => 273K + 23K = 296K.
1,9mV/K * 296K = 0,5623V

Wenn ich den Wert 1,346V durch 2 Teile, (Sind ja 2 Dioden) dann komme 
ich auf 0,67irgendwas Volt.

Wenn ich davon ausgehe das die 1,9mV/K richtig sind dann beißen sich die 
errechneten 0,56xx Volt mit den gemessenen 0,63xx Volt.
Wo liegt das das Problem?

Ja das mit dem °K hatte ich mir fast gedacht :)

Gruß
Thomas

von Mario (Gast)


Lesenswert?

Hi,

K nimmt man anstatt °C wenn es um Temp-Differenzen geht.
Also bei 23°C 1,3xxV und pro °C mehr (oder auch K) werden es 3,8mV 
weniger.

von Thomas V. (linuxer7)


Lesenswert?

Ups,jungs Ihr seid ja schnell. :)

OK Ihr habe wohl recht.
Eiswasser und Körpertemperatur als Referenz nehmen ist wohl am 
einfachsten, und über eine Tabelle den ADC-Wert gegenüber stellen.

Ich denke so mach ich das auch.

Gruß
Thomas

von (prx) A. K. (prx)


Lesenswert?

Thomas V. schrieb:

> Wo liegt das das Problem?

Benötigst du ein Thermometer, dass ab 0K funktioniert?

Vergiss deine Rechnung
 1,9mV/K * 296K = 0,5623V
So funktioniert das nicht.

Geh vom Messwert an einer Stelle im interessanten Bereich aus und rechne 
ausgehend davon die Differenz dazu aus. D.h. wenn 19mV mehr gemessen 
werden als da rauskommt, dann sind es ~10°C mehr.

Beachte auch, dass der AVR bei Vref=5V eine Auflösung von 5mV hat, also 
fast 3°C, und einen Fehler von ca. 3 LSBs, also +/-8°C. Diese Form der 
Messung taugt eigentlich nicht einmal zum Schätzeisen, es sei denn es 
geht um ein Backofenthermometer.

von Thomas V. (linuxer7)


Lesenswert?

Ich hatte die Absicht mir ein Thermometer für Auto zu bauen und da kommt 
es aufs Grad nicht so an.
Ich habe es heute Morgen schnell an meinen TestBoard getestet und da 
habe ich die Referenzspannung fest verdrahtet.
Deswegen die 5V Referenz.

Der Controller soll mir auf einem 2 Zeiligen Display die Innen und 
Aussentemp. anzeigen.

Des weiteren über einen kleinen Buzzer bei Null Grad kurz warnen.
Der Temperaturbereich soll zwischen -20 und +60°C liegen.

Ich habe mit der Hardware und der Software keine Probleme. Nur diese 
Differenz machte mir Kopfzerbrechen.

@Mario.
Mal sehen was dabei heraus kommt wenn ich eine Tabelle mache.

Gruß
Thomas

von Stefan W. (wswbln)


Lesenswert?

Hmmm, vielleicht liegt es auch daran, dass die Funktion die den 
Zusammenhanhg der Durchlassspannung und der Temperatur angibt ein 
bisschen komplizierter ist, als T*0,0019.

Siehe z.B. hier: 
http://en.wikipedia.org/wiki/Silicon_bandgap_temperature_sensor

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
Noch kein Account? Hier anmelden.