Arduino Internal temperature sensor

Last Updated on March 24, 2024

Most AVR chips (microcontrollers) have an internal temperature sensor, hence we can use this option to get temperature range in rare condition, this might show higher than external temperature. Before step into Arduino Internal temperature Sensor experiment make sure your Arduino board micro controller have internal temperature sensor.


List of AVR microcontrollers having internal temperature sensor given,

ATmega168A : Yes

ATmega168P : Yes

ATmega328 : Yes

ATmega328P : Yes

ATmega32U4 (Arduino Leonardo) : Yes

Refer your Arduino board chip to know about the internal temperature sensor.

The internal temperature of microcontroller varies depends on its work load.

To measure temperature in degree Celsius.

Arduino internal temperature sensor Code

// Internal Temperature Sensor
// Example sketch for ATmega328 types.
// Arduino Internal temperature sensor

void setup()

  Serial.println(F("Internal Temperature Sensor"));

void loop()
  // Show the temperature in degrees Celcius.

double GetTemp(void)
  unsigned int wADC;
  double t;

  // The internal temperature has to be used
  // with the internal reference of 1.1V.
  // Channel 8 can not be selected with
  // the analogRead function yet.

  // Set the internal reference and mux.
  ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3));
  ADCSRA |= _BV(ADEN);  // enable the ADC

  delay(20);            // wait for voltages to become stable.

  ADCSRA |= _BV(ADSC);  // Start the ADC

  // Detect end-of-conversion
  while (bit_is_set(ADCSRA,ADSC));

  // Reading register "ADCW" takes care of how to read ADCL and ADCH.
  wADC = ADCW;

  // The offset of 324.31 could be wrong. It is just an indication.
  t = (wADC - 324.31 ) / 1.22;

  // The returned temperature is in degrees Celcius.
  return (t);

Steps to Use Arduino Internal Temperature Sensor:

Step 1: Check the Arduino board Chip about Internal temperature sensor.

Step 2: Connect Arduino with system.

Step 3: Upload the Arduino code for Internal temperature sensor.

Step 4: Obtain the temperature reading in Arduino Serial Monitor.



2 thoughts on “Arduino Internal temperature sensor

    1. I used a digital thermometer on the Pro Mini chip and changed the 324.31 value untill the arduino read a temp close enough to the thermometer. In my case it was 328.31

Leave a Reply

Your email address will not be published. Required fields are marked *