admin 2025-06-01 15:57:01 99女足世界杯

[教程]【Mind+】(超详细)如何使用L298N电机驱动图形编程控制电机

查看: 41502|回复: 12

[教程]

【Mind+】(超详细)如何使用L298N电机驱动图形编程控制电机

[复制链接]

本帖最后由 Forgotten 于 2020-5-15 10:21 编辑

好消息,最新版MInd+已经支持扩展用户库了,可以使用用户库功能制作快捷操作功能。

https://mindplus.dfrobot.com.cn/extensions-user

---

前言:

直流电机(俗称马达)由于电流较大,普通的主控板引脚不能直接驱动,因此需要使用电机驱动来控制电机。

L298N是一款常见的廉价电机驱动,缺点是发热量比较大。

L298N参数:

参数一般只关心如下两个:

逻辑电压(控制端口电压):5V

驱动电压(电机电压):5V-35V

驱动电流(电机电流):2A(MAX单桥)

意味着这个板子适合用5V引脚的主控板驱动(例如arudino系列),而3.3V引脚的主控板可能就不能用了(例如mcirobit、掌控板、esp32)。这个板子驱动的一般都是小电流的电机,例如TT电机(小黄马达)、N20电机这一类的。

接下来看L298N的控制方法:

引脚说明:

输出A、输出B:接两个电机,不分正负,反了只会反转。

GND:电源地,需要与主控板的GND用一根杜邦线连接到一起(共地)。

12V供电:给电机供电的接口,此处要独立供电,最好不要从主控板引电。

5V供电:此为电压输出口,可以使用这个口给主控板供5V电源,但不推荐这么用。

板载5V使能:此跳线帽接起来之后上面的“5V供电”口才有5V电压输出。

通道A、通道B使能(ENA、ENB):此接口高电平则电机可以运行,低电平则电机停止运行,一般直接跳线帽短接到高电平,即一直使能,可以拔掉跳线帽接到主控板pwm模拟输入端口实现调速。

逻辑输入(IN1、IN2、IN3、IN4):这两个接口控制电机正反转和速度,IN1和IN2控制电机M1,IN3和IN4控制电机M2.

具体控制信号如下图:

简单理解:

电源接线:

从12V和GND供6-12V的电压。

L298N和主控板的GND使用一根线连接起来。

板载5V使能跳线帽不动。

电机接线:

两个电机分别接到M1和M2上。

信号控制:

ENA和ENB跳线帽拔掉,使用杜邦线分别接到主控板两个PWM模拟输出口。

IN1和IN2,IN3和IN4分别接到主控板数字口。

一图说明:

以Arduino uno为例

其中:

ENA接D5 (PWM口)

ENB接D6 (PWM口)

IN1接D3

IN2接D4

IN3接D8

IN4接D7

接下来进行编程:

以Arduino uno为例

