mlx90614读取温度的Python程序
时间: 2023-03-19 17:22:00 浏览: 88
下面是使用Python语言读取MLX90614红外温度传感器的程序示例:
```python
import smbus # 导入smbus模块用于I2C通信
import time # 导入time模块用于延时操作
# 设置I2C总线及传感器地址
bus = smbus.SMBus(1) # I2C总线编号,树莓派3B/3B+/4B使用1,树莓派Zero使用0
address = 0x5A # 传感器地址
# 寄存器地址定义
TA = 0x06 # 环境温度寄存器地址
TOBJ1 = 0x07 # 目标温度寄存器地址
# MLX90614配置寄存器地址定义
# 以下为默认配置,可根据需要更改
CONFIG_ADDR = 0x25 # 配置寄存器地址
CONFIG_VAL = 0x00 # 配置寄存器值,0x00表示默认配置
# 初始化传感器
bus.write_byte_data(address, CONFIG_ADDR, CONFIG_VAL)
# 读取环境温度和目标温度
while True:
try:
# 读取环境温度
temp_raw = bus.read_word_data(address, TA)
temp = round((temp_raw*0.02)-273.15, 2) # 将温度值转换为摄氏度并保留两位小数
print("环境温度:{}℃".format(temp))
# 读取目标温度
temp_raw = bus.read_word_data(address, TOBJ1)
temp = round((temp_raw*0.02)-273.15, 2) # 将温度值转换为摄氏度并保留两位小数
print("目标温度:{}℃".format(temp))
# 延时1秒
time.sleep(1)
except KeyboardInterrupt:
# 按下Ctrl+C停止程序
break
```
上述程序首先导入了`smbus`和`time`模块,然后设置了I2C总线及MLX90614传感器的地址。接着定义了环境温度和目标温度的寄存器地址,以及配置寄存器的地址和默认值。在程序初始化时,将配置寄存器的值写入传感器以进行配置。之后通过`bus.read_word_data()`函数读取环境温度和目标温度,并使用简单的数学计算将其转换为摄氏度并保留两位小数。最后使用`time.sleep()`函数进行延时。如果按下Ctrl+C,则程序会退出循环。