ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【CanMV K210】通信扩展 PCF8591 ADC 模数转换与模拟量读取

【CanMV K210】通信扩展 PCF8591 ADC 模数转换与模拟量读取 在智能硬件项目中,很多真实世界的数据并不是一开始就以数字形式存在。光照强弱、电位器旋转角度、模拟传感器电压、声音强度变化,这些信号通常表现为连续变化的模拟电压。开发板想要读取这些信息,就需要借助模数转换器把模拟量转换成程序可以处理的数字值。本实验围绕 PCF8591 模数转换模块展开,通过 CanMV K210 的软件 I2C 接口与 PCF8591 通信,读取 AIN0 通道的模拟输入值,并在串口终端持续打印采集结果。程序运行后,如果 AIN0 接入电位器、光敏电阻模块或其他模拟信号源,终端中的数值会随着输入电压变化而变化。这个过程可以直观看到“外部电压变化如何变成 Python 程序中的数字”。学习目标说明理解模拟量采集认识模拟电压、ADC 转换和数字采样值之间的关系掌握 PCF8591 基础用法使用 PCF8591 读取 AIN0 模拟输入通道数据理解 I2C 通信链路明确 SCL、SDA、设备地址和控制字在采集过程中的作用建立驱动封装思路将 PCF8591 的底层读写封装成类,让主程序只关注采样结果扩展传感器采集能力为电位器、光敏传感器、声音传感器和多路模拟输入实验打基础当前代码包含 PCF8591 驱动文件和主程序两部分。驱动文件负责封装控制字、I2C 写入、I2C 读取、通道选择和模拟输出配置;主程序负责创建 I2C 对象、实例化 PCF8591 对象,并在循环中每隔 1 秒读取一次 AIN0 数据。这个实验的重点不只是读取一个数字,而是理解 I2C 总线、ADC 通道、控制字和循环采样之间的关系。文章目录理论基础硬件设施软件代码扩展应用总结理论基础PCF8591 可以理解成连接模拟世界和程序世界的转换模块。外部传感器或电位器输出的是连续变化的电压,程序无法直接把这种连续电压当成变量使用,需要 ADC 把电压变化转换成数字值。PCF8591 就承担这个转换任务,它把 AIN0、AIN1、AIN2、AIN3 等模拟输入通道的电压转换成数字数据,再通过 I2C 总线交给 CanMV K210。普通 GPIO 更适合读取开关量,例如按键是否按下、LED 是否点亮、模块输出是否为高低电平。PCF8591 面向的是模拟量,例如电位器旋转到某个角度、光照逐渐增强、声音强度发生变化、模拟传感器输出电压波动。这类信号不是简单的 0 或 1,而是会在一定范围内连续变化,因此采集结果通常表现为一组不断变化的数字。本实验中,外部模拟信号接入 PCF8591 的 AIN0 通道,CanMV K210 通过物理引脚 6 和物理引脚 7 连接 PCF8591 的 SCL 与 SDA。程序通过 I2C 地址0x48访问 PCF8591,发送控制字选择采样通道,再读取转换后的数字值。串口中打印出来的adc0就是 AIN0 当前采样结果。
返回列表