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控制步进电机的速度。顾名思义,在步进电机中,轴的旋转采用步进形式。步进电机有不同的类型。在这里,我们将使用最受欢迎的 单极步进电机。与直流电动机不同,我们可以通过给出正确的说明将步进电动机旋转到任何特定角度。
要旋转此四级步进电机,我们将使用步进电机驱动器电路来传递功率脉冲。驱动器电路从PI获取逻辑触发器。如果我们控制逻辑触发器,我们将控制电源脉冲,从而控制步进电机的速度。
Raspberry Pi 2中有 40个GPIO输出引脚。但是在40个引脚中,只能编程26个GPIO引脚(GPIO2至GPIO27)。其中一些引脚执行某些特殊功能。撇开特殊的GPIO,我们只剩下17个GPIO。这17个GPIO引脚中的每个引脚均可提供最大 15mA的电流。并且所有GPIO引脚的电流总和不能超过 50mA。要了解有关GPIO引脚的更多信息,请执行以下操作:Raspberry Pi的LED闪烁
板上有 + 5V(引脚2和4)和+ 3.3V(引脚1和17)电源输出引脚,用于连接其他模块和传感器。这些电源导轨不能用于驱动步进电机,因为我们需要更多的动力来旋转它。因此,我们必须从另一个电源向步进电机供电。我的步进电机的额定电压为9V,因此我将9v电池用作第二电源。搜索您的步进电机型号,以了解额定电压。根据等级选择适当的辅助光源。
如前所述,我们需要一个驱动器电路来驱动步进电机。我们还将在这里设计一个简单的晶体管驱动器电路。
所需组件:
在这里,我们使用 带有Raspbian Jessie OS的Raspberry Pi 2 ModelB。前面已经讨论了所有基本的硬件和软件要求,您可以在Raspberry Pi简介中查找它,而不需要我们:
- 连接销
- 220Ω或1KΩ电阻器(3)
- 步进电机
- 按钮(2)
- 2N2222晶体管(4)
- 1N4007二极管(4)
- 电容-1000uF
- 面包板
电路说明:
步进电机使用200步来完成360度旋转,这意味着其每步旋转1.8度。当我们驱动四级步进电机时,我们需要给出四个脉冲以完成单个逻辑周期。电动机的每一步完成1.8度旋转,因此要完成一个周期,我们需要200个脉冲。因此,完成一个旋转需要200/4 = 50个逻辑周期。选中此项以了解有关步进电机及其驱动模式的更多信息。
我们将通过一个NPN晶体管(2N2222)驱动这四个线圈中的每个线圈,该NPN晶体管从PI中获取逻辑脉冲并驱动相应的线圈。四个晶体管采用PI的四种逻辑来驱动步进电机的四级。
晶体管驱动器电路是一个棘手的设置。这里我们要注意,错误地连接晶体管可能会给电路板带来沉重的负载并损坏电路板。选中此项以正确理解步进电机驱动器电路。
电机是感应电机,因此在切换电机时,我们会遇到电感峰值。这种尖峰会严重加热晶体管,因此我们将 使用二极管(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)
我们将四个GPIO引脚设置为输出,以驱动步进电机的四个线圈。
IO.setup(5,IO.OUT)IO.setup(17,IO.OUT)IO.setup(27,IO.OUT)IO.setup(22,IO.OUT)
我们将GPIO26和GPIO19设置为输入引脚。我们将检测这些针脚是否按下按钮。
IO.setup(19,IO.IN)IO.setup(26,IO.IN)
如果大括号中的Condition为true,则循环内的语句将执行一次。因此,如果GPIO引脚26变为低电平,则IF循环内的语句将执行一次。如果GPIO引脚26没有变低,则IF循环内的语句将不会执行。
if(IO.input(26)== False):
该命令执行循环100次,x从0递增到99。
对于x范围(100):
而1: 用于无限循环。使用此命令,该循环内的语句将连续执行。
我们拥有使用此实现步进电机速度控制所需的所有命令。
编写程序并执行后,剩下的就是操作控件。我们有两个连接到PI的按钮。一个用于增加四个脉冲之间的延迟,另一个用于减小四个脉冲之间的延迟。延误本身就是速度。如果延迟较大,则电动机在每步之间都制动,因此旋转缓慢。如果延迟接近零,则电动机以最大速度旋转。
这里应该记住,脉冲之间应该有一些延迟。发出脉冲后,步进电机需要几毫秒的时间才能到达其最终阶段。如果脉冲之间没有延迟,则步进电机将完全不移动。通常,脉冲之间的延迟为50ms。有关更准确的信息,请查看数据表。
因此,通过两个按钮,我们可以控制延迟,而延迟又可以控制步进电机的速度。