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

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

    关注

    142

    文章

    9081

    浏览量

    146312
  • Arduino
    +关注

    关注

    188

    文章

    6477

    浏览量

    187751
收藏 人收藏

    评论

    相关推荐

    请问PCM2707连接电脑时怎样显示设备名称和同步音量?

    你好,我想一个关于PCM2707的问题想咨询一下: 需求在带有PCM2707的音响设备在连接电脑时要显示设备的名称,这一项要怎样实现? 假设带有音量按键,按此按键时可以同时同步电脑的音量吗?
    发表于 10-09 10:29

    怎样电机烧没烧

    使用万表检测电机是否烧坏,可以按照以下步骤进行: 一、准备工作 确保安全 :在进行任何电气测试之前,确保断开电源并使用绝缘手套和绝缘工具进行操作,以确保个人安全。 准备工具 :准备一台功能正常
    的头像 发表于 09-27 09:58 946次阅读

    怎样用THS3201实现输出功率可调?

    怎样用THS3201实现输出功率可调?
    发表于 08-26 08:28

    连接电路时为什么要断开开关

    连接电路时断开开关是一个非常重要的安全措施,它可以有效防止电路短路、过载、触电等危险情况的发生。 避免电路短路 电路短路是指电路中的电流不经过负载,而是直接从电源的正负极之间流过,造成电流
    的头像 发表于 08-25 09:48 1650次阅读

    分压式连接电路时 滑动变阻器应该连在哪一端

    分压式连接电路是一种常见的电路连接方式,它利用滑动变阻器来调节电路中的电压。在分压式连接电路中,滑动变阻器的连接方式对于电路的性能和稳定性至关重要。本文将介绍分压式
    的头像 发表于 08-05 15:02 1204次阅读

    OPA735加OPA333,怎样用TINA TI去仿真?

    当输入信号VG1从7.06V慢慢变化到7.22V时。 输出电压Vout的变化必须是接近线性变化的。我想知道我该怎样用TINA TI去仿真?怎样设置那个输入信号VG1才能达到我的目的。因为这个电压源好像
    发表于 08-02 08:39

    怎样用Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 1028次阅读
    <b class='flag-5'>怎样用</b><b class='flag-5'>Arduino</b>测试锂电池容量

    电机连接器应该如何选择

    选购电机连接器时,需要综合考虑多个因素,以确保电机系统的稳定性和可靠性。以下是选购电机
    的头像 发表于 07-23 10:29 405次阅读

    STM32F427USB连接电脑后显示未知USB设备,为什么?

    STM32F427USB连接电脑后显示 未知USB设备
    发表于 07-04 08:29

    求助,在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控制步进电机代码

    Arduino是一种开放源代码的电路板平台,它可以用于控制各种不同的电子设备,包括步进电机。步进电机是一种电动机,可以通过下达特定的指令来控制每个步进的角度,从而使电机旋转到指定的位置
    的头像 发表于 02-14 16:29 2170次阅读

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

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