Raspberry Pi 是基于ARM体系结构处理器的主板,专为电子工程师和业余爱好者设计。PI是目前最受信任的项目开发平台之一。PI具有更高的处理器速度和1 GB RAM,可用于许多高端项目,例如图像处理和物联网。
对于执行任何重要项目,都需要了解PI的基本功能。 在这些教程中,我们将介绍Raspberry Pi的所有 基本功能。在每个教程中,我们将讨论PI的功能之一。到本系列教程结束时,您将可以自己进行高端项目。检查这些内容以了解Raspberry Pi入门和Raspberry Pi配置。
在先前的教程中,我们讨论了LED闪烁,按钮接口和PWM生成。在本教程中,我们将使用Raspberry Pi和PWM技术控制直流电动机的速度。PWM(脉冲宽度调制)是一种用于从恒定电源获得可变电压的方法。在上一教程中,我们讨论了关于PWM的问题。
Raspberry Pi 2中有40个GPIO输出引脚。但是在40个引脚中,只能编程26个GPIO引脚(GPIO2至GPIO27)。其中一些引脚执行某些特殊功能。保留特殊的GPIO,我们还有17个GPIO。要了解有关GPIO引脚的更多信息,请执行以下操作:Raspberry Pi的LED闪烁
这17个GPIO引脚中的每个引脚均可提供最大15mA的电流。并且所有GPIO引脚的电流总和不能超过50mA。因此,我们从这些GPIO引脚中的每个引脚平均平均可吸收的最大电流为3mA。因此,除非您知道自己在做什么,否则不要篡改这些事情。
板上有+ 5V(引脚2和4)和+ 3.3V(引脚1和17)电源输出引脚,用于连接其他模块和传感器。该电源轨与处理器电源并联。因此,从该电源轨汲取大电流会影响处理器。PI板上有一个保险丝,一旦施加高负载,保险丝就会跳闸。您可以从+ 3.3V电源轨安全地汲取100mA电流。我们在这里谈论这个是因为;我们将直流电动机连接到+ 3.3V。考虑到功率限制,我们只能在此处连接小功率电机,如果要驱动大功率电机,请考虑使用单独的电源为其供电。
所需组件:
在这里,我们使用 带有Raspbian Jessie OS的Raspberry Pi 2 ModelB。前面已经讨论了所有基本的硬件和软件要求,您可以在Raspberry Pi简介中查找它,而不需要我们:
- 连接销
- 220Ω或1KΩ电阻器(3)
- 小型直流电动机
- 按钮(2)
- 2N2222晶体管
- 1N4007二极管
- 电容-1000uF
- 面包板
电路说明:
如前所述,我们不能从任何GPIO引脚汲取超过15mA的电流,而直流电动机汲取的电流超过15mA,因此Raspberry Pi生成的PWM不能直接馈送到直流电动机。因此,如果我们将电机直接连接到PI进行速度控制,则电路板可能会永久损坏。
因此,我们将使用NPN晶体管(2N2222)作为开关设备。该晶体管在此处通过从PI获取PWM信号来驱动大功率直流电动机。在此应注意,错误地连接晶体管会给电路板带来沉重的负担。
电机是感应电机,因此在切换电机时,我们会遇到电感峰值。这种尖峰会严重加热晶体管,因此我们将使用二极管(1N4007)为晶体管提供保护,以防止电感尖峰。
为了减少电压波动,我们将在电源上连接一个1000uF的电容器,如电路图所示。
工作说明:
一旦按照电路图连接了所有组件,我们就可以打开PI并将程序写入PYHTON。
我们将讨论将在PYHTON程序中使用的一些命令。
我们将从库中导入GPIO文件,以下功能使我们能够对PI的GPIO引脚进行编程。我们还将“ GPIO”重命名为“ IO”,因此在程序中,每当要引用GPIO引脚时,我们都将使用“ IO”一词。
导入RPi.GPIO作为IO
有时,当我们尝试使用的GPIO引脚可能正在执行其他一些功能时。在这种情况下,我们将在执行程序时收到警告。下面的命令告诉PI忽略警告并继续执行程序。
IO.setwarnings(False)
我们可以通过板上的引脚编号或功能编号来引用PI的GPIO引脚。就像板上的“ PIN 35”一样,是“ GPIO19”。因此,我们在这里告诉我们将在此处用“ 35”还是“ 19”表示图钉。
IO.setmode(IO.BCM)
我们将GPIO19(或PIN35)设置为输出引脚。我们将从该引脚获取PWM输出。
IO.setup(19,IO.IN)
将该引脚设置为输出后,我们需要将该引脚设置为PWM输出引脚,
p = IO.PWM(输出通道,PWM信号频率)
上面的命令用于设置通道,也用于设置PWM信号的频率。“ p”是一个变量,可以是任何变量。我们使用GPIO19作为PWM 输出通道 。已将“ PWM信号 的 频率 ”选择为100,因为我们不想看到LED闪烁。
下面的命令用于启动PWM信号生成,“ DUTYCYCLE ”用于设置打开比率,0表示LED点亮0%的时间,30表示LED点亮30%的时间,100表示完全点亮。
p.start(DUTYCYCLE)
如果大括号中的Condition为true,则循环内的语句将执行一次。因此,如果GPIO引脚26变为低电平,则IF循环内的语句将执行一次。如果GPIO引脚26没有变低,则IF循环内的语句将不会执行。
if(IO.input(26)== False):
而1: 用于无限循环。使用此命令,该循环内的语句将连续执行。
我们拥有实现此速度控制所需的所有命令。
编写程序并执行后,剩下的就是操作控件。我们有两个按钮连接到PI。一种用于增加PWM信号的占空比,另一种用于减小PWM信号的占空比。通过按下一个按钮,直流电动机的速度增加,而通过按下另一个按钮,直流电动机的速度减小。这样,我们就实现了Raspberry Pi的直流电动机速度控制。
还要检查:
- 直流电动机速度控制
- 使用Arduino的直流电机控制