APP下载

基于K66的智能避障小车研究

2020-10-29李思威戴双文

安徽科技学院学报 2020年4期
关键词:直流电机舵机障碍物

李 琰, 刘 干, 李思威, 戴双文, 徐 浩

(安徽农业大学 经济技术学院,安徽 合肥 230002)

随着2025中国制造的到来,无人驾驶汽车的研究受到各行各界的关注,很多企业和研究机构开始重视自动化无人驾驶智能车的研究。智能避障小车(自主移动机器人)是一类通过感知自身状态和环境信息,在复杂环境中自主运动,从而完成正常运动、避障、上坡等功能的机器人系统[1]。它集中运用单片机、传感器、人工智能以及自动控制等一系列技术,对无人驾驶汽车的研究有重要意义。在以往关于智能小车的研究中,使用的是在主程序中不断对小车前方的距离进行检测的方法,而这个方法不能使小车在复杂的情况下顺畅地通过障碍,并且保持速度。本设计就是在这样的环境下并为解决该问题而提出的。通过对本设计的逐步优化,最终的程序可以移植到汽车上,这对无人驾驶汽车的研究有重要的参考以及指导意义[2]。

1 材料与方法

1.1 设计的整体要求

本文设计的智能避障小车,具备了障碍物检测、自主定位、坡度检查等一系列功能。该车选用四轮轮式结构,核心系统由K66芯片、MT9V032摄像头、HR-SR04超声波传感器、MPU6050陀螺仪、电源模块、编码器、舵机、电机、OLED显示屏等器件组成,整体系统如图1所示。其具有以下功能:

(1)通过MT9V032摄像头把道路显示到128×64的OLED屏上,使小车可以正常前进和转弯;

(2)当小车上坡角度超过15°时,控制小车加速,通过坡道;

(3)当前方50 cm处出现障碍物时.小车可以向左或向右打角,绕过前方障碍物继续前行。

图1 整体系统框图

1.2 控制系统硬件设计

1.2.1 硬件总体设计 根据智能避障小车的功能要求进行总体设计,将各个部分进行模块化设计,本设计是基于K66芯片的智能避障小车控制系统,如图2所示。中央处理器采用K66芯片,可以通过在线编程,控制所有的设备及传感器运行。舵机用来控制智能避障小车的转向,电机控制模块驱动直流电机使智能车的后轮做运动[3]。摄像头模块采集前方道路的信息,同时智能车还带有辅助调控模块[4]。

恩智浦公司生产的K66芯片功能强大,其具有3个SPI接口、2个I2C接口、6个UART接口以及2个CAN模块;自带16位的模数转换器,而且具有PWM 模块、正交解码、看门狗等功能。相对于AT89C51和STM32芯片,采用K66作为中央处理器的优点有:其为32位单片机,一次处理的数据更多,其主频高达180 MHz且支持超频;自带浮点运算单元,在数据处理时更有优势。在小车速度逐步提升时,除了优化算法和程序以外,处理器的运行速度更是起了决定性的作用,故使用K66芯片作为中央处理器是十分必要的。

图2 整体硬件框图

1.2.2 直流电机驱动电路 电机驱动模块的设计思路是因为单片机芯片的驱动能力不足,所以主板与驱动板分开。通过主板给驱动板提供12 V直流供电,SN74HC244PW芯片给驱动电路做隔离,从而实现驱动后面两个DC直流电机,并实现控制的速度和电机的正转与反转(图3)。

图3 直流电机驱动电路图

电机转速的快慢是通过PWM波也就是H桥驱动电路中三极管的通断来进行调节,这种方法比较简单,并且有一个比较宽范围的速度调整空间。直流电机的速度正比于施加到电动机上的电压,当电压为低时,速度慢,当电压为高时,速度快。因为电动机的两端子电压和由微控制器控制波形输出的占空比是正比关系,所以占空比与直流电机的速度也是正比关系。占空比小,则电机的速度慢,电动机的速度在占空比达到最大值1时是最大。大多数微控制器,能够直接输出的PWM波形,并输出使用在本设计中的MCU的PWM信号到HIP4082驱动芯片[5]。在车辆的实际操作过程中,考虑到直线和弯道的存在,我们不需要设置较高的占空比,也就是不需要过高的速度,但是,为了尽量缩短行驶时间,这就需要调节占空比使小车直行时加速,转弯时减速[6]。

