Raspberry Pi 是基于ARM体系结构处理器的主板,专为电子工程师和业余爱好者设计。PI是目前最受信任的项目开发平台之一。PI具有更高的处理器速度和1 GB RAM,可用于许多高端项目,例如图像处理和物联网。
对于执行任何重要项目,都需要了解PI的基本功能。 在这些教程中,我们将介绍Raspberry Pi的所有 基本功能。在每个教程中,我们将讨论PI的功能之一。在本“ Raspberry Pi教程系列”结束时 ,您将可以自己进行知名的项目。请阅读以下教程:
- Raspberry Pi入门
- Raspberry Pi配置
- LED闪烁
- Raspberry Pi按钮接口
- Raspberry Pi PWM生成
- 使用Raspberry Pi控制直流电机
- Raspberry Pi的步进电机控制
- 将移位寄存器与Raspberry Pi接口
在本教程中,我们将ADC(模拟到数字转换)芯片连接到Raspberry Pi。我们知道模拟量的所有参数,这意味着它会随着时间不断变化。以房间的实例温度为例,室温会随着时间连续变化。此温度带有十进制数字。但是在数字世界中,没有十进制数字,因此我们需要将Analog值转换为Digital value。该转换过程是通过ADC技术完成的。在此处了解有关ADC的更多信息:ADC0804简介
ADC0804和Raspberry Pi:
普通控制器具有ADC通道,但对于PI,内部没有ADC通道。因此,如果要连接任何模拟传感器,则需要一个ADC转换单元。因此,为此目的,我们将ADC与Raspberry Pi接口。
ADC0804是设计用于将模拟信号转换为8位数字数据的芯片。该芯片是流行的ADC系列之一。这是一个8位转换单元,因此我们有值或0到255个值。在最大5V的测量电压下,每19.5mV会有一个变化。以下是ADC0804的 引脚排列:
现在,这里另一个重要的事情是,ADC0804以5V工作,因此它以5V逻辑信号提供输出。在8引脚输出(表示8位)中,每个引脚提供+ 5V输出以表示逻辑“ 1”。因此,问题在于PI逻辑为+ 3.3v,因此您无法将+ 5V逻辑提供给PI的+ 3.3V GPIO引脚。如果给PI的任何GPIO引脚提供+ 5V电压,则电路板会损坏。
因此,要使逻辑电平从+ 5V降压,我们将使用分压器电路。我们已经讨论过分压器电路,之前对其进行了进一步的说明。我们要做的是,使用两个电阻将+ 5V逻辑分为2 * 2.5V逻辑。因此,除法运算之后,我们将为PI提供+ 2.5v逻辑。因此,只要ADC0804提供逻辑“ 1”,我们在PI GPIO引脚上就会看到+ 2.5V,而不是+ 5V。
在此处了解有关Raspberry Pi的GPIO引脚的更多信息,并阅读我们之前的教程。
所需组件:
在这里,我们使用 带有Raspbian Jessie OS的Raspberry Pi 2 ModelB。前面已经讨论了所有基本的硬件和软件要求,您可以在Raspberry Pi简介中查找它,而不需要我们:
- 连接销
- 220Ω或1KΩ电阻器(17个)
- 10K锅
- 0.1µF电容器(2个)
- ADC0804集成电路
- 面包板
电路说明:
它可以在+ 5v的电源电压下工作,并且可以测量0-5V范围内的可变电压范围。
上面的电路图中显示了ADC0804与Raspberry PI接口的连接。
ADC总是有很多噪声,这种噪声会极大地影响性能,因此我们使用0.1uF电容进行噪声过滤。没有这个,输出将会有很大的波动。
该芯片工作在RC(电阻-电容)振荡器时钟上。如电路图所示,C2和R20形成一个Clock。这里要记住的重要一点是,为了提高ADC转换速率,可以将电容器C2更改为较低的值。但是,如果速度较高,则会降低精度。因此,如果应用需要更高的精度,则选择具有较高值的电容器,而对于较高的速度,则应选择具有较低值的电容器。
编程说明:
一旦按照电路图连接了所有组件,我们就可以打开PI并将程序写入PYHTON。
我们将讨论将在PYHTON程序中使用的一些命令,
我们将从库中导入GPIO文件,以下功能使我们能够对PI的GPIO引脚进行编程。我们还将“ GPIO”重命名为“ IO”,因此在程序中,每当要引用GPIO引脚时,我们都将使用“ IO”一词。
导入RPi.GPIO作为IO
有时,当我们尝试使用的GPIO引脚可能正在执行其他一些功能时。在这种情况下,我们将在执行程序时收到警告。下面的命令告诉PI忽略警告并继续执行程序。
IO.setwarnings(False)
我们可以通过板上的引脚编号或功能编号来引用PI的GPIO引脚。像板上的“ PIN 29”一样,是“ GPIO5”。因此,我们在这里告诉我们将在此处用“ 29”或“ 5”表示图钉。
IO.setmode(IO.BCM)
我们将8个引脚设置为输入引脚。我们将通过这些引脚检测8位ADC数据。
IO.setup(4,IO.IN)IO.setup(17,IO.IN)IO.setup(27,IO.IN)IO.setup(22,IO.IN)IO.setup(5,IO.IN) IO.setup(6,IO.IN)IO.setup(13,IO.IN)IO.setup(19,IO.IN)
如果大括号中的条件为true,则循环内的语句将执行一次。因此,如果GPIO引脚19变为高电平,则IF循环内的语句将执行一次。如果GPIO引脚19没有变高,则IF循环中的语句将不会执行。
if(IO.input(19)==真):
下面的命令用作永远循环,使用此命令,该循环内的语句将连续执行。
虽然1:
程序的进一步说明在下面的代码部分中给出。
加工:
编写程序并执行后,您将在屏幕上看到“ 0”。“ 0”表示输入电压为0伏。
如果我们调整连接到芯片的10K电位器,则会在屏幕上看到值的变化。屏幕上的值持续滚动,这些是PI读取的数字值。
假设如果使电位器达到中点,则ADC0804输入的电压为+ 2.5V。因此,我们在屏幕上看到128,如下所示。
对于+ 5V模拟值,我们将有255。
因此,通过改变电位器,我们可以将ADC0804输入处的电压从0变为+ 5V。使用此PI可以读取0-255之间的值。这些值将打印在屏幕上。
因此,我们已经将ADC0804连接到Raspberry Pi。