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

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

    关注

    152

    文章

    3174

    浏览量

    150207
  • L298N
    +关注

    关注

    21

    文章

    224

    浏览量

    79739
  • Arduino
    +关注

    关注

    190

    文章

    6502

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TMCM-3216步进电机控制器/驱动模块

    Analog Devices Inc. TMCM-3216步进电机控制器/驱动模块是紧凑型3轴
    的头像 发表于 06-23 14:44 ?752次阅读
    TMCM-3216<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>

    Analog Devices Inc. TMCM-3216步进电机控制器/驱动模块数据手册

    Analog Devices Inc. TMCM-3216步进电机控制器/驱动模块是紧凑型3轴
    的头像 发表于 05-28 10:33 ?342次阅读
    Analog Devices Inc. TMCM-3216<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>数据手册

    基于L298N的STM32的直流电机PWM调速控制

    基于L298N与stm32的直流电机调速,实验结果良好,可以根据调节STM32的PWM占空比来进行直流电机的调速。实验系统图如下: L298N驱动
    发表于 05-14 15:01

    我用9V电源给L298N供电,但是接线后l298n输入端电压变成了3V多,请问这是咋了?

    我用9V电源给L298N供电,L298N未接负载,9V电源空载时确实是9V,但是接线后l298n输入端电压变成了3V多,此时测量电源两端电压也是3V多,我用另一个独立电源给L298N
    发表于 03-29 14:59

    L298N-驱动直流电机步进电机的详细资料大总结

    电机转速控制电路(PWM信号)主要采用 L298N ,通过单片机的 I/O 输入改变芯片控制端的电平,即可以对电机 进行正反转,停止的操作,
    发表于 02-26 16:02

    方案:轴伺服电机驱动控制器AGV、AMR专用伺服电机驱动控制器

    工业机器人数控机床XY机械手轴机器人堆垛机专用轴伺服电机驱动控制器48V 14ARMS带有STO功能,隔离高压CAN/RS485/USB通讯支持编码
    发表于 02-15 12:14

    如何编程电机控制器

    电机控制器是现代工业自动化和机器人技术中不可或缺的一部分。它们负责精确控制电机的速度、位置和力矩,以实现高效和精确的运动控制。 1. 硬件选
    的头像 发表于 01-22 09:37 ?816次阅读

    电机控制器选型指南

    在现代工业和自动化领域,电机控制器扮演着至关重要的角色。它们不仅控制电机的运行,还直接影响到整个系统的能效和性能。因此,正确选型电机
    的头像 发表于 01-22 09:22 ?2635次阅读

    步进电机控制实现方法

    ? ? ? 步进电机,作为一种将电脉冲信号转换为相应角位移或线位移的电动机,是现代数字控制系统中不可或缺的重要组件。其工作原理基于电磁学原理,通过接收数字控制信号(电脉冲信号)并转化为
    的头像 发表于 01-21 16:43 ?1558次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>实现方法

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

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

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

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

    步进电机转速怎么控制高低

    步进电机是一种将电脉冲信号转换为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当
    的头像 发表于 10-22 15:55 ?2402次阅读

    电机控制器原理是什么?类型有哪些?

    电机控制器是用于控制电机运行的设备,其主要功能是将电能转换为机械能,同时根据需要调节电机的速度、转矩和方向。
    的头像 发表于 10-21 13:48 ?1322次阅读

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

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

    步进电机伺服控制系统的作用

    步进电机伺服控制系统是一种精密的电机控制系统,它通过精确控制
    的头像 发表于 09-04 09:46 ?1341次阅读