第二十七篇、基于Arduino uno,获取mlx90614非接触式红外测温传感器的温度值——结果导向

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 的工作原理,我们可以更好地掌握它的应用方式。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值