MLX90614红外测温模块Arduino怎么接?非接触测温和校准避坑

数据媛小满硬件DIY 2026-10-14 12:55:42 8阅读 举报

给机器人或桌面做个人体感应、给设备做个非接触测温,很多人会想到MLX90614。它是一颗红外热电堆测温芯片,走GY-906小模块,不用碰被测物体就能读出温度,测人体额头、量杯水温、做热源靠近检测都行。第一次接线看起来就四根脚,但真跑起来有几个坑容易踩。这篇把从接线到读数的实操一次讲清。

四根脚,I2C总线接法

GY-906模块上主要就四个引脚:VCC、GND、SCL、SDA。它对供电有个需要注意的点:模块板载了稳压和上拉,一般给3.3V或5V都能跑,但为了和Arduino电平匹配,我习惯按模块背面标注接。接线是标准的I2C:SDA接Arduino的模拟A4,SCL接A5,VCC接5V,GND共地。

MLX90614走的是类I2C的SMBus协议,芯片地址是0x5A(也就是0x2D的8位形式)。用Adafruit专门的MLX90614库最省事,扫I2C地址的时候会看到0x5A。它内部其实有两套测温:一个是读环境的环境温度,一个才是对着目标读的物体温度,别把两个拿混了。

读数逻辑就两条

库装好后基本就两句话:readAmbientTempC()读环境温度,readObjectTempC()读物体温度。剩下的就是什么时候用哪个问题。贴脸测额头这种场景,物体温度就是你要的那个值;如果只是要判断传感器周围温度有没有变化,环境温度更稳。

这里有个新手常问的点:为什么我对着空气读数也在变?因为MLX90614默认把目标的发射率当成接近1来算,对不同材质反射率不一样,读出来的物体温度会有偏差,尤其是光滑金属表面。真要准,要么对被测物标定一个发射率修正系数,要么就是对固定材质物测温,变化趋势是可信的。

三个高频坑,提前绕开

第一是I2C地址冲突和上拉。如果板子上同时挂了好几个I2C设备,先扫地址确认0x5A没被占用;模块如果没板载上拉,还得在SDA、SCL上加两个4.7k到VCC的电阻,不然读出来全是一堆0xFF。

第二是供电不稳。用USB供电时如果USB口供电弱,模块可能上电后读不到,反复抽风。直接给个稳定5V,别和一个大电流电机共用一个电源绕组。

第三是雾气和距离。红外测温隔着水汽、隔着玻璃会不准,测温时传感器要和被测物保持一定距离(说明书一般给几厘米到十几厘米的视角范围),别贴太近也别拉太远。只要是相对温度变化、或者对固定材质测,MLX90614的表现都够用。

把供电、总线和发射率这三件事捋清,MLX90614就是一个很省心的非接触测温器,适合做测温门禁、桌面设备监测和机器人热源感知。

版权声明:
作者:数据媛小满
链接:https://www.aiddithome.com/p/4c0124532d99e.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
触底反弹的Tony
1楼 · 2天前

发射率那个坑讲得到位,测金属表面误差是真的大,固定材质测就稳了

电烙铁爱好者
2楼 · 2天前

I2C塞不进去先扫地址,之前和别的模块打架读到一堆FF,这个方法太实用

阿伟不emo
3楼 · 2天前

对着桌面随手测了个温度跟温度计对上了,非接触确实方便,测奶瓶水温很好使

老张装机
4楼 · 2天前

环境温度和物体温度容易混,我第一次就把对象读成常温了,看这篇对上号了