原文地址:https://circuitdigest.com/microcontroller-projects/ir-thermometer-using-arduino-and-ir-temperature-sensor

用MLX90614红外温度传感器制作非接触式红外测温仪

ARDUINO的

经过**阿斯温斯·拉吉(Aswinth Raj)** 2019年7月4日6

使用Arduino和MLX90614红外温度传感器的红外测温仪

在调试电子电路或测试新的硬件设计时,我经常会通过触摸它们来检查电路板上的组件是否异常发热。而且,如果有些东西弄乱了(通常是在第一次尝试中),这些组件可能会变得高达80°C甚至更高,不仅会灼烧该组件,还会烧毁我的手指。在烧伤我的手指超过了我记得的次数之后,我决定使用Arduino和红外温度传感器来建造自己的温度枪。该热风枪将使用称为MLX90614非接触温度传感器制造; 因此,它不仅可以用于测量组件温度,还可以用于测量体温,表面温度,热通风等。当然,可以从市场上从Fluke,Flir等知名制造商处购买到这些热风枪。但是,它们并不轻巧,而且比制造自己的小玩意还要有趣。因此,让我们开始吧…

所需材料

  • Arduino Pro迷你版
  • MLX90614红外温度传感器
  • OLED显示屏– SSD1306
  • 激光二极管
  • 9V电池
  • 按钮
  • 电池夹
  • 连接线

MLX90614红外测温仪

在继续本教程之前,了解MLX90614传感器的工作原理非常重要。市场上有许多温度传感器,我们已经将DHT11传感器和LM35广泛用于必须测量大气湿度或温度的许多应用中。您可以在下面找到一些DIY温度计

  • 使用LM35和微控制器的数字温度计
  • 使用NodeMCU和LM35的IoT数字温度计
  • 使用NodeMCU的IoT气象站:通过Internet监控湿度,温度和压力
  • Raspberry Pi气象站:通过Internet监视湿度,温度和压力

但是在这里,对于热风枪,我们需要一个能够感应特定物体(而不是环境物体)的温度而无需直接与物体接触的传感器。为此,我们拥有非接触式温度传感器,该传感器利用激光或红外来计算物体的温度。MLX90614就是这样一种传感器,它使用IR能量来检测物体的温度。要了解有关红外和红外传感器电路的更多信息,请点击链接。

MLX90614传感器是由Melexis Microelectronics集成系统制造的,其中嵌入了两个设备,一个是红外热电堆检测器(传感单元),另一个是信号调理DSP器件(计算单元)。它根据Stefan-Boltzmann定律进行工作,该定律规定所有物体都会发射IR能量,并且该能量的强度将与该物体的温度成正比。传感器中的传感单元测量目标物体发出多少红外能量,计算单元使用17位内置ADC将其转换为温度值,并通过I2C通信输出数据协议。传感器同时测量物体温度和环境温度,以校准物体温度值。MLX90614传感器的功能在下面给出,有关更多详细信息,请参考MLX90614数据表。

MLX90614红外温度传感器特性:

  • 工作电压:3.6V至5V
  • 物体温度范围:-70°C至382.2°C
  • 环境温度范围:-40°C至125°C
  • 分辨率/精度:0.02°C

传感器和物体之间的距离应该是多少?

数据表未直接回答的一个问题是传感器与物体之间的测量距离。该距离的值由术语**“视野”(FOV)给出**,对于我们的传感器,视野约为80°。

从传感器的角度来看,您可以认为感应范围为圆锥形,如上所示。因此,当我们远离测量对象时,感应面积增加了两倍。意思是,我们每离开物体1厘米,感应区域就会增加2厘米。在热枪中,**我们在传感器顶部放置了一个激光二极管,**以了解传感器当前所指向的区域。我发现,如果枪支指向距物体2cm处,并且当我们移开时精度下降,则该值是可靠的。

Arduino MLX90614温度计电路图

红外测温仪的电路图非常简单。完整的电路如下所示,它是使用Fritzing软件创建的。

