Crowbits-IR Temperature Sensor

From Elecrow
Jump to navigation Jump to search


This IR temperature sensor is a non-contact temperature measure model by using the MLX90614, which one is in small size and low cost with a measurement resolution of 0.02℃. Thanks to its low noise amplifier, 17-bit ADC and powerful DSP unit, high accuracy and resolution of the thermometer are achieved.

Crowbits-IR Temperature Sensor 1.jpg


  • High precision
  • Easy to use


  • Interface Type: I2C
  • Operating Voltage: 3.3V DC
  • Dimensions: 31.5(L)*24.5(W)*13(H)mm


The following sketch demonstrates a simple application of the module.

1. You need to prepare a Crowbits motherboard, such as Crowbits-UNO board.

2. Connect the module to the I2C interface on the Crowbits-UNO board, as shown in the figure:

Crowbits-IR Temperature Sensor-Wiki 1.JPG

3. Download the library “I2Cmaster”. Unzip and put it in the libraries file, for example: C:\Program Files (x86)\Arduino\libraries.

4. Upload the following code to the Crowbits-UNO board.

#include <i2cmaster.h>

void setup(){
	i2c_init(); //Initialise the i2c bus
	PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups

void loop(){
    int dev = 0x5A<<1;
    int data_low = 0;
    int data_high = 0;
    int pec = 0;
    // read
    data_low = i2c_readAck(); //Read 1 byte and then send ack
    data_high = i2c_readAck(); //Read 1 byte and then send ack
    pec = i2c_readNak();
    //This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
    double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614)
    double tempData = 0x0000; // zero out the data
    int frac; // data past the decimal point
    // This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
    tempData = (double)(((data_high & 0x007F) << 8) + data_low);
    tempData = (tempData * tempFactor)-0.01;
    float celcius = tempData - 273.15;
    float fahrenheit = (celcius*1.8) + 32;

    Serial.print("Celcius: ");

    Serial.print("Fahrenheit: ");

    delay(1000); // wait a second before printing again

5. After the upload is successful, open the serial port monitor, the baud rate is set to 9600. The serial port will print out temperature information.

Crowbits-IR Temperature Sensor-Wiki 2.jpg