树莓派和L293D的直流电动机控制

电子说

1.3w人已加入

描述

步骤1:材料和工具

直流电动机

直流电动机

直流电动机

直流电动机

直流电动机

材料

Raspberry Pi 3(RPi)

L293D控制IC

面包板

跳线电线,公对公(M/M)和母对公(F/M)

直流电动机

9v电池

**在此项目中,必须访问Raspberry Pi桌面。可以通过将监视器,键盘和鼠标插入RPi或使用SSH连接来完成。**

该项目无需任何工具,因为这些连接都不是永久性的,无需使用跳线和面包板。如果要制作永久的,更耐用的版本,只需用烙铁和一些导线进行相同的连接即可。

步骤2:背景信息。

直流电动机

**这是所有背景信息。如果您不关心如何完成此操作,而只是想在不学习的情况下进行操作,请跳至第3步。**

在此项目中,我们使用的是python脚本Raspberry Pi可将GPIO输出设置为L293D电机控制器IC,并以任意速度在任一方向上运行DC电机。

首先, Raspberry Pi是具有40个GPIO引脚的开源信用卡大小的计算机。 GPIO代表“通用输入/输出”,这意味着这些引脚可以发送电信号来驱动硬件或接收它们并读取传感器数据。我们将它们用作输出,以将信号发送到L293D IC芯片,该芯片只是用于控制直流电动机的芯片。没什么特别的。

Python是一种计算机编程语言,可与Javascript或C ++相提并论。我们将使用非常简单的python命令,不需要任何计算机编程知识。

控制电动机速度的方法是使用称为PWM的python模块。代表脉冲宽度调制。 PWM的意思是通过在高电平和低电平之间切换设定的时间量来控制电压接通的时间量。电压高的时间称为“占空比”或“占空比”,无论该百分比是电动机运行的功率百分比。

要查看PWM作为输出的外观,请参考上图。

L293D电机IC使用两个引脚(称为输入)感测所需的输出方向,以及另一个引脚(使能)感测开/关。因此,在我们的代码中,在使能引脚为ON的情况下,如果我们希望电动机正转,则将输入1设置为“ True”或“ HIGH”,将输入2设置为“ False”或“ LOW”。如果希望它向后旋转,我们将输入1设置为“ False”或“ LOW”,将输入2设置为“ True”或“ HIGH”。如果两个输入均为True或均为False,则电动机将不会运行。

这就是我们控制方向的方式,但是速度呢?我们说的是PWM对吗?因此,我们将仅对两个输入进行脉宽调制,对吗?我们可以,但是太复杂了。由于IC具有一个使能引脚来控制其开/关状态的Enable引脚,因此我们可以将两个输入都保持为运行状态,而仅调制Enable引脚,并且IC只会根据我们在Enable引脚中设置的占空比来输出功率。这样,我们可以简化代码,减少出错的地方。

因此,在Raspberry Pi上,我们将在GPIO板上使用3个GPIO输出引脚,一个3.3V电源和一个一根接地针。输出引脚中的2个用于IC上的输入,一个用于使能。

现在我们知道会发生什么,现在该开始进行接线了。

步骤3:硬件设置

直流电动机

直流电动机

直流电动机

直流电动机

直流电动机

直流电动机

上面的图片可能看起来像是混乱的电线,但不要担心。

首先要做的是将L293D芯片放在试验板上。面包板的中间应有一个缝隙,如一个缝隙,并且IC芯片应将其一半左右的引脚很好地跨在上面,因此它与板平行。

接下来,这很重要将电线插入正确的面包板插槽,因此我建议对电线进行颜色编码。我将红色用于正极电源连接,将黑色用于负极电源连接(接地),将蓝色用于RPi的输入,将橙色用于电动机的输出。

您可能会注意到有两套电源线。这是因为直流电动机应至少在9V和400mA的电流下运行,而电动机控制IC的电压应在5V或3.3V且小于20mA。因此,在这种设置中,IC芯片需要3.3V的电源,并通过接地(负电源插头)连接到RPI。然后它还具有9V的电源和来自电池的接地,然后通过芯片将其路由到电动机。 重要提示:请勿尝试从RPi汲取9V和400mA电流或通过IC芯片运行9V。这可能会损坏RPi和/或L293D。为确保将电压路由到正确的引脚,请使用上图。

