Forum: Mikrocontroller und Digitale Elektronik Temperatursensor an MSP430


von Robert I. (robert_i39)


Lesenswert?

Hallo,

ich versuche mit meinem Launchpad einen Temperatursensor einzubinden.

Ich habe den Sensor an P1.1 angeschlossen und versuche damit einmal 
überhaupt einen Wert zu bekommen der sich in abhängigkeit der Temperatur 
ändern soll.

Jedoch ohne erfolg weil ich immer den selben wert ausgegeben bekomme 
auch wenn der sensor gar nicht steckt.
1
#include <msp430.h> 
2
#include <msp430g2553.h>
3
4
/*
5
 * main.c
6
 */
7
8
int result = 0;
9
10
int main(void)
11
{
12
  while(1)
13
  {
14
15
    WDTCTL = WDTPW | WDTHOLD;  // Stop watchdog timer
16
17
    ADC10CTL1 |= CONSEQ1;
18
19
    //Set S/H time, 10-bit converter, and continuous sampling:
20
     ADC10CTL0 |= ADC10SHT_2 + ADC10ON + MSC;
21
22
    //Choose P1.1 (channel 1) as an analog input pin:
23
     ADC10AE0 |= BIT1;
24
25
    // Start A/D conversion; The result will appear in the memory variable "ADC10MEM"
26
     ADC10CTL0 |= ADC10SC + ENC;
27
28
    // SET VARIABLE n TO THE RESULT OF THE A/D CONVERSION:
29
     result = ADC10MEM;
30
31
  }
32
  
33
}

Hoffe es kann jemand weiterhelfen

Danke

von Nico (nico123)


Lesenswert?

Welchen Temperatursensor benutzt Du denn? Am besten zeigst Du mal deine 
Schaltung!
In deinem Code ist auch keine Ausgabe zu finden. Wie gibst Du den Wert 
aus?

von Robert I. (robert_i39)


Lesenswert?

stimmt hab ich während dem schreiben vergessen zu sagen.

Diesen Sensor : 
http://www.conrad.at/ce/de/product/153653/KTY-Silizium-Temperatursensor-NXP-Semiconductors-KTY-81222-Gehaeuseart-TO-92/?ref=detview1&rt=detview1&rb=1

Und als Ausgabe nehme ich im CCS im Moment nur die Variablen Ausgabe 
mithilfe eines Watchpoint.

von Jim M. (turboj)


Lesenswert?

Schaltplan, bitte.

von Nico (nico123)


Lesenswert?

Und wie ist der KTY an deinen µC angeschlossen? Kannst Du eine 
Spannungsänderung bei Temperaturveränderung mit einem Messgerät 
(Multimeter) messen?

von Robert I. (robert_i39)


Lesenswert?

Vllt hab ich nicht ganz verstanden wie der Sensor funktioniert.

Doch müsste es nicht so sein dass der Sensor seinen Widerstand ändert, 
auch ohne eine Spannungsquelle ?

Somit müsste ich durch ändern der Temperatur immer einen anderen 
Widerstand mit dem Multimeter messen können. Oder nicht ?

von Robert I. (robert_i39)


Lesenswert?

Vllt hab ich nicht ganz verstanden wie der Sensor funktioniert.

Doch müsste es nicht so sein dass der Sensor seinen Widerstand ändert, 
auch ohne eine Spannungsquelle ?

Somit müsste ich durch ändern der Temperatur immer einen anderen 
Widerstand mit dem Multimeter messen können. Oder nicht ?

Aber wie auch immer , es müsste doch eine Änderung der Spannung auch zu 
messen sein wenn ich den KTY mit einem Widerstand in Reihe schalte und 
diese dann mit zb 5V versorge.

: Bearbeitet durch User
von Klaus R. (klara)


Lesenswert?

Robert I. schrieb:
> Vllt hab ich nicht ganz verstanden wie der Sensor funktioniert.
>
> Doch müsste es nicht so sein dass der Sensor seinen Widerstand ändert,
> auch ohne eine Spannungsquelle ?
>
Ja.

> Somit müsste ich durch ändern der Temperatur immer einen anderen
> Widerstand mit dem Multimeter messen können. Oder nicht ?
>
Schau Dir mal das Datenblatt an. Bei 25°C hast Du 2000 Ohm, bei 30°C 
hast Du 2080 Ohm.

> Aber wie auch immer , es müsste doch eine Änderung der Spannung auch zu
> messen sein wenn ich den KTY mit einem Widerstand in Reihe schalte und
> diese dann mit zb 5V versorge.
Welchen Widerstandswert willst Du denn nehmen?
Ich denke, 2000 Ohm oder 2,2K wären nicht schlecht für eine hohe 
Auflösung. Allerdings ist dann Temperaturbereich bei 5V Versorgung schon 
ziemlich festgelegt. Aber Du willst ja erst einmal etwas sehen.

Gruss Klaus.

von Robert I. (robert_i39)


Lesenswert?

Hab ich das dann eigentlich eh soweit richtig verstanden ?

Wenn ich an den Sensor sagen wir mal 5V anlege. und diesen dann an den 
Port P1.1 anschließe.
Müsste ich doch eine Änderung der Variable result bemerken können ?

von Christian K. (christiankarle)


Lesenswert?

Ich würde den Temperatursensor in einen Spannungsteiler aufbauen...
R1 ist der Temperatursensor und R2 ein fester Wiederstand.

Wenn R2 z.B. 10kOhm groß ist und der Ohmsche Wert deines 
Temperatursensores die ganze Zeit schwankt, also mit zunehmender 
Temperatur größer wird, so fällt an ihm eine immer größere Spannung mit 
zunehmender Temperatur ab.

