×

使用Arduino的非接触式红外温度传感器

消耗积分:0 | 格式:zip | 大小:0.05 MB | 2022-07-11

分享资料个

PCB图如下:
pYYBAGKxOheADN2aAABzcdFF8ig448.png
poYBAGKxOhqAZ47nAADZRKYSvuA931.png
pYYBAGKxOh2AclNPAAB9zdZdAvM652.png

描述

使用 Arduino 的非接触式红外温度传感器

大家好,我想做我自己最准确的温度计。在高温测量方面,PT1000、PT100和K型热电偶可以成为解决方案。但问题是微控制器和传感器之间的电线又大又乱。这些电线不防水和耐热。模拟传感器不太准确,并且需要很长的加热和冷却时间。

因此,请牢记所有因素和要求。我决定使用 MLX90614 红外非接触式温度传感器。这种红外传感器可以通过接收从物体或物体表面发出的红外热量来测量外部体温。然后我们将把这个PCB项目中的项目转换为商用项目。PCBWAY是最好的PCB原型服务提供公司。如果您使用我的链接注册,您将获得免费优惠券和新人礼物。

MLX90614:

MLX90614 温度传感器能够在不接触特定物体或表面的情况下测量其温度。传感器的工作原理是测量它所指向的物体发出的红外光量,它使用斯蒂芬-玻尔兹曼定律的原理,该定律指出,包括生物在内的所有物体都会根据物体的温度或物体的温度发射红外能量。存在。因此,通过测量发射的红外能量,我们可以计算出物体的温度。

特征:

· 工作电压:3.6V 至 5V

· 工作电流:1.5mA

· 温度范围:-70°C 至 382.2°C

· 精度:0.02°C

· 包装:TO-39

· 测量温度时,请保持1厘米的测量距离

· 体积小,成本低

· 在很宽的温度范围内进行工厂校准:传感器温度为 -40 至 125 C,物体温度为 -70 至 380 C。

· 可定制的 PWM 输出,用于连续读取

红外线温度计的工作原理:

与可见光类似,也可以聚焦、反射或吸收红外光。红外温度计采用透镜将物体发出的红外光聚焦到称为热电堆的探测器上。

热电堆只不过是串联或并联的热电偶。当红外辐射落在热电堆表面时,它会被吸收并转化为热量。电压输出与入射红外能量成正比。检测器使用此输出来确定温度,并显示在屏幕上。

虽然整个过程听起来可能很复杂,但红外线温度计只需几秒钟即可记录温度并以您所需的单位显示。

发射率:

发射率显示温度计一次可以发出多少红外能量。发射率接近 1.00 的红外测温仪比发射率值较低的红外测温仪可以读取更多的材料。选择一个带有可调节发射率水平的温度计,以调整发射的红外能量并补偿材料反射的能量,以考虑温度测量。

所需组件:

1) MLX90614 温度传感器

2)阿杜诺乌诺

3) SH1306 奥莱德

4) 面包板或定制 PCB

5) 电线和焊接设备的

电路原理图:

在电路中,我们使用非常少的组件、打印读数的屏幕、MLX 传感器和 Arduino 作为该项目的大脑。Arduino 分别有 SDA 和 SCL 引脚 A4 和 A5。我们可以使用 I2C 协议将 Led 和传感器连接到 SDA(DATA PIN)和 SCL(CLOCK PIN)。I2C 最多可以支持 127 个设备,这里我们只有两个。所有电路均由 5 伏直流电供电。

PCB布局:

考虑到项目的大小,我设计了一个 PCB。在这里,我们使用 Arduino Nano 芯片和 type c 端口为整个系统供电。您还可以放置一个带 3.7 伏电池的升压转换器。从这里下载 PCB 文件、Gerber 和原理图。

PCBWAY 是电子爱好者和项目制造商(学生)的领先 PCB 制造公司。PCBWAY 提供 5 块原型 PCB 只需 5 美元,SMT 组装服务只需 12 美元。您可以查看更多、PCB、SMT 组装、模板和 3-D 打印零件。

