光电组长春理工大学星光号1Word文档下载推荐.docx
《光电组长春理工大学星光号1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《光电组长春理工大学星光号1Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
2.4电机驱动模块12
2.5人机交互模块13
2.6本章小结14
第三章机械结构设计14
3.1车模自身结构的调整与改进14
3.2激光传感器的安装16
3.3测速编码器的安装17
3.4舵机的安装18
3.5本章小结21
第四章软件结构的设计21
4.1主程序流程框图21
4.2模块初始化22
4.3赛道信息采集与处理23
4.4电动机PID和舵机PD控制原理23
4.5车模控制方案及实现28
4.5本章小结29
第五章开发工具、制作、安装、调试过程29
5.1开发工具29
5.2调试过程31
5.3本章小结33
第六章主要技术参数说明33
第七章总结34
7.1总结34
7.2展望35
附录A:
程序源代码38
第一章引言
1.1比赛背景介绍
飞思卡尔杯”智能车大赛起源于韩国,是韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下举办的以HCSl2单片机为核心的大学生课外科技竞赛。
组委会提供一个标准的汽车模型、直流电机和可充电式电池,参赛队伍要制作一个能够自主识别路径的智能车,在专门设计的跑道上自动识别道路行驶。
该项竞赛是由教育部主办的的五大竞赛之一。
竞赛是以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,目的在于提高大学生的专业素质,激发大学生的创造力和想象力,增强团队协作意识和能力。
第七届智能车竞赛的决赛将于南京师范大学举办。
组委会规定各队采用统一的车模和电池,推荐使用飞思卡尔单片机作为控制器,智能车在单片机内预置控制策略的控制下循迹行驶,单圈行驶速度最快为优胜。
同时在本届竞赛中赛道的铺设做出更改,变为双边循迹。
为参赛队伍带来了新的挑战,也增加了比赛的难度和观赏性。
在前几个月的努力中,我们自主设计机械结构和控制电路,构思实用性强的控制算法,并一次次地对智能车的具体参数进行调试。
在准备比赛的过程中,我们涉猎多个学科,查阅了大量的资料,进行多次实验,提高了我们的实践动手能力,独立思考解决问题的能力。
可以说,这辆在跑道上奔驰的小车凝聚着我们的汗水与收获。
1.2整车设计
鉴于赛道的摩擦力和复杂性以及车模的机械结构和强度,我们提出在尽可能不伤害赛道的情况下最大限度的降低整车的重心,因为车子重心高低和位置对车子行驶,转弯有很大的影响。
由于我们光电组的赛道改为双边循迹,所以我们采用激光传感器与摇头舵机相结合,取得较为合适的前瞻,稳定了车的重心的同时能够更好地采集赛道信息。
最后讨论车子的闭环控制问题。
我们采用禹衡牌的A-ZVH-4系列500线增量型光电编码器,直接用编码器齿轮咬合车模主动轮的方法来获取车子的行驶速度,最后在程序中根据编码器采集回来的信号设计速度控制策略,实现车速的闭环控制。
整体图如下:
图1.1星光号总体图
1.3技术报告的内容安排
本技术报告是对参赛智能汽车制作技术方案、设计思路、制作过程、调试过程及其他相关技术研究的总结性报告。
共分为六个部分,其中第一章为引言部分,简单介绍比赛背景及本文的内容结构安排结构;
第二章重点介绍系统硬件电路的设计与实现过程;
第三章将详细介绍赛车的机械结构安装与调整过程,包括舵机、车体前轮倾角、重心的调整、传感器安装等。
第四章是软件系统的设计与实现,重点介绍数据处理和标志提取的问题,本章还将介绍转向及转速的PID控制策略。
第五章详细介绍了赛车系统开发的调试工具、介绍调试过程及遇到的问题及解决方法。
最后第六章对本文进行总结概括,指出了存在的问题及下一步改进的方向和展望。
希望本报告能够为下届继续做飞思卡尔比赛的同学们提供一些有用的资料。
第二章硬件结构设计
智能汽车比赛以快速平稳地完成赛程作为目标,这就要求赛车能够快速准确地检测跑道路径,及时做出合理的控制并迅速执行,这跟总体方案的确立有很大的联系。
2.1路径识别传感器的选择
路径识别模块是智能车系统的关键模块之一,路径识别方案的好坏,直接关系到最终性能的优劣。
尤其本届比赛的赛道铺设发生了变化,因此,选定黑线识别传感器模块更成为了总体方案确立的重中之重。
主要有以下几种识别方法:
(1)使用光电发射接收管来检测黑线:
光电发射管发射出光,经过赛道的反射回来,由于白色平面和黑线反射光强度不同,不同位置上的光电接收管接收到强弱不同的光,因此可以判断出黑线相对小车的位置。
这种检测的方法明显的优点是检测速度快,检测的方法简单,成本相对低廉。
但是比赛规定传感器不能超过16个,这样就限制了水平分辨率。
不能精确的分辨黑线的位置,同时也许垂直分辨率可能只有一线,不能很好的预测路径的走线。
总的来说使用这种方法优点很明显,缺点也很明显。
(2)使用图像传感器CCD来检测黑线:
图像传感器分为线阵和面阵两种。
线阵的图像传感器分辨率高,能克服光电传感器水平分辨率低的缺陷,但是检测速度较慢,且垂直分辨率只有一线。
面阵的图象传感器成象是一个平面,无论是水平分辨率还是垂直分辨率都很高,识别上具有很大的优势,可以做到提前预测路径,是最理想的路径检测传感器;
但是数据量比前两种方案都大很多,而且数据处理较为困难,大大加重了单片机的负担。
(3)使用磁传感器来检测黑线:
黑线下面部有电线,通电后会产生磁场,根据磁场场强大小和电线距离的关系,可以用磁传感器测出车体与黑线的相对位置。
这样检测稳定,但是磁场场强大小与电线距离有着较复杂的非线性关系,而且使用磁传感器无法做到很好的前瞻,这是对车速很大的限制。
比较了三种传感器优劣之后,并通过实际的实验决定选用应用广泛的光电传感器,相信通过选用大前瞻的激光传感器,加之优秀的程序控制和较快的信息处理速度,能够获得极好的控制效果。
选定传感器后,其安装与摆放成为至关重要的因素。
将激光架的越稳,越轻,对于赛道信息的采集越有利,越精确。
此时,激光传感器相对于模型车来说就是循迹的眼睛,所以“眼睛”的摆放位置成了顺利完成比赛的重中之重。
我们采用20mw的激光传感器,每侧十二支激光管,采用双侧压线方法,配以摇头舵机,使车在行进过程中除去十字弯不丢线,通过激光打在黑线上与白板上的不同来判断车身位置,将反馈回来的信息加以综合处理与相关算法相结合,在外围硬件上,我们采用与门来控制激光的点亮,最终使智能车高速平稳的在赛道内行驶。
激光传感器模块原理如图2.1
图2.1激光传感器原理图
2.2速度传感器的选择
车模的驱动力来源于一个直流电动机,为了能很好的控制车模的速度我们引入了闭环控制系统,这就需要车体能实时的或者尽可能快的了解到速度变化,从而对驱动的电压电流进行调整,尽可能快的达到设定速度并且稳定在设定速度上。
对于要求不高的场合,速度的传感器常常是可以自己制作的,它们大多采用光栅轮,或者测速电机。
车模运行过程需要实时感知速度,并且尽量快和精确,自制的传感器显然不能满足比赛的要求。
我们从往届的参赛队伍经验得知,使用一个增量编码器能很好的解决以上问题,于是我们最终选择了禹衡牌的A-ZVH-4系列500线增量型光电编码器。
该编码器体积小,重量轻,性能优良,适合狭小空间的应用,广泛应用于自动控制,自动测量。
使得模型车在运行过程中速度及时调整,在调试过程中取得较好结果。
2.3电源模块
比赛使用智能车竞赛统一配发的标准车模用7.2V2000mAhNi-cd供电,而单片机、激光传感器、光电编码器等均需要5V电源,伺服舵机(包括前轮转向舵机和摇头舵机)的额定工作电压为6V,直流电机可直接用7.2V电池直接供电。
5V稳压电源用于单片机、激光传感器模块、光电编码器模块供电,实验证明,用LM2940和LM2576搭建成的5V稳压电路给这些模块供电,能稳定地实现功能,且各个模块不会互相干扰,整个电路简单实用在。
电源供电使用情况如图2.2
实验中我们曾经烧毁过一片单片机,经过分析发现,车模电动机在工作时候会产生很大反电动势,这个电动势对于单片机系统是致命,因此在有足够的滤波电容的同时还要加入反向二极管作为保护。
它不仅能防止电机产生的反向电动势造成的损坏,亦可配合保险丝防止电池接反造成的电路烧毁。
我们还采用两片LM2941分别对两个舵机进行供电,LM2941稳压值可调,我们分别用调到5.5v,6.0v,满足舵机的需要,使系统更加稳定。
在不断的调试过程中,我们发现用一片2940单独给单片机供电,能够使之更加稳定的工作,尤其对其防止复位有较好的效果。
电源模块如图2.3。
舵机
图2.2电源供电框图
图2.3电源模块
2.4电机驱动模块
电机的驱动可以使用专用的电机驱动芯片、达林顿管驱动、场效应管驱动。
电机驱动芯片BTS7971,内部具有过流保护电路,刹车效应好,接口简单易用,虽然能够提供比较大的驱动电流,但对于小车骤然加速时所需的电流还是不够的,发热量也比较大,若使用达林顿管作驱动管,其等效电阻也相对比较大,发热量也会比较大,不利于电机转速的骤起骤降驱动,使用场效应管作为驱动管,其导通电阻可以达到毫欧级,且可以提供强大驱动电流,最后选用路两片7971芯片驱动电路。
安装如图2.4所示:
图2.4驱动模块的安装
2.5人机交互模块
为能够对程序运行的参数进行方便的修改,使用了一个四位的拨码开关。
拨码开关的状态通过单片机的PA口读得,在程序里进行判断并决定采用哪一组参数。
图2.5拨码开关模块
对于光电组来说液晶屏是一个不可或缺的模块。
通过显示,我们可以调试激光打在赛道上的的接收的情况,并理解其稳定状况。
由于这直接影响到赛道信息的采集,所以将激光架的是否牢固,其光点接收情况是否稳定成为我们必须考虑的一个问题,而液晶屏能够很好地解决这个问题。
而且液晶可以显示某些寄存器数值,极大的提高调试效率。
图2.6液晶模块
2.6本章小结
硬件电路的可靠运行是整个系统正常工作的前提,本章对车模整体的硬件结构作了详细地介绍,具体叙述了激光传感器、速度传感器的选择和电源、电机驱动的设计等,最终给出了所设计的电路板。
从外围电路上保证了车模能够正常运行。
第三章机械结构设计
3.1车模自身结构的调整与改进
3.3.1底盘高度的调整
由于车模在赛道上高速行驶和连续急转弯,所以整车重心的高低决定了车模的加减速性能、转向性能、行驶稳定性等。
吸取了前几届光电车模在比赛中的经验后,我们坚持将整车重心最大限度的降低(前提是不伤害赛道)。
在包裹上后来组委会指定的防滑套后,我们进行了“先滑先翻”试验。
就是将车模放在赛道板子上,然后逐渐倾斜板子,看车模是先发生滑动还是先翻。
如果是先滑动,那么就是摩擦力或者抓地力不足,重心不会导致过弯时翻车;
如果是先翻车,那么说明重心太高。
结果是车模先滑动,说明车模重心不是很高了,一般不会发生弯道翻车。
为了增加转向的灵敏度,我们将前底盘的高度设定为低于后底盘高度,从而在转弯时能够更灵敏的转弯。
具体的改装请参考飞思卡尔车模说明书中的改装部分,请广大车友自己查阅。
3.1.2前轮前束的调整
对于车轮的调整是为了使智能车直线行驶稳定,转向轻便,转向后能自动转正,并减少轮胎和转向系零件的磨损,而这就需要对车模的轮胎定位。
车轮定位主要的参数有:
主销后倾、主销内倾、车轮前束。
由于前轮负责转向,我们主要调整前轮的各个参数。
主销后倾能够产生一个方向与车轮偏转方向相反的力矩,使车轮回到原来的位置,从而保持了车模直线行驶的稳定性。
但回正力矩过大,将会引起前轮回正过猛,加速前轮摆振,并导致转向沉重。
主销内倾使转向时路面作用在转向轮上的阻力矩减小,从而可减小转向时舵机施加的力,使转向轻便,同时也减小了由于路面不平而从转向轮输出到转向矩上的力反馈。
但主销内倾角过大,将会导致转向时轮胎与路面间产生较大的滑动,从而增加轮胎与路面的摩擦力。
车轮前束是指从上往下看两个车轮指向的方向。
在前端指向内的一对前轮是车轮前束,零前束即车轮指向正前方,这时轮胎的磨损最小。
前束过大则磨损轮胎面外部花纹边缘,在我们的方案中,车模的设计结构是后轮驱动,所以使用前束。
前轮前束的作用是:
①前轮外倾有使前轮向外转向的趋势,前轮前束有使车轮向内转向的趋势,可以抵消因前轮外倾带来的不利影响,使车轮直线滚动而无横向滑拖的现象,减少轮胎磨损。
②悬架系统铰接点的变形,也使前轮有向外转向的趋势,也要靠前轮前束来补偿。
调整后的前轮如图3.1所示
图3.1前轮调整效果图
3.1.3差速器的调整
差速器是车模的运行主要动力提供装置,它不进担负驱动,还担负了刹车任务,同时它的松紧程度直接影响车模对弯道的处理效果。
差速器不可过紧,过紧差速能力几乎消失,但受到摩擦式差速器的限制也不可过于松,太过于松会导致电动机的力传递不到轮胎上。
差速器可以在摩擦片上加入适量的润滑剂,调整时轻加压力,让差速器能尽量差速性能好,同时传动受到最小的影响。
经过实际的调整我们发现在不影响直道、弯道加减速的时候,差速器越松越有利与车模的行驶。
3.2激光传感器的安装
如何安装激光传感器也是一个要考虑的机械结构问题。
因为它直接作为车模在行进过程中循迹的“眼睛”,对于赛道信息的采集与反馈起着至关重要的作用。
如果传感器离车太近,则前瞻性会受到很大影响,在速度较高时弯道处就会受到极大的影响:
由于舵机打角不及时而使赛车冲出跑道。
而传感器若离车太远则机构不稳定,行走过程会产生振动,造成光点晃动,采集到错误的赛道信息。
而且比赛规则有限定车体的长宽。
所以,将激光在有限的条件下架的越稳定,越轻便,越有助于赛道信息的采集。
综合考虑以上因素,我们通过实验确定了传感器的安装距离和方法。
如图3.2所示
图3.2激光传感器的安装
3.3测速编码器的安装
在车的调试过程中,由于电池的电量时刻在消耗,车的实际速度往往在发生变化,于是,我们采用了光电编码器。
光电编码器安装主要考虑的问题是与齿轮的咬合,太紧会使电机转动吃力并且会发出很大的噪声,太松有时候会丢齿。
因此最好使得安装的编码器松紧程度能够调整最好。
光电编码器的安装如图3.5所示。
通过光电编码器,程序可以通过调整电机的PWM波来控制车速在稳定在一个范围。
我们用一块小板做连接件,将编码器安装在车后部,咬合程度适中,得到精准的速度反馈。
如图3.3所示
图3.3测速编码器的安装
3.4舵机的安装
舵机响应时间很大程度上决定了小车的灵活性,从而决定着小车在一定赛道条件下的极限速度,为了加快车轮转向响应速度,我们设计并安装了舵机转向机构。
我们改变了转向舵机的安装位置将其前置,并加长了传动臂、舵机安装高度的最佳值也通过试验获得。
不过在改装的过程中也发现了不少问题,如果舵机臂太短则会影响其响应速度,如果过长,则会对舵机本身造成伤害。
通过多种长度比较,舵机臂是原配臂长的1.5倍左右比较合适。
具体安装如图3.4所示。
图3.4转向舵机的安装
我们将摇头舵机安置在原转向舵机的位置稍前,用四根铜柱加以固定,并以AB胶牢固的与车模底盘相连接。
设计摇头支架固定激光传感器,使之左右,上下可调,获得较为理想的前瞻。
如图3.5所示:
图3.5摇头舵机的安装
在安装的过程中,我们发现仅仅这么固定好摇头舵机不够的,光点打在赛道上还是十分的混乱,给赛道信息采集的精准度带来影响。
最后才发现是因为舵机连接处贴合太少过于松动,于是我们通过在舵机外部齿轮缠绕生塑胶带,在连接片下粘贴泡沫以增加阻力,很好地解决了晃动这个问题,增强了稳定性。
如图3.6
图3.6摇头舵机的稳定架法
3.5本章小结
机械安装是个需要通盘考虑的问题,机械安装的布局、质量将影响到道路信息的检测效果以及车子的行驶拐弯、加减速效果。
本章详细地介绍了车模机械结构的前轮前束、主销内倾角、差速器等相应调整策略和激光、速度传感器、舵机的安装,使得赛车具有较好的机械特性,从硬件上保证了车模的正常运行,为车模获得更快的速度提供了前提保障
第四章软件结构的设计
4.1主程序流程框图
启动
4.2模块初始化
初始化包括:
总线时钟的设置
I/O端口的设置
PWM设置
中断设置
ECT设置
SCI初始化
4.3赛道信息采集与处理
路径识别包括对传感器的控制以及接受信号的处理。
对传感器的控制就是对激光发射管的扫描发射,对接受信号的处理包括激光接收管的信号采样,对采样结果的分析与判断。
在车模整个行驶过程中,舵机都在不停的摆头,使得一排激光的中心照在黑线上。
舵机的转动是以步进的形式累加上去的,程序上只要确定每个点照到黑线上时对应的步进值。
当然,最靠近中点的光点的步进值就越小,而据中心最远的光点的步进值就最大。
这种算法可以说是一种分段比例算法。
对于打角,我们的整体思路是这样的:
先算出上面舵机值与中心值的偏差,将这个偏差量加上当前光点所在黑线摆头舵机的步进量并乘以分段的系数作为打角的P项。
同时,我们根据前一时刻的这个量来确定打角的D项,D项没有分段,这样能更好的适应赛道的动态变化,D项的编写我们采用了循环队列的思想,从而每次运算比队列的方法节约了很多时间。
我们也尝试过加入打角I项,这样可以弥补分段P的带来的缺陷:
沿线不好,但是经过测试发现,在没有很远的前瞻量时加入I项反而会使小车行驶不稳定,因为打角舵机延时比较大,相当于舵机这个环节有了比较大的I项。
对于这种打角方式,如果P和D的系数选择的合理,那么,前轮舵机就会在连续的小弯道上走近似直线,而在单侧大弯道上提前打角,切着内道走。
4.4电动机PID和舵机PD控制原理
我们的车模使用了数字化PID算法对车辆的速度和舵机打角进行控制。
谈到PID算法原理不得不回到经典模拟PID控制原理。
模拟PID控制系统组成原理如图4.2示。
PID调节器是一种线性调节器,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制。
图4.2PID控制系统组成
模拟PID调节器的微分方程:
公式1
式中:
。
模拟PID调节器各环节的作用:
比例环节:
即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。
积分环节:
主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数TI,TI越大,积分作用越弱,反之则越强。
微分环节:
能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。
相对于模拟PID,控制器只能处理数字信号,因此需要将模拟PID进行离散化处理。
模拟PID控制规律的离散化见表4.1所示。
数字PID控制器的微分方程:
公式2
为比例项,
为积分项,
为微分项。
表4.1模拟PID控制规律的离散化
模拟形式
离散化形式
常用的控制方式分为如下几种:
1、P控制
2、PI控制
3、PD控制
4、PID控制
我们车模的的电动机控制采用了增量式PID控制算法,转向舵机和摇头舵机控制采用了PD算法。
摇头舵机控制程序如下:
voidrock()
{
wordPWM_Buffer01;
intKP,KD;
intcha;
cha=abs(rock_Error);
//偏移量绝对值
if(cha>
=10)
{
KP=30;
//快速打角
KD=10;
}
elseif(cha>
=3)//在中段打角
KP=15;
else//小段打角
KP=5;
PWM_Buffer01=PWMDTY01+rock_Error*KP+KD*(rock_Error-rock_LastError);
if(PWM_Buffer01>
=rock_max)
PWM_Buffer01=rock_max;
if(PWM_Buffer01<
=rock_min)
PWM_Buffer01=rock_min;
PWMDTY01=PWM_Buffer01;
}
电动机的控制方法,在处理器对赛道信息进行了处理后就会得到相应的速度设定值,此时PID运算程序会立即得出输出的脉宽调制的宽度,并通过速度反馈即使获得实时速度。
当然我们的PID算法并不是原始的,而是改进的,既当速度差距很多时也会引入BangBang控制,而当需要刹车时又采用了非线性的刹车办法,将刹车误差人为放大。
由于加速和减速都采用了PID控制,因此加速和制动的时间都由程序根据实际需要自行处理,测试中发现这种算法速度上升很快并且适应性很强。
舵机的控制,舵机的反映速度完全滞后于处理速度,车模在高速行驶时候要保证舵机的快速跟踪性,我们引入了PD控制加斜率修正的控制方法,人为的将舵机的控制进行了非线性的划分。
当偏差很小时候几乎忽略掉P和D,这时在通过直道区域的时候车子不会发生摆头现象。
当偏差大到一定数值会加大P,并且引入D控制。
这时在前瞻很靠前的时候,车子不会过度的内切弯道或者在大环形弯道上冲出跑道,同时此法还能及时的做好转弯的提前量,确保有足够时间转向。
当偏差继续增加,这时会引入更大的P和D同时加入斜率。
更大的P和D能有助于车模的维持方向,在弯道上斜率会显著增加,这样又能保证在小圆环内不至于偏离出跑道太多以至于丢失跑道。
在车模速度很高的情况下,任何一个错误的操作都会使得车辆冲出跑道造成比赛的失败,为了更好的降低错误判断,尽可能的提高车模的稳定性,这里对舵机的控制数据进行记录,每一次更新控制信息都要比较两次信息的误差,依据我们的车速,车模在连续的跑道上上下间隔数据偏差不会大过4cm,一旦出现了过大的偏差就会舍弃这一次的控制信息,维持原来的控制结果。
实践中这样不但增加了车模的稳定性,还能有效避免错误的赛道信息采集
4.5车模控制方案及实现
车模的行驶除了要获得良好的传感器数据,执行机构还要有相应的控制策略和战术,对于不同路况和环境还要能及时进行调整,这些调整是我们预先设置的很多预案,并且这些预案的调整要完全摆脱开上位机的控制。
车辆的速度限制采用拨码开关设置,这些速度又被细化为直道速度,弯道速度和保护速度。
直道,这意味着车可以加足油门很快的加到限制速度上。
弯道在尽量不会冲出跑道基础上尽可能高。
保护速度,一个明显低于弯道速度的速度,当车从直道进入到弯道时候要及时减速,这个速度要明显低于直道。
直道进入弯道经历了加速