MLX90614 红外测温模块
MLX90614 简介
MLX90614是一款由迈来芯公司提供的低成本,无接触温度计。输出数据和物体温度呈线性比例,具有高精度和高分辨率。TO-39金属封装里同时集成了红外感应热电堆探测器芯片MLX81101(温度是通过PTC或是PTAT元件测量)和信号处理专用集成芯片MLX90302,专门用于处理红外传感器输出信号。用以阻碍可见光和近红外光辐射的光学滤波器(可传播长波)集成在封装内提供对环境和日光的免疫。滤波器的波长通带为5.5到14μm。由于集成了低噪声放大器、17位模数转换器和强大的数字信号处理芯片 MLX90302,使得高精度和高分辨度的温度计得以实现。一个附加的片上温度传感器用来测量芯片的温度。测量完两个传感器的输出后,对应的环境温度和物体温度被计算出。计算所得物体温度和环境温度存储在MLX90302的RAM单元,温度分辨率为0.01℃,并可通过两线 SMBus(系统管理总线)兼容协议接口(IIC与之兼容)(0.02℃分辨率)或是10位PWM(脉宽调制)输出模式输出。MLX90614出厂温度范围都进行过校准,传感器测量的温度为视场里所有物体温度的平均值。
MLX90614 参数
探头直径8.2mm
数字接口类型:IIC(从模式)
温度测量范围:-70℃~382.2℃
温度测量误差:±0.5℃ (室温下)分辨率0.02℃
工作电压:3.3V~5V
使用环境温度-40~125℃
项目介绍
本项目将以Arduino作为主控,按键触发,搭配MLX90614红外测温传感器制作一个非接触式,测温距离在1CM左右的人体手腕测温仪,测量到的温度用OLED显示屏打印出来 。
项目搭建
接线
Arduino | MLX90614 | OLED | 按键 |
---|---|---|---|
A4 | SDA | ||
A5 | SCL | ||
5V | VIN | VCC | |
GND | GND | GND | OUT |
D3 | IN | ||
D8 | RES | ||
D9 | DC | ||
D10 | CS | ||
D11 | D1 | ||
D12 | D2 |
开发
为了方便开发本项目会用到MLX90614库和U8g2库
#include <U8g2lib.h>
#include <Adafruit_MLX90614.h>
项目上电后初始化完成后,在串口和OLED屏幕上打印项目名称"Contactless Temperature Measurement",由于屏幕宽度有限,使用OLED显示器分行打印
Serial.println("Contactless Temperature Measurement"); //串口打印项目名称
u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
u8g2.setFont(u8g2_font_ncenB14_tr); //字体选择
u8g2.setFontDirection(0); //绘制/显示方向
u8g2.clear(); //清空显示和缓冲
u8g2.setCursor(7, 15); //移动光标位置
u8g2.print("Contactless"); //OLED打印内容
u8g2.setCursor(0, 35);
u8g2.print("Temperature");
u8g2.setCursor(0, 55);
u8g2.print("Measurement");
u8g2.sendBuffer();
通过按下按键改变D3引脚电平状态触发测温
int Start()
{
int B=1;
B=digitalRead(Bottom);
delay(30);
return B;
}
获取温度—为了提高温度的可靠性 读取了5次温度存放在一个数组里,数组里的输出通过可靠性判断和处理后就可以打印输出了
void gTemp()
{
for (int i = 0; i < 5; i++)
{
t[i] = mlx.readObjectTempC();
Serial.println(t[i]);
delay(300);
}
}
主程序
void loop(void) {
while(!Start()) //测温循环
{
u8g2.clear();
Serial.println("start"); //串口打印开始信息
delay(1000);
gTemp(); //测温 读取5次温度值 保存再t数组里面
if(dTemp()>0) // 判断数据有效性
{
u8g2.clear(); //清屏
u8g2.setCursor(3, 20);
u8g2.print("temperature");
u8g2.setCursor(40, 50);
u8g2.print(prantTemp()); //打印温度值
Serial.println(prantTemp()); -
u8g2.sendBuffer();
}
else
{
Serial.println("read fail"); //串口打印测温错误信息//五次温度处理后判断为无效数据
u8g2.clear(); //清屏
u8g2.setCursor(23 ,17); //OLED打印位置
u8g2.print("read fail"); //OLED打印读取失败信息 OLED打印测温错误信息//五次温度处理后判断为无效数据
u8g2.setCursor(19, 37); //OLED打印位置
u8g2.print("please try"); //OLED打印读取失败信息
u8g2.setCursor(35, 55); //OLED打印位置
u8g2.print("again"); //OLED打印读取失败信息
u8g2.sendBuffer();
}
delay(5000);
u8g2.clear(); //清屏
break;
}
}
项目验证展示
- 点击开始测温后被测温目标再进入测温区域,判断为测温失败
测温失败演示文章来源:https://www.toymoban.com/news/detail-780283.html
- 正确测温演示
Arduino - MLX90614非接触式测温文章来源地址https://www.toymoban.com/news/detail-780283.html
测得温度为36.25摄氏度
到了这里,关于MLX90614红外测温传感器使用arduino采集温度数据OLED显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!