由于Fritzing软件不支持MLX90614传感器的零件,因此我们使用注释来提及其连接,如上所示,因此我们也使用红色LED代替了激光二极管。整个电路由9V电池通过按钮供电。当按下按钮时,将9V电池连接至Arduino的RAW引脚,然后使用板载稳压器将其调节至5V。然后,该5V电压用于为OLED模块,传感器和激光二极管供电。

我们已经学习了如何将SSD1306 OLED与Arduino接口,此处将使用相同的硬件和代码。如果您需要更强的激光束,还可以设计一个单独的激光二极管驱动器电路。

设计温度枪的外壳

为了使该项目更加有趣和实用,我们对3D模型进行了建模并打印了热枪的外壳。设计包括两个部分,一个是顶部,它充当装有Arduino控制器,OLED,传感器和激光二极管的枪支的主体。另一个是底部,用作容纳电池和按钮的喷枪的手柄。此处的“按钮”用作触发器。该模型如下所示。

设计文件可从thingverse下载。您可以下载设计并使用3D打印机进行打印,也可以根据需要进行修改。下载链接如下

Thermal Gun 3D模型

下载文件后,您可以直接开始3D打印设计,也可以根据需要进行一些调整。

3D打印外壳:

然后将模型保存为STL文件,并使用Cura将其转换为G代码。我用Tevo狼蛛打印机打印两个零件,然后将它们拧在一起。如果打印机支持,也可以将两个零件都打印为单件。我的打印的切片设置如下所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wg4lhp5p-1618901540906)(C:%5CUsers%5CAdministrator%5CPictures%5Ctypora%5C3D-Model-Designing-Thermal-Gun.png)]

一旦完成了打印硬件连接,我就花费了将近6个小时的时间来打印这两个部分,然后分别使用7针和4针Relimate连接器(RMC)将导线直接直接焊接到Arduino针上,分别用于传感器和OLED显示屏。然后使用螺钉将OLED安装在印刷部件中,同时使用热胶将传感器和激光二极管安装在印刷部件上。然后将电源插针(Raw,Gnd)滑过手柄部分的电线,该部分包括按钮和电池。然后通过按钮将这些导线连接到电池。组装完成后,热风枪如下图所示

您可以继续设计顶部的盖子,但我决定将其打开,以便将来在需要时可以对其进行调整。

Arduino MLX90614红外测温仪编程

Arduino程序应从MLX90614读取温度值,并将其显示在OLED显示屏上。对我们来说幸运的是,该程序将非常简单,因为Adafruit为我们提供了一个库,可以轻松地从MLX90614中读取数据。可以从下面的链接下载库

Arduino MLX90614库

该链接会将库下载为ZIP文件夹。下载后,按照命令Sketch-> Include Library- > Add .ZIP Library将其添加到Arduino IDE,并浏览该ZIP文件的位置。还要确保您已遵循OLED与Arduino的接口教程,以便您还安装了OLED显示模块所需的库。添加库后,我们就可以开始我们的程序了,该项目完整程序可以在此页面的底部找到。在这里,将以小片段说明相同的程序。

像往常一样,我们通过添加所需的库文件来开始程序。这里,Wire库(内置)用于使用I2C协议进行通信,SparkFunML90614库用于与传感器进行通信。SPI,GFX和SSD1306库用于通过4线SPI协议与OLED显示模块进行通信。

#include <Wire.h>
#include <SparkFunMLX90614.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

然后,我们定义已连接的OLED显示器的引脚。由于该模块可与SPI配合使用,因此我们使用了Arduino的SPI引脚。有些OLED显示器也可以使用I2C协议,但由于I2C引脚已被温度计传感器占用,因此我们在这里不能使用它们。

#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI,OLED_CLK,OLED_DC,OLED_RESET,OLED_CS);

void setup()***函数中,我们使用先前创建的对象therm初始化用于调试的串行监视器以及红外温度传感器。在印度,温度最接近的单位是摄氏度(摄氏度),因此我们用TEMP_C设置了单位,如果您需要将值设置为华氏度(F),也可以将其更改为TEMP_F*。最后,我们初始化OLED显示屏并清除其显示屏。OLED屏幕也旋转了180度,以便在外壳中轻松安装。

void setup()
{ Serial.begin(9600); therm.begin(); therm.setUnit(TEMP_C);display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); display.setRotation(2);
}