使用Mind+,下载和安装按照官网教程进行即可(http://mindplus.cc )

打开Mind+,切换到“上传模式”,“扩展库”>“主控板”>选择“Arduino uno”

注意:如果对mind+不了解可以先学习一下官方教程:http://mindplus.dfrobot.com.cn

L298N的驱动只有数字输出和模拟输出即可控制,因此不用再加载扩展模块。

首先让M1正转起来:

根据信号图,只需要让IN1高电平,IN2低电平,ENA输出PWM调速即可。

程序如下,让电机M1以200的速度正转。

上传运行之后如果电机不转,则检查电源接线是否正确,是否共地,信号线是否正确,尝试将速度调到最大。

如果电机反转了,只需要把M1电机的两个线调换即可。

接下来测试M1反转,只需要让IN1高电平,IN2低电平即可:

程序如下,让电机M1以200的速度反转。

接下来测试M2正转,让IN3高电平,IN4低电平即可

程序如下,让电机M2以255的速度正转。

上传运行之后如果电机反转了,只需要把M2电机的两个线调换即可。

接下来测试M2反转,IN3高电平,IN4低电平即可

最后测试停止功能,停止电机转动只需要把速度设置为最低即可:

程序如下,两个轮子同时以255速度反转5秒,然后停止3秒。

经过这个测试,则我们就可以控制电机了。

考虑到单独使用引脚控制不方便,我们可以使用”函数“功能,将这几个功能变成一个个函数:

添加一个输入参数为速度,方便速度的控制:

然后把正转的代码放进去,把传进来的”M1速度“变量插入模拟输出中。

----------------------分割线------------------------------

注意:从1.6.0及后续版本开始取消了数据类型自动判断,因此输入框默认为字符串,即输入123实际是字符串“123”,因此编译会报错。

1.6.0和1.6.1版本在调用函数时如果要输入数字,需要将字符转成数字,例如下图。

注意2:如果使用的是1.6.2,可以在定义函数时添加“数字值”的输入项,这样就不不需要进行类型转换了

----------------------分割线------------------------------

然后依次把其他几个电机控制命令都用函数表示:

接下来控制电机就方便了,做个小车方便控制:

M1和M2同时正转3秒,然后停止1秒

然后M1正转,M2反转3秒,然后停止1秒,

然后M1和M2同时反转3秒,然后停止5秒,循环

如果是控制小车,可以进一步使用函数封装成”前进“”后退“”左转“”右转“”停车“等功能。

全文结束。

转播

淘帖0

支持0

踩0

回复

使用道具

举报

置顶卡

变色卡

千斤顶

推荐

Forgotten

版主

楼主|

发表于 2020-1-8 10:41:09

弱水三千 发表于 2020-1-5 17:04

感谢Forgotten 版主精彩详细的讲解,终于让我的小车的轮子转了起来!!!但是,教程最后完整的小车程序, ...

从1.6.0取消自动类型转换了,因此需要使用将字符转整数的功能,已经添加到教程最后面了

回复

使用道具

举报

板凳

狭维失

初级技师

发表于 2019-10-17 10:40:33

哇,好详细啊

回复

使用道具

举报

地板

YONG

学徒

发表于 2019-12-1 16:02:44

编译失败,PWM输出不能直接拖M1M2那些变量下去,什么原因呢?

回复

使用道具

举报

5#

Forgotten

版主

楼主|

发表于 2019-12-4 14:16:51

YONG 发表于 2019-12-1 16:02

编译失败,PWM输出不能直接拖M1M2那些变量下去,什么原因呢?

在1.6.1中去除了数字和字符自动判断,根据调用的输入参数类型进行控制了。

回复

使用道具

举报

6#

弱水三千

学徒

发表于 2020-1-5 17:04:00

感谢Forgotten 版主精彩详细的讲解,终于让我的小车的轮子转了起来!!!但是,教程最后完整的小车程序,编译后上传总是提示错误?后来在QQ群大龙猫大神的指导下,才找到了原因,

202001053727..png

(67.65 KB, 下载次数: 6426)

下载附件

保存到相册

2020-1-5 17:03 上传

回复

使用道具

举报

7#

弱水三千

学徒

发表于 2020-1-25 20:17:21

感谢版主回复,升版本级后,这样更方便!

回复

使用道具

举报

8#

不教学生的教师

初级技师

发表于 2020-3-9 09:41:49

谢谢版主的详细讲解,这些函数要是能导出,让其它程序调用就更好了,不用每次都重新编。

回复

使用道具

举报

9#

Forgotten

版主

楼主|

发表于 2020-3-9 15:31:24

不教学生的教师 发表于 2020-3-9 09:41

谢谢版主的详细讲解,这些函数要是能导出,让其它程序调用就更好了,不用每次都重新编。 ...

新版本支持自定义库了,可以尝试把这个封装成一个用户库进行调用。

https://mindplus.dfrobot.com.cn/extensions-user

回复

使用道具

举报

10#

不教学生的教师

初级技师

发表于 2020-3-16 17:05:19

谢谢指导,试一试。

回复

使用道具

举报

11#

DFHkeA4wKYU

见习技师

发表于 2020-5-13 13:30:26

电机驱动装置L298N

回复

使用道具

举报

12#

gada888

版主

发表于 2020-5-28 16:57:48

好消息

回复

使用道具

举报

13#

DFHJFtaU4Lu

初级技师

发表于 2021-4-15 21:23:00

谢谢楼主教程,受益匪浅

回复

使用道具

举报

高级模式

B

Color

Image

Link

Quote

Code

Smilies

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

回复

回帖并转播

回帖后跳转到最后一页

Copyright © 2088 世界杯金靴奖_2014年巴西世界杯预选赛 - omdzds.com All Rights Reserved.
友情链接