After Blinking LEDs and controlling Relays using Arduino, every hobbyist, who is actively making DIY projects, plans on building a Weather Station. It doesn’t have to predict rainfall or storms but simply measure the basic stuff like Temperature and Humidity.
Temperature Sensor and Humidity Sensor (often they come in a single package, but discreet components are also available) are the main ingredients of an Arduino Weather Station. Since this article is all about Arduino Compatible Temperature Sensors, let us focus on them.
Measuring Temperature of an object or a room using Arduino is a very useful project. You can continuously monitor the changes in temperature and log the data for further analysis.
There are a bunch of Arduino compatible Temperature Sensors available in the market. Some are relatively cheap and easy to use while some are expensive with great accuracy.
I made a list of some commonly found Temperature Sensors for Arduino, with some basic specifications listed out for each sensor. These sensors can be used with other developments boards like STM32F103C8T6 Blue Pill Board, Raspberry Pi, ESP8266 or ESP32.
So, if you are looking for the perfect Arduino Temperature Sensor for your DIY project, then go through the list and make the decision.
LM35
Today, there are a variety of Temperature Sensors that are marketed towards DIY and hobbyist community. But a few years ago, if we speak about temperature sensor, then LM35 is the only choice (at least for me).
It is one of the most popular temperature sensors available out there, which is being used even today. LM35 is an Analog Temperature Sensor which is calibrated directly in Celsius. The output analog voltage is linearly proportional to temperature in Centigrade.
The transfer function of LM35 is
VOUT = 10mV/0C x T, where VOUT is the output voltage, T is the temperature in 0C.
What the transfer function means is that for every degree Celsius rise in temperature, the output voltage increases by 10mV.
There are two other Temperature Sensors similar to LM35. They are LM34, which is calibrated for temperature in Fahrenheit and LM335, which is calibrated for temperature in Kelvin.
Important Specifications of LM35:
Range | -550C to 1500C |
Accuracy | ±0.50C at 250C |
Operating Voltage Range | 4V to 30V |
Communication Protocol | Analog Output |
Applications | Power Supplies |
HVAC Systems | |
Consumer Appliances | |
Battery Management Systems |
DHT11
One of frequently used Temperature Sensors in Arduino projects is the DHT11 Sensor. It is a Relative Humidity Sensor and hence it can measure both the Temperature as well as Humidity.
Internally, the DHT11 Sensor consists of a resistive humidity sensor, an NTC thermistor (temperature sensor) and an 8-bit MCU, which performs the ADC operation to produce digital output.
Speaking of digital output, the DHT11 Sensor communicates using one-wire protocol. The range and accuracy figures of DHT11 Temperature and Humidity sensor are not that impressive when compared to its bigger brother DHT22.
For more information on interfacing DHT11 Temperature Sensor with Arduino. Check out this project.
Important Specifications of DHT11:
Temperature Range | 00C to 500C |
Temperature Accuracy | ±20C |
Humidity Range | 20 – 90% RH |
Humidity Accuracy | ±5% RH |
Operating Voltage Range | 3.3V to 5.5V |
Communication Protocol | One Wire |
Applications | Home Automation Systems |
HVAC Systems | |
Weather Stations |
DHT22
Though the DHT11 is a great choice for simple applications, its range and accuracy might be a limiting factor. Hence, the DHT22, which is also a Relative Humidity Sensor (hence, measures both Humidity and Temperature) is considered to be a better alternative.
Although both DHT11 and DHT22 appear to be same, there is one main difference between those two. The DHT11 is a resistive type Relative Humidity Sensor while the DHT22 is a capacitive type Relative Humidity Sensor.
Often DHT11 is available in Blue coloured housing and DHT22 is available in White coloured housing. The pinout of DHT22 Sensor is same as that of DHT11. Due to better range and accuracy, DHT22 is costlier than DHT11.
Important Specifications of DHT22:
Temperature Range | -400C to 800C |
Temperature Accuracy | ±0.50C |
Humidity Range | 0 – 100% RH |
Humidity Accuracy | ±2% RH |
Operating Voltage Range | 3.3V to 6V |
Communication Protocol | One Wire |
Applications | Home Automation Systems |
HVAC Systems | |
Weather Stations |
Both DHT11 and DHT22 Temperature Sensor can be connected to a cable of length up to 20m for remote temperature measurement.
TMP36
The TMP36 is another Analog Temperature Sensor, which is very similar to the famous LM35 Temperature Sensor. It is a low voltage temperature sensor with operating voltage range starting form 2.7V and the temperature is calibrated in 0C.
TMP36 has a scale factor of 10mV/0C, which is identical to LM35, but the range and accuracy numbers are slightly less than that of LM35. None the less, it is a great alternative to LM35, if you are interested in buying an analog temperature sensor.
Important Specifications of TMP36:
Range | -400C to 1250C |
Accuracy | ±20C at 250C |
Operating Voltage Range | 2.7V to 5.5V |
Communication Protocol | Analog Output |
Applications | Power Supplies |
Thermal Protection Systems | |
Fire Alarms | |
Power System Monitors | |
CPU Thermal Management |
BMP180
Essentially a Barometric Pressure Sensor, the BMP180 by Bosch, can also measure temperature. This makes it a better sensor to integrate into a weather monitoring or weather station projects.
Since the BMP180 is a pressure sensor, we can also measure the altitude (higher the altitude, lower the pressure). Due to its accuracy, stability and robustness (with respect to EMC), the BMP180 Sensor is often used in Mobile Phones, GPS Navigation Systems and other outdoor devices.
Internally, the BMP180 combines a piezo-resistive sensor, an ADC, a control unit with EEPROM and Serial Interface in the form of I2C.
Through the I2C bus, the sensor transmits both pressure and temperature data.
Important Specifications of BMP180:
Pressure Range | 300hPa to 1100hPa (9000m to -500m relating to sea level) |
Pressure Accuracy | -4hPa to 2hPa |
Temperature Range | 00C to 650C |
Temperature Accuracy | ±20C |
Operating Voltage Range | 1.8V to 3.6V (for sensor)
3.3V to 5V (for module) |
Communication Protocol | I2C |
Applications | Mobile Phones |
GPS Navigation Systems | |
PDA | |
Weather Forecast | |
Sports Devices |
DS18B20
The DS18B20 is another digital Temperature Sensor and it is unique in its own way. Firstly, it communicates over 1-Wire bus (developed by Dallas Semiconductor), which means that it requires only a single data line to communicate (and of course, a GND wire).
Second unique feature is that the DS18B20 Sensor can be powered using the data line itself (known as parasite power). This eliminates the need for any external supply. Third unique feature is you can select the output resolution anywhere between 9-bits to 12-bits.
Another important feature is that each DS18B20 Sensor has a unique 64-bit serial number associated with it. Using this feature, you can connect many DS18B20 sensors to the same 1-Wire Bus and communicate with a single microcontroller.
Important Specifications of DS18B20:
Range | -550C to 1250C |
Accuracy | ±0.50C for -100C to 850C |
Operating Voltage Range | 3V to 5.5V |
Communication Protocol | 1-Wire |
Applications | Thermostatic Controls |
Industrial Systems | |
Thermometers | |
Consumer Products |
BME280
Another all-in-one sensor from Bosch is the BME280 Sensor. It can measure pressure, humidity and temperature with great measuring ranges and accuracy. It is a low power sensor making it suitable for battery operated devices like mobile phones, fitness trackers, navigations systems etc.
The sensor supports both I2C as well as SPI communication interfaces. So, if you choosing a module, make sure that corresponding pin outs are available.
Important Specifications of BME280:
Pressure Range | 300hPa to 1100hPa |
Pressure Accuracy | ±1hPa |
Temperature Range | -400C to 850C |
Temperature Accuracy | ±10C |
Humidity Range | 0% to 100% |
Humidity Accuracy | ±3% |
Operating Voltage Range | 1.8V to 3.6V (for sensor)
3.3V to 5V (for module, if it has voltage regulator) |
Communication Protocol | I2C or SPI (check for pinout) |
Applications | Mobile Phones |
GPS Navigation Systems | |
PDA | |
Weather Forecast | |
Sports Devices (fitness trackers) |
MCP9808
The MCP9808 is a high accuracy digital temperature sensor from Microchip. It is a low power sensor which communicates over I2C or SMBus. The typical accuracy of ±0.250C makes it one of the more accurate temperature sensors in the list.
Using its three adjustable address pins, you can connect up to 8 MCP9808 Temperature Sensors to the same I2C bus. Such setup is suitable for multizone temperature monitoring applications.
Important Specifications of MCP9808:
Range | -400C to 1250C |
Accuracy | ±0.250C |
Operating Voltage Range | 2.7V to 5.5V |
Communication Protocol | I2C / SMBus |
Applications | Industrial Freezer |
Food Processing | |
Personal Computers | |
Portable Devices |
Si7021
The Si7021 is an integrated Humidity and Temperature Sensor from Silicon Labs. The IC integrates humidity sensor, temperature sensor, ADC and I2C Communication Interface.
Both the humidity and temperature sensors are factory calibrated and there is no need for any user calibration. The Si7021 is a low power sensor with high accuracy temperature sensor.
Important Specifications of Si7021:
Temperature Range | -100C to 850C |
Temperature Accuracy | ±0.40C |
Humidity Range | 0 – 80% RH |
Humidity Accuracy | ±3% RH |
Operating Voltage Range | 1.9V to 3.6V (for sensor) |
Communication Protocol | I2C |
Applications | Thermostats |
HVAC Systems | |
Weather Stations | |
Mobile Phones | |
Automotive Climate Control |
TC74
It is quite rare to see temperature sensors in TO-220 package but TC74 is one such device. It is a serial digital temperature sensor useful in low-cost applications. It is not a high accuracy temperature sensor but its low-cost and TO-220 package (also available in SOT-23) makes the TC74 a good choice for a wide range of projects.
The communication interface of TC74 is I2C or SMBus with speed of 100kHz.
Important Specifications of TC74:
Range | 250C to 850C |
Accuracy | ±20C |
Operating Voltage Range | 2.7V to 5.5V |
Communication Protocol | I2C / SMBus |
Applications | Hard Disks |
Power Supplies | |
Personal Computers | |
Thermostats |
PCT2075
A great I2C based digital Temperature Sensor from NXP is the PCT2075. If you are familiar with LM75 Temperature Sensor, then PCT2075 is a very good alternative to that.
The PCT2075 Sensor contains a 11-bit Sigma-Delta ADC with a resolution of 0.1250C. the I2C bus of PCT2075 supports standard mode (100 KHz), fast mode (400 KHz) and fast mode plus (1 MHz) frequencies.
Important Specifications of PCT2075:
Range | -550C to 1250C |
Accuracy | ±20C |
Operating Voltage Range | 2.7V to 5.5V |
Communication Protocol | I2C / SMBus |
Applications | Electronic Equipment |
Industrial Controllers | |
Personal Computers | |
Cooling Systems |
AMT1001
Another combination sensor which can measure both the relative humidity and temperature is the AMT1001 Sensor. It is a capacitive type analog output sensor with separate outputs for humidity and temperature.
IMPORTANT NOTE: AM1001 Sensor measures only Relative Humidity whereas AMT1001 measures both relative humidity as well as temperature. Be careful while purchasing one.
Important Specifications of AMT1001:
Humidity Range | 20% to 90% RH |
Humidity Accuracy | ±5% |
Temperature Range | 00C to 500C |
Temperature Accuracy | ±10C |
Operating Voltage Range | 4V to 5.5V |
Communication Protocol | Analog Output |
Applications | HVAC |
Humidifiers | |
Dehumidifiers |
Conclusion
This is a list of some of the frequently used Arduino Temperature Sensors. If I find any additional sensors that are reasonably priced and suitable for DIY applications, then I will add them in the future. For more information about the individual sensors, I suggest you to search for the manufacturers data sheet.