mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADCwert in Temperatur umrechnen


Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.
Kann mir jemand bei der Umrechnung der ADCwerte in eine Temperatur 
(Celsius)erklären. Am besten anhand einer nachvollziehbare Gleichng und 
eines C-Codes wären super.

Ich habe den ADCpin mit einem Spannungsteiler (einen KTY81-210 und 
2,7Kohm Festwiderstand) beschaltet.

ich erhalte eine eineigermaßen lineare Kennlinie in einem Bereich von 
-55° bis 120° Celsius. in diesen Bereich soll auch die Erfassung der 
Werte erfolgen.

ich habe mal ein paar Werte berechnet. ich komme aber nicht darauf wie 
ich diese in °Celsius umwandle.

Berechnung mit kty81-210:

-55°C : U=5*980/(980+2700)  = 1,33V;  ADC=(1024/5)*1,33 = 272
  0°C : U=5*1630/(1630+2700)  = 1,88V;  ADC=(1024/5)*1,88 = 385
 25°C : U=5*2000/(2000+2700)  = 2,13V;  ADC=(1024/5)*2,13 = 436
 40°C : U=5*2117/(2117+2700)  = 2,20V;  ADC=(1024/5)*2,20 = 450
120°C : U=5*3817/(3817+2700)  = 2,93V;  ADC=(1024/5)*2,93 = 600
150°C : U=5*4400/(4400+2700)  = 3,01V;  ADC=(1024/5)*3,01 = 616

Danke im Voraus

Gruß Sticky

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es, wenn Du dir erstmal ausrechnest, um wieviel mV sich die 
Spannung ändert, wenn sich die Temperatur um 1 Kelvin ändert?

Wenn Du zufällig noch die Grundlagen für lineare Gleichungen kennst:

y = m * x + c

Aus der Kennlinie bekommst Du die Parameter.
m = Steigung der Geraden
c = Schnittpunkt mit der y-Achse (Offset)

Dann kannst Du Dir ein Diagramm erstellen, bei dem man zu jeder 
Temperatur die Spannung ablesen kann. Dann kannst Du wieder eine 
Gleichung der obigen Form konstruieren. x sollte dann die Spannung sein, 
die gemessen wurde und als y sollte dann die Temperatur herauskommen.

Den ADC Messwert würde ich in die tatsächliche Spannung umrechnen:

Also 5V Referenz und 10-Bit (wenn ich das oben richtig sehe).
Gibt 4,88 mV/ADC-Step.

ADC-Wert * 4,88mV = Spannung am ADC Eingang in mV

Diese Spannung dann in die obige Gleichung einsetzen (Temp. aus 
SPannung)

Fertig.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich erhalte eine eineigermaßen lineare Kennlinie
Das wundert mich, weil ja der KTY schon eine lineare 
Temperaturabhängigkeit hat (aus Datenblatt: R= 1630 + T*16.9 Ohm). 
Zusammen mit einem Widerstand kann das nur nichtlinear werden...

Berechne noch ein paar Stützpunkte mehr, leg die Werte in eine Tabelle 
ab. Dann berechne die Temperatur ziwschen den Stützpunkten einfach 
entsprechend einer Geraden:
 T    adc
-55 = 272
  0 = 385
 25 = 436
 40 = 450
:
:
120 = 600
150 = 616
if      adc<272 then T = -56; // Untergrenze
else if adc<385 then T =   0 - ((0  -(-55))*(385-adc)/(385-272));
else if adc<436 then T =  25 - ((25 -   0 )*(436-adc)/(436-385));
else if adc<450 then T =  40 - ((40 -  25 )*(450-adc)/(450-436));
:
:
Das ist geradezu für ein Array und eine Schleife geschaffen.


