【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秒,循环
如果是控制小车,可以进一步使用函数封装成”前进“”后退“”左转“”右转“”停车“等功能。
全文结束。
弱水三千 发表于 2020-1-5 17:04
感谢Forgotten版主精彩详细的讲解,终于让我的小车的轮子转了起来!!!但是,教程最后完整的小车程序, ...
从1.6.0取消自动类型转换了,因此需要使用将字符转整数的功能,已经添加到教程最后面了
哇,好详细啊 编译失败,PWM输出不能直接拖M1M2那些变量下去,什么原因呢? YONG 发表于 2019-12-1 16:02
编译失败,PWM输出不能直接拖M1M2那些变量下去,什么原因呢?
在1.6.1中去除了数字和字符自动判断,根据调用的输入参数类型进行控制了。
感谢Forgotten版主精彩详细的讲解,终于让我的小车的轮子转了起来!!!但是,教程最后完整的小车程序,编译后上传总是提示错误?后来在QQ群大龙猫大神的指导下,才找到了原因, 感谢版主回复,升版本级后,这样更方便! 谢谢版主的详细讲解,这些函数要是能导出,让其它程序调用就更好了,不用每次都重新编。 不教学生的教师 发表于 2020-3-9 09:41
谢谢版主的详细讲解,这些函数要是能导出,让其它程序调用就更好了,不用每次都重新编。 ...
新版本支持自定义库了,可以尝试把这个封装成一个用户库进行调用。
https://mindplus.dfrobot.com.cn/extensions-user 谢谢指导,试一试。 电机驱动装置L298N 好消息 谢谢楼主教程,受益匪浅
页:
[1]