Introduction to MLX90614
What is MLX90614?
MLX90614 series modules are a set of general infrared temperature measurement modules.
It has the advantages of non-contact, small size, high precision and low cost. Contact type temperature measurement can only measure the temperature after the object to be measured and the temperature sensor reach thermal equilibrium, so the response time is long and it is easily affected by the ambient temperature; while infrared measurement Temperature is to determine the temperature of the object according to the infrared radiation energy of the object to be measured. It does not touch the object to be measured, and has an influence on the temperature distribution field of the measured object. The upper limit of temperature is limited, and the stability is good.
MLX90614 working principle
MLX90614 consists of MLX81101 infrared thermopile sensor and MLX90302 signal processing chip including voltage stabilizing circuit, low noise amplifier, A/D converter, DSP unit, pulse width modulation circuit and logic control circuit. Its working principle is: the temperature signal output by the infrared thermopile sensor is amplified by the internal low-noise, low-offset operational amplifier (OPA) and then converted into a 17-bit digital signal by the A/D converter (ADC) through the programmable FIR and IIR low Pass digital filter (that is, DSP) after processing and output, the output result is stored in its internal RAM storage unit. There are two memories in MLX90614, EEPROM and RAM. There are a total of 32 EEPROM memory cells with a word length of 16 bits in MLX90614, the address of which is 000H-01FH. All registers in the EEPROM can be read through SMBus, but only some registers can be rewritten (addresses are 0x00, 0x01, 0x02, 0x03, 0x04, 0x05*, 0x0E, 0x0F, 0x09).
There are a total of 32 17-bit RAM storage units in MLX90614. Users cannot write data through RAM, but can only read some storage units in RAM to read 16-bit storage data. The collected environmental temperature data is stored in the address 006H storage unit, and the collected measured object temperature data is stored in the 007H storage unit. Therefore, using the data stored in the RAM address, through the calculation of the formula, the ambient temperature Ta and the measured object temperature data To.
IIC protocol
Pin function:
VSS: The power ground, the metal shell is connected to this pin.
SCL/Vz: SMBus interface clock signal, or 8-16V power supply when connected to the base of the triode.
PWM/SDA: The data signal of the PWM or SMBus interface. Under normal mode, the object temperature is output from this pin through PWM.
VDD: power supply.
The communication steps between IIC master and slave are as follows:
1. The master sends a start signal to notify each slave to be in place.
2. The host sends the slave address and read-write flag bit (write flag bit is 0, read flag bit is 1) The slave address and read-write flag bit occupy a total of 8 bits, the address occupies the high 7 bits, and the read-write flag bit occupies the lowest Bit.
3 The slave responds to the master (ACK)
4. If it is in the write mode, the master sends a byte of data and waits for the slave to respond. After the master receives the response, if there is still data to be sent, it will continue to send the second piece of data and wait for the response …Until the transmission is completed; if it is in read mode, the host STM32 reads the data sent by the slave and responds to the slave. If the slave still has data to send (then report the second paragraph), the host reads Then send a response to the slave.
5. The master sends a stop signal to the slave.
ⅠWrite timing sequence
First, the master sends a start bit, and then sends the slave address 0x00 and write flag 0, a total of 8 bits. After sending these 8 bits, the master waits for the response from the slave. If the slave sends a response signal, the master continues to send one byte of data to the slave. Similarly, it waits for the response from the slave again, and the master receives the response. After that, if there is still data to be sent, continue to send the second piece of data and wait for the response…until the sending is completed.
Ⅱ Read timing sequence
First, the master sends a start bit, and then sends the slave address 0x00 and read flag 1, a total of 8 bits. After sending these 8 bits, the master waits for the response from the slave. If the slave sends a response signal, the slave sends one byte of data to the master. The read sequence is that the host reads data from the slave, and the other way round is that the slave sends data to the host. Similarly, the slave must ask the host whether to continue sending after sending a byte of data. If the host allows the sending to continue, it is After sending the response signal, the slave will continue to send data. After each transmission, it will be asked whether to continue sending. Until the master sends a non-response signal, the slave will stop sending data, and finally the master will send a stop signal.
Ⅲ Communication process
1. Start signal-during the high level of the clock line SCL, the data line SDA has a falling edge transition to generate the start signal.
2. Response signal-the data line SDA maintains a low level during the high level of the clock line SCL as the response signal.
3. Non-acknowledgment signal-the data line SDA remains high during the high level of the clock line SCL as a non-acknowledgment signal.
4. End signal-during the high level of the clock line SCL, the data line SDA has a rising edge transition to generate a stop signal.
5. Data signal–During the data transmission period, the clock line SCL is at a high level. If the data line SDA is at a high level, it represents a binary 1. Similarly, the clock line SCL is at a high level. If the data line SDA is at Low level represents binary 0.
Surface temperature measurement by infrared
If you want to use a non-contact method (we do for this project) to detect temperature, infrared sensors are the best solution. Therefore, we will use Melexis’ MLX90614 infrared thermometer for this project. The MLX90614 sensor uses non-contact temperature sensing to collect temperature information without touching any specific surface.
Although invisible to the human eye, all objects emit infrared light, and the concentration varies with temperature.
MLX90614 is a powerful infrared sensor device with a very low noise amplifier and 17-bit ADC. It can provide high precision and precision for the thermometer. The best part about the MLX90614 is that it uses the factory’s digital SMBus for calibration. This means that it is expected to provide a progressive output of 0.02°C and continuously transmit a measured temperature of -20 to 120°C.
Required materials
Arduino
Character LCD
MLX90614
LCD shield (optional)
Wiring
The MLX 90614 thermometer has an I2C communication line, so we can connect the sensor to the Arduino without any additional circuits. Connect everything as shown below. You can use LCD 16X2 to shield or connect a separate LCD.
There are many items that can be sent with infrared temperature sensors, such as measuring liquids or thermal touch surfaces. Because it does not require direct contact, MLX90614 will be a good choice in these situations. For more projects, please click Seeed Fusion.