Alternativ kannst du die Gerade des KTY in eine Formel pressen, den 2k7 
Widerstand dazuklemmen, und daraus die Temperatur berechnen.
T = ((2700/((1024/(float)adc)-1)-1630)/16.9; -- 1024, weil vermutlich 10-bit-Wandler?
Du solltest dir aber im Klaren sein, dass du hier mit Fließkommazahlen 
arbeiten mußt.

BTW:
Liege ich mit dieser Aussage richtig:
Der 2k7 hängt offenbar an VCC, der KTY an GND?

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias wrote:

> Wenn Du zufällig noch die Grundlagen für lineare Gleichungen kennst:
>
> y = m * x + c
>
> Aus der Kennlinie bekommst Du die Parameter.
> m = Steigung der Geraden
> c = Schnittpunkt mit der y-Achse (Offset)
>

genau das war mein erster lösungs ansatz, doch habe ich keinen 
schnittpunkt mit der y-achse. da im datenblatt des kty- nur 
widerstandswerte bis -55°angegeben werden und höchst wahrscheilisch die 
kennlinie nicht mehr liear ist.

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Liege ich mit dieser Aussage richtig:
> Der 2k7 hängt offenbar an VCC, der KTY an GND?

ja ist richtig wieso?

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller wrote:

> Alternativ kannst du die Gerade des KTY in eine Formel pressen, den 2k7
> Widerstand dazuklemmen, und daraus die Temperatur berechnen.
>
> T = ((2700/((1024/(float)adc)-1)-1630)/16.9; -- 1024, weil vermutlich
> 10-bit-Wandler?
> 
> Du solltest dir aber im Klaren sein, dass du hier mit Fließkommazahlen
> arbeiten mußt.

ja 10-bit wandler (ATMega168)

ist es denn möglisch in einem atmega fließkomma zu nutzten?

kannst du mir die formel etwas erleutern?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
> ja ist richtig wieso?
Na, weil sonst die Formel falsch wäre :-/

> ist es denn möglisch in einem atmega fließkomma zu nutzten?
Ja, aber das braucht Platz und dauert...

> kannst du mir die formel etwas erleutern?
Ja, kann ich. Sieh dir das PDF an.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Amir B-a wrote:
> Matthias wrote:
>
>> Wenn Du zufällig noch die Grundlagen für lineare Gleichungen kennst:
>>
>> y = m * x + c
>>
>> Aus der Kennlinie bekommst Du die Parameter.
>> m = Steigung der Geraden
>> c = Schnittpunkt mit der y-Achse (Offset)
>>
>
> genau das war mein erster lösungs ansatz, doch habe ich keinen
> schnittpunkt mit der y-achse.

Doch hast du :-)
Du musst nur ein klein wenig Arithmetik betreiben

> da im datenblatt des kty- nur
> widerstandswerte bis -55°angegeben werden und höchst wahrscheilisch die
> kennlinie nicht mehr liear ist.

Ich würde das alles sowieso vergessen.
Ist deine Kennlinie hinreichend gut eine Gerade im interessierenden 
Bereich oder ist sie das nicht.

Wenn sie es ist:

Häng den Sensor in Eiswasser. Wart bis er die Temp angenommen hat und 
lies den Wert ab. Eiswasser hat (für deine praktischen Zwecke 
hinreichend genaue) 0°C. Sagen wir mal dein ADC wirft 189 aus

Häng den Sensor in Wasserdampf. Auch hier wieder. Für praktische Zwecke 
genau genug hat der Dampf 100°C. Der ADC sagt dazu 850

Damit hast du 2 Temperaturen und die dazugehörigen ADC Werte
Und du hast die lineare Gleichung

   Temp = m * ADC + d

bei der du m und d nicht kennst. Aber du kennst 2 Wertepaare die diese 
Gleichung erfüllen, du hast sie ja gemessen. Also setzt du die mal ein

   0 = m * 189 + d
 100 = m * 850 + d

2 Gleichungen in 2 Unbekannten. Damit lässt sich m und d bestimmen.

Gleichung 1 von Gleichung 2 abziehen, ergibt

  100 = ( m * 850 ) + d - ( m * 189 ) - d

das d kürzt sich weg und übrig bleibt

  100 = ( 850 - 189 ) * m

etwas umstellen

  m = 6.61

das in eine der Gleichungen einsetzen

  0 = m * 189 + d

  0 = 6.61 * 189 + d

  0 = 1249.29 + d

  d = -1249.29


Deine Gleichung zur Umrechnung vom ADC Wert in eine Temperatur lautet 
also

   Temp = 6.61 * ADC - 1249.29

Voraussetzung: Der Zusammenhang zwischen Temperatur und ADC Wert ist 
tatsächlich hinreichend linear. Ist er das nicht, kann man immer noch in 
einzelnen Stücken arbeiten und dort eine Gerade annehmen.

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> ist es denn möglisch in einem atmega fließkomma zu nutzten?
> Ja, aber das braucht Platz und dauert...

dauern darf es (was meinst du wie lange es dauert?)

was meinst du mit platz?
T soll acht bit lang sein (wird auf den LIN-Bus verschickt.) MSB 
vorzeichen
der rest Temperatur wert (-55 bis 120)

danke für die Erklärung

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:
> Ist deine Kennlinie hinreichend gut eine Gerade im interessierenden
> Bereich oder ist sie das nicht.
Ist sie nicht.
Bzw, wäre sie, wenn der Sensor mit Konstantstrom versorgt würde.
Der ist aber "nur" Bestandteil eines Spannungsteilers   :-/

> Voraussetzung: Der Zusammenhang zwischen Temperatur und ADC Wert ist
> tatsächlich hinreichend linear. Ist er das nicht, kann man immer noch in
> einzelnen Stücken arbeiten und dort eine Gerade annehmen.
Womit wir wieder bei der Geradengleichung wären   ;-)

