红外测温(MLX90614)
前言
MLX90614是一款用于非接触式温度测量的红外温度计,能够测量-70至380°C之间的物体。该传感器采用红外敏感热电堆探测器芯片,可在温度范围内以0.02°C的分辨率测量温度。
实验平台
麦哲伦开发套件和红外测温传感器模块,传感器模块连接到I2C/UART扩展接口。
实验目的
通过python编程实现MLX90614非接触式测温。
实验讲解
市面上大多MLX90614模块都通用,使用I2C总线通讯,下图是一款MLX90614传感器模块,有DCC(短距离10cm)和DCI(远距离100cm)两个型号,代码通用。点击购买>>
| 模块参数 | |
|---|---|
| 供电电压 | 3.3V |
| 测量距离 | DCC(10cm) 和 DCI(100cm) |
| 测量范围 | -70℃ - 382℃ |
| 测量精度 | 0.5℃ |
| 通信方式 | I2C总线(默认地址:0x5a) |
| 引脚说明 | VCC: 接3.3V GND: 接地 SDA: I2C数据引脚 SCL: I2C时钟引脚 |
从上面介绍可以看到MLX90614是一款通过I2C接口驱动的传感器。我们通过开发板的I2C接口编程,即可以对该模块实现数据通讯。
MLX90614对象
构造函数
mlx = mlx90614.MLX90614(i2c)
构建MLX90614对象。
参数说明:
i2c定义好的I2C对象。
使用方法
mlx.ObjectTemp()
返回物体温度,单位℃,数据类型:float。
mlx.AmbientTemp()
返回环境温度,单位℃,数据类型:float。
理解了MLX90614传感器原理和对象使用方法后,我们可以整理出编程思路,流程图如下 :
参考代码
'''
实验名称:MLX90614红外测温模块
版本:v1.0
平台:麦哲伦开发套件
作者:01Studio
说明:测量物体温度和环境温度并在LCD上显示
'''
import mlx90614, time
from tftlcd import LCD43R
from machine import Pin,SoftI2C
#红外测温对象
i2c = SoftI2C(sda=Pin('B11'), scl=Pin('B10'),freq=100000)
temp = mlx90614.MLX90614(i2c)
#定义常用颜色
WHITE=(255,255,255)
BLACK = (0,0,0)
#初始化LCD
d=LCD43R(portrait=4)
d.fill(WHITE)#填充白色
#显示标题
d.printStr('01Studio MLX90614:', 40, 10, BLACK, size=4)
while True:
#采集温度、压强、高度信息数据并用LCD显示:
d.printStr('ObjTemp: ' + str('%.2f'%temp.ObjectTemp()+' C') , 10, 100, BLACK, size=4)
d.printStr('AmbTemp: ' + str('%.2f'%temp.AmbientTemp()+' C'), 10, 200, BLACK, size=4)
time.sleep_ms(500) # 延时500毫秒
实验结果
将mlx90614.py文件上传到开发版文件系统,运行代码:
可以看到LCD显示物体温度和环境温度相关信息。
