Arduino peripherals guide series

MCP9808: an accurate thermometer module for your Arduino

The MCP9808 is a very accurate temperature sensor for your Arduino. It offers user-selected resolutions, programmable alerts, I2C connectivity, and works with 5V and 3.3V Arduinos.

In a previous article, I discussed three common thermometer sensors used by Arduino makers. A student recently asked if any thermometer sensors are more accurate than the common DHT11/22, TMP36, and BMP280.

The Microchip MCP9808 high-accuracy temperature sensor

Of course, there is! Presenting the MCP9808 from Microchip.

You can see that this module is made for accuracy by looking at the first page of its datasheet; this is what you see:

There's more information than usual about the accuracy of the device, with typical and maximum values at different ranges. It is also possible to select the measurement resolution!

Evaluation of the MCP9808 accuracy plots

The first page also contains a very interesting temperature accuracy distribution plot:

This plot tells us that 20% of readings from a sample of 854 units of this module contain approximately a 0.0˚C error! 

The data shows that this is a very accurate sensor! 

The datasheet contains several more interesting plots, like these in page 7:

These plots illustrate how accuracy changes over the range of temperatures that the sensor is capable of measuring. Notice that in figure 2-3, which shows the error distribution at 25˚C, the distribution is tall and concentrated thinly around the 0 mark on the horizontal axis; this indicates that the manufacturer calibrated this sensor to work best in regular room temperatures, where most of our electronics work.

Then, look at Figures 2-5 and 2-4, how the error distributions at 85˚C and -20˚C are shorter and more spread out, indicating a larger spread of the measurement errors.

This is a visual description of the fact that the accuracy of a sensor varies along the whole width of the range in which it operates.

Learn more

This uses the I2C interface to communicate with a microcontroller. Adafruit has published a library that makes using it even easier.

If you want to learn how to use the MCP9808 with your Arduino, consider my course Arduino Step by Step Getting Started, where I cover the sensor in Lecture 14 of Section 10.

New to the Arduino?

Arduino Step by Step Getting Started is our most popular course for beginners.

This course is packed with high-quality video, mini-projects, and everything you need to learn Arduino from the ground up. We'll help you get started and at every step with top-notch instruction and our super-helpful course discussion space.

Tech Explorations Arduino intermediate level

Done with the basics? Looking for more advanced topics?

Arduino Step by Step Getting Serious is our comprehensive Arduino course for people ready to go to the next level.

Learn about Wi-Fi, BLE and radio, motors (servo, DC and stepper motors with various controllers), LCD, OLED and TFT screens with buttons and touch interfaces, control large loads like relays and lights, and much much MUCH more.


Last Updated 8 months ago.

We publish fresh content each week. Read how-to's on Arduino, ESP32, KiCad, Node-RED, drones and more. Listen to interviews. Learn about new tech with our comprehensive reviews. Get discount offers for our courses and books. Interact with our community. One email per week, no spam; unsubscribe at any time

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}