0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino和L293D电机驱动器芯片来控制小型DCmotor的方向和速度

454398 来源:网络整理 作者:网络整理 2019-12-02 10:41 次阅读

概述

在本课程中,您将学习如何使用Arduino和L293D电机驱动器芯片来控制小型DCmotor的方向和速度。

电位器控制电动机的速度,并通过按钮控制方向。

零件

要构建本课中描述的项目,您将需要以下零件。

零件 数量

小型6V直流电动机

1

L293D IC

1

10kΩ可变电阻器(pot)

1

触摸开关

1

半面包板

1

Arduino Uno R3

1

跳线包

1

实验

在获得用于控制电机的Arduino板之前,我们应该先对L293D电机控制芯片进行实验,以了解其工作原理

我们可以仅使用Arduino向电动机提供5V电压。

请注意电动机的旋转方式。您可以通过将电动机轴夹在手指之间来做到这一点。交换电动机导线,使原先要达到+ 5V的电动机导线到达GND,反之亦然。电动机将沿相反方向旋转。

这为我们提供了有关L293D芯片工作原理的线索。它的控制销使我们能够执行等效的交换电动机端子以反转电动机方向的操作。

按如下所示构建面包板。 Arduino仍然只是供电,但是我们可以在让Arduino接管之前手动对控制引脚进行实验。

我们感兴趣的L293D的三个引脚是引脚1(启用),引脚2(In1)和引脚7(In2)。 )。使用紫色,黄色和橙色的跳线将它们连接到5V或GND。

如上所示,电动机应该在一个方向上旋转,我们将其称为A方向。

如果将引脚1(使能)移至GND时,无论使用控制引脚In1和In2做什么,电动机都将停止。启用可打开和关闭所有功能。这对于使用PWM输出控制电动机速度非常有用。将引脚1重新连接至5V,以便电动机再次启动。

现在尝试将In1(引脚2,黄色)从5V移至GND。In1和In2现在都已连接至GND,因此电动机将再次停止。/p》

将In2从GND移至5V将导致电动机沿相反方向(B方向)旋转。

最后,将In1移回5V,以使In1和In2都处于5V导致电动机停止。

引脚In1和In2对电动机的影响总结在下表中:

In1In2电动机

GNDGND已停止

5VGND向A方向转动

GND5V向B方向转动

5V5V已停止

面包板布局

现在我们已经掌握了直接控制电机的功能,我们可以让Arduino管理 Enable , In1 和 In2 引脚。

构建面包板时,需要确保IC正确定位。凹口应位于面包板的顶部。

Arduino代码

将以下草图加载到您的Arduino上。

下载:文件

复制代码

/*

Adafruit Arduino - Lesson 15. Bi-directional Motor

*/

int enablePin = 11;

int in1Pin = 10;

int in2Pin = 9;

int switchPin = 7;

int potPin = 0;

void setup()

{

pinMode(in1Pin, OUTPUT);

pinMode(in2Pin, OUTPUT);

pinMode(enablePin, OUTPUT);

pinMode(switchPin, INPUT_PULLUP);

}

void loop()

{

int speed = analogRead(potPin) / 4;

boolean reverse = digitalRead(switchPin);

setMotor(speed, reverse);

}

void setMotor(int speed, boolean reverse)

{

analogWrite(enablePin, speed);

digitalWrite(in1Pin, ! reverse);

digitalWrite(in2Pin, reverse);

} /*

Adafruit Arduino - Lesson 15. Bi-directional Motor

*/

int enablePin = 11;

int in1Pin = 10;

int in2Pin = 9;

int switchPin = 7;

int potPin = 0;

void setup()

{

pinMode(in1Pin, OUTPUT);

pinMode(in2Pin, OUTPUT);

pinMode(enablePin, OUTPUT);

pinMode(switchPin, INPUT_PULLUP);

}

void loop()