订购方式:

我设计的 PCB 之后是 PCBway 原型服务,为我的设计提供专业的外观。PCBWAY 是经济实惠的最佳 PCB 制造商。如果您想使用与我相同的设计,请从这里获取。

对于专业的外观,我正在使用 PCBWAY 的 PCB 原型服务。订购过程太简单,使用此链接注册 PCBway。

然后选择PCB尺寸和颜色、表面光洁度和材料等参数。

将其添加到购物车 > 上传 Gerber 文件 > 结帐并在 7 天内收到您的包裹。

代码:

#include

#include

#include

#include

#define SCREEN_WIDTH 128 // OLED 显示宽度,以像素为单位

#define SCREEN_HEIGHT 64 // OLED 显示高度,以像素为单位

#define OLED_RESET -1 // 重置引脚#(如果共享 Arduino 重置引脚,则为 -1)

Adafruit_SSD1306 显示器(SCREEN_WIDTH、SCREEN_HEIGHT、&Wire、OLED_RESET);

#定义激光 12

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

双 temp_amb;

双 temp_obj;

无效设置()

{

序列号.开始(9600);

mlx.开始();//初始化MLX90614

display.begin(SSD1306_SWITCHCAPVCC,0x3C);//使用 I2C 地址初始化 0x3C (128x64)

Serial.println("温度传感器 MLX90614");

pinMode(激光,输出);// 连接激光

数字写入(激光,低);

display.clearDisplay();

display.setCursor(25,15);

display.setTextSize(1);

display.setTextColor(白色);

display.println("温度计");

display.setCursor(25,35);

display.setTextSize(1);

display.print("正在初始化");

显示.显示();

延迟(5000);

}

无效循环()

{

//读取室温和物体温度

//为了读取华氏值,使用

//mlx.readAmbientTempF() , mlx.readObjectTempF() )

temp_amb = mlx.readAmbientTempC();

temp_obj = mlx.readObjectTempC();

数字写入(激光,高);

//串口监视器

Serial.print("室温 = ");

Serial.println(temp_amb);

Serial.print("对象温度 = ");

Serial.println(temp_obj);

display.clearDisplay();

display.setCursor(25,10);

display.setTextSize(1);

display.setTextColor(白色);

display.println("温度");

display.setCursor(25,30);

display.setTextSize(2);

display.print(temp_obj);

display.print((char)247);

display.print("C");

显示.显示();

延迟(1000);

}

设置发射率:

下载 MLX90614 库并从库的示例部分获取发射率设置代码。或者你可以复制下面给定的草图。只需更改值并使用您的读数进行测试。

发射率代码:

/*

* 见应用说明:

* https://www.melexis.com/en/documents/documentation/application-notes/application-note-mlx90614-changeing-emissivity-setting

*

* 1. 将 0x0000 写入地址 0x04(擦除 EEPROM 单元)

* 2. 将新值写入地址 0x04

* 3. 读取地址 0x04 中的值,以检查是否存储了正确的值

* 4.重启模块

*

*/

#include

//== 改变这个 ============

双新发射率 = 0.95;

//============================

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

无效设置(){

序列号.开始(9600);

而(!串行);

Serial.println("Adafruit MLX90614 发射率设置器。\n");

// 初始化传感器

如果(!mlx.begin()){

Serial.println("连接到 MLX 传感器时出错。检查接线。");

而(1);

};

// 读取当前发射率

Serial.print("当前发射率 = "); Serial.println(mlx.readEmissivity());

// 设置新的发射率

Serial.print("设置发射率 = "); Serial.println(new_emissivity);

mlx.writeEmissivity(new_emissivity); // 这会执行 0x0000 擦除写入

// 回过头再读

Serial.print("新发射率 = "); Serial.println(mlx.readEmissivity());

// 完毕

Serial.print("完成。重启模块。");

}

无效循环(){

}

测量:

正如我所说,这是测量外体温度的最佳和最快的温度计。它适用于所有库并且完全准确。

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !