基于归一化算法智能车的设计与实现
2015-05-15王静金建陈凯施小东
王静 金建 陈凯 施小东
摘要:该文详细论述了安徽新华学院电子通信工程学院参赛队所设计的智能赛车系统,总体设计思想以及各模块的功能,重点论述和分析了单片机部分软硬件的设计思想及其实现。尤其是团队在算法优化方面分别采用增量式PID作为核心控制算法以及电磁路径归一化算法,收效显著。采用该设计思想设计的成果已荣获安徽省第九届飞思卡尔一等奖并获取参加国赛资格,且荣获全国第九届飞思卡尔一等奖。设计结果和参赛结果表明该设计思想具有可行性、先进性和创新性。
关键词:单片机;智能赛车;飞思卡尔大赛;电磁传感器
中图分类号:TP391 文献标识码 A 文章编号:1009-3044(2015)08-0072-06
Abstract: This paper discusses in detail the intelligent car system from the Institute of electronic communication and engineering Anhui Xinhua University team design, general design idea and the function of each module, and then focuses on the design and implementation of hardware and software of MCU part thought. Especially, the team in the incremental PID algorithm optimization was used as the core control algorithm and the normalized electromagnetic path algorithm, with the outcome. The idea of design achievements have been awarded the Anhui Province ninth session of fly think of Carle the first prize and obtain the participating countries qualifying, and won the first prize in the Ninth National fly think of Carle. The design results and competition results show that the design idea is feasible, advanced and creative.
Key words: Single Chip Microcomputer; intelligent vehicle; frees Carle competition; electromagnetic sensor
全國大学生“飞思卡尔”杯智能汽车竞赛起源于韩国,是韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下举办的以HCS12单片机为核心的大学生课外科技竞赛[1]。我国大学生智能汽车竞赛是由教育部主办、以智能汽车为研究对象的创意性科技竞赛,简称飞思卡尔大赛,是面向全国大学生的一种具有探索性工程实践活动。旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件[2-3]。本文主要阐述了安徽新华学院电子通信工程学院参赛队所设计的智能赛车系统的相关思想及单片机部分的实现,将整个系统分为机械结构、控制模块、控制算法等三部分对智能车控制系统进行深入的分析。该设计思想的设计成果获全国第九届飞思卡尔大赛一等奖(2014年度)。
1 总体设计
1.1 系统总体方案的设计
文献[4-5]分析了Free Scale公司 Kinetis系列微控制器的总体特点和功能,文献[6-7]分析了FreeScale公司 K60微控制器的总体特点和功能。文献[8]详细阐述了“飞思卡尔”智能车第九届大赛规则。根据上述文献分析和自身情况,团队提出了系统总体方案。
按照竞赛规则,智能赛车系统采用大赛组委会统一提供的C型车模,以飞思卡尔半导体公司生产的32位微控制器K60作为核心控制器,在IAR开发环境中进行软件开发。赛车的位置信号由车体前方的电磁传感器采集,经内部ADC进行模数转换后,输入到控制核心,用于赛车的运动控制决策。通过编码器测速模块检测车速,并采用K60的输入捕捉功能进行脉冲计数,计算速度和路程。电机转速控制采用 PID 控制,通过 PWM 控制驱动电路调整电机的转速,完成智能车速度的闭环控制。 由于赛道增加了障碍,提高了赛道的难度,利用夏普的红外测距仪进行避障控制。此外,还增加了键盘作为输入输出设备,用于智能车的角度和方位控制。
1.2 系统总体结构
参赛队进过反复论证和实践,最终确定的系统功能模块如图1所示。
根据以上系统方案设计,赛车共包括7大模块:K60主控模块、传感器模块、电源模块、数模转换模块、电机驱动模块、速度检测模块、辅助调试模块。
2 模块介绍
2.1 K60主控模块
单片机将计算机的基本部件微型化,使之集成在一块芯片上,片内含有中央处理部件、存储器、输入/输出接口、定时/计数器、中断控制、系统时钟及总线等[9]。它具有功能强、体积小、易于产品化、价格低廉、低电压、低功耗等特点[10]。单片机的发展可以分为四个阶段[11]:单片机控索阶段,单片机完善阶段,8位单片机的巩固发展及16位单片机的推出阶段,微控制器的全面发展阶段。
K60主控模块作为整个智能车的“大脑”,将采集电感传感器、编码器等传感器的信号,根据控制算法做出控制决策,驱动直流电机和伺服电机完成对智能车的控制。K60片内核心部件有:ARM Cortex-M4内核,主频高达100MHZ;32路DMA供外设和存储器使用,大大提高CPU利用率;10种低功耗模式,包括运行,等待,停止和断电;512K Flash和128K SRAM;集成硬件和软件看门狗,硬件加密电路和CRC电路;33路单路和4路差分的16位AD转换,2路12位DA转换;8路电机控制,2路方波解码,4路可编程定时器通讯;SD卡主机控制器,6路UART,IIC,IIS,SPI,CAN;USB2.0全速和高速接口,支持OTG;IEEE1588以太网接口,支持MII和RMII通讯;工作电压1.71V~3.6V,多达100路GPIO引脚[12]。
单片机最小系统板使用K60单片机,144引脚PQFP封装,为减少电路板空间,主板上仅将本系统所用到的引脚引出,包括 PWM 接口、计数器接口、外部中断接口、若干普通 IO 接口等。还包括电源滤波电路、时钟电路、复位电路、串行通讯接口、JTAG下载接口和SD接口。采用单片机最小系统原理如图2所示。
2.2 传感器模块
电磁传感器是智能车的“眼睛”,可以通过一定的前瞻性,提前感知前方的赛道信息,为智能车的“大脑”做出决策提供必要的依据和充足的反应时间。红外传感器用于避开障碍,辅助转向控制。根据竞赛组委会的相关规定,我们选用磁传感器,磁传感器的应用首先在于选型,为了找出适合的磁传感器,我们查阅了许多的产品资料,进行了大量的电感测试,发现只有在10mH电感中,得到感应电动势曲线是较为规整的正弦波,频率和赛道电源频率一致,为20kHz,幅值较其他型号的大,且随导线距离变化,规律为近大远小。其他电感得到信号不好,频率幅值变化杂乱,不宜采用。
2.3 电源模块
电源模块为整个系统提供合适而又稳定的电源。主要为最小系统版、运放模块、舵机、电机驱动、oled液晶、编码器、红外测距仪等供电,保证其正常工作。
根据实验需要,本车模上存在2种供电电压,如图3所示。
1)智能车使用镍镉充电电池,充满时电压在7.8~8.2V。可直接用于电机供电。
2)采用线性可调稳压芯片lm2941,调至6.5V电压给舵机供电。
3)一些数字器件使用直流5V,5V电源选用线性稳压芯TPS76850,同时为单片机运算放大器供电。
2.4 数模转换模块
数模转换模块利用车体前方的电磁传感器采集赛车的位置信号,经内部AD进行模数转换后,输入到控制核心,用于赛车的运动控制决策。由于K60的内部AD比较精确,我们在测试外部AD后结果显示其结果与内部AD相差不大,而且方差较内部AD更大,当然这也有可能是测试方法有问题。内部AD较外部AD可以简化电路设计,综合考虑这下我们还是决定使用内部AD,考虑到我们所使用的传感器数量,引出6路AD。
2.5 电机驱动模块
电机驱动模块驱动直流电机和伺服电机完成智能车的加减速控制和转向控制。
电机采用芯片BTS7971控制,其應用非常简单。在接上电源与地、拉高使能端之后,只需要向芯片第2引脚输入PWM 波就能控制。当系统中只需要单向控制时,只需要让电机一端接地,另一端接BTS7971的输出引脚。由于单片BTS7971只能构成半桥,如果需要电机双向旋转控制,则需要两片BTS7971 共同组成全桥。同时考虑到小车有两个电机,我们使用4片BTS7971构成两个全桥共同控制电机。在电路中,我们增加了74hc244驱动隔离芯片,起到了保护作用[13]。
2.6 速度检测模块
速度检测模块检测反馈智能车后轮的转速,用于速度的闭环控制。
在电机上方架编码器,当电机转动时带动编码器转动,由此获取速度信息。用编码器测速较光栅片测速精度更高。测速模块供给主板的信号要经过整波,使用上拉电阻提高其峰值电压,再使用三态门将波形整为矩形波。
2.7 辅助调试模块
辅助调试模块主要用于智能车系统的功能调试、赛车状态监控等方面。如红外测距仪主要用来检测障碍的距离;人机交互模块增加数字键盘;拨档开关用于输入参数、策略调整;加入液晶屏显示小车状态便于调试。
3 软件设计
3.1 软件设计整体流程图
智能车软件设计流程如图5所示。
3.2 K60单片机软件模块
在整个系统设计中,用到5个单片机基本功能模块:时钟模块、PWM 输出模块、ADC模块、串口通信模块以及普通IO 模块。根据系统实际需求,对各个模块进行初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。
3.2.1 ADC模块
由于K60的ADC模块的时钟频率最高可配置为50MHz,最快采样周期为四个时钟,所以采样最高可达12.5MHz。K60共有2个ADC模块,每个ADC模块包含27个寄存器,具有最高达16位的分辨率。ADC模块编程要点:初始化、开始转换操作、完成转换、获取AD的值。
3.2.2 PWM 模块
脉宽调制模块有12 路独立的可设置周期和占空比的PWM 通道,每个通道配有专门的计数器。该模块有6 个时钟源,能分别控制12 路信号。通过配置寄存器可设置PWM 的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(八个8 位通道还是四个16 位通道)。驱动舵机的PWM信号的频率为50Hz,电机的PWM信号的频率为1.3KHz。
3.2.3 串口模块
串口通信模块设有两个串行通信接口SCI1 和SCI0。使用时,可以对波特率、数据格式(8 位或9 位)、发送输出极性、接收唤醒方式等进行选择。另外,发送和接收可分开使能,模块中还提供多种避免传输错误的选项。本设计利用其中一个串口SCI0,将所需要的信息通过串口传到上位机上进行必要的处理和分析,以提高调试的效率。
控制程序是人的思想在车模体现,程序要体系化,模块化,稳定化,目标是将硬件电路和机械性能发挥到最大,让车模用最快的速度完成比赛。
3.3 算法设计
良好的硬件设计需要有同样良好的软件配合,才能最大地发挥其功能。根据电磁车实际需要,软件设计主要包括路径识别算法、舵机控制算法设计和电机控制程序设计。
路径识别是智能小车的灵魂,是决定小车能否顺利完成赛道的关键部分。好的路径识别模块程序,能够使小车能够顺利的完成赛道,并且表现出良好随动性。该设计使用电感传感器检测预先铺设在赛道下方的漆包线发出的20kHz的交变电磁波。其软件设计主要有对电感传感器采样值的处理,并将所得出的值用来控制小车转向舵机的转向。
整个路径识别模块的工作过程为:在系统上电后,进行道路状况检测,当通过AD模块处理,然后对采集的数据进行处理和计算,进行道路轨迹的获取,计算出道路大致曲率,结合实时检测的速度值,控制舵机转向和直流电机转速从而控制方向和速度的目的。其系统框图如图6所示:
3.3.1舵机控制算法
根据车头两边与导线垂直的两个传感器的值经过简单运算可以得到一条线性度很大的一条直线, x轴是传感器中心线距离赛道引线的距离,y轴则是当先传感器回传的数据量。在对回传数据与输出到舵机的PWM波占空比建立一个线性关系则建立舵机PWM波占空比与当前传感器中心到赛道中心引线的线性关系,这样就可以实时的根据当前偏差量输出一定的舵机转角使小车一直沿着赛道路径前行。
经过实践之后发现,如果PWM波占空比与偏移距离用简单的线性关系会有弊端:如果比例系数较大弯道会有比较灵敏的表现,但直道会发生抖动而不稳定;比例系数太小直道比较稳定,而弯道则会因转角过小发生冲出赛道的现象。基于此,建立一个非线性的数据对应关系:当小车偏移较小时比例系数比较小来使直道行驶稳定,而偏移变大时加大比例系数来增大弯道的灵敏度。实践证明通过这样的非线性的算法此外再配合简单而有效的PD控制,就保证小车平稳流畅的通过各种赛道情况。
3.3.2 電机控制--PID控制算法
PID参数整定
速度检测速度的检测采用旋转编码器测速装置,小车车轮每转一圈,走过路程为16. 7cm(记为L),小车传动轮有76 个齿,旋转编码器齿轮有18 个齿, 旋转编码器有600 线。所以小车车轮转过一周会产76/18*600=3210 个脉冲(记为M)。将小车的测速程序写在中断中,每10ms(记为T)进入中断,将10ms 内接受到的脉冲数(记为N)计算一次速度反馈到单片机。
比赛拼的是速度,因此如何让小车以最快的速度而又不发生冲出赛道的情况完成比赛是最终的目的。速度控制则是程序的重点,小车能在以较快速度完成比赛取决于直道入弯有效的刹车和弯道内的灵敏的速度调节。
直道为达到较高的速度,通过分离的PID 环节单独调整速度,使他快速的达到既定速度值,而在弯道内部和出弯进入直道通过简单的速度PID算法完成加速,当速度大于设定值的时候再适当减少PWM 波占空比,通过调整参数,这种简单的速度控制方式就可以完成稳定的速度控制。
而直道入弯的刹车控制采用多点递减的刹车方式:即在小车入弯的每个位置分别给一定的点刹,刹车的大小量根据小车当前舵机转角量来决定,舵机转角越大刹车给的越多,而舵机转角越小刹车给的就小。
如图8所示波形即为PID参数整定后的理想图形。
绿线:设定速度曲线。
黄线:实际速度曲线。
红线:电池电压。
3.3.3 电磁路径算法
归一化就是把采集的数据经处理后使数据限制在一定的范围内[14],其目的是保证数据后续处理的方便,以及保证数据的收敛。
在解决电磁路径问题时,团队采用是二值归一化的算法,将电感值以10位AD的精度进行采样,采样之后对电流的最大值和最小值进行归一化的运算,保证电感值在0~100之间变化,这样做是为了方便计算。在传感器的电感区间分为了5段,通过4个电感的值进行分段选取,辨别区间后进行运算,2段用电感2和3进行差值运算,说明此刻车子在赛道的中线上偏离不多,0段和4段分别用2、3电感的单个电感做差,电感值越大,说明车子偏离中线越少。1段和3段分别分为多种情况,分别用电感2、3进行差值和比例运算。
3.3.4 增量式PID控制算法
PID控制算法是志比例、积分和微分,分为位置式和增量式。PID控制算法原理简单、使用方便、适应性强、鲁棒性好,在应用中不需要精确的系统模型的预先知识,是生产过程控制中应用最为广泛的控制方法[15]。
增量式PID 是指数字控制器的输出只是控制量的增量Δu(k)。采用增量式算法时,计算机输出的控制量Δu(k)对应的是本次执行机构位置的增量,而不是对应执行机构的实际位置,因此要求执行机构必须具有对控制量增量的累积功能, 才能完成对被控对象的控制操作。执行机构的累积功能可以采用硬件的方法实现;也可以采用软件来实现【16-17】。
由式可得增量式PID 控制算式 :
控制增量Δu(k)的确定仅与采样值有关,容易通过加权处理获得比较好的控制效果。
本例采用增量式数字PID 程序以PWM 方式来对直流电机进行调速。增量式数字PID 调节的数学表达式。其中Kp 为比例常数,Ti 为积分时间常数,Td 为微分时间常数,T 为采样周期。
增量式PID 具有以下优点:
由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的方法关掉。
手动/自动切换时冲击小,便于实现无扰动切换。此外,当计算机发生故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。
算式中不需要累加。控制增量△u(k)的确定仅与最近k 次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。
3.4 路径优化
虽然在速度控制上引入了二次曲线控制但在后期调试发现,智能车在弯道上路径并不是很完美。经过我们小组成员严谨的开了一次会;决定引入加权平均算法,通过提取出整场所有有效行的中心线后,结合事先给定的权重计算出中心线的加权平均,作为本场的中心引导线。这样一来车辆在过弯时路径有了很大的提升,切弯还算完美。
4 结束语
自初报名参加“飞思卡尔”杯智能汽车竞赛以来,我们的团队积极查找资料,很快形成了自己的设计思想,组装车模,并从传感器布局、电路和算法等方面进行优化,最终结合我们自身的情况确定了原理图和相应算法,确保小车直线加速,弯道减速,最终保证了在最短时间跑完全程,取得了全国一等奖的骄人战绩。我们不断总结分析,力争在以后的比赛中取得更好的成绩。
参考文献:
[1] http://www.baike.baidu.com/2014-02-20.
[2] 全国大学生“飞思卡尔杯”智能汽车竞赛[EB/OL]. (2014-11-07). http://www.smartcar.au.tsinghua.edu.cn/.
[3] 赵隆基,乔朕,陆群. “飞思卡尔”智能汽车系统设计分析[J].科技傳媒,2006,10(8):83-84.
[4]百度知道[EB/OL]. (2014-12-30). http://zhidao.baidu.com/question/1818982410790719668.html.
[5] 徐岳清. Frees Cale Kinetis的三轴点胶运动控制卡的设计与实现[J].宁波职业技术学院学报,2012,16(2):4-7.
[6] 郭震,吕立兵,吴雪玲.基于K60与FPGA的电子式互感器采集单元的实现[J].信息技术,2014(4):104-106.
[7] 于丰华,岳仕达.基于K60单片机的环境控制在蓄禽舍中的应用[J].中国农机化学报,2013,34(16):261-263.
[8] 第九届飞思卡尔智能车官方竞赛规则[EB/OL]. (2013-11-01). http://www.docin.com/p-724479296.html.
[9] 刘旭.微机原理与接口技术[M].合肥:中国科学技术大学出版社,2012,1(2):6.
[10] 高洪志.MCS-51单片机原理及应用技术教程[M].北京:人民邮电出版社,2012,6(5):2-3.
[11] 安鹏,马伟.S12单片机模块应用及程序调试[J].电子产品世界,2006(11):162-163.
[12] K60管脚定义[EB/OL]. (2012-09-06). http://www.docin.com/p-475401703.html/.
[13] 童诗白,华成英.模拟电子技术基础[M].北京:高等教育出版社,2000 .
[14] http://www.docin.com/p-389405614.html[EB/OL]. (2012-04-24). http://www.docin.com/p-389405614.html.
[15] WU Hong-Xin,SHEN Shao-Ping.Application and Theory of the PID Controller[J].Control Engineering,2003,10(1):37-42.
[16] 李敬兆 .计算机控制技术[M].西安:西安电子科技大学出版社,2010(12):85-86.
[17] 于海生.微型计算机控制技术[M].北京:清华大学出版社,2001:85-87.