在我们的Raspberry Pi教程系列中,我们主要介绍了与Raspberry Pi接口的所有基本组件。我们已经以简单,详细的方式介绍了所有教程,以便任何人,无论他是否使用过Raspberry Pi,都可以轻松地从本系列中学习。在完成所有教程之后,您将能够使用Raspberry Pi构建一些高级项目。
因此,在此我们根据先前的教程设计第一个应用程序。第一个基本应用是Raspberry Pi的 Reading Room Temperature。您可以在计算机上监视读数。
如之前的教程所述,Raspberry Pi内部没有提供ADC通道。因此,如果要连接任何模拟传感器,则需要一个ADC转换单元。在我们的教程之一中,我们将ADC0804芯片连接至Raspberry Pi以读取模拟值。因此,在构建此室温温度计之前,请先对其进行遍历。
ADC0804和Raspberry Pi:
ADC0804是设计用于将模拟信号转换为8位数字数据的芯片。该芯片是流行的ADC系列之一。这是一个8位转换单元,因此我们有值或0到255个值。该芯片的分辨率根据我们选择的参考电压而变化,我们将在后面详细讨论。以下是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。
LM35温度传感器:
现在,要读取房间的温度,我们需要一个传感器。在这里,我们将使用LM35温度传感器。温度通常以“摄氏度”或“华氏度”进行测量。“ LM35”传感器提供摄氏温度的输出。
如图所示,LM35是类似于三引脚晶体管的器件。引脚编号为
PIN1 = Vcc-电源(连接到+ 5V)
PIN2 =信号或输出(连接到ADC芯片)
PIN3 =接地(接地)
该传感器根据温度在输出端提供可变电压。温度每升高+1摄氏度,输出引脚上的电压就会升高+ 10mV。因此,如果温度为0℃,传感器的输出将为0V,如果温度为10℃,传感器的输出将为+ 100mV,如果温度为25℃,传感器的输出将为+ 250mV。
所需组件:
在这里,我们使用 带有Raspbian Jessie OS的Raspberry Pi 2 ModelB。前面已经讨论了所有基本的硬件和软件要求,您可以在Raspberry Pi简介中查找它,而不需要我们:
- 连接销
- 1KΩ电阻器(17个)
- 10K锅
- 0.1µF电容器
- 100µF电容器
- 1000µF电容器
- ADC0804集成电路
- LM35温度传感器
- 面包板
电路及工作说明:
下面的电路图中显示了将Raspberry连接到ADC0804和LM35所完成的连接。
LM35输出的电压波动很大。因此,使用100uF电容器来平滑输出,如图所示。
ADC总是有很多噪声,这种噪声会极大地影响性能,因此我们使用 0.1uF电容器进行噪声过滤。没有这个,输出将会有很大的波动。
该芯片工作在RC(电阻-电容)振荡器时钟上。如电路图所示,C2和R20构成一个时钟。这里要记住的重要一点是,为了提高ADC转换速率,可以将电容器C2更改为较低的值。但是,如果速度较高,则会降低精度。因此,如果应用需要更高的精度,请选择具有更高值的电容器,而对于更高的速度,请选择具有更低值的电容器。
如前所述,LM35每摄氏度可提供+ 10mV的电压。LM35可以测量的最高温度为150ºC。因此,LM35输出端子的最大电压为1.5V。但是ADC0804的默认参考电压为+ 5V。因此,如果使用该参考值,则输出分辨率将较低,因为我们将使用最大(5 / 1.5)34%的数字输出范围。
幸运的是,ADC0804具有一个可调的Vref引脚(PIN9),如上面的引脚图所示。因此,我们将芯片的Vref设置为+ 2V。要设置Vref + 2V,我们需要在PIN9上提供+ 1V的电压(VREF / 2)。在这里,我们使用10K电位器将PIN9的电压调整为+ 1V。使用电压表获得准确的电压。
我们以前曾使用LM35温度传感器通过Arduino和AVR微控制器读取室温。还要使用Arduino检查湿度和温度测量
编程说明:
一旦按照电路图连接了所有组件,我们就可以打开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:
有关代码的进一步说明,请参见下面的代码部分。
编写程序之后,就该执行它了。在执行程序之前,让我们总结一下电路中发生的事情。首先,LM35传感器检测室温并在其输出端提供模拟电压。该可变电压以每摄氏度+ 10mV的线性表示温度。该信号被馈送到ADC0804芯片,该芯片将每10mv的255/200 = 1.275计数或1度的1.275计数转换为模拟值。此计数由PI GPIO接收。该程序将计数转换为温度值,并将其显示在屏幕上。PI读取的典型温度如下所示,
因此,我们这款Raspberry Pi温度监视器。