Hallo,
ich bin grade dabei ein Projekt zu schreiben wo ich
die Temperatur des Prozessors auslesen muss, da er rund um
die Uhr laufen soll. Ich habe irgendwo gelesen dass einige Prozessoren
einen solchen Sesor intigriert haben. Wo steht genau wo ich diesen
Wert abfragen kann.
Ich hab ein Board mit einem AtMega328.
Der ATmega hat einen Temperatursensor am Analogmultiplexer. Dieser ist nicht im der Arduino analogRead-Funktion abrufbar, sondern Du mußt dies "von Hand" machen: http://arduino.cc/forum/index.php/topic,8140.0.html
Ich habe es jetzt getestet, habe aber das Problem das
ich das ich als Tempratur 681°C agezeigt bekomme. Im Thread
steht ja es sollte mit einem 328 Chip gehen. Den hab ich auch auf dem
Board. Wo liegt der Fehler?
void setup()
{
Serial.begin(9600);
ADMUX = 0xC8; // turn on internal reference, right-shift ADC buffer, ADC channel = internal temp sensor
delay(10); // wait a sec for the analog reference to stabilize
}
void loop()
{
Serial.println(averageTemperature()); // so we can debug
delay(500); // just to slow things down a bit
}
int readTemperature()
{
ADCSRA |= _BV(ADSC); // start the conversion
while (bit_is_set(ADCSRA, ADSC)); // ADSC is cleared when the conversion finishes
return (ADCL | (ADCH << 8)) - 342; // combine bytes & correct for temp offset (approximate)}
}
float averageTemperature()
{
readTemperature(); // discard first sample (never hurts to be safe)
float averageTemp; // create a float to hold running average
for (int i = 1; i < 1000; i++) // start at 1 so we dont divide by 0
averageTemp += ((readTemperature() - averageTemp)/(float)i); // get next sample, calculate running average
return averageTemp; // return average temperature reading
}
float averageTemperature()
{
readTemperature(); // discard first sample (never hurts to be safe)
float averageTemp = readTemperature(); // create a float to hold running average
return averageTemp; // return average temperature reading
}
Im verlinkten Thread ist dieser Rückgabewert auch genannt, ein konkrete Lösung wurde nicht gefunden, einzig die Mutmaßung dass gar Temperatursensor vorhanden sei.
Ich glaube nicht, dass es in Fahrenheit angegeben wird,
denn genau angezeigt wird 681.00 . Und wenn ich die Funktion
mit Fahrenheit verwende, erhalte ich 1257.80 .