模数转换在嵌入式电子产品中是一项非常重要的任务,因为大多数传感器以模拟值的形式提供输出并将它们馈送到只理解二进制值的微控制器,我们必须将它们转换为数字值。因此,为了能够处理模拟数据,微控制器需要模数转换器。
在本教程中,我们将学习如何将 PCF8591 ADC/DAC 模块与 Raspberry Pi 连接。
所需组件
树莓派
PCF8591 ADC模块
100K 锅
跨接电缆
假设您安装了最新的 Raspbian OS 的 Raspberry Pi,并且您知道如何使用 putty 等终端软件通过 SSH 连接到 Pi。如果您是 Raspberry Pi 新手,请按照本文 开始使用 Raspberry Pi。尽管如此,如果您遇到任何问题,那么有大量的 Raspberry Pi 教程 可以提供帮助。
PCF8591 ADC/DAC 模块
PCF8591 是一个 8 位模数或 8 位数模转换器模块,这意味着每个引脚可以读取高达 256 的模拟值。它还具有 LDR 和板上提供的热敏电阻电路。该模块有四个模拟输入和一个模拟输出。它适用于I 2 C 通信,因此有用于串行时钟和串行数据地址的 SCL 和 SDA 引脚。它需要2.5-6V的电源电压并且具有低待机电流。我们也可以通过调节模块上电位器的旋钮来控制输入电压。板上还有三个跳线。J4接选择热敏电阻接入电路,J5接选择LDR/光敏电阻接入电路J6连接选择可调电压接入电路。板上有两个 LED D1 和 D2-D1 显示输出电压强度,D2 显示电源电压强度。输出或电源电压越高,LED D1 或 D2 的强度越高。您还可以使用 VCC 或 AOUT 引脚上的电位器来测试这些 LED。
Raspberry Pi 中的 I2C 引脚
为了将PCF8591与 Raspberry Pi 一起使用,首先要做的是了解 Raspberry Pi I2C 端口引脚并在 Raspberry pi 中配置 I2C 端口。
下面是树莓派 3 Model B+ 的引脚图, 本教程使用I2C 引脚 GPIO2 (SDA) 和 GPIO3 (SCL) 。
在树莓派中配置 I2C
默认情况下,I2C 在 Raspberry Pi 中是禁用的。所以首先必须启用它。在 Raspberry Pi 中启用 I2C
1. 转到终端并键入 sudo raspi-config。
2. 现在树莓派软件配置工具出现了。
3. 选择 接口选项 ,然后启用 I2C。
4. 启用 I2C 后重启 Pi。
使用树莓派扫描 PCF8591 的 I2C 地址
现在为了开始与 PCF8591 IC 通信,Raspberry Pi 必须知道它的 I2C 地址。要找到地址,首先将 PCF8591 的 SDA 和 SCL 引脚连接到 Raspberry Pi 的 SDA 和 SCL 引脚。还要连接 +5V 和 GND 引脚。
现在打开终端并输入以下命令以了解连接的 I2C 设备的地址,
sudo i2cdetect –y 1 或 sudo i2cdetect –y 0
现在找到 I2C 地址后,是时候构建电路并安装必要的库了,以便将 PCF8591 与 Raspberry Pi 一起使用。
将 PCF8591 ADC/DAC 模块与 Raspberry Pi 连接
PCF8591与树莓派接口的电路图很简单。在这个接口示例中,我们将从任何模拟引脚读取模拟值并将其显示在 Raspberry Pi 终端上。我们可以使用 100K 的罐子来更改这些值。
将 VCC 和 GND 连接到树莓派的 GPIO2 和 GPIO。接下来,将 SDA 和 SCL 分别连接到 GPIO3 和 GPIO5。最后用AIN0连接一个100K的电位器。您还可以添加16x2 LCD来显示 ADC 值,而不是在终端上显示。
用于模数转换 (ADC) 的 Python 程序
首先,导入用于I2 C 总线通信的smbus库和时间库,以在打印值之间提供休眠时间。
导入 smbus
导入时间
现在定义一些变量。第一个变量包含 I2C 总线的地址,第二个变量包含第一个模拟输入引脚的地址。
地址 = 0x48
A0 = 0x40
接下来,我们制作了库 smbus 的函数 SMBus(1) 的对象
总线 = smbus.SMBus(1)
现在,第一行告诉 IC 在第一个模拟输入引脚上进行模拟测量。第二行将在模拟引脚读取的地址存储在变量值中。最后打印值。
while True:
bus.write_byte(address,A0)
value = bus.read_byte(address)
print(value) time.sleep
(0.1)
现在终于将 python 代码保存在带有 .py 扩展名的文件中,并使用以下命令在树莓派终端中运行代码“
蟒蛇文件名.py
现在终于将 python 代码保存在带有 .py 扩展名的文件中,并使用以下命令在树莓派终端中运行代码“
在运行代码之前,请确保您已启用 I 2 C 通信并且所有引脚都如图所示连接,否则会显示错误。模拟值必须开始显示在终端上,如下所示。调整锅的旋钮,你会看到数值的逐渐变化。
import smbus
导入时间
地址 = 0x48
总线 = smbus.SMBus(1)
while True:
bus.write_byte(address,A0)
value = bus.read_byte(address)
print(value) time.sleep
(0.1)