Arduino 通过双路L298N电机驱动模块控制麦克纳姆轮运动

0. 前言

  最近由于工作需要,需要基于arduino环境下智能小车的一些设计,自己本身是学软件的,对硬件仅限与一般应用,但这次由于需要,只有边摸索边实践。通过几天的摸索,终于让小车跑起来了,为了方便后面再次拼装类似的小车,特此记下整个过程,如有遗漏或优化,还烦请内行朋友不吝指教。

1. 准备工作

  关于麦克纳姆轮的选择和安装方法,可以参考这篇文章【麦克纳姆轮(万向轮)驱动原理及安装方法】, 这个轮子买的时候要注意配好对,另外一个就是安装也要正确,这次买的是车架带轮子和麦克纳姆轮,开始不懂,安装错了,还以为是卖家发错货了,后来调整了一下轮子的位置就正确了。此外,由于麦克纳姆轮的运动特性,需要单独控制每一个轮子的动作,而一个L298N只能控制两个直流电机的运动,因此,特意买了双路L298N,用于单独控制4个轮子。

2. 硬件介绍和说明

2.1 双路L298N电机驱动模块

  该驱动模块性能参数如下:

如果只是控制电机的转动,不需要设置转速的话,则使能端不改变,直接用跳线帽连接5v,但这里不光要控制轮子的转动方向,还要控制其转速,因此,这4个使能端口需要接到主控板上的模拟端口以便控制电机转速。

2.2 arduino uno主控板

  关于主控板的选择,只要是兼容的arduino uno主控板即可,基本的硬件接口如下

 3. 线路连接

  如前所述,因为要控制4个电机的单独运动,每个电机需要两根控制线,以及一根使能线控制速度,因此一共需要12根线连接,这里用3,5,6,9 四个作为使能控制线,2,4,7,8,10,11,12加上A0作为信号线。开发板上通过外接电源对L298N驱动板连接,主板上的GND接驱动板上的GND, 主板上的VIN 接开发板上的VCC,具体连接方式如下图。

 电机的接线较简单,如图所示,out1,out2接电机1的两极,out3,out4接电机2的两极,依次类推,如果后续调试过程发现电机的转向和我们设定的函数不一致,则更换该电机的两极即可。实物接线如下图。

 连接好后,通电测试左转,右转,左上,右上,左平移,右平移,前进,后退都正常,但连线过程中有个问题,开始开发板的5V线连到驱动板上的VCC,运行不正常,有些动作能动,有些动作只能听到电机的声音,没有转动。后来改成VIN-->VCC,调整一下转向就正常了。如果有知道原因的请不吝指教。

Arduino使用L298N电机驱动模块控制寻迹(路径跟踪)通常涉及几个步骤: 1. **硬件连接**: - 将L298N的IN1、IN2、IN3、IN4分别连接到Arduino的数字引脚,控制电机正向和反向转动。 - 连接电机的两个动力线到L298N的A、B端口。 - 如果有编码器用于位置反馈,将其连接到对应的输入引脚。 2. **库引入**: - Arduino平台有一个Motor Shield库(如L298N_MotorShield)或直接使用L298N.h库文件,以便控制驱动器。 3. **编写控制算法**: - 使用PID (Proportional-Integral-Derivative) 控制算法来计算舵角(PWM信号),这将决定电机何时以及如何旋转来保持机器人沿特定轨迹。 - 编写函数,例如`setSpeed()`和`steerToTrack()`,根据目标角度生成PWM值给IN1和IN2,实现左右轮速度差控制。 4. **追踪逻辑**: - 当机器人接收到新的路径信息时,比如通过蓝牙或串口数据,更新目标方向。 - 根据当前机器人位置和目标位置,计算出需要的偏航角度,并调用`steerToTrack()`调整电机转向。 5. **主循环**: - 在主循环里不断读取传感器数据(如里程计或摄像头),更新机器人的当前位置,然后计算并发送新的舵角指令。 ```cpp void setup() { // 初始化电机和I/O L298N.init(); } void loop() { int currentPosition = readPositionSensor(); // 获取当前位置 int targetPosition = getTargetPosition(); // 获取目标位置 int error = targetPosition - currentPosition; int steeringAngle = pidController(error); // PID控制器计算舵角 steerToTrack(steeringAngle); // 应用舵角 } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值