在*循环*功能中,我们从传感器读取温度值,并将其转换为String,以显示在OLED显示屏中。我们还将该值打印在串行监视器上,以进行调试。我们还增加了一个名为Runner的变量,每次成功更新温度传感器的值时,该变量都会在屏幕上显示一个小动画,这将帮助我们知道读数是否由于某种原因而卡住了。

  if(therm.read())//如果成功,则read()在失败0时将返回1。{ temperature = String(therm.object(),2); Serial.print(“ Object:”); Serial.print(temperature); Serial.println(“ C”); display.clearDisplay(); runner++; delay(5); }

测试Arduino热感枪

一旦Arduino代码准备就绪,我们就可以使用外部TTL编程器或FTDI板将其上载到我们的硬件,因为pro mini没有板载。然后,只需按下按钮即可触发热枪,您会注意到激光束落在物体上,并且物体的温度正显示在OLED屏幕上,如下所示。在这里,我用它来测量激光束所指向的组件的温度。

还对热风枪在烙铁,3D打印机喷嘴,冰块等上进行了测试,并观察到令人满意的结果。可以在本页底部的视频找到热感枪完整工作原理。希望您喜欢这个项目,并从中学到一些有用的东西,如果您有任何疑问,请把它们留在下面的评论部分,或者使用我们的论坛来解决更多技术问题。

代码


/ ****************************************
Arduino的代码MLX90614 非接触式温度计
MLX90614 I2C连接
OLED 4线SPI连接
日期:7-6-2019
代码作者:Aswint Raj
********************************** /
#include <Wire.h>
#include <SparkFunMLX90614.h> #include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>// If using software SPI (the default case):
#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);IRTherm therm;void setup()
{Serial.begin(9600); therm.begin(); therm.setUnit(TEMP_C); display.begin(SSD1306_SWITCHCAPVCC);display.clearDisplay();display.setRotation(2);}String temperature;
char runner;void loop()
{if (therm.read()) // On success, read() will return 1, on fail 0.{temperature = String(therm.object(), 2);Serial.print("Object: ");Serial.print(temperature); Serial.println("C");display.clearDisplay();runner++;delay(5);}display.setTextSize(2);display.setTextColor(WHITE);display.setCursor(display.width()/4,display.height()/12);if (therm.object()>=100)display.setCursor(display.width()/4,display.height()/12);display.println(temperature);display.drawLine(display.width()/runner,display.height() - display.height()/2.5, display.width()/runner+1, display.height() - display.height()/2.5, WHITE);display.setCursor(0,display.height()-display.height()/4);display.setTextSize(1);display.println("   Arduino Thermlgun");display.setCursor(display.width()- display.width()/4,display.height()/12);display.println("deg C");display.display();if (runner>20)runner=0;
}

