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

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

3天内不再提示

怎样用Arduino连接电机

454398 来源:wv 2019-08-29 09:46 次阅读

步骤1:连接所有硬件

怎样用Arduino连接电机

连接L293D电机驱动器

L293D是双通道全桥电机驱动器,每通道最大输出电流为600 mA(数据等)。这意味着您可以同时驱动2个电流,这些电机的电流需求在IC的限制范围内。在我们的例子中,我们只使用一个通道,这意味着我们将使用模块上的M1 IN/M1输出端口(IC上分别为引脚2,7和3,6)。为了使电机连接到该通道,我们需要将EN1(引脚1)拉高。我正在使用的模块提供了一个简单的跳线布置,用于硬接线,参见图片。或者,您可以通过控制器控制此引脚。引脚连接如图所示。

连接L298N电机驱动器

与L293D类似,L298N也是双全桥电机驱动器每个通道的最大输出电流为2A。我们将只使用一个渠道,即。 M1,M2(该模块具有不同的命名约定,M1-In,M2-In为输入,M1-Out,M2-Out为相应的输出)数据表L298N

当我们需要更多电流时对于金属齿轮直流电机,这个特殊的驱动器是一个不错的选择。它具有良好的性能,低热量(尽管建议使用散热器,市场上大多数模块都带有散热片)。它也非常便宜,有帮助。

连接伺服电机

伺服电机有各种尺寸和相应的扭矩等级。通常我们看到扭矩额定值较低的电机使用塑料齿轮,但扭矩额定值较高的电机使用金属齿轮。

伺服电机有3根电线从中传出,即信号,Vcc和接地。通常使用的颜色代码如下:

信号》黄色/橙色;在VCC》红色/白色; Gnd》 Black/Brown

根据经验,识别它们的最简单方法是,最黑暗的一个是地面,略亮的是Vcc,最亮的一个是信号。

如果您使用的是像HK15178这样的微型伺服,可以使用Arduino上的5V引脚为其供电。但是,当电流要求较高时,您的Arduino无法提供足够的电流,因此您需要从外部供电。我们将使用通用电池消除器电路(UBEC),它具有方便的5V/6V 3A输出。我们在7805这样的简单电压调节器上使用该电路的原因是电压调节器的电流限制低于控制伺服电流所需的输出电流约1.5至2A(取决于其额定值)。

PS:如果使用Arduino为更高等级的伺服电源供电,电路板可能会突然复位并以不合需要的方式运行。

连接HC-05蓝牙模块

这一步与使用HC-05和Arduino UNO的智能手机控制LED灯所解释的完全相似。这里唯一的区别是我们使用模拟引脚A0和A1作为数字引脚(D14和D15) Rx和Tx。

第2步:Arduino代码

#define BoMotor_F 3

#define BoMotor_B 5

#define DcMotor_F 6

#define DcMotor_B 11

#define ServoMotorPin 7

#include

#include

SoftwareSerial mySerial(14, 15); // RX, TX

Servo myservo;

char character;

boolean flag=false;

void setup() {

// put your setup code here, to run once:

mySerial.begin(9600);

Serial.begin(9600);

pinMode(BoMotor_F,OUTPUT);

pinMode(BoMotor_B,OUTPUT);

pinMode(DcMotor_F,OUTPUT);

pinMode(DcMotor_F,OUTPUT);

myservo.attach(ServoMotorPin);//servo is attached on pin7

} void loop() {

// put your main code here, to run repeatedly:

String Data = “”;

flag=false;

while(mySerial.available()) {

character = mySerial.read();

Data.concat(character);

flag=true;

delay(100);

}

if(flag)

{

Data.trim();

Serial.println(Data);

int s = Data.substring(0,1).toInt();

int direction = Data.substring(2,3).toInt();

int value = Data.substring(4).toInt();

switch(s){

case 1:{DcMotor(value, direction); break;}

case 2:{BoMotor(value,direction);break;}

case 3:{ServoMotor(value,direction);break;}

case 0:{DcMotor(0,direction);BoMotor(0,direction);break;}

}

}

}

void DcMotor(int speed, int dir)

{

analogWrite(DcMotor_F,(speed+dir*speed)/2);

analogWrite(DcMotor_B,(speed-dir*speed)/2);

}

void BoMotor(int speed, int dir)

{

analogWrite(BoMotor_F,(speed+dir*speed)/2);

analogWrite(BoMotor_B,(speed-dir*speed)/2);

}

void ServoMotor(int angle, int dir)

{

myservo.write(angle);

delay(2000);

myservo.write(0);

}

第3步:连接智能手机

类似于之前关于使用HC-05和Arduino UNO的智能手机控制LED灯的文章,我们将继续通过HC-05蓝牙模块将我们的智能手机连接到arduino。

命令我们要发送的内容如下:

我想要Dc电机在正向运行PWM值为200,我发送:

1,1,200

如果相同的直流电机以反向150的PWM运行,我将发送:

1,-1,150

一般格式是:电机,方向,值

