华北科技学院智能车技术报告.docx
《华北科技学院智能车技术报告.docx》由会员分享,可在线阅读,更多相关《华北科技学院智能车技术报告.docx(43页珍藏版)》请在冰豆网上搜索。
华北科技学院智能车技术报告
第五届“飞思卡尔”杯全国大学生
智能汽车竞赛
技术报告
学校:
华北科技学院
队伍名称:
华科电信光电2队
参赛队员:
易晶晶梁学军吴丹
带队老师:
王江华巫新建
关于技术报告和研究论文使用授权的说明
本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:
参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:
带队教师签名:
日期:
第一章引言…………………………………………………………………1
第二章总体方案的设计……………………………………………………1
2.1设计制作思路………………………………………………………1
2.2系统的组成…………………………………………………………2
第三章硬件电路设计………………………………………………………3
3.1主控板模块和电源模块……………………………………………3
3.1.1主控板模块…………………………………………………3
3.1.2电源电路模块………………………………………………4
3.2晶振电路……………………………………………………………5
3.3电机驱动电路………………………………………………………6
3.4测速传感器模块……………………………………………………6
3.5传感器电路…………………………………………………………8
3.5.1传感器的设计………………………………………………9
3.5.2传感器信号的采集…………………………………………9
3.5.3如何增大前瞻………………………………………………10
第四章智能车整体机械改造………………………………………………10
4.1舵机位置的改造…………………………………………………10
4.2车轮倾角的更改…………………………………………………11
4.3智能车底盘的降低………………………………………………11
4.4整体车的重心的调整……………………………………………12
4.5传感器位置的安装与固定………………………………………12
4.6其他部分的调整…………………………………………………12
第五章软件编程……………………………………………………………13
5.1红外传感器程序……………………………………………………13
5.2激光传感器程序……………………………………………………14
5.2.1程序的算法…………………………………………………15
第六章开发工具、调试过程、智能车整体参数说明…………………16
6.1开发工具…………………………………………………………16
6.2调试过程…………………………………………………………16
6.3智能车的整体参数………………………………………………17
第七章总结………………………………………………………………19
致谢…………………………………………………………………………20
参考文献……………………………………………………………………20
附录…………………………………………………………………………21
第一章引言
智能车一般主要由路径识别、速度采集、角度控制及车速控制等模块组成。
本次课题以MC9S12XS128B单片机为核心,用CPU实现电动小车的实时智能控制。
CPU对各个传感器检测到的信号进行综合判断处理,然后发出控制信号给电机驱动电路控制小车运行。
系统采用PWM动态控制电动机转速,采用红外光电传感器检测引导线,矫正行车路线,超强纠偏。
采用检测电机转动,测速计算距离。
系统根据基于优化的模糊控制算法,实现小车智能化的自动控制,定位精确。
智能小车系统包含路径识别模块、控制器模块、直流电机驱动模块、车速检测模块、电源模块等多个部分。
系统以Freescale公司的HCS12系列单片机MC9S12XS128B作为主控制芯片,采用红外光电传感器来检测白色跑道上的黑色导引线,通过控制舵机的转角来操纵小车前进的方向,并能够稳定地控制小车的速度,高速平稳地完成规定任务。
第二章总体方案的设计
2.1设计制作思路
从去年11月份,我们参赛小组成员就着手准备,从最开始收集资料并确定设计方案,经过半年的不断改进,最终确定采用反射式红外传感器作为道路信息检测装置,前瞻暂定为30cm,4ms为一个控制周期,舵机转向采用模糊控制算法,速度采用PID控制算法,并自行设计了电机的速度检测旋转编码器,精度为30脉冲/圈,加上单片机对速度和方向的精确协调控制,使得智能车可以高速的跑完全程!
路径识别是整个系统的关键,路径识别的好坏,直接关系到整车性能的优劣,因此确定路径识别模块的类型是智能车总体方案设计的关键。
采用光电传感器的优点是传感器信号采集处理速度快,能够在较短的时间内进行复杂的算法运算,结构简明,成本低廉,免去了繁杂的图像处理工作,反应灵敏,响应时间低,便于对近距离路面情况的检测。
但红外传感器的缺点是,它所获取的信息是不完全的,只能对路面情况作简单的判别,检测距离有限,也就决定了速度的局限性。
而且容易受到诸如光线等干扰的影响,抗干扰能力较差,环境光源、传感器器件之间的差异、传感器高度位置的差异等都将对其造成干扰。
考虑到赛道只有黑白两种颜色,小车只要能区分黑白两色就可以采集到准确的路面信息。
经过综合考虑,在本设计中采用红外光电传感器作为道路信息采集元件。
在选定传感器之后,为了对赛车的速度进行精确的控制,在电机上同轴安装了光电编码盘,采集电机的转速信号,经MCU捕获后进行PID自动调节,完成智能车速度的闭环控制。
此外,还增加了按键和拨码开关作为输入输出设备,用于智能车的角度和方位控制以及速度的设定和起跑线的检测等
2.2系统的组成
为了实现对小车的智能控制,本系统以MC9S12XS128为核心,基本组成有,硬件结构和软件控制算法两部分。
图2.2.1系统总体方框图如图
图2.2.2电池电量分配图
根据以上系统总体方案,赛车共包括六大部分:
主控板模块MC9S12XS128、电源模块、传感器模块、测速传感器模块、电机驱动模块、辅助调试模块。
主控板模块是整个智能车系统的核心部分将采集光电传感器、测速传感器等传感器的信号,根据控制算法做出控制决策,驱动直流电机和舵机完成对智能车的控制。
传感器模块,可以通过一定的前瞻性,提前感知前方的赛道信息,为核心部分的控制决策提供必要的依据和充足的反应时间。
电机驱动模块,驱动直流电机和舵机完成智能车的加减速控制和转向控制。
速度检测模块,检测反馈智能车的转速,用于速度的闭环控制。
辅助调试模块主要用于智能车系统功能的转换、速度与起跑线的设定等方面。
第三章硬件电路设计
3.1主控板模块和电源模块
3.1.1主控板模块:
图3.1.1.1主控板电路图
图3.1.1.2主控板实物图
3.1.2电源电路模块
图3.1.2电源电路模块原理图
电源模块对于一个控制系统来说极其重要,关系到整个系统是否能够正常工作,因此在设计控制系统时应选好合适的电源。
在比赛中智能车使用的是同一规格的7.2V电源供电,单片机系统、路径识别的光电传感器、测速传感器等均需要5V的电源供电,为了提高舵机的响应速度,采用6V供电,电机驱动可以直接使用7.2V的电源供电。
电源电路选择的电源芯片合适很重要,稳压芯片:
LM2576S,功率大,可以承受高电压,保护芯片,使用它来为系统的传感器相关电路供电;TPS7350是一款低压差稳压芯片,采用7350为单片机等逻辑控制电路提供+5V电压,舵机的供电电源也是采用7350来实现,使用两个二极管将7350的低端电位升高1.4V左右,从而使7350输出稳定的6V电压供给舵机使用。
这样稳压效果较好,性能稳定,电路结构简单,带载能力强,对其它模块供电还是能保证充足的电源。
系统控制和驱动、传感器执行独立供电,可以有效地防止各器件之间发生干扰,以及电流不足的问题,使得系统能够稳定地工作。
3.2晶振电路
时钟电路对单片机的运行至关重要,电路简单,但是在设计PCB的过程中需要注意布线布局的规范性,因为时钟电路的不稳定会对系统的正常运行产生极大干扰。
在此我们采用外接晶振来给单片机提供时钟,外接晶振频率为16MHZ,利用单片机内部的压控振荡器和锁相环可以把频率提高到80MHZ,用来作为单片机总线时钟。
在布局布线是,晶振应尽量靠近单片机,并且让时钟信号附近电场为0,锁相环滤波电路也要尽量靠近单片机。
为使晶振工作稳定精准,晶振两个引脚端对地之间应添加20-30pF的调整电容。
图3.2晶振电路
3.3电机驱动电路
电机驱动芯片MC33886是单片集成的H桥元件,它适用于驱动小功率直流电机,并且有单桥和双桥两种控制方式。
MC33886芯片内置了控制逻辑、电荷泵、门驱动电路以及低导通电阻的MOSFET输出电路,适合用来控制感性直流负载,可以提供连续的5A电流,并且集成了过流保护、过热保护、欠压保护。
驱动电机控制选用MC33886H桥电机驱动芯片。
在此应用中,MC33886的作用是将恒定的直流电源电压(电池电压)调制成频率一定、宽度可变的PWM脉冲电压序列,从而改变输出平均电压的大小。
为了增强驱动电机的能力,可将两片MC33886并联。
通过信号INl和IN2控制MC33886H桥的输入端,MC33886H桥输出端OUTl和OUT2分别接电机电枢两端,从而控制电机的四象限运行。
由于当智能车达到一定速度时MC33886就过流保护了,今后可以尝试使用大功率的MOSFET管构建桥型驱动电路,这样可以使驱动器内阻更小,智能车的加减速性能更加出色。
电机驱动电路如图所示:
图3.3电机驱动电路图
3.4测速传感器模块
转速闭环控制系统中,电机转速作为反馈量构成闭环控制,转速测量的精度对控制系统性能的影响是不言而喻的。
光电码盘是目前广泛采用的测速手段。
它具有精度高、线性度好的优点。
光电码盘是由光学玻璃制成,在上面刻有许多同心码道,每个码道上都有按一定规律排列的透光和不透光部分。
工作时,光投射在码盘上,码盘随运动物体一起旋转,透过亮区的光经过狭缝后由光敏元件接受,光敏元件的排列与码道一一对应,对于亮区和暗区的光敏元件输出的信号,前者为“1”,后者为“0”。
当码盘旋转在不同位置时,光敏元件输出信号的组合反映出一定规律的数字量,代表了码盘轴的角位移。
采用光电码盘测速时,m/t法兼顾高低转速,是综合性能最佳的一种。
本次设计中,采用了红外反射式光电对管和黑白码盘作为测速模块的硬件构成。
其中码盘为30格的黑白相间圆盘,如下图所示:
图3.4.1码盘图
红外传感器安装在正对码盘的下方,码盘安装在电机的传动轴上,虽然这样做精度比编码器要低很多,但是成本低廉制作容易,如果智能车速度较快,可以考虑采用更加精细的旋转编码盘来实现。
当圆盘随着齿轮转动时,光电管接收到的反射光强弱交替变化,由此可以得到一系列高低电脉冲。
设置同时捕捉光电管输出的电脉冲的上升沿和下降沿。
通过累计一定时间内的脉冲数,或者记录相邻脉冲的间隔时间,可以得到和速度等价的参数值。
速度测量电路图所示。
红外反射式光电对管的光敏三极管信号通过比较器处理后输入单片机的计数器模块,利用单片机的输入捕捉功能,处理智能车速度信息。
码盘有15道黑色条纹,电机旋转一周将产生15次输入捕捉中断。
图3.4.2测速电路
例:
单片机记录两次中断的时间间隔T。
两次中断对应于智能车前进的距离为S,则智能车实时速度V(cm/s)的计算公式如下:
公式3.4:
3.5传感器电路
传感器电路如下图所示:
图3.5红外传感器电路图
电路就是传感器陈列式电路,即路径检测电路,在选择红外传感器时,由于集成的传感器探测距离有限很大的束缚了前瞻,所以我们采用分立的红外传感器。
3.5.1传感器的设计
确定使用分立式传感器之后我们做了第一套传感器,单发单收的电路,在慢慢实验中发现传感器的灵敏度和发光管的发光强度有关,当发光管的发光强度增加时,灵敏度也会增加,信号更稳定更强,这样接收光的效果会更好。
然后我们用二对一,三对一,最后确定比赛时用的四个发一个收电路,这样就可以适当的调整前瞻距离。
3.5.2传感器信号的采集
如图所示,我们一共用了12个传感器,如果一起点亮所有管电流会很大,而且我们在实际应用中也发现,每个发光管都是有寿命的,若发光管长时间发光会变得不灵敏,用8050作为控制电路的开关管,以脉冲的形式对开关管进行开和关的控制,这样我们可以使光电管工作在大电流开关状态下,提高了发光管的亮度,并且可以保护发光管,延长发光管的寿命。
在传感器信号的采集方面我们采用如下方案:
12个传感器共用12路A/D采集信号,将12个传感器编号从0到11,然后分成四组分别亮灯,先是0到3,然后4到8,然后是9到11,其中第4个和第8个灯要长亮,以保证每个接受管都有四个发光供应,但是每组亮灯后有一个小的延时就立刻关闭以降低发光管的使用率,只有第4个和第8个灯一直到整个扫描过程结束一次才关闭。
整个采集信号过程在定时中断中进行。
传感器实物图如下:
图3.5.2传感器实物图
3.5.3如何增大前瞻
我们看了历届的技术报告,大部分红外传感器上都套了热缩管,用来加大前瞻,我们在跑车的过程中也用了,但是感觉信号一直不好,后来把热缩管换成了笔筒,信号反而很好,可能是热缩管的内壁不是光滑的,这样会吸收一部分光,影响接收到的信息,而笔筒是使用塑料做的内壁光滑的,光可以全部被接受管接受,获得的道路信息值准确、稳定,但是也有弊端,笔筒质地坚硬,有碰撞时接收管就会坏掉,但是为了采值的精准,最终我们仍选择了笔筒。
我们实际测试时的最大的前瞻可以达到40cm,由于太大的前瞻距离在实际应用时容易看到赛道外面,实际应用起来效果不是很理想,而且在小车跑起来之后车身是要有震动的,这时车体的震动对于信号稳定的影响很大。
所以我们将前瞻调整为30cm。
既能有较大的前瞻,同时能稳定的检测赛道信息,误码率低而且调试比较容易。
第四章智能车整体机械改造
4.1舵机位置的改造:
原始出场舵机位置的安装经过多关节的传动,而且有保护舵机的缓存弹簧,虚位多,不能精确的控制车轮的摆角,在提高速度的情况下,精细的控制以不能满足要求,在过大S的时,舵机大角度的摆动,就会出现打过活或角不足的情况,造成二次回正。
使舵机中心距前轮两侧的垂直距离相等,这样安装优点在于前轮的连杆距离舵机中心比较远,只要舵机转动很小的角度,角度就会被放大,车轮就能转动很大的角度,而且转动过程中阻力较小,转弯很灵活,走直线也不易出现左右摆动的情况。
但缺点在于,舵机占用了车头很大的位置,使车头部易安装其他部件,而且增高了车模的重心,鉴于此,本队采用车模说明书上的介绍的安装方法,这样降低了车模的重心,而且转弯过程中所要克服的力矩增大,这样在转弯时车模减速很快,更有利于转弯。
为了使转弯更加灵活,我们对舵机相关部分作了部分改动。
首先,我们将舵机力臂加长23mm。
这样,对于同样的转弯角度值,只需要更小的舵机转角,减小了舵机转弯时惯性带来的弊端。
其次,我们将舵机反装,使舵机连杆水平,这样既利于舵机的安装,又可使舵机的转向力集中,用于转向。
从这些天的做车中我们发现想要通过修改软件来实现速度的提高是很微弱的,好的硬件改造更能使我们的速度得到很大的提高,之前的速度怎么也提不上来,一直就停在了1.2m/s左右,但是在这期间更改了舵机的安装方式,我们的速度在一夜之间就提到了1.7m/s让我们都大吃一惊,知道了硬件对整车重要性。
4.2车轮倾角的更改
车轮倾角是在车辆转弯时会产生与车轮偏转方向相反的调正力矩,使车轮自动恢复到原来的中间位置上。
所以,倾角越大,车速越高,前轮自动调正的能力就越强,但是过大的调正力矩会使车辆转向沉重。
转向时也就越费力,轮胎磨损增大。
虽然模型车的主销后倾角、主销内倾角、车轮外倾角和前束等均可以调整,但是由于车模加工和制造精度的问题,在通用的规律中还存在着不少的偶然性,一切是以实际调整的效果为准。
今年我们的车轮倾角都设定为0度,主要有两点:
一是今年的车轮是两边实中间空的,倾角为0时的摩擦力已经很好了,若在加入倾角,单侧着地用力,这样摩擦力的效果反而不好。
二是倾角大了回正的力矩就大了,所需的回正力也就大了,但今年的舵机性能不好,打角力量不够,那么倾角大了而舵机的力量又不够回正,所以考虑到多种原因将前轮的倾角调整为0度。
后轮只要让中心在跑道的中心线上就行,所以也调整到0度。
4.3智能车底盘的降低
合理的底盘高度调节会提高智能车的加速性能。
智能车的重心应该越低越好,降低地盘时实现重心下降的较为直接的方式。
应注意到底盘高度的调节是将智能车的其他性能提高以后间接的帮助加速性能提高。
考虑到坡道问题,为了能够安全的通过,并不使地盘受到不必要的磨损和震荡,所以就要根据实际情况来调节底盘的高度,因此地盘距离地面高度不能太低,且今年的车模是四驱车,加了减震弹簧,出厂的车模底盘太高,如果跑起来车会有很大的晃动,为了保持智能车的在快速行驶的过程中车身的稳定性,也要降低了底盘。
在日常生活我们见到的汽车一般都是前轮驱动的,所以我们根据日常生活的经验重心都是放到驱动轮上,也就是我们看到的一般都是后轮高前轮低。
我们的车模也是按照实际来调整的。
调整之后的前轮处底盘离地面高度为0.9mm,后轮离地面高度为1.2mm。
那么如何降低底盘就是机械改造的一部分了,由于车模的前轮和后轮的固定方式不同所以改造的方法就不同,不过都可以通过改变弹簧的长度来实现。
4.4整体车的重心的调整
因为主控板当初设计成了尾翼的形式,所以刚开始就将主控板安装在了尾翼的位置上,但是在调车和跑车的过程中,我们发现改变重心的位置可以改变转向的摩擦力,摩擦力越大转弯时刹车的效果就越好,重心靠前转弯效果越好,所以最终我们将主控板固定在了舵机的上方,使车体的整个重心靠前,车的尾部只安装了电池,电池的重量也能保证了车的稳定性。
4.5传感器位置的安装与固定
传感器部分是智能车的重要部分之一,考虑到要充分利用车的前瞻性,也就是前瞻也大越好,所以我们将传感器部分在车头处探出去,但受车长的限制我们的只探出去了7cm,传感器模块的安装角度也能改变前瞻,角度越大前瞻就越大,但是要信号稳定,我们测试后的最大角度是45度,前瞻调整到了35cm信号也能很稳定。
传感器部分是整个车的车头,车头太重会造成车在转弯过程中甩尾,所以要尽量减轻车头的重量,固定车头传感器模块要坚固有韧性还要质地轻盈,经过筛选我们选择了铝合金靠座,它比一般的铝质品要轻,而且可以随时更改弯曲的角度来接前瞻,调节信号的稳定性。
4.6其他部分的调整
新买的轮胎的摩擦力不是很好,需要经过跑车的过程中来磨合,所以比赛时我们并没有使用新买的轮胎,而是使用了原来车上已经磨合好的旧轮胎。
而且跑车的过程中擦拭车轮也可以增大轮胎的摩擦力。
轴承
车体本身自带的轴承是塑料的而且也不是耐磨的材料,所以跑车磨合两天了,我们就换成了铁的轴承,把原来轴承保存好,留着在比赛时使用。
另外差速的调节也是很重要的部分,适当的调整差速,才会使直道驱动能力强,弯道转弯灵巧。
第五章软件编程
软件部分主要包括:
路径识别、方向控制、速度测量和速度控制四个模块,各个部分紧密配合才能使系统赛车快速稳定的运行。
5.1红外传感器程序
软件流程可以分为以下几部分:
系统初始化,路况偏差并转化为角度偏差,根据角度偏差控制舵机,根据角度偏差和当前速度控制直流电机转速和制动。
开机后,系统对所有硬件进行初始化,完成之后,定时中断,对传感器扫描发射,并对接收信号进行采样保存。
在扫描完以后,开始处理采样数据,并计算出当前黑线与车身的相对位置。
单片机根据当前位置决定舵机如何打角以保证紧跟黑线。
单片机再根据上次舵机PWM值与传感器所得到的位置综合给出本次舵机的PWM值。
单片机根据舵机的打角,经过运算与处理得到速度期望值,并结合当前速度值对电机控制,是加速还是减速。
我们在软件编写上,用模糊控制算法来控制舵机的打角,以PID控制算法对车模速度上形成闭环控制。
我们的算法是集合各种算法的优点总结出来的。
图5.1.1采集数据处理
图5.1.2赛道信息提取图
滤波是滤除赛道的多处跳变因素,赛道识别是根据计数器累加值来判断是弯道还是直道,然后根据PID调节及查表等来控制舵机转向和速度的控制。
调节速度其根本都是直道加速弯道减速。
但在调节过程中我们发现,如果弯道过程中一直都是减速那么会影响车的整体速度,所以我们在调节时只是要入弯的时候减速,而在弯中和出弯的时候要加速,这样来提高车整体的速度。
5.2激光传感器程序
我们是以红外传感器进入的华北赛区的决赛,在距全国赛还有一个月的时间里,我们还是寄予激光传感器的前瞻优势,所以在这段时间我们更换了传感方案采用了激光传感器。
速度控制,根据上面舵机摆角脉冲占空比和整合角度变化率来控制速度。
Speed=基本速度+按键速度+(最大偏差-偏差值)-斜率。
最大偏差是指传感器偏离中心最大的值。
斜率是指:
本次偏差值与前几次偏差值的差值。
5.2.1程序的算法
报告整篇介绍的都是红外传感器的参数,在这里简单介绍了激光传感器的算法。
Speed=12+按键速度+(13-jiaopiancha)-EC-abscha(quanzhi-8)
EC=(MemAngle[5]-MemAngle[0])/100;
Jiaopiancha=MemAngk/130;
Quanzhi[1,15].
1.利用直道个数检测起跑线,在直道上遇到上面传感器全白,判断为可能是要上坡;弯道上遇全白按弯道处理。
2.对传感器返回值的处理:
(1)上面。
A:
如果是全白,判断上次权值如果“权值小于6或大于10”,那么赋予本次权值1或15。
如果“权值大于等于6且小于10”,那么等于上次权值。
B:
如果有一个传感器在黑线上,那么先判断该权值与上次权值的差值是否在允许变化范围之内,在的话,直接赋予现代权值。
C:
如果有两个或者两个传感器在黑线上,那么顺序判断这些在黑线上的权值,取出与上次权值相同差值最小的赋予新的权值。
(2)下面:
上面传感器玉下面传感器之间的完美交接。
如果判断出在长直道上遇到丢失信号的情况,就可以判断为有可能是上坡,即转为上坡处理。
(3)坡上:
上面传感器仍然采集信号,仍然摇头,只是摆头最大值与最小值范围变小了,上面传感器如果丢失数据,摆头打正。
(4)下坡:
上坡过程中遇到传感器信号跳变,即判断为下坡。
下面是我们取的74HC139开灯顺序:
表5.2.1激光传感器亮灯顺序
第六章开发工具、调试过程、智能车整体参数说明
6.1开发工具
程序的开发是在组委会提供的CodeWarriorIDE下进行的,包括源程序的编写、编译和链接,并最终生成可执行文件。
CodeWarriorforS12是面向以HC1和S12为CPU的单片机嵌入式应用开发软件包。
包括集成开发环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、链接器以及调试器。
6.2调试过程
在调试过程中,我们开发了用于智能车赛道信息返回的智能车实时监测系统。
能够方便我们观察智能车在运动过程中,传感器的状态,速度等信息,很大的方便了智能车的调试。