基于MATLAB和Arduino的寻迹小车

时间:2022-10-22 01:21:37

摘要:寻迹小车无论是在编程竞赛,还是工厂自动化应用中都扮演着重要的角色。本设计以寻迹小车为主题,在MATLAB软件中设计出控制模型,并进行硬件在环调试,将最终的simulink模型下载至arduino控制的寻迹小车中。采用这种方式,设计者不用编写程序代码,只要将精力放在控制算法上即可,大大缩短了设计周期。

关键词:MATLAB arduino 寻迹小车

中图分类号:TP242.6 文献标识码:A 文章编号:1007-9416(2015)07-0000-00

1引言

寻迹车在高校学科竞赛中,是个经久不衰、难度适中、能充分调动学生积极性、提高动手能力的竞赛项目。项目的内容是,铺设一条黑色的环形轨迹线作为寻迹车竞赛跑道,将传感器捕获的黑色轨迹信息,传送至微控制器中,通过一定的控制算法实现小车平稳、快速地完成跑道。

除此之外,在工厂自动化中,搬运小车其实就是寻迹小车的典型应用。在工作站与工作站之间,厂房与厂房之间铺设轨道,搬运小车自动将工件运送至所需位置。当然搬运小车要比学科竞赛中的寻迹小车控制算法复杂,功能也要强大,比如:搬运小车要判断工件的有无,定位工件需要运送的目标位置,避障功能,以及无线联网功能等。

通常控制算法的设计,是直接采用编写程序代码来实现的,这种方法不仅费时费劲,而且调试还不方便,容易出错。采用MATLB来设计控制算法,则无需关注程序代码,只要构建出控制逻辑即可,调试方面,可以离线仿真调试,还可以硬件在环调试,非常方便,大大节省了时间和精力,能快速完成设计任务。

2 simulink控制模型的建立

寻迹小车的控制器选为arduino mega 2560,arduino mega 2560既有数字I/O口还有模拟I/O口,并且有专门的pwm输出口,最重要的是可以与MATLAB实现无缝对接,可以将设计出的控制系统模型直接下载至控制器中。

在MATLAB中建立如图1所示的控制系统模型,模型的输入有3个,对应小车上的3个光电传感器,传感器输出可以是数字信号,也可以是模拟信号,数字信号的话,当检测到黑线时,输出为1,否则为0,若为模拟信号,其输出为0~5V的电压信号,用模拟口接收后转换为0~1023范围的数值。本设计中,光电传感器模块输出为数字信号,将3个传感器均匀、间隔放置在小车的前端,并定义为left、middle、right。图1中chart为stateflow构建的控制逻辑,如图2所示。

Stateflow是有限状态机的图形工具,它可以用于解决复杂的逻辑问题,用户可以通过图形化工具实现在不同状态之间的转换。Stateflow可以直接嵌入到Simulink模型中,SIMULINK会把Stateflow绘制的逻辑图形通过编译程序转换成C语言,使二者有机地结合在一起。

在stateflow中定义小车的运动逻辑,将小车的运动分为3个状态,状态1为直行(forward),状态2为左转(turn_left),状态3为右转(turn_right)。状态之间的转移条件分别为三个传感器信号left、middle、right。当中间传感器检测到黑色轨迹线时,说明车头的位置与轨迹线平齐,此时小车直行即可,当车的姿态偏移或者轨迹转向,倘若左边的传感器检测到黑线,说明车头的位置已向右,应控制车的姿态左转,同理,当右边的传感器检测到黑线,说明车头的位置已向左,应控制车的姿态右转。

小车采用两驱,左右两电机转速相同,则直行,转向则由差速控制。定义两个电机控制信号,其中右电机控制信号为right_forward_duty,左电机控制信号为left_forward_duty。它们的取值范围为0~255,这与MATLAB的arduino支持包中pwm输出模块有关,该模块的输入为占空比控制信号,范围为0~255,当输入为0时,输出占空比为0的pwm信号,当输入为255时,输出占空比为1的pwm信号,pwm信号的频率为490Hz。

3控制模型调试

模型建立好后,接下来要对控制系统模型进行调试分析,看是否满足控制功能要求。将寻迹车实物组建起来,如图3所示。需要注意

的是,实物中的传感器输入接线,以及控制器跟电机驱动的输出接线,必须与MATLAB中建立的控制模型保持一致才行。设置好后,将arduino与PC机相连,通过外部模式运行建立好的控制系统simulink模型,进行调试,如图4所示。

从图4中的display显示模块,可以看出中间传感器检测到了黑线,这意味着小车应该直行,打开chart,状态1(forward)为高亮,说明与控制要求相符,同样还能测试左转、右转状态。调试通过后,就可以将simulink控制模型直接下载至arduino中,作嵌入式运行,如图5所示。

4结语

本文以arduino控制的寻迹小车为对象,在MATLAB中设计控制系统模型,并进行调试。通过这种方式,设计者不用编写程序代码,只要构建控制算法,所以设计、调试都十分方便。当然本设计中构建的控制算法比较简单,如果要考虑小车更灵活、更智能,则需要对控制算法进一步改进和优化。

参考文献

[1]Mathworks Corp. User's Guide R2013a[Z], 2013.

[1] [2]Michael McRoberts. Beginning Arduino[M], Apress, 2013.

收稿日期:2015-06-16

作者简介:唐伟杰,(1982―),男,湖南衡阳人,硕士,讲师,研究方向∶机械电子。

上一篇:探究电子商务Web数据库技术相关方法的应用 下一篇:EWB在高频电子技术实践教学中的应用