0、结果
说明:先来看看串口调试助手显示的结果,第一个值是空气的温度,第二个值是被测量的物体温度,如果是你想要的,可以接着往下看。

1、外观
说明:虽然mlx90614非接触式红外测温传感器形态各异,但是原理和代码都是适用的。

2、连线
说明:只需要连接四根线。
- uno————mlx90614红外测温传感器
- 3.3V--------------VCC
- GND--------------GND
- SCL---------------SCL
- SDA---------------SDA
3、源程序
说明:采用非阻塞方式编写,一定时间检测一次温度,并将对应功能进行函数化,方便移植。
/*********************************mlx90614 part********************************************************************/
/*
wiring:
VCC------VCC
GND------GND
SCL------SCL
SDA------SDA
Note: When measuring the distance of an object, it is best to measure it between 5CM and 15CM
*/
#include <Wire.h> //include library
#include <Adafruit_MLX90614.h> //include library
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //Instantiate an object
#define mlxTimeInterval 1000 //Detect the time interval of a trip
unsigned long mlxTimes = 0; //Record the device running time
float mlxAmbTemp = 0; //Ambient temperature
float mlxObjTemp = 0; //Body temperature
/****************************************set up and loop part*********************************/
void setup() {
Serial.begin(9600); //Set baud rate
mlx.begin(); //IIC communication initialization
Serial.println("Go online!"); //The device is initialized
}
void loop() {
getMlxData(); //Acquired temperature
}
/*********************************mlx90614 part********************************************************************/
/*Acquired temperature*/
void getMlxData() {
if (millis() - mlxTimes >= mlxTimeInterval ) { //This command is executed once in a while
mlxTimes = millis();
mlxAmbTemp = mlx.readAmbientTempC(); //Acquired temperature
mlxObjTemp = mlx.readObjectTempC() * 0.8; //Acquired temperature
Serial.print("Ambient (C): "); // The serial port displays the corresponding value
Serial.print(mlxAmbTemp); // The serial port displays the corresponding value
Serial.print(" , Objec (C): "); // The serial port displays the corresponding value
Serial.println(mlxObjTemp); // The serial port displays the corresponding value
}
}
4、注意事项
说明:需要在线下载对应的库文件才不会编译报错,可以在管理库中很方便的搜到,如果搜不到可以评论@我,我将私发给你。注意接的是3.3V。测得的环境温度很准,但是物体温度偏高,查了资料,发现物体温度的测量数据是线性的,所以乘以了0.8,数值就比较合适。测物体温度的时候,距离最好在5CM~15CM,这样值会比较准,因为红外线的能量会随着距离的增加而逐渐衰减,从而影响传感器的测量精度。
5、基本原理
MLX90614 采用 MEMS 技术制造,并具有两个独立的传感器,一个用于测量环境温度,另一个用于测量物体表面温度。
MLX90614 中采用的是一种主动热式红外测温技术,以保证测量的准确性和稳定性。当传感器靠近目标物体时,目标物体会向传感器发射红外线辐射能量,传感器会接收到这些红外线辐射,并将其转换为电信号。传感器内部会根据电信号的大小进行计算,得出物体表面的温度。
在这个过程中,MLX90614 通过调节其内部的光学滤波器和增益控制器,以保持测量的精度,可以采集到非常细微的变化。同时,在传感器与目标物体之间还有一个特定的距离范围,如果超出了这个范围,就会导致测量误差的产生。因此,在使用 MLX90614 的时候,需要注意选择合适的测量距离和角度,以获得更准确的测量结果。
总体来说,在 Arduino 中使用 MLX90614 传感器时,需要将传感器连接到 Arduino 控制器,并利用 Arduino 提供的库函数进行相关配置和读取数据。通过理解 MLX90614 的工作原理,我们可以更好地掌握它的应用方式。