1.2.3 舵机模块 舵机是一种控制小车转向的一种步进电机,其内部结构有电路板、驱动马达、减速器与位置检测原件。当马达开始转动,透过减速齿轮将动力传到摆臂,从而控制两摆臂上安装的前两车轮,同时反馈讯号,判断是否达到单片机控制要求位置[7]。本设计使用舵机时要先找到舵机中值并找到最大角度在程序中设定最大占空比与最小占空比,也是为了保护舵机防止其打角过大损伤减速齿轮。

1.2.4 障碍物识别模块 障碍物识别是小车研究中很重要的一个部分。在智能避障小车的实际运行中,得到障碍物及其距离的信息,才能相应的规划自动避障导航算法。目前用于障碍物识别的传感器主要有红外传感器、超声波传感器和激光测距仪等[8]。本模块使用HR-SR04超声波传感器得到障碍物距离及方位其信息。

这里使用超声波模块主要是用来避开在路中间的障碍。这里程序中是通过公式:测量距离=高电平时间×声速/2。

将得到的距离数值当做判断语句中的一个条件。不断检测前方距离,当距离小余设定值50 cm时控制舵机向左或者向右转向,当转向完成避开障碍再通过控制舵机使小车回到赛道内。本设计为了能更好的使用超声波模块还将测得距离值显示在OLED屏幕,更好的来寻找控制舵机转向的角度与时间[9]。

1.2.5 辅助识别模块 使用MPU6050陀螺仪是为了更稳定的通过坡道。小车动力是由后面两个直流电机来提供,速度快时坡道可以通过但摄像头处理来不及反应小车会在弯道冲出赛道或者压住路肩,速度慢时可以稳定过弯,但由于动力不够无法通过坡道。所以本设计加入陀螺仪,当小车行驶到坡道时,将后轮电机占空比加大,提供更大的动力通过坡道。

1.3 控制系统软件设计

单片机的智能控制决定了智能小车的运行。本设计中,为了实现小车稳定的控制,主要与:舵机模块、电机模块、超声波、红外、陀螺仪、电源模块有关(图4)。每部分都要分别编写和调试,最后进行程序整合。程序编写环境使用IAR软件,它是由IARSystems公司推出的编译器[10]。在设计时,考虑到调节的稳定性问题,采用了PID控制算法,按比例反应系统的偏差即比例调节,如果系统出现偏差,比例调节则用来减小PI控制算法程序流程差。比例效果大,就可以加快调整和减小误差,但是超出部分会降低系统的稳定性,可能使系统不稳定性[11]。采用了模块化的设计,单独编写设计,互相不影响,最终将所有程序统一结合在主函数中,实现对智能小车的稳定控制[12]。

图4 主程序流程图

2 结果与分析

在设计完成后,铺设了一个赛道(图5)来对智能避障小车进行测试,赛道全长18 m,其中红色部分为障碍物位置,测试的具体结果见表1。

图5 赛道布置图

表1 测试结果

从表1可以看出,当设置超声波检测距离临界值数值为50 cm,直流电机占空比为30%,舵机转向角为最大转向角,小车速度为1.5 m/s时可以顺利通过完整赛道并且完成时间最短为12 s。

3 结论与讨论

本设计为基于K66芯片的避障小车。在以往的相关研究中,通常采用在主程序中不断对小车前方的距离进行检测的方法,当检测到小车前方的障碍距离小于设定阈值时,通过控制舵机转向以实现避障效果。但当小车的速度不断增加、程序变得复杂时,两次测距的时间间隔变得更长,当检测到障碍小于我们设置的阈值时,小车可能已经很接近障碍了。为了解决这一问题,我们采取了对摄像头获取到的进行二值化后的图像进行识别,当检测到一定宽度的黑色区域时,再通过中断方式调用超声波传感器的测距函数的方法。经实验验证,采用中断触发时,避障成功的次数明显增加且每次舵机打角时距障碍的距离都能满足我们的要求,并且可以较好完成前期制定的各项目标,并且在经过合理的调试之后,可以使智能避障小车运行速度更快更流畅,同时也确保了智能避障小车可以在转弯过程中以最大速度通过。

本设计现在还存在一些不足,主要是还不能让小车可以自动识别复杂路况,完成完全的自动驾驶,之后可以考虑加入模糊算法,让小车更加智能。

猜你喜欢

直流电机舵机障碍物
基于模糊PID的无刷直流电机速度控制系统的设计与仿真
基于模糊自适应ADRC的无刷直流电机控制技术
直升机某型舵机自动测试系统设计分析
基于速度观测的双余度电液舵机系统容错同步控制
高低翻越
赶飞机
单程票传送机构中直流电机的驱动设计
月亮为什么会有圆缺
基于霍尔位置信号的无刷直流电机直接转矩控制
超音速舵机保护器