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

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

3天内不再提示

如何使用L298N双电机控制器模块和Arduino控制DC和步进电机

454398 来源:网络整理 作者:佚名 2019-11-04 17:29 次阅读

步骤1:了解L298模块连接

如何使用L298N双电机控制器模块和Arduino控制DC和步进电机

首先,我们将遍历所有连接,然后说明如何控制直流电动机,然后是步进电动机。此时,请检查L298N H桥模块上的连接。

考虑图像–将数字与图像下方的列表匹配:

DC电动机1“ +”或步进电动机A +

DC电动机1“-”或步进电动机A-

12V跳线–如果使用的电源电压大于12V DC,则将其移除。这样可以为板载5V稳压器供电

在此处连接电动机电源电压,最大35V DC。如果》 12V DC

GND

如果有12V跳线,则移除5V输出,非常适合为Arduino

直流电动机1启用跳线。使用步进电机时,将其保留在原位。连接到用于直流电动机速度控制的PWM输出。

IN1

IN2

IN3

IN4

直流电动机2启用跳线。使用步进电机时,将其保留在原位。连接到用于直流电动机速度控制的PWM输出

直流电动机2“ +”或步进电动机B +

直流电动机2 “-”或步进电动机B-

步骤2:控制直流电动机

到使用L298N H桥模块控制一两个直流电动机非常容易。首先将每个电动机连接到L298N模块上的A和B连接。

如果您为机器人(例如)使用两个电机,请确保两个输入的电机极性相同。否则,当您同时将两个电动机都设置为正转而将其设置为倒退时,可能需要交换它们!

下一步,连接电源-将正极连接至模块上的引脚4,将负极/GND连接至引脚5。如果您提供的电压最高为12V,则可以保留12V跳线(上图中的点3),并且模块上的引脚6可以提供5V电压。

可以将其馈送到Arduino的5V引脚,以从电动机的电源为其供电。别忘了将Arduino GND连接到模块上的引脚5,以完成电路。现在,您将在Arduino上需要六个数字输出引脚,其中两个需要是PWM(脉冲宽度调制)引脚。

PWM引脚在引脚编号旁边由波浪号(〜)表示,例如在Arduino Uno的数字引脚图像中。

最后,将Arduino数字输出引脚连接到驱动程序模块。在我们的示例中,我们有两个直流电动机,因此数字引脚D9,D8,D7和D6将分别连接到引脚IN1,IN2,IN3和IN4。然后将D10连接到模块插针7(先卸下跳线),然后将D5连接到模块插针12(同样要卸下跳线)。

通过向驱动器发送HIGH或LOW信号来控制电动机的方向每个马达(或通道)。例如,对于电动机一,从IN1到HIGH的高电平和向IN2发出LOW的低电平将使它在一个方向上旋转,而到HIGH和LOW的低电平将使它在另一个方向上旋转。

但是,直到将HIGH设置为启用引脚(电机1为7,电机2为12)后,电机才会转动。并且它们可以通过低电平连接到同一引脚来关闭。但是,如果需要控制电动机的速度,则可以通过来自连接到使能引脚的数字引脚的PWM信号来解决这一问题。

这就是我们对直流电动机演示草图所做的工作。如上所述,连接了两个直流电动机和一个Arduino Uno,以及一个外部电源。然后输入并上传以下草图:

// connect motor controller pins to Arduino digital pins

// motor one

int enA = 10;

int in1 = 9;

int in2 = 8;

// motor two

int enB = 5;

int in3 = 7;

int in4 = 6;

void setup()

