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
    +关注

    关注

    187

    文章

    6461

    浏览量

    186570
  • L293D
    +关注

    关注

    4

    文章

    50

    浏览量

    20056
收藏 人收藏

    评论

    相关推荐

    什么是步进电机驱动器?它具有什么特点?

    步进电机驱动器是一种用于控制步进电机运动的电子设备。它通过接收来自控制系统的脉冲信号,精确地控制
    的头像 发表于 10-24 11:52 191次阅读

    使用L293D电机驱动器控制直流电机

    直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。当直流电机作为电动机运行时,它将电能转换为机械能,用于
    的头像 发表于 06-21 15:55 1173次阅读
    使用<b class='flag-5'>L293D</b><b class='flag-5'>电机</b><b class='flag-5'>驱动器</b><b class='flag-5'>控制</b>直流<b class='flag-5'>电机</b>

    伺服驱动器对伺服电机控制要求

    伺服驱动器对伺服电机控制要求是一个复杂而深入的话题。以下是关于伺服驱动器对伺服电机控制要求的概
    的头像 发表于 06-14 15:24 707次阅读

    伺服驱动器控制模式有哪几种?

    介绍伺服驱动器的几种主要控制模式,以及它们的特点和应用场景。 速度控制模式 速度控制模式是伺服
    的头像 发表于 06-14 14:41 1517次阅读

    plc如何控制伺服电机速度方向?

    的基本原理 伺服电机是一种闭环控制系统,其工作原理是通过检测电机的实际位置、速度等信息,与给定的指令值进行比较,然后根据偏差值调整
    的头像 发表于 06-12 10:46 1625次阅读

    伺服驱动器方向反了怎样设置

    伺服驱动器是现代工业自动化领域中非常重要的一种设备,它通过接收控制信号驱动伺服电机,实现精确的位置控制
    的头像 发表于 06-12 10:15 2665次阅读

    为什么步进电机要加驱动器

    步进电机作为一种能够实现精确位移控制电机类型,在工业自动化、精密测量、数控机床等领域得到了广泛应用。然而,步进电机本身并不能直接接受控制
    的头像 发表于 06-05 17:30 1291次阅读

    L293D双路全桥驱动电路原理

    L293D芯片内部包含两个单独的全桥驱动器,每个驱动器控制一个电机。每个全桥
    的头像 发表于 05-20 17:04 1485次阅读

    L293D新型双路全桥式驱动IC工作原理

    。 一、L293D的结构与特性 L293D内部集成两个完全独立的H桥式驱动器,每个驱动器均可独立控制一个
    的头像 发表于 05-07 18:25 1195次阅读

    L6230电机驱动器芯片是如何控制电机的,例如引脚设置,信号之类?

    L6230电机驱动器芯片是如何控制电机的 例如引脚设置,信号之类?
    发表于 05-06 08:53

    先了解这些芯片吧!

    L293D是一款常见的直流电机驱动芯片,具有两个独立的H桥电路,可同时驱动两个直流电机。该
    的头像 发表于 02-21 11:42 858次阅读

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

    在本 Arduino 电机指南中,您将学习如何使用 Arduino UNO 和 TIP120晶体管驱动控制直流
    的头像 发表于 02-11 10:08 1288次阅读
    如何使用<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桥是一个四象限输出功
    的头像 发表于 02-02 14:53 3683次阅读
    <b class='flag-5'>L293D</b><b class='flag-5'>驱动器</b>电路图介绍

    伺服电机驱动器设置参数教程

    伺服电机驱动器是现代工业控制领域中广泛应用的一种设备。通过合理设置参数,可以实现电机的高精度定位、速度
    的头像 发表于 01-25 11:36 6742次阅读

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

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