电机:1》直流电机,2》电机电机,3》伺服电机,0》停止正在运行的所有设备(和平:P)

方向:1》顺时针/正向,-1》逆时针/反向

值:PWM值从0到255;在伺服的情况下,这是角度

PS:在Dc电机和Bo电机的情况下,如果您发现电机正在旋转的方向与预期相反,只需交换指定的引脚编号前进和后退针脚的程序‘

例如:原始

#define DcMotor_F 6

#define DcMotor_B 11

已交换

#define DcMotor_F 11

#define DcMotor_B 6

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

    关注

    140

    文章

    8521

    浏览量

    142806
  • Arduino
    +关注

    关注

    186

    文章

    6439

    浏览量

    185429
收藏 人收藏

    评论

    相关推荐

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用
    发表于 06-12 07:21

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?

    怎样用STM8L的PB3/TIM2_TRIG的引脚测量脉宽?
    发表于 05-07 06:55

    stm32f100怎样用重映射功能?

    的是stm32f100c8t6b芯片,现在想用将PB1映射为TIM1_CH3N,在调用GPIO_PinAFConfig(GPIOB,GPIO_PinSource1,GPIO_AF_TIM1)时, GPIO_PinAFConfig和GPIO_AF_TIM1都没定义,stm32f100
    发表于 05-07 06:06

    STM32F412G-DISCO怎样用MX生成fatfs的代码?

    STM32F412G-DISCO怎样用MX生成fatfs的代码? SD卡例程能跑,但mx生成的代码不能正常运行,我生成代码后是不是还要配置一些东西?(我生成后只写了测试代码) 问题解决了,虽然我不知道我为什么不能直接使用mx生成的代码去操作sd卡,但我通过复制粘贴例程的代码完成了测试。
    发表于 03-12 08:15

    如何使用Arduino UNO板和电位器控制伺服电机

    在本Arduino伺服电机教程中,您将学习如何使用Arduino UNO板和电位器控制伺服电机
    的头像 发表于 02-11 10:11 1201次阅读
    如何使用<b class='flag-5'>Arduino</b> UNO板和电位器控制伺服<b class='flag-5'>电机</b>

    无线通信:怎样用电磁波表示1和0

    为什么频率越高,能携带的信息就越多?以数字信号为例,信息就是一串串的1和0,所以先搞清楚怎样用电磁波表示1和0。
    发表于 12-05 14:44 902次阅读
    无线通信:<b class='flag-5'>怎样用</b>电磁波表示1和0

    ADAU1452做FFT分析,怎样设定取样点的数量?

    请问,我想用ADAU1452做FFT分析,怎样设定取样点的数量,还有就是怎样用单片机读出分析得到的复数结果数组?谢谢!
    发表于 11-29 06:42

    怎样用ADAU1761设计DRC的压缩/扩展?

    请问怎样用ADAU1761设计DRC的压缩/扩展。我在SigmaStudio 4.5的模块中只找到RMS。如果ADAU1761设计DRC要怎样
    发表于 11-28 06:41

    使用电机调速器时,是否有必要连接电容呢?

    使用电机调速器时,是否有必要连接电容呢? 当使用电机调速器时,连接电容是非常必要的。电容在电机调速系统中扮演着重要的角色,它能够提供额外的能
    的头像 发表于 11-23 10:54 1175次阅读

    怎样用32单片机测电压?

    怎样用32单片机测电压
    发表于 10-31 07:09

    怎样用现成的Eclipse插件来调试AT32系列芯片以及SLIB的配置范例

    本篇应用指南主要描述怎样用现成的Eclipse插件来调试AT32系列芯片以及SLIB的配置范例。本文档仅以AT32F403A为例进行说明,关于AT32F403A SLIB的详细说明,请详阅《AT32F403ASecurity Library Application Note》。
    发表于 10-24 07:41

    怎样用现成的Eclipse插件来调试AT32系列芯片

    拥有很高的灵活性,软件可以以Eclipse为架构开发自己的IDE。这边文档主要描述怎样用现成的Eclipse插件来调试AT32系列芯片。
    发表于 10-24 07:12

    怎样用单片机IO口来控制三极管的开关特性使共阳极的LED点亮?

    怎样用单片机IO口来控制三极管的开关特性使共阳极的LED点亮
    发表于 10-15 06:02

    PLC中怎样用X和Y两个轴走出直线轨迹?

    PLC中怎样用X和Y两个轴走出直线轨迹呢?那么这两个轴需要配合成速度成线性比例,位置和速度应该如何云运算呢?
    发表于 09-12 09:58 487次阅读
    PLC中<b class='flag-5'>怎样用</b>X和Y两个轴走出直线轨迹?

    伺服电机的刚性和惯量是什么意思

    在伺服电机的应用中,用联轴器来连接电机和负载,就是典型的刚性连接;而用同步带或者皮带来连接电机和负载,就是典型的柔性连接
    发表于 09-05 10:47 1519次阅读
    伺服<b class='flag-5'>电机</b>的刚性和惯量是什么意思