在智能硬件项目中,温度采集是非常典型的环境感知能力。设备散热监控、机箱温度提醒、智能家居温控、实验室数据记录,都需要程序从真实环境中读取温度变化。对于 Python 硬件编程而言,这类实验的价值不只是得到一个温度数值,而是理解模拟信号如何经过 ADC 转换,再由代码换算成可读的物理量。本实验使用 CanMV K210 开发板通过 I2C 总线连接 PCF8591 模数转换模块,读取温度传感器的模拟输出值,并结合 NTC 热敏电阻 Beta 公式换算摄氏温度。程序同时读取温度模块的 DO 数字端口,用于判断温度是否超过模块电位器设定的阈值。为了让数据更稳定,代码还加入了多次采样平均和异常值保护,避免 ADC 抖动或极端电压导致温度计算出错。学习目标说明理解模拟温度采集认识温度变化、模拟电压、ADC 数值和温度换算之间的关系掌握 PCF8591 读取使用 PCF8591 将温度模块 AO 输出转换成数字采样值理解 NTC 换算过程通过电压、阻值和 Beta 公式计算摄氏温度掌握 DO 阈值判断读取温度模块数字输出端口,判断是否超过设定阈值建立传感器调试思路从接线、参考电压、采样抖动、公式方向和阈值逻辑排查异常这类实验是传感器课程中非常重要的一类。它不像按键实验那样只判断 0 或 1,而是要把连续变化的电压转成 ADC 数值,再经过数学公式换算成真实物理量。掌握这个流程后,光敏传感器、电位器、声音传感器、气体传感器等模拟量模块都可以用类似思路接入程序。文章目录理论基础硬件设施软件代码扩展应用总结理论基础模拟温度传感器模块通常由 NTC 热敏电阻、固定电阻、比较器和电位器等部分组成。NTC 热敏电阻的特点是温度升高时阻值下降,温度降低时阻值上升。模块通过分压电路把阻值变化转换成电压变化,再从 AO 端输出模拟电压。PCF8591 负责把这个模拟电压转换成 0~255 范围内的 ADC 数值,程序再根据参考电压计算出实际电压。本实验中有两条数据路径。第一条是 AO 模拟输出路径:温度变化影响 NTC 阻值,分压电路输出模拟电压,PCF8591 读取 AIN0 并返回 ADC 数值,程序再换算成温度。第二条是 DO 数字输出路径:温度模块内部比较器会把当前模拟电压和电位器设定阈值比较,然后输出高电平或低电平。AO 用来估算“温度是多少”,DO 用来判断“是否超过设定阈值”。NTC 温度换算通常要经过三个步骤。第一步把 ADC 数值换算成电压,第二步根据分压公式把电压换算成热敏电阻阻值,第三步使用 Beta 公式把阻值换算成摄氏温度。由于不同温度模块的分压电路可能方向不同,公式中的电阻位置也可能相反。如果温度变化趋势明显反向,或者温度结果偏差很大,需要结合模块原理图调整voltage_to_resistance()中的换算公式。下面这张流程图从电路和数据流两个角度展示本实验。温度模块 AO 端进入 PCF8591,DO 端直接进入 K210 GPIO 输入,程序最后同时输出 ADC、电压、阻值、温度和阈值状态。
阅读完成 · 觉得有帮助?