{

// set all the motor control pins to outputs

pinMode(enA, OUTPUT);

pinMode(enB, OUTPUT);

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void demoOne()

{

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

delay(2000);

// now change motor directions

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(2000);

// now turn off motors

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void demoTwo()

{

// this function will run the motors across the range of possible speeds

// note that maximum speed is determined by the motor itself and the operating voltage

// the PWM values sent by analogWrite() are fractions of the maximum speed possible

// by your hardware

// turn on motors

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// accelerate from zero to maximum speed

for (int i = 0; i 《 256; i++)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// decelerate from maximum speed to zero

for (int i = 255; i 》= 0; --i)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// now turn off motors

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void loop()

{

demoOne();

delay(1000);

demoTwo();

delay(1000);

}

那么该草图中发生了什么?在函数demoOne()中,我们打开电动机并以200的PWM值运行它们。这不是速度值,而是一次施加200/255的时间量的功率。

然后片刻之后,电动机反向运行(请参阅如何更改digitalWrite()函数中的HIGH和LOW?)。为了了解您的硬件可能的速度范围,我们在函数demoTwo()中遍历了整个PWM范围,这将打开电动机,并且它们通过零至255的PWM值运行,并通过两个for循环返回零。 。

最后,这是在此页面的视频中进行的演示–使用我们的破旧的坦克底盘和两个直流电动机。

第3步:使用Arduino控制步进电动机和L298N

步进电机可能看起来很复杂,但事实并非如此。在此示例中,我们控制一个典型的NEMA-17步进电机,该电机具有四根电线,如该步骤中的图像所示。

每转200步,并且可以60 RPM的速度运行。如果您还没有电动机的步进和速度值,请立即查找,并在草图中使用它。

成功进行步进电动机控制的关键是识别电线-即一个是哪个。您将需要确定A +,A-,B +和B-线。在我们的示例电动机中,它们是红色,绿色,黄色和蓝色。现在,让我们完成接线。

将来自步进电机的A +,A-,B +和B-线分别连接到模块连接1、2、13和14。将L298N模块随附的跳线放置在模块点7和12上的线对上。然后根据需要将电源连接到点4(正)和点5(负/GND)。

再次,如果您的步进电机的电源低于12V,则将跳线安装到模块的第3点,为您的Arduino提供整洁的5V电源。接下来,将L298N模块引脚IN1,IN2,IN3和IN4分别连接到Arduino数字引脚D8,D9,D10和D11。

最后,如果从模块中获取5V电压,则将Arduino GND连接至模块上的点5,将Arduino 5V连接至点6。借助Arduino IDE随附的Stepper Arduino库作为标准,从草图控制步进电机非常简单。

要演示您的电动机,只需加载Stepper库中随附的stepper_oneRevolution草图。要找到它,请在Arduino IDE中单击“文件”》“示例”》“步进器”菜单。

最后,检查草图中

const int stepsPerRevolution = 200;的值并将200更改为步进电机的每转步数,以及在以下行中预设为60 RPM的速度:myStepper.setSpeed(60);

现在,您可以保存和上传草图,这会将步进电机发送大约一转,然后再回来。这可以通过功能

myStepper.step(stepsPerRevolution); // for clockwise

myStepper.step(-stepsPerRevolution); // for anti-clockwise

实现。最后,在此步骤的视频中快速展示了我们的测试硬件。

责任编辑:wv

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

    关注

    150

    文章

    3110

    浏览量

    147467
  • L298N
    +关注

    关注

    21

    文章

    224

    浏览量

    78684
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187028
收藏 人收藏

    评论

    相关推荐

    Made with KiCad(十一):Sangaboard步进电机控制

    “  Sangaboard 是用于单极步进电机(如廉价的 28BYJ-48 电机)的电机控制器。   ” 概览 Sangaboard 是用于
    的头像 发表于 12-04 11:52 158次阅读
    Made with KiCad(十一):Sangaboard<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>板

    步进电机如何自适应控制步进电机如何细分驱动控制

    步进电机是一种将电脉冲信号转换为角位移或线位移的电机,广泛应用于各种自动化控制系统中。为了提高步进电机
    的头像 发表于 10-23 10:04 503次阅读

    步进电机的伺服控制方法有哪些

    步进电机的伺服控制方法主要包括以下几种: 1. 位置模式 定义 :在位置模式下,步进伺服电机根据输入的位置指令,通过闭环
    的头像 发表于 09-04 09:48 534次阅读

    步进电机控制器电路图 步进电机控制器的分类及其特点

      步进电机控制器是一种专门用于控制步进电机的设备,它通过发出脉冲信号来驱动
    的头像 发表于 06-24 17:12 3248次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制器</b>电路图 <b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制器</b>的分类及其特点

    什么是步进电机控制器步进电机控制器电路图

    步进电机控制器是一种专门用于控制步进电机运行的装置。步进
    的头像 发表于 06-20 16:14 1856次阅读
    什么是<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制器</b>?<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制器</b>电路图

    极性步进电机的结构与控制模式

    在现代工业控制领域,步进电机以其独特的步进特性和精确的位置控制而备受青睐。其中,极性
    的头像 发表于 06-12 14:40 612次阅读

    步进电机控制器怎么调速度

    引言 步进电机是一种将电脉冲信号转换为角位移的电机,具有控制精度高、响应速度快、结构简单等优点。在自动化设备、机器人、数控机床等领域得到了广泛应用。
    的头像 发表于 06-12 09:17 2011次阅读

    电机控制器的原理和应用

    电机控制器作为现代电机系统中的重要组成部分,其性能的优劣直接影响到电机的工作效率、稳定性和安全性。随着科技的不断进步,电机
    的头像 发表于 06-03 18:17 1526次阅读

    硬件模块---L298N电机控制模块实现方法

    第一:L298N模块的介绍           L298N是ST公司生产的一种高电压、大电流电机驱动芯片,该芯片采用15脚封装。 主要特点是: 工作电压高,最高工作电压可达46V;输出
    的头像 发表于 05-11 09:20 7349次阅读
    硬件<b class='flag-5'>模块</b>---<b class='flag-5'>L298N</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b><b class='flag-5'>模块</b>实现方法

    什么是步进电机的细分控制步进电机为什么要细分,如何细分?

    什么是步进电机的细分控制步进电机为什么要细分,如何细分? 步进
    的头像 发表于 02-18 09:39 7615次阅读

    arduino控制步进电机代码

    Arduino是一种开放源代码的电路板平台,它可以用于控制各种不同的电子设备,包括步进电机步进电机
    的头像 发表于 02-14 16:29 2034次阅读

    步进电机控制器电路图分享

    步进电机控制器是一种能够发出均匀脉冲信号的电子产品,主要用于控制步进电机的运动。它发出的信号进入
    的头像 发表于 02-07 17:57 4956次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制器</b>电路图分享

    步进电机控制方法 步进电机和伺服电机的区别

    步进电机控制方法 步进电机是一种将电信号转化为机械转动的电动机,其输出转角是按照电脉冲控制信号的
    的头像 发表于 01-22 17:18 1165次阅读

    步进电机控制方法 步进电机控制器参数设置

    控制,需要使用步进电机控制器步进电机控制器是一种电
    的头像 发表于 01-19 10:50 2918次阅读

    arduino如何驱动步进电机

    随着物联网的不断发展,电机控制技术得到了广泛应用,其中步进电机作为一种常见的电机类型,在各行各业中得到了广泛应用。而作为一种强大、灵活的开源
    的头像 发表于 01-14 16:37 3656次阅读