Mit dem ADC würdest du dann die Spannung zwischen R1 und R2 messen und 
auf den Widerstand und dann auf die Temperatur zurückrechnen :)

von Christian K. (christiankarle)


Lesenswert?

Robert I. schrieb:
> Wenn ich an den Sensor sagen wir mal 5V anlege. und diesen dann an den
> Port P1.1 anschließe.
> Müsste ich doch eine Änderung der Variable result bemerken können ?

Nein, da der Widerstand in Reihe zum ADC geschaltet ist. Meiner Meinung 
nach müssten dann am ADC auch 5V anliegen, unabhängig vom Ohmschen Wert 
deines Widerstandes.

Falls ich falsch liege, verbessert mich bitte :)

von Amateur (Gast)


Lesenswert?

Üblicherweise misst ein A/D-Wandler Spannung.

Dein Temperatursensor ändert auch seinen Widerstand wenn Du ihm die 
Beinchen abschneidest. In den wenigsten Fällen lässt sich der 
A/D-Wandler davon beindrucken.

Als entweder Du baust ihn in einen Spannungsteiler ein:
Speisespannung -> Hilfswiderstand -> Temperatursensor -> Masse
Der A/D-Wandler "lauscht" zwischen Hilfswiderstand und Temperatursensor.
Alternativ kannst Du auch die zwei Widerstände miteinander vertauschen. 
Dann ändert sich allerdings die Richtung der Änderung.

Oder Du schaltest eine Konstantstromquelle davor. Da aber ist etwas 
aufwändiger.

von Robert I. (robert_i39)


Lesenswert?

Hab das ganze mal versucht Messtechnisch nachzuvollziehen und bin auf 
folgendes Ergebnis gekommen.

Ich habe eine Spannungsquelle (USB) mit 5.22V . Da ich leider die nötige 
Auflösung mit meinem Multimeter nur unter 2V erreiche hab ich zum Sensor 
in Serie einen Widerstand mit 4,7 kOhm geschaltet.

Wenn ich jetzt nur die Spannung an den Pins vom Sensor mit dem 
Multimeter messe habe ich dort bei Raumtemperatur eine Spannung von ca 
1600 mV und wenn ich den Sensor erhitze erreiche ich eine Spannung von 
1800 mV , denke mal es wäre auch mehr möglich.

Somit entnehme ich dem Versuch dass wenn ich nur den Sensor an meinen 
ADC verbinde (anstatt dem Multimeter gleich ranhänge) , müsste dann der 
ADC doch die Änderung der Spannung erfassen können.


Oder ?

von Christian K. (christiankarle)


Lesenswert?

Genau :)


Vcc (5,22 V)------Temperatursensor------------R2 (4,7kOhm)-------GND
                                      |
                                      |
                                      |
                                      |
                                     ADC

: Bearbeitet durch User
von Robert I. (robert_i39)


Lesenswert?

So habs jetzt mal verbunden und probiert.

Ich bekomme für Result Werte zwischen 423 bei Raumtemperatur und wenn 
ich den Sensor erhitze steigt der Wert auf 427 an , irgendwie etwas 
wenig oder ?

EDIT:

Ok , diese Werte erscheinen auch wenn nichts am Launchpad angeschlossen 
ist.

: Bearbeitet durch User
von Christian K. (christiankarle)


Lesenswert?

Wie groß ist deine Referenzspannung ?

Du könntest deine Referenzspannung verkleinern.
Wie hoch ist die Auflösung deines ADC's ?

von Klaus R. (klara)


Lesenswert?

Robert I. schrieb:

> Ich bekomme für Result Werte zwischen 423 bei Raumtemperatur und wenn
> ich den Sensor erhitze steigt der Wert auf 427 an , irgendwie etwas
> wenig oder ?

Wenn es dein Voltmeter hergibt, mess doch jeweils mal die Spannung am 
ADC-Eingang und notier dabei was der ADC ausgibt.
Gruss Klaus.

von Robert I. (robert_i39)


Angehängte Dateien:

Lesenswert?

Hallo.

Habe es jetzt etwas genauer gemacht. Ich habe eine Quellspannung von 
3,3V und habe mit einem Spannungsteiler den ADC gefüttert.
Ich bin von einem Strom von 5mA ausgegangen daher hat der erste 
Widerstand R1 260Ohm und der R2 400Ohm um als Ur2 = 2V zu bekommen, 
damit ich es dann auch zurückrechnen kann.

Multimeter sagt am R2 2V.

Die Ausgabe meines ADC zeigt 568 an .Fehlt noch die Umrechnung zurück 
auf die Spannung um das zu Überprüfen. Kann ich als Referenzspannung 
jetzt die 3,3V nehmen ?

Gruß

EDIT: Hat funktioniert, über die Rückrechnung habe ich eine Spannung von 
1,83 V errechnet, weicht halt um 0,17V ab . Muss dann noch rausfinden 
wie ich das in der Rechnung korrigieren kann....

EDIT2:

Korrekturfaktor berechnen , dazu multiplizieren. Geschafft :)

: Bearbeitet durch User
von Klaus R. (klara)


Lesenswert?

Robert I. schrieb:

> Multimeter sagt am R2 2V.
>
> Die Ausgabe meines ADC zeigt 568 an .

Das war der erste wichtige Schritt. Jetzt mach mal eine zweite Messung 
mit vielleicht 1V. Dann kannst Du ausrechnen wie hoch die Auflösung des 
ADC in Spannung/Bit ist.
Mit diesem Wert kommst Du dann auf die mögliche Auflösung in °C/Bit.

Gruss Klaus.

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.