{

int speed = analogRead(potPin) / 4;

boolean reverse = digitalRead(switchPin);

setMotor(speed, reverse);

}

void setMotor(int speed, boolean reverse)

{

analogWrite(enablePin, speed);

digitalWrite(in1Pin, ! reverse);

digitalWrite(in2Pin, reverse);

}

定义了引脚,并在“设置”功能中正常设置了它们的模式。

在循环功能中,电机速度的值为通过将锅中的模拟读数除以4可以找到。

因数为4,因为模拟读数将在0到1023之间,并且模拟输出需要在0到255之间。

如果按下按钮,电机将正向运行,否则将反向运行。 “ reverse”变量的值仅设置为从开关引脚读取的值。因此,如果按下按钮,它将为False,否则将为True。

速度和反向值将传递给名为“ setMotor”的函数,该函数将设置驱动器芯片上的适当引脚以控制

下载:文件

复制代码

void setMotor(int speed, boolean reverse)

{

analogWrite(enablePin, speed);

digitalWrite(in1Pin, ! reverse);

digitalWrite(in2Pin, reverse);

} void setMotor(int speed, boolean reverse)

{

analogWrite(enablePin, speed);

digitalWrite(in1Pin, ! reverse);

digitalWrite(in2Pin, reverse);

}

首先,通过对enable引脚使用AnalogWrite来设置速度。无论L293的in1和in2引脚设置为什么,L293的使能引脚都可以打开或关闭电动机。

要控制电动机的方向,in1和in2引脚必须为

如果in1为HIGH而in2为LOW,则电动机将以一种方式旋转;如果in1为LOW而in2为HIGH,则电动机将以相反的方向旋转。/p》

‘!’命令的意思是“不是”。因此,in1的第一个digitalWrite命令将其设置为与“ reverse”的值相反的值,因此,如果reverse为HIGH则将其设置为LOW,反之亦然。

in2的第二个digitalWrite将引脚设置为“ reverse”的值。这意味着它将永远与in1是相反的。

L293D

这是一个非常有用的芯片。它实际上可以独立控制两个电动机。在本课程中,我们仅使用一半的芯片,芯片右侧的大多数引脚用于控制第二个电机。

第二个电动机将连接在OUT3和OUT4之间。您还需要另外三个控制引脚。

EN2已连接到Arduino上的PWM使能输出引脚

IN3和IN4已连接到Arduino上的数字输出。

L293D具有两个+ Vpin(8和16)。 ‘+ Vmotor(8)引脚为电机供电,而+ V(16)则为芯片逻辑供电。我们已经将它们都连接到Arduino 5V引脚。但是,如果您使用的是功率更高的电机或更高电压的电机,则可以使用连接到正电源的引脚8为电机提供单独的电源,而第二个电源的接地端则连接到Arduino的接地端。/p》

其他要做的事情

您可以尝试更改草图以控制电动机,而无需使用电位器或开关。它可能会在向前方向上开始缓慢,然后逐渐变快,然后变慢,然后反转,重复此模式。

