Hallo, ich möchte den msp430 f149 für Temperaturmessungen benutzen.
Scheint auch schon zu funktionieren, jedoch bin ich nicht ganz dahinter
gekommen wie man den Wert des ADCs in Celsius umrechnen kann.
Ich benutze folgenden Code für die Messung:
int energ, temp;
ADC12CTL0 &= ~ENC; ADC12CTL1 = CSTARTADD_0 + SHS_0 + SHP +
ADC12DIV_7 + CONSEQ_1 + ADC12SSEL_2;
ADC12CTL0 = SHT0_15 + SHT1_15 + MSH + REFON + ADC12ON;
Delay (1000);
ADC12MCTL0 = 0xB + SREF_1;
ADC12MCTL1 = 0xA + SREF_1 + EOS;
ADC12CTL0 |= ENC + ADC12SC;
while((ADC12IFG & 1) == 0 || (ADC12CTL1 & ADC12BUSY));
ADC12CTL0 &= ~ENC;
energ = ADC12MEM0;
temp = ADC12MEM1;
ADC12CTL0 &= ~(REFON + ADC12ON);
Bei Raumtemperatur erhalte ich hiermit Werte von ca. 3090.
Wäre für jede Hilfe dankbar.
Gast
#596374
Die Schaltung wäre recht interessant. Der ADC-Wert sagt Dir nur, welche Spannung über dem NTC/PTC oder was Du auch immer verwendest, abfällt. Ohne Schaltungsbeschreibung kann man da wenig sagen...
Gast
#596385
Die Spannung an der eingebauten Temperaturdiode ist laut Datenblatt U = T * 3.55mV + 986mV bei einer Referenzspannung von 1.5V ergibt das: T = ADC * 0.103158 - 277.75
Danke für die rasche Antwort! Mit dieser Umwandlung komme ich dann auf etwa 41°Celsius. Raumtemperatur liegt in etwa bei 25°. Kann man den Wert mit einer Art "Negativen Offset" versehen um die Temperatur anzupassen, oder ist die Innentemperatur des MSPs einfach immer etwas höher? Ist möglicherweise eine etwas dämliche Frage, ich habe jedoch zum ersten Mal mit Microcontrollern zu tun. ;-)
Gast
#596449
Ja das ist eine gute Ide. Der Offset -277.75 ist nur der theoretische Wert. Du kannst ihn entsprechend anpassen.
Gast
#596472
Oerks, sorry, ich dachte, Du misst eine externe Temperatur :-) Werde wohl langsam alt...
Trotzdem DANKE an euch beide! Jetzt funkts!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.