物联网AI MicroPython传感器学习 之 MLX90614红外测温传感器

学物联网,来万物简单IoT物联网!!在这里插入图片描述

一、产品简介

MLX90614是一款由迈来芯公司提供的低成本红外温度计,用于非接触式温度测量,红外测温是根据被测物体的红外辐射能量来确定物体的温度,不与被测物体接触,具有不影响被测物体温度分布场,温度分辨率高、响应速度快、测温范围广、不受测温上限的限制、稳定性好等特点,输出数据和物体温度呈线性比例,具有高精度和高分辨率。
适合于汽车空调、室内暖气、家用电器、手持设备以及医疗设备应用等。
image.png
MLX90614的出厂校准温度范围很广:环境温度为-40°C——125°C,目标温度为-70°C——382.2°C。测量值是传感器视场中所有物体的平均温度。在室温下,MLX90614的标准精确度为±0.5°C。

引脚定义

  • VIN:3.3V ~ 5V
  • GND:接地
  • SCL:时钟线
  • SDA:数据线

二、技术参数

  • 供电电压:3V3 ~ 5V
  • 接口:标准I2C
  • 精度范围:±0.5°C(在工作温度25°C)
  • 环境温度:-40°C ~ 125°C
  • 目标温度:-70°C ~ 382.2°C
  • 测量距离:2cm ~ 1m(根据不同的型号)

三、软件接口

MLX90614(i2cObj) - 创建MLX90614驱动对象

  • 函数原型:

mlx90614Obj = MLX90614(i2cObj)

  • 参数说明:
参数类型必选参数?说明
i2cObjI2C传入i2c对象
  • 返回值:
    MLX90614对象成功,返回MLX90614对象;MLX90614对象创建失败,抛出Exception
  • 示例代码:
from machine import I2C,Pin              # 驱动库
import mlx90614                       # MLX90614温度传感器驱动库

# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("MLX90614 inited!")

mlx90614Obj = mlx90614.MLX90614(i2cObj)    # 初始化MLX90614传感器对象
  • 输出:
MLX90614 inited!

getAmbientTemp - 测量环境温度

  • 函数功能:
    量测环境温度并返回测量结果
  • 函数原型:

MLX90614.getAmbientTemp()

  • 参数说明:
  • 返回值:
    成功返回温度测量结果(数据类型:浮点型;单位:摄氏度);失败抛出Exception
  • 示例:
from machine import I2C,Pin         # 驱动库
import mlx90614                     # MLX90614温度传感器驱动库
import utime

# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("MLX90614 inited!")

mlx90614Obj = mlx90614.MLX90614(i2cObj)    # 初始化MLX90614传感器对象

while True:
    utime.sleep(1)
    readtemp = mlx90614Obj.getAmbientTemp()
    print("Amtemperature is ", readtemp, "°C")
  • 输出:
MLX90614 inited!
Amtemperature is 25.3°C
Amtemperature is 26.1°C
Amtemperature is 25.7°C

getObjectTemp - 测量目标温度

  • 函数功能:
    量测目标温度并返回测量结果
  • 函数原型:

MLX90614.getObjectTemp()

  • 参数说明:
  • 返回值:
    成功返回温度测量结果(数据类型:浮点型;单位:摄氏度);失败抛出Exception
  • 示例:
from machine import I2C,Pin         # 驱动库
import mlx90614                     # MLX90614温度传感器驱动库
import utime

# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("MLX90614 inited!")

mlx90614Obj = mlx90614.MLX90614(i2cObj)    # 初始化MLX90614传感器对象

while True:
    utime.sleep(1)
    readtemp = mlx90614Obj.getObjectTemp()
    print("objtemperature is ", readtemp, "°C")
  • 输出:
MLX90614 inited!
objtemperature is 33.3°C
objtemperature is 34.1°C
objtemperature is 33.7°C

四、接口案例

from machine import I2C,Pin         # 驱动库
import mlx90614                     # MLX90614温度传感器驱动库
import utime

# 初始化I2C类型的设备
i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
print("MLX90614 inited!")

mlx90614Obj = mlx90614.MLX90614(i2cObj)    # 初始化MLX90614传感器对象

while True:
    utime.sleep(1)
    readobtemp = mlx90614Obj.getObjectTemp()
    readamtemp = mlx90614Obj.getAmbientTemp()
    print("temperature is ", readamtemp, "°C", readobtemp, "°C")
  • 输出:
MLX90614 inited!
temperature is 25.3°C 32.6°C
temperature is 26.1°C 33.5°C
temperature is 25.7°C 32.9°C

五、工作原理

MLX90614由MLX81101红外热电堆传感器和包括含有稳压电路、低噪声放大器、A/D转换器、DSP单元、脉宽调制电路及逻辑控制电路的MLX90302信号处理芯片构成。
image.png
其工作原理为:红外热电堆传感器输出的温度信号经过内部低噪声、低失调的运算放大器(OPA)放大后经过A/D转换器(ADC)转换为17位数字信号通过可编程FIR及IIR低通数字滤波器(即DSP)处理后输出,输出结果存储在其内部RAM存储单元中。

六、通信协议(SMBus通信)

单片机与MLX90614红外测温模块之间通信的方式是“类IIC”通信,意思就是通信方式跟IIC通信方式很像但又不是IIC,它有另外一个名字叫做SMBus。SMBus (System Management Bus)是 1995 年由 intel 公司提出的一种高效同步串行总线,SMBus 只有两根信号线:双向数据线和时钟信号线,容许 CPU 与各种外围接口器件以串行方式进行通信、交换信息,既可以提高传输速度也可以减小器件的资源占用,另外即使在没有SMBus 接口的单片机上也可利用软件进行模拟。
image.png
MLX90614 SMBus时钟的最大频率为100KHz,最小为 10KHz。
时序结构
起始信号:SCL高电平期间,SDA从高电平切换到低电平
停止信号:SCL高电平期间,SDA从低电平切换到高电平
image.png

参考文献

[1] MLX90614传感器购买

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值