责任编辑:wv

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

    关注

    184

    文章

    6427

    浏览量

    184826
  • L293D
    +关注

    关注

    4

    文章

    50

    浏览量

    19867
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino UNO和TIP120晶体管驱动控制直流电机速度

    在本 Arduino 电机指南中,您将学习如何使用 Arduino UNO 和 TIP120晶体管驱动控制直流
    的头像 发表于 02-11 10:08 321次阅读
    如何使用<b class='flag-5'>Arduino</b> UNO和TIP120晶体管<b class='flag-5'>驱动</b>和<b class='flag-5'>控制</b>直流<b class='flag-5'>电机</b>的<b class='flag-5'>速度</b>

    L293D驱动器电路图介绍

    L293D驱动器模块的原理是利用H桥电路来控制电机的正反转和速度调节。H桥是一个四象限输出功率放大器,因其电路形状像字母H而得名。在H桥
    的头像 发表于 02-02 14:53 773次阅读
    <b class='flag-5'>L293D</b><b class='flag-5'>驱动器</b>电路图介绍

    伺服电机是否必须有对应的伺服驱动器控制

    伺服电机是否必须有对应的伺服驱动器控制?没有伺服驱动器能使用伺服电机吗?怎么
    发表于 12-15 07:49

    浅谈步进电机驱动器TB5128FTG芯片的测试经验

    重要功能。通过将每个脉冲信号细分为更小的步进,可以提高步进电机的精度和平滑性。细分控制可以实现更高的分辨率和更平滑的运动。 4.方向控制:步进电机
    发表于 12-05 12:40

    步进电机的半步驱动是由驱动器设置的吗?

    步进电机的半步驱动是由驱动器设置的吗
    发表于 10-11 06:52

    步进驱动器+步进电机+西门子PLC控制案例

    步进系统=步进驱动器+步进电机。步进电机由步进驱动器驱动,相当于驱动电源,且它受外部的脉冲信号
    发表于 08-25 11:15 798次阅读
    步进<b class='flag-5'>驱动器</b>+步进<b class='flag-5'>电机</b>+西门子PLC<b class='flag-5'>控制</b>案例

    FD1157H 带有嵌入式霍尔传感的智能电机驱动器芯片

    保护 可在SIP-4L包 为12V系统 一般说明 FD1157H是一个嵌入式霍尔传感的双线圈电机驱动器。它集成了电机
    发表于 08-22 14:25

    FD0259F 带有嵌入式霍尔传感的智能电机驱动器芯片

    桥MOS驱动器,高灵敏度霍尔效应传感,用于锁定转子检测的事件计时,以及变速控制功能与转速表或报警信号输出逻辑到超小型TS826包,使
    发表于 08-22 14:16

    plc如何控制步进电机速度方向?

    那些在运行过程中移动距离和速度均确定的具体设备,认为采用PLC通过步进电机驱动器控制步进电机的运转也是一种技术方案。▲CRT-工业运动
    的头像 发表于 08-07 08:09 1195次阅读
    plc如何<b class='flag-5'>控制</b>步进<b class='flag-5'>电机</b>的<b class='flag-5'>速度</b>和<b class='flag-5'>方向</b>?

    采用L293D的双向电机控制器电路

    电机控制驱动器IC广泛用于电子电路中,以轻松控制电机并有效地驱动
    的头像 发表于 07-02 14:23 2216次阅读
    采用<b class='flag-5'>L293D</b>的双向<b class='flag-5'>电机</b><b class='flag-5'>控制</b>器电路

    ESP32和L293D电机板开源分享

    电子发烧友网站提供《ESP32和L293D电机板开源分享.zip》资料免费下载
    发表于 06-30 10:33 0次下载
    ESP32和<b class='flag-5'>L293D</b><b class='flag-5'>电机</b>板开源分享

    L293/L293D中文数据手册

    L293L293D四倍高电流H桥驱动程序。 L293是提供双向驱动电流高达1 A,电压 是从4.5 V至36 V的;
    发表于 06-19 09:29 3次下载

    使用ArduinoL293d shield制作语音控制机器人

    电子发烧友网站提供《使用ArduinoL293d shield制作语音控制机器人.zip》资料免费下载
    发表于 06-12 10:49 0次下载
    使用<b class='flag-5'>Arduino</b>和<b class='flag-5'>L293d</b> shield制作语音<b class='flag-5'>控制</b>机器人

    直线电机需要驱动器吗 直线电机驱动器原理

    直线电机需要驱动器控制电机速度方向,从而实现精准的位置
    的头像 发表于 06-02 18:23 2950次阅读

    Arduino控制普通电机

    只让你的电机旋转 控制电机速度 控制直流电机的旋转方向
    发表于 05-06 11:12 7次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>普通<b class='flag-5'>电机</b>