- 所需组件
- PCF8591 ADC / DAC模块
- Raspberry Pi中的I2C引脚
- 将PCF8591 ADC / DAC模块与Raspberry Pi连接
- 用于模数转换(ADC)的Python程序
在嵌入式电子设备中,模数转换是一项非常重要的任务,因为大多数传感器都将输出提供为模拟值,并将其输入到仅了解二进制值的微控制器中,因此我们必须将其转换为数字值。因此,为了能够处理模拟数据,微控制器需要模数转换器。
一些微控制器具有内置的ADC,例如Arduino,MSP430,PIC16F877A,但一些微控制器则没有8051,Raspberry Pi等,我们必须使用一些外部模数转换器IC,例如ADC0804,ADC0808。下面您可以找到具有不同微控制器的ADC的各种示例:
- 如何在Arduino Uno中使用ADC?
- Raspberry Pi ADC教程
- ADC0808与8051单片机的接口
- 使用AVR单片机的0-25V数字电压表
- 如何在STM32F103C8中使用ADC
- 如何在MSP430G2中使用ADC
- 如何在ARM7 LPC2148中使用ADC
- 将PIC微控制器的ADC模块与MPLAB和XC8一起使用
在本教程中,我们将学习如何将PCF8591 ADC / DAC模块与Raspberry Pi连接。
所需组件
- 树莓派
- PCF8591 ADC模块
- 100K锅
- 跨接电缆
假定您已经安装了装有最新Raspbian操作系统的Raspberry Pi,并且您知道如何使用腻子等终端软件通过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选择可调电压访问电路。D1和D2-板上有两个LED,D1显示输出电压强度,D2显示电源电压强度。输出或电源电压越高,LED D1或D2的强度越高。您还可以通过在VCC或AOUT引脚上使用电位计来测试这些LED。
Raspberry Pi中的I2C引脚
为了将PCF8591与Raspberry Pi一起使用,首先要做的是了解Raspberry Pi I2C端口引脚并在Raspberry Pi中配置I2C端口。
以下是Raspberry Pi 3 Model B +的引脚图, 本教程使用I2C引脚GPIO2(SDA)和GPIO3(SCL)。
在Raspberry Pi中配置I2C
默认情况下,在Raspberry Pi中禁用I2C。因此,首先必须启用它。在Raspberry Pi中启用I2C
1.转到终端,然后输入 sudo raspi-config。
2.现在,出现Raspberry Pi软件配置工具。
3.选择 接口选项 ,然后启用I2C。
4.启用I2C后,重新启动Pi。
使用Raspberry 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连接到Raspberry Pi的GPIO2和GPIO。接下来,将SDA和SCL分别连接到GPIO3和GPIO5。最后,将一个100K电位器与AIN0连接。您也可以添加16x2 LCD来显示ADC值,而不是在终端上显示。在此处了解有关将16x2 LCD与Raspberry Pi接口的更多信息。
用于模数转换(ADC)的Python程序
该完整的程序和工作视频在本教程的最后给出。
首先,导入用于I 2 C总线通信的 smbus 库和时间库,以在打印值之间提供睡眠时间。
导入smbus 导入时间
现在定义一些变量。第一个变量包含I 2 C总线的地址,第二个变量包含第一个模拟输入引脚的地址。
地址= 0x48 A0 = 0x40
接下来,我们使库smbus的函数SMBus(1)成为对象
总线= smbus.SMBus(1)
现在, 当 第一行告诉IC在第一个模拟输入引脚上进行模拟测量时。第二行将模拟引脚上读取的地址存储为变量 值 。最后打印该值。
而True: bus.write_byte(address,A0) value = bus.read_byte(address) print(value) time.sleep (0.1)
现在,最终将python代码保存在带有.py扩展名的文件中,并通过使用以下命令在raspberry Pi终端中运行代码”
python filename.py
在运行代码之前,请确保已启用I 2 C通信,并且所有引脚均已如图所示连接,否则将显示错误。模拟值必须开始显示在终端上,如下所示。调节锅的旋钮,您将看到数值的逐渐变化。了解有关在中运行程序的更多信息
完整的python代码和视频在下面给出。