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

    关注

    190

    文章

    6515

    浏览量

    195973
  • L293D
    +关注

    关注

    4

    文章

    50

    浏览量

    20558
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电机驱动控制技术解析

    电压的电机驱动器,直流电机和步进电机都可以驱动。在5V到35V的电压范围内,提供2安培的电流,并且具有过热自断和反馈检测功能。
    发表于 11-27 08:04

    ST L9908:面向高可靠性汽车应用的三相电机栅极驱动器解决方案

    STMicroelectronics L9908车用三相电机栅极驱动器单元 (GDU) 设计用于控制汽车应用中的无刷电机的6个N沟道FET。
    的头像 发表于 10-31 09:57 239次阅读
    ST <b class='flag-5'>L</b>9908:面向高可靠性汽车应用的三相<b class='flag-5'>电机</b>栅极<b class='flag-5'>驱动器</b>解决方案

    TPIC2010 串行接口控制的 9 通道电机驱动器数据手册

    TPIC2010是一款适用于超薄型或超薄型ODD的超低噪声型电机驱动器IC。 由串行I/F控制的9通道驱动器IC最适合驱动主轴
    的头像 发表于 10-21 09:37 377次阅读
    TPIC2010 串行接口<b class='flag-5'>控制</b>的 9 通道<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>数据手册

    ‌DRV8872 有刷直流电机驱动器技术文档总结

    DRV8872设备是用于打印机、电器、工业设备和其他小型机器的有刷直流电机驱动器。两个逻辑输入控制 H 桥驱动器,该
    的头像 发表于 10-17 10:11 384次阅读
    ‌DRV8872 有刷直流<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>技术文档总结

    ‌DRV8870 有刷直流电机驱动器技术文档总结

    DRV8870 器件是用于打印机、电器、工业设备和其他小型机器的有刷直流电机驱动器。两个逻辑输入控制 H 桥驱动器,该
    的头像 发表于 10-17 10:06 502次阅读
    ‌DRV8870 有刷直流<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>技术文档总结

    ‌DRV8871 3.6A有刷直流电机驱动器技术文档总结

    DRV8871 器件是用于打印机、电器、工业设备和其他小型机器的有刷直流电机驱动器。两个逻辑输入控制 H 桥驱动器,该
    的头像 发表于 10-17 09:54 779次阅读
    ‌DRV8871 3.6A有刷直流<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>技术文档总结

    ‌DRV8871-Q1 汽车级刷式直流电机驱动器技术文档总结

    DRV8871-Q1 器件是一款有刷直流电机驱动器,适用于打印机、电器、工业设备和其他小型机器。两个逻辑输入控制 H 桥驱动器,该
    的头像 发表于 10-16 14:26 507次阅读
    ‌DRV8871-Q1 汽车级刷式直流<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>技术文档总结

    CW32L011 电机驱动器开发板测试

    非常感谢CW32生态社区提供的CW32L011电机驱动器,下面是对该电机驱动器的分析和测试。 电机
    的头像 发表于 08-30 10:31 605次阅读
    CW32<b class='flag-5'>L</b>011 <b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>开发板测试

    200V/4A半桥栅极驱动器适用于大功率通讯电源/D类音频放/大功率电机驱动器

    概述:PC318C046EQ 是一款高性能、高可靠性的半桥栅极驱动器,稳健可靠的电平转换技术同时拥有高运行速度和低功耗特性,并且可提供从控制输入逻辑到高侧栅极驱动器的干净电平转换。该器
    发表于 08-21 15:48

    永磁电机调速驱动器与伺服驱动器、变频有哪些异同?

    永磁电机调速驱动器、伺服驱动器与变频作为现代工业控制领域的三大核心动力装置,在电机
    的头像 发表于 07-30 07:35 928次阅读
    永磁<b class='flag-5'>电机</b>调速<b class='flag-5'>驱动器</b>与伺服<b class='flag-5'>驱动器</b>、变频<b class='flag-5'>器</b>有哪些异同?

    Texas Instruments MCF8316D无传感FOC BLDC驱动器数据手册

    Texas Instruments MCF8316D无传感磁场定向控制(FOC)无刷直流(BLDC)驱动器是一款单芯片器件,用于
    的头像 发表于 07-10 11:50 3678次阅读
    Texas Instruments MCF8316<b class='flag-5'>D</b>无传感<b class='flag-5'>器</b>FOC BLDC<b class='flag-5'>驱动器</b>数据手册

    伺服驱动器作用及其功能

    伺服驱动器的主要作用是控制伺服电机,实现高精度的传动系统定位 ‌。 伺服驱动器,又称为“伺服控制器”或“伺服放大器”,是现代运动
    的头像 发表于 02-20 10:06 2623次阅读

    步进电机驱动器有哪些分类,如何选型?

    用于需要高精度和高速度的应用中,如数控机床、机器人等。 2. 微步驱动器/细分驱动器:通过细分步进角或微步技术提高电机的运动平滑性和精度。
    的头像 发表于 01-06 08:08 1518次阅读
    步进<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>有哪些分类,如何选型?

    驱动器的工作原理 驱动器电机的区别

    驱动器的工作原理 驱动器是一种电子设备,用于控制电机速度方向和扭矩。它的主要功能是将输入信号
    的头像 发表于 12-19 16:20 5569次阅读

    基于STM32F405RGT6的TMC2660步进电机驱动器,附带原理图+PCB

    Part 01 前言 步进电机驱动器控制信号转换为电流信号,驱动步进电机的绕组。可以通过信号序列控制
    的头像 发表于 12-14 19:24 3480次阅读
    基于STM32F405RGT6的TMC2660步进<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>,附带原理图+PCB