35417| 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秒,循环 如果是控制小车,可以进一步使用函数封装成”前进“”后退“”左转“”右转“”停车“等功能。 全文结束。 |
不教学生的教师 发表于 2020-3-9 09:41 新版本支持自定义库了,可以尝试把这个封装成一个用户库进行调用。 https://mindplus.dfrobot.com.cn/extensions-user |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed