Python之adafruit-circuitpython-mcp9600包语法、参数和实际应用案例
adafruit-circuitpython-mcp9600 是用于控制 MCP9600 温度传感器的 CircuitPython 库。MCP9600 是一款高精度热电偶温度传感器,支持多种热电偶类型(K、J、T、N、S、E、B、R 型),具有内置冷端补偿功能,能测量 -200°C 至 +1372°C 的温度范围,适用于高温环境监测、工业控制等场景。
Python 库 adafruit-circuitpython-mcp9600 详解
1. 功能概述
adafruit-circuitpython-mcp9600 是用于控制 MCP9600 温度传感器的 CircuitPython 库。MCP9600 是一款高精度热电偶温度传感器,支持多种热电偶类型(K、J、T、N、S、E、B、R 型),具有内置冷端补偿功能,能测量 -200°C 至 +1372°C 的温度范围,适用于高温环境监测、工业控制等场景。
2. 安装方法
通过 pip 安装(需先安装 CircuitPython):
pip install adafruit-circuitpython-mcp9600

3. 基本语法与参数
初始化传感器
import board
import adafruit_mcp9600
# 使用 I2C 接口初始化
i2c = board.I2C() # 基于具体开发板的 I2C 引脚
mcp = adafruit_mcp9600.MCP9600(i2c)
核心参数
thermocouple_type:热电偶类型,默认K,可选值:K/J/T/N/S/E/B/Rfilter_coefficient:滤波系数(0-7),值越大滤波效果越强,默认 0ambient_temp:冷端温度(°C),可读取环境温度hot_junction_temp:热端温度(°C),即测量目标温度
常用方法
mcp.hot_junction_temperature:获取热端温度mcp.ambient_temperature:获取冷端(环境)温度mcp.reset():重置传感器
4. 实际应用案例
案例 1:基础温度读取
import board
import adafruit_mcp9600
import time
i2c = board.I2C()
mcp = adafruit_mcp9600.MCP9600(i2c)
while True:
print(f"热端温度: {mcp.hot_junction_temperature:.2f}°C")
print(f"环境温度: {mcp.ambient_temperature:.2f}°C")
time.sleep(1)
案例 2:切换热电偶类型(J型)
import board
import adafruit_mcp9600
i2c = board.I2C()
# 初始化 J 型热电偶
mcp = adafruit_mcp9600.MCP9600(i2c, thermocouple_type=adafruit_mcp9600.ThermocoupleType.J)
print(f"当前热电偶类型: {mcp.thermocouple_type}")
案例 3:设置温度滤波(减少噪声)
import board
import adafruit_mcp9600
i2c = board.I2C()
# 设置滤波系数为 3(中等滤波)
mcp = adafruit_mcp9600.MCP9600(i2c, filter_coefficient=3)
print(f"滤波系数: {mcp.filter_coefficient}")
案例 4:高温报警系统
import board
import adafruit_mcp9600
import time
i2c = board.I2C()
mcp = adafruit_mcp9600.MCP9600(i2c)
ALARM_THRESHOLD = 100 # 100°C 触发报警
while True:
temp = mcp.hot_junction_temperature
if temp > ALARM_THRESHOLD:
print(f"报警!温度过高: {temp:.2f}°C")
else:
print(f"当前温度: {temp:.2f}°C")
time.sleep(0.5)
案例 5:温度数据记录到文件
import board
import adafruit_mcp9600
import time
from datetime import datetime
i2c = board.I2C()
mcp = adafruit_mcp9600.MCP9600(i2c)
with open("temperature_log.csv", "a") as f:
f.write("时间,热端温度,环境温度\n") # 写入表头
while True:
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
hot_temp = mcp.hot_junction_temperature
amb_temp = mcp.ambient_temperature
f.write(f"{now},{hot_temp:.2f},{amb_temp:.2f}\n")
print(f"记录: {now}, {hot_temp:.2f}°C")
time.sleep(5) # 每 5 秒记录一次
案例 6:与 OLED 屏幕显示温度
import board
import adafruit_mcp9600
import adafruit_ssd1306
from PIL import Image, ImageDraw, ImageFont
import time
# 初始化 I2C
i2c = board.I2C()
# 初始化传感器
mcp = adafruit_mcp9600.MCP9600(i2c)
# 初始化 OLED(128x64)
oled = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(0)
oled.show()
font = ImageFont.load_default()
while True:
hot_temp = mcp.hot_junction_temperature
amb_temp = mcp.ambient_temperature
# 显示到 OLED
image = Image.new("1", (oled.width, oled.height))
draw = ImageDraw.Draw(image)
draw.text((0, 0), f"热端: {hot_temp:.1f}°C", font=font, fill=255)
draw.text((0, 20), f"环境: {amb_temp:.1f}°C", font=font, fill=255)
oled.image(image)
oled.show()
time.sleep(1)
案例 7:多传感器(不同地址)同时读取
import board
import adafruit_mcp9600
i2c = board.I2C()
# MCP9600 支持两个 I2C 地址:0x60(默认)和 0x61
mcp1 = adafruit_mcp9600.MCP9600(i2c, address=0x60)
mcp2 = adafruit_mcp9600.MCP9600(i2c, address=0x61)
print(f"传感器1 温度: {mcp1.hot_junction_temperature:.2f}°C")
print(f"传感器2 温度: {mcp2.hot_junction_temperature:.2f}°C")
案例 8:低功耗模式控制
import board
import adafruit_mcp9600
import time
i2c = board.I2C()
mcp = adafruit_mcp9600.MCP9600(i2c)
while True:
# 读取温度
print(f"温度: {mcp.hot_junction_temperature:.2f}°C")
# 进入低功耗模式(100ms 后唤醒)
mcp.power_mode = adafruit_mcp9600.PowerMode.LOW_POWER
print("进入低功耗模式...")
time.sleep(1)
# 恢复正常模式
mcp.power_mode = adafruit_mcp9600.PowerMode.NORMAL
print("恢复正常模式\n")
time.sleep(1)
5. 常见错误与解决方法
-
I2C 连接错误
- 错误:
OSError: [Errno 121] Remote I/O error - 原因:传感器未正确连接或 I2C 地址冲突
- 解决:检查接线,确保 I2C 地址正确(默认 0x60)
- 错误:
-
热电偶类型不匹配
- 错误:测量值偏差大或异常
- 原因:初始化时热电偶类型与实际使用类型不符
- 解决:通过
thermocouple_type参数指定正确类型
-
温度值为 NaN
- 错误:
nan或-inf等异常值 - 原因:热电偶开路或传感器故障
- 解决:检查热电偶接线是否松动,更换传感器测试
- 错误:
-
读取频率过高
- 错误:数据重复性高或无变化
- 原因:传感器转换速率有限(最高 ~18Hz)
- 解决:降低读取频率,至少间隔 50ms
6. 使用注意事项
- 接线规范:热电偶正负极需与传感器对应引脚连接,反接会导致读数异常。
- 环境温度:MCP9600 冷端补偿范围为 -40°C 至 +125°C,超出范围会影响精度。
- 电磁干扰:高温环境下建议使用屏蔽线,减少电磁干扰导致的读数波动。
- 电源要求:供电电压需稳定在 3.3V,过高会损坏传感器。
- 滤波设置:在噪声较大的环境中,适当提高
filter_coefficient(如 3-5)。
通过以上内容,可以全面了解 adafruit-circuitpython-mcp9600 库的使用方法及应用场景,适用于从基础测温到工业级温度监控的各类项目。
《AI提示工程必知必会》为读者提供了丰富的AI提示工程知识与实战技能。《AI提示工程必知必会》主要内容包括各类提示词的应用,如问答式、指令式、状态类、建议式、安全类和感谢类提示词,以及如何通过实战演练掌握提示词的使用技巧;使用提示词进行文本摘要、改写重述、语法纠错、机器翻译等语言处理任务,以及在数据挖掘、程序开发等领域的应用;AI在绘画创作上的应用,百度文心一言和阿里通义大模型这两大智能平台的特性与功能,以及市场调研中提示词的实战应用。通过阅读《AI提示工程必知必会》,读者可掌握如何有效利用AI提示工程提升工作效率,创新工作流程,并在职场中脱颖而出。
更多推荐


所有评论(0)