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/R
  • filter_coefficient:滤波系数(0-7),值越大滤波效果越强,默认 0
  • ambient_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. 常见错误与解决方法
  1. I2C 连接错误

    • 错误:OSError: [Errno 121] Remote I/O error
    • 原因:传感器未正确连接或 I2C 地址冲突
    • 解决:检查接线,确保 I2C 地址正确(默认 0x60)
  2. 热电偶类型不匹配

    • 错误:测量值偏差大或异常
    • 原因:初始化时热电偶类型与实际使用类型不符
    • 解决:通过 thermocouple_type 参数指定正确类型
  3. 温度值为 NaN

    • 错误:nan-inf 等异常值
    • 原因:热电偶开路或传感器故障
    • 解决:检查热电偶接线是否松动,更换传感器测试
  4. 读取频率过高

    • 错误:数据重复性高或无变化
    • 原因:传感器转换速率有限(最高 ~18Hz)
    • 解决:降低读取频率,至少间隔 50ms

6. 使用注意事项
  1. 接线规范:热电偶正负极需与传感器对应引脚连接,反接会导致读数异常。
  2. 环境温度:MCP9600 冷端补偿范围为 -40°C 至 +125°C,超出范围会影响精度。
  3. 电磁干扰:高温环境下建议使用屏蔽线,减少电磁干扰导致的读数波动。
  4. 电源要求:供电电压需稳定在 3.3V,过高会损坏传感器。
  5. 滤波设置:在噪声较大的环境中,适当提高 filter_coefficient(如 3-5)。

通过以上内容,可以全面了解 adafruit-circuitpython-mcp9600 库的使用方法及应用场景,适用于从基础测温到工业级温度监控的各类项目。

《AI提示工程必知必会》为读者提供了丰富的AI提示工程知识与实战技能。《AI提示工程必知必会》主要内容包括各类提示词的应用,如问答式、指令式、状态类、建议式、安全类和感谢类提示词,以及如何通过实战演练掌握提示词的使用技巧;使用提示词进行文本摘要、改写重述、语法纠错、机器翻译等语言处理任务,以及在数据挖掘、程序开发等领域的应用;AI在绘画创作上的应用,百度文心一言和阿里通义大模型这两大智能平台的特性与功能,以及市场调研中提示词的实战应用。通过阅读《AI提示工程必知必会》,读者可掌握如何有效利用AI提示工程提升工作效率,创新工作流程,并在职场中脱颖而出。
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