用MLX90614红外温度传感器制作非接触式红外测温仪相关推荐

  1. 使用红外温度传感器制作非接触式红外测温仪

    在调试电子电路或测试新硬件设计时,我常会通过触摸来检查电路板上的器件是否异常发热.如果某些东西搞砸了(通常是在第一次尝试中),这些器件可能会达到80°C或更高温度,不仅会烧毁器件,还会烫伤手指.我都不 ...

  2. STM32F1读取MLX90615非接触式红外温度传感器

    MLX90615 简介 MLX90615是一种红外温度计,用于非接触式温度测量.红外敏感热电堆探测器芯片和信号调节芯片集成在同一个TO-46 CAN封装中.由于采用了低噪声放大器.16位模数转换器和强 ...

  3. STM32F1读取MLX90632非接触式红外温度传感器

    MLX90632 简介 MLX90632是一个小型SMD SFN封装中的非接触式红外温度传感器,可实现高精度非接触式温度测量,.该装置在出厂时使用存储在EEPROM存储器中的校准常数进行校准.环境温度 ...

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

    0.结果 说明:先来看看串口调试助手显示的结果,第一个值是空气的温度,第二个值是被测量的物体温度,如果是你想要的,可以接着往下看. 1.外观 说明:虽然mlx90614非接触式红外测温传感器形态各异, ...

  5. 非接触式红外额温计方案

    方案简介:非接触式红外额温计是一种利用现代传感器测量技术.微电子技术等技术手段对被测对象进行温度测量的新型仪器.当红外额温计对准并靠近被测对象至数字接近式传感器检测的有效距离时,按下电源/测量键,并 ...

  6. 全球及中国非接触式红外数字温度计行业研究及十四五规划分析报告

    [报告篇幅]:176 [报告图表数]:210 [报告出版时间]:2021年1月 报告摘要 2019年,全球非接触式红外数字温度计市场规模达到了xx亿元,预计2026年可以达到xx亿元,年复合增长率(C ...

  7. 浅谈非接触式母线槽测温系统的应用及产品选型

    安科瑞王丹丹acrel2021 摘 要:针对小区内密集型母线槽与插接箱相连接的触点位置容易发生老化而导致老化部位异常升温的问题,设计了一种非接触式密集型母线槽测温系统.通过非接触式红外测温模块进行母线 ...

  8. 26、基于51单片机mlx90614(GY-906)非接触式红外测温上下限声光报警系统设计

    摘要 门式红外人体测温安检仪与传统的安检系统比较,增加了人体测温功能,在流行病多发季节可以适当的提醒人们减少外出,必要时可采取强制措施禁止出行以减少疾病的传播:并且测温为非接触式,与传统的接触式测温相 ...

  9. Arduino使用MLX90614 非接触式红外测温传感器

    相关资料链接 链接:https://pan.baidu.com/s/1eE0rkaSJsKJMU_RUorS5OA 提取码:3ujh 1.1 介绍: MLX90614是一款由迈来芯公司提供的低成本,无 ...

  10. GY906 MLX90614 非接触式 红外测温传感器 LabVIEW i2c总线数据读取

    GY906使用的红外测温芯片为MLX90614. 使用LabVIEW读取i2c总线数据时,需要知道传感器的地址,出厂默认为0x5A.传感器地址支持自己修改,存放在芯片EEPROM的0x0E位置,可以通 ...

最新文章

  1. “臭名昭著”的他们终于被裁了!字节宣布将精简HR团队,网友:业界毒瘤!...
  2. matlab中tic,toc的用法
  3. 牛客网编程题python输入输出_牛客网算法题目记录
  4. linux文件系统分隔符,Linux的哲学思想和文件系统
  5. HDS:转型关键还是私有云
  6. AFN\HTTPS\UIWebView
  7. MyEclipse Profile 结合visualvm 监控内存泄露
  8. The file “XXX.app” couldn’t be opened because you don’t have permission to view it.问题修复...
  9. vb 字符串长度_一起学VB——什么是过程
  10. 不是技术牛人,如何拿到国内IT巨头的Offer(转载)
  11. NOIP2018赛前停课集训记——最后的刷板子计划
  12. 历史上第一位从事游戏开发与设计的女程序员
  13. (转)ASP.NET MVC 3.0:基于Ajax的表单提交,A页面认证失败后页面被强转至登录页面,待登录成功将如何回到A页面?...
  14. 虎牙直播源解析【可选清晰度】
  15. 谷歌浏览器安装FeHelper插件
  16. 固体发动机内弹道matlab,固体火箭发动机内弹道性能的仿真研究
  17. JavaSE方法(构造方法)与方法重载基础练习题
  18. 若干思考:从如何确定投资者是风险偏好者、风险中性者还是风险规避者 到 上学真的无用吗的思考?
  19. Response to preflight request do‘nt access control check: Redirect is not allow for a preflight re.
  20. 前端生成唯一id UUID

热门文章

  1. 【Cpp】C和C++混合编程
  2. 武汉php东和,武汉探东之旅,未完成
  3. 教程详解|3D环物的360物体如何在后台上传?
  4. groovy语言介绍
  5. 根据卡号返回银行信息
  6. 高等数学笔记:两个重要极限
  7. Kibana操作Elasticsearch-Aggregations聚合数据分析
  8. python计算各类型电影的评分,Moviedata-10M电影数据集统计分析之源码分享(Python)...
  9. AutoHotKey映射方向键和Home, End键
  10. c#中将word转成图片,无水印