EDIT:
> was meinst du mit platz?
Programmspeicherplatz.

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke auch dir karl heinz. absolut verständlisch.
werde wohl diese lösung anwenden.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> werde wohl diese lösung anwenden.
Du hast keine Gerade.
Dann wird deine Temperatur nur an den beiden Eichpunkten stimmen.
Na, egal... (Regie: L. wendet sich resigniert ab)   :-/

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller wrote:
>> werde wohl diese lösung anwenden.
> Du hast keine Gerade.

Dann ist das tatsächlich ein Problem (ich hab die Kennlinie vom PTC / 
Spannungsteiler nicht im Kopf).
Aber man kann doch sicherlich auch die Kurve mit mehreren 
Geradengleichungen annähern.

Im Grunde machst du genau das gleiche, nur dass du eine Geradengleichung 
für -50 bis 0°C hast, 0° bis 20°, usw.
Je nach ADC Wert wird dann entschieden, welche Geradengleichung zum 
Einsatz kommt.

Falls das aus irgendeinem Grunde nicht geht (weil man zb. zuviele 
Geradengleichungen hat, kann man immer noch auf quadratische Gleichungen 
mit 3 Kalibrierpunkten pro Bereich ausweichen. Das Verfahren ist völlig 
analog dazu)

> Na, egal... (Regie: L. wendet sich resigniert ab)   :-/

Das was mich immer traurig stimmt ist, dass soviele schon mit einer 
simplen Geradengleichung überfordert sind.

Edit: Hab grad in dein PDF reingesehen.
Du hast das über den Spannungsteiler gerechnet. Noch besser, was will 
man mehr. Dann hätt ich mir meinen Exkurs über Geradengleichungen sparen 
können :-) Aber wer weiss, sowas kann man immer brauchen und wenn er was 
dabei gelernt hat ...
ZUmindest weiss er jetzt wie er sich die von dir verwendete Gl.
Rk =1630 +T ×16,9
aus den angegebenen Werten bestimmen kann, und so Aussagen wie ...

> genau das war mein erster lösungs ansatz, doch habe ich keinen
> schnittpunkt mit der y-achse. da im datenblatt des kty- nur
> widerstandswerte bis -55°angegeben werden

.. gehören der Vergangenheit an.

Autor: Amir B-a (sticky)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller wrote:

> Du hast keine Gerade.
> Dann wird deine Temperatur nur an den beiden Eichpunkten stimmen.
> Na, egal... (Regie: L. wendet sich resigniert ab)   :-/

wende dich nicht ab ungläubiger. sei stark in deinem glauben und auch du 
wirst erleuchtet :-)

also die kennlinie habe ich mal in exel erzeugt und sieht sehr linear 
aus.
(siehe pdf)

>Bzw, wäre sie, wenn der Sensor mit Konstantstrom versorgt würde.
>Der ist aber "nur" Bestandteil eines Spannungsteilers   :-/

hier zu mal ein link der das gegenteil beweist. und zwar das der 
spannungsteiler linear ist und mit einer konst. spannungsquelle eben 
nicht.
 (fals es dich interessiert)

http://www.sprut.de/electronic/temeratur/temp.htm

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aus dem Datenblatt entnehme ich:
> Rk =1630 +T ×16,9

wo genau entnimmst du das? oder wie ergibt sich diese gleichung? (wo 
kommt die konstante 16,9 her?)
ich kann nichts dergleichen finden. ein screenshot wäre nett.

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ordentlich Rechnen mit dem µC schon akzeptiert wird (inkl. float), 
kann man sich auch z.B. mit dem Newtonschen Interpolationspolynom (ist 
echt nicht so schlimm, wie es sich anhört!) das Polynom (die Kurve, die 
die Widerstandswerte in Abhängigkeit der Temperatur ergeben) der 
Widerstandswerte ausrechnen. Die Anzahl der Stützstellen sollte 
natürlich nicht zu groß werden, um kein Polynom weiß_nich_5_ten_grades 
zu bekommen. Die Genauigkeit kann man ja jederzeit mit seinem 
errechneten Polynom und dem Datenblatt ausrechen/kontrollieren.
Oder man nimmt z.B. einen KTY 10-6 von Infenion, der liefert gleich die 
richtige Formel im Datenblatt mit:
RT = R25 x (1 + alpha * delta T + beta * delta T²)
mit a = 7.88 10- 3 K-1; b = 1.937 10-5 K-2
wobei RT der über den ADC gemessene/errechnete aktuelle Widerstandswert 
des KTY ist. Nur nach delta T umstellen und fertig.

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da habe ich doch ein paar Tricks auf Lager:
1.
Meist hat man genug Programmspeicher, um eine Linearisierungstabelle mit 
1024 Einträgen anzulegen:
Beitrag "ADC-Wert z.B. in Spannung umrechnen und dezimal ausgeben mittels Tabellen, auch Linearisieren"

2.
Wenn man die Vref extern speist (ebenfalls mit dem Mittelpunkt des 
Spannungsteilers), wird es wieder linear. Man muss den ADC-Wert von 1024 
abziehen, weil normalerweise der differenziellen Eingänge an Mittelpunkt 
und Vcc liegen.
Nennt sich "ratiometric measure"
siehe z.B. Ohmmessung im Datenblatt vom Intersil ICL7106  / MAX138

Autor: Falk Willberg (dl3daz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller wrote:
...
>
> T = ((2700/((1024/(float)adc)-1)-1630)/16.9;
> 1024, weil vermutlich 10-bit-Wandler?
>
> Du solltest dir aber im Klaren sein, dass du hier mit Fließkommazahlen
> arbeiten mußt.

Letzteres halte ich für Overkill. 10-bit Integers 'rein, 8-bit Integers 
'raus. Und dazwischen Fließkomma?

Falk

Autor: mahmoud (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir jemand erklären
Rk =1630 +T ×16,9

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mahmoud wrote:
> kann mir jemand erklären
> Rk =1630 +T ×16,9

Rk: ist der widerstands wert des kty bei einer temperatuer T
T: ist die umgeungstemperatur
1630: iste der wirdestandswert des KTY bei null Grad

wo die 16,9 her kommt würde ich auch gern wissen. die sollen ja aus dem 
datblatt stammen. kann ich aber nicht finden.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Amir B-a wrote:
>> Rk =1630 +T ×16,9
> 1630: iste der wirdestandswert des KTY bei null Grad
>
> wo die 16,9 her kommt würde ich auch gern wissen. die sollen ja aus dem
> datblatt stammen. kann ich aber nicht finden.
Da habe ich aus Versehen die Geradensteigung im Kopf ausgerechnet, und
einen Rechenfehler reingebracht:
1630 Ohm bei 0 Grad     und
3392 Ohm bei 100 Grad   gibt
(3392-1630) = 1762 Ohm pro 100 Grad
Das sind dann also (korrekt) 17,62 Ohm pro Grad.

Mein Fehler war:
Ich hatte aus der Tabelle vom NXP-Datenblatt aus Versehen den min. Wert
bei 100 Grad genommen (3318 Ohm).

Also: die Gleichung für den Widerstand beim KTY81-210 lautet richtig:

    Rk = 1630 + T×17,6

Und jetzt zur Kontrolle:
Die Temperatur sei 150°C ==> Rk = 1630 + 150*17,6 = 4270 Ohm.
Der Wert aus dem DB ist 4280 Ohm.

Die Temperatur sei 50°C ==> Rk = 1630 + 50*17,6 = 2510 Ohm.
Der Wert aus dem DB ist 2417 Ohm. Ein kleiner Übersteiger...

Die Temperatur sei -30°C ==> Rk = 1630 - 30*17,6 = 1102 Ohm.
Der Wert aus dem DB ist 1247 Ohm. Hier wird der Sensor nichtlinear :-/

Jetzt passts   ;-)


Ich habe gerade eben erst die Temperatur-Spannungs-Kennlinie gesehen. Im
Bereich von 0-100°C ist die tatsächlich schön linear. Da könntest du
direkt die Geradengleichung ansetzen:

Aus Diagramm abgelesen sind
  0°C = 1,78V = 365 adc
100°C = 2,78V = 570 adc
daraus ergibt sich eine Temperaturformel mit

Offset = 365
Steigung für 100°C = 570-365 = 205
Steigung pro °C = 2,05

T = (adc-365)/2.05; // Temperatur in Grad, allerdings float nötig

Mit passender Skalierung ( 20/41 = 1/2.05 ) wirds noch einfacher:
T = ((adc-365)*20)/41; // Temperatur in Grad, nur integer nötig

EDIT: die letzten 5 Zeilen korrigiert  ;-)

Autor: branko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> T = ((adc-365)*20)/41; // Temperatur in Grad, nur integer nötig

was ist so sclimm an float?

ansonsten danke das du dch doch nochmal gemeldet hast :-)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> was ist so sclimm an float?
Auf einem PC ist float = flink, weil der eine extra Recheneinheit dafür 
hat. Auf einem uC (ohne FPU) muß (fast) jedes Bit von Hand sortiert, 
geschoben und verrechnet werden.
Und das dauert... und braucht Programmspeicherplatz...  :-(


Der Link von  branko  ist für dich Gold wert und sagt eigentlich alles.
Die eigentlich etwas nichtlinieare Kennlinie des KTY wird durch einen 
Spannungsteiler begradigt (das hast du selber auch schon 
herausgefunden). Genauer brauchst du das nicht machen, weil ja der KTY 
selber schon eine Toleranz von +-2°C hat.

Autor: Amir B-a (sticky)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier eine Excel-File mit der die genauen Werte

>  Aus Diagramm abgelesen sind
>  0°C = 1,78V = 365 adc
>  100°C = 2,78V = 570 adc
>  daraus ergibt sich eine Temperaturformel mit

Es lässt sich nicht vermeiden beim Ablese Fehler zumachen.
da excel nicht die x-achse mit 0 gekennzeichnet hat sondern bei -10°C
das ist nicht so leicht zu erkennen

daher eine kleine Korrektur

0°C    =1,88V = 385
100°C  =2,78V = 570

somit kommt man auf eine steigung von 1,85.

Gruß Sticky

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Amir B-a wrote:
> Hier eine Excel-File mit der die genauen Werte
>
>>  Aus Diagramm abgelesen sind
>>  0°C = 1,78V = 365 adc
>>  100°C = 2,78V = 570 adc
>>  daraus ergibt sich eine Temperaturformel mit
>
> Es lässt sich nicht vermeiden beim Ablese Fehler zumachen.
> da ich die Werte habe eine kleine Korrektur
>
> 0°C    =1,88V = 385
> 100°C  =2,78V = 570
>
> somit kommt man auf eine steigung von 1,85.

Die tatsächlichen Werte muss jeder sowieso für sich selbst vor Ort 
ermitteln. Dein Serienwiderstand wird nicht exakt 2k7 haben, der KTY 
wird Fertigungstoleranzen haben, etc..

Drum ist es auch so wichtig, die Mathe dahinter zu verstehen und nicht 
einfach nur stumpfsinnig irgendwelchen Code abzukupfern.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller wrote:
>> was ist so sclimm an float?
> Auf einem PC ist float = flink, weil der eine extra Recheneinheit dafür
> hat. Auf einem uC (ohne FPU) muß (fast) jedes Bit von Hand sortiert,
> geschoben und verrechnet werden.
> Und das dauert... und braucht Programmspeicherplatz...  :-(

Sollte man aber auch noch dazu sagen:
Beides kann ein Problem sein, muss es aber nicht.

Dazu kommt dann noch, dass man mit float sich leicht in ein 
Genauigkeitsproblem manövrieren kann.
float hat so um die 6 signifikante Stellen.
Kannst ja mal versuchen in einer Schleife zu einer Ausgangszahl
12345.0  immer wieder und immer wieder 0.000001 zu addieren, bis
die Zahl 12346.0 geworden ist. Die Chancen stehen nicht schlecht, dass 
diese Schleife
float x;

  x = 12345.0;
  while( x != 123456.0 )
    x += 0.000001;

nie abbricht.

Autor: Amir B-a (sticky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
werde wohl folgende gleichung nehmen.
T = ((adc-385)*20)/37

ist auch am einfachsten zu dokuemtieren. abgesehen davon das es 
perfomenter ist.

Danke nochmal an alle

Autor: mahmoud (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi
ich habe eine Frage und zwar, ich möchte die Temperatur (KTY81-210) mit 
atmega8 messen, ich habe nur das datenblatt von KTY sonst nichts,
(KTY ist mit einem Widerstand 2,7kOhm in Reihe).
wie lautet das verhältnis zwischen T und U_adc

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mahmoud wrote:
> hi
> ich habe eine Frage und zwar, ich möchte die Temperatur (KTY81-210) mit
> atmega8 messen, ich habe nur das datenblatt von KTY sonst nichts,
> (KTY ist mit einem Widerstand 2,7kOhm in Reihe).
> wie lautet das verhältnis zwischen T und U_adc

Gegenfrage: Hast du diesen Thread überhaupt gelesen?

Autor: mahmoud (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja habe ich, aber das stimmt nicht mit der linearität, das heisst
T= a*adc+b stimmt in diesem fall nicht!!!
oder??

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mahmoud wrote:
> ja habe ich, aber das stimmt nicht mit der linearität, das heisst
> T= a*adc+b stimmt in diesem fall nicht!!!
> oder??

Weiss ich nicht. Du hast das Datenblatt!
Dort entnimmst du die Kennlinie des Sensors, entwickelst die Formel für 
die Serienschaltung mit deinem Widerstand und simulierst das einfach mal 
mit Excel für deinen Temperaturbereich durch.
Dann lässt du dir von Excel die ADC Werte in Bezug zur Temperatur mal in 
einer Grafik auswerten und schaust dir den Graphen mal an, ob er dir 
linear genug ist.

Und dann kannst du weiter schauen.


(Das das so schwer ist, sich mal selbst zu behelfen.
 Jaaaaa. Programmieren bedeutet nicht einfach nur irgendwelchen Code
 in einen Editor reinzuklopfen. Programmieren heist auch, im Vorfeld
 Probleme klären! Dazu muss man sich auch überlegen, mit welchen
 Hilfsmitteln man einem Problem auf den Grund gehen kann.
 Wenn du nicht weisst ob der lineare Zusammenhang gegeben ist,
 dann musst du das eben rausfinden. Wie findet man das raus:
 Indem man sich die Werte ansieht und im einfachsten Fall ein
 Lineal an ein Diagram des Zusammenhangs legt. Liegt die Kurve
 überhaupt nicht vernünftig am Lineal an, dann wirds wohl nicht
 linear sein.
 Also lautet die nächste Frage: Wo krieg ich das Diagram her.
 Nachdem dir das keiner zeichnen wird, wirst du das wohl selbst
 machen müssen. Um ein Diagramm zu zeichnen, braucht man aber Werte.
 Wo kommen die wieder her?
 Na aus der Formel für Seriensschaltung von KTY und Widerstand.
 Also wird man diese Formel erst mal brauchen. 2 Widerstände
 in Serie und das ganze als Spannungsteiler ist ja formelmässig nicht
 gerade Raketentechnik.
 Da du das ganze über einen bestimmten Temp-Bereich haben willst,
 wirst du wohl oder übel die KTY Widerstandswerte in diesem Temp-
 Bereich brauchen.
 Jetzt kann der Zusammenhang Temp zu KTY Wert entweder eine Formel
 im Datenblatt sein, oder eine Tabelle für einige Werte oder, wenn
 du gar nichts hast muss man sich diese Werte für ein paar Temperaturen
 selbst mit einem Ohmmeter bestimmen.
 Formel ist gut, denn dann kannst du deine Temperaturen die im Diagram
 auftauchen selbst bestimmen. Mit einer tabelle wird dir das 
aufgezwungen.
 Macht aber nichts. Ob die Werte nach dem Spannungsteiler auf einer
 Geraden liegen sollte immer noch erkennbar sein.

 Und so fügt sich eins zum anderen, wie man an die Aufgabenstellung
 herangeht: Gibt es einen linearen Zusammenhang oder nicht.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Karl heinz Buchegger
> (Das das so schwer ist, sich mal selbst zu behelfen.
>  Jaaaaa. Programmieren bedeutet ....
>                .... linearen Zusammenhang oder nicht.
syntax error : missing ')'

SCNR :-)

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.