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.
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...
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. ;-)
Ja das ist eine gute Ide. Der Offset -277.75 ist nur der theoretische Wert. Du kannst ihn entsprechend anpassen.
Oerks, sorry, ich dachte, Du misst eine externe Temperatur :-) Werde wohl langsam alt...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.