Arduino Nano v3 internal temperature sensor
Calibration data:
Download data & formulas in excel.
Atmega documentation says:
The voltage sensitivity is approximately 1 mV/°C and the accuracy of the temperature measurement is +/- 10°C.
Measured temperature is a sum of ambient temperature and chip’s TDP.
In fact it rises up for few minutes after the chip is powered and may change in base of load.
// Read Atmega328P internal temperature sensor // long read_temp() { // Read temperature sensor against 1.1V reference ADMUX = _BV(REFS1) | _BV(REFS0) | _BV(MUX3); // Start AD conversion ADCSRA |= _BV(ADEN) | _BV(ADSC); // Detect end-of-conversion while (bit_is_set(ADCSRA,ADSC)); // return raw data return ADCL | (ADCH << 8); } // Convert raw temperature data to °C double conv_temp(long raw_temp) { // f(x) = (raw - offset) / coeff return((raw_temp - 324.31) / 1.22); } void setup() { Serial.begin(115200); } void loop() { Serial.println(conv_temp(read_temp()), 1); delay(500); }Datasheet Atmega 328P – https://www.microchip.com/wwwproducts/en/ATmega328p
It is a curious fact that putting chips in the freezer, after a few minutes when the temperature drops below zero, the chip stops working.