要知道IC芯片的哪一端,请在与上图相对应的一端寻找一个小半圆缺口。

现在,您拥有L293D IC在面包板上,首先我们将M/F跳线连接到RPi。因此,在面包板上,将跳线的公端放入旁边的插槽中:Vss,Enable 1,Input 1,Input 2和左侧的GND引脚。应该有5根电线准备连接到RPi。有关引脚号,请参见上图。现在,将电线从Vss(我希望您将其变成红色)连接到Pi或1号针上的5V电源。接下来,将GND跳线(再次希望是黑色的)连接到GND引脚或引脚6。之后,将输入1跳线连接到GPIO2或引脚#3。然后将跳线从输入2连接到GPIO3或引脚5。最后,将Enable 1跳线连接到GPIO4或引脚7。到了,再也没有M/F跳线了!到一半了!

所以,现在抓住M/M跳线。其中之一应从IC的Vs引脚到9V的正端。有很多方法可以将其保留在电池上,但是只要金属两端牢固接触,胶带就可以使用。用黑色M/M跳线将电池的负极端连接到IC的另一个GND引脚。最后,只需将IC上的两个输出引脚连接到电动机的两端即可!而已!现在,一切都按照所需的方式进行了布线,不再需要任何硬件工作。上软件。

步骤4:软件设置

直流电动机

首先,我们需要在Pi上打开一个程序来编写代码。我们将使用IDLE 2,因此请转到桌面的左上角,依次单击“菜单”,“编程”和“ Python 2(IDLE)”。您应该看到带有未命名文档的空白文本编辑器。

我们需要做的第一件事是导入GPIO模块。因此,在第一行中,准确键入对CaSe敏感的

import RPi.GPIO as GPIO

这将导入GPIO模块

下一步,我们需要一个名为“ sleep”的命令,因此编写

from time import sleep

下一步,我们需要命名所有引脚,因此通过写入设置命名模式

GPIO.setmode(GPIO.BOARD)

,这会将名称设置为威廉希尔官方网站 板模式,从而只需根据上图中间的数字命名引脚。

现在我们需要将引脚设置为输出,所以现在写

GPIO.setup(03, GPIO.OUT) GPIO.setup(05, GPIO.OUT) GPIO.setup(07, GPIO.OUT)

现在设置pwm命令类型

pwm=GPIO.PWM(07, 100)

下一步以0占空比启动脉冲宽度调制,因此它尚未运行

pwm.start(0)

其余代码根据我们想要的方式而变化运行马达。对于第一遍,我们将在代码中设置预定义的指令。稍后,我将说明如何编写代码,让您输入所需的方向,任务和持续时间。

因此,到目前为止,我们将编写一个代码,该代码以50%的功率向前运行2秒,然后以75%的功率向后运行3秒。

首先,要设置向前写入的方向

GPIO.output(03, True) GPIO.output(05, False)

现在,我们将PWM占空比设置为50%。写入

pwm.ChangeDutyCycle(50)

然后打开使能引脚

GPIO.output(07, True)

然后将代码休眠2秒钟,以便电动机运行

sleep(2)

现在关闭使能引脚

GPIO.output(07, False)

然后反转输入以将其设置为反转

GPIO.output(03, False) GPIO.output(05, True)

然后将PWM占空比更改为75%

pwm.ChangeDutyCycle(75)

,然后重新启用启用功能

GPIO.output(07, True)

使代码休眠3秒钟

sleep(3)

然后再关闭使能引脚

GPIO.output(07, False)

停止脉冲

pwm.stop()

并清除所有GPIO通道。

GPIO.cleanup()

就是这样!现在,您有了一个代码,它将使电动机以50%的速度向前运转2秒,然后以75%的速度向后运转3秒。按F5,然后保存以测试您的代码!

*注意:您可能会收到一条错误消息,指出所选的GPIO通道已在使用中。这不会影响您的项目,您可以通过在代码中写入“ GPIO.setwarnings(False)”来使警告停止出现。*

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分