版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二届全国大学生“飞思卡尔”杯智能汽车竞赛技 术 报 告学 校: 河北理工大学队伍名称: 冀风参赛队员: 李玮汪汉清张明吉带队教师: 张瑞成 关于技术报告和研究论文使用授权的说明 本人完全了解第二届全国大学生“飞思卡尔”杯智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 目录第一章 引言1第二章 硬件电路设计22.1 模型车的主要技术参数说明:22。2 电源模块22
2、。3路径检测模块32。3。1传感器的硬件设计:32.3.2传感器排布42.4 测速模块42.5 电机驱动模块52.6转向模块5第三章 控制策略与软件实现73.1黑线检测方法73。2路径形状判断93。3转向控制策略103.4 速度检测113。5 速度控制策略113.6 记忆控制方案12第四章 总结及比赛心得15参考文献16附录:源代码I第一章 引言针对第二届“飞思卡尔”杯全国大学生智能汽车邀请赛的要求,结合第一届大赛各队的特色参赛报告,我们提出了简单、稳定、快速、智能的方针作为模型车方案设计的指导原则。在整个准备过程中,我们经历了学习相关文献、分析系统组成原理、制作硬件电路、选择控制策略、实际跑
3、道调试等五个阶段,而且针对各种实际问题我们提出了多种解决方案,并经过大量的实验,从而得出了一些相对较好的策略和思想.经过对被控对象的分析,我们把智能车控制系统分为两个主要的子控制系统:转向控制系统和速度控制系统。转向控制系统保证小车能够紧密的跟随黑线前进,速度控制系统能使智能车尽快稳定在所需要的不同速度上,即保证在直道入弯时能够迅速降速保证小车不会因为车速过高而冲出跑道,在由弯道入直道时能够经快使小车提高到所需的速度,从而提高小车的平均速度。本文可分为三部分,第一部分简述了硬件制作过程的方案选择。第二部分详细的阐述了智能车的控制思想及实现的方法.如黑线检测方案、路形判断方案、速度调节方案等。第
4、三部分是总结,主要总结了制作的经过以及一些心得体会.第二章 硬件电路设计2.1 模型车的主要技术参数说明:表2。1技术参数项目参数车模几何尺寸(长、宽、高)(毫米)390200*100车模平均电流(匀速行驶)(毫安)1200电路电容总量(微法)2000传感器种类及个数光电传感器,16个新增加伺服电机个数0赛道信息检测空间精度(毫米)10赛道信息检测频率(次/秒)200除MC9S12DG128之外其它主要芯片LM2940-5, TIP42C车模重量(带有电池)(千克)32.2 电源模块电源做为智能车的“心脏”,是小车的重要组成部分。小车使用的电源提供的电压为7.2V,据资料可以知道,电动机可以工
5、作在7.2V,但单片机、传感器必须工作在5V电压下.故必须利用稳压芯片进行稳压。舵机可以工作在4.5V7.2V,舵机工作的电压越大,它的反应速度越快。但由电源同时直接供电给电动机和舵机时,它们之间会产生很大的干扰。如果用稳压电路给舵机供电,就可以消除它们之间的干扰。利用7806稳压芯片稳压,使舵机工作在6V电压下。电压分配图如下:7.2V(镍镉电池组) 2940-5V稳压芯片 光 电 传 感 器 测速传感器 单片机 7806(6V)稳压芯片 舵机 后轮电机 图2。1 智能车系统电压分配图2.3路径检测模块路径检测方式主要有两种:光电传感器检测和CCD摄像头检测。由于光电传感器具有扫描频率高、结
6、构简单、质量轻 、体积小、安装方便、算法简单等优点,所以采用光电传感器检测方式。2.3.1传感器的硬件设计:为了能够清晰准确的辨别黑线轨迹,利用红外光电传感器的特性,制作了路径识别模块。电路特点:电路原理简单,安装方便,检测速度快(道路检测周期一般是几十毫秒,远快于CCD检测,相比之下红外接受管对反射光的响应时间和单片机读取信号的时间是几十微秒,因此在一个检测周期的大部分时间内,红外发射管不需要工作,只要检测瞬间工作即可。这样就可以大大降低耗电量。),如图2。2所示,电路可以输出连续变化的信号。图 2.2 光电传感器驱动电路该电路的实验结果:电路和各参数如图所示,第一级检测电路可得到电压是高电
7、平1015mV,低电平04mV,波形较好。经过第二级放大,通过设置可调反馈电阻可以调节放大倍数。由于光电传感器是通过判断接收到的光的强度来识别赛道的,不可避免的要受到外界环境干扰,在电路中产生噪声.噪声主要来自环境光线干扰,主要是日光和赛道附近灯光。抑制噪声的措施主要有:安装遮光板。增加红外发射功率,可以提高检测信号的信噪比。电路滤波:环境干扰信号一般是缓慢变化的,可采用脉冲式红外发射与检测方式,或者选用带有38KHZ的调制/解调红外发射接受模块.软件滤波,使用单片机AD口采集红外检测信号,再通过软件滤除干扰信息。2.3。2传感器排布“一”字形排布是传感器最常用的排布形式,即各个传感器都在一条
8、直线上,从而保证纵向的一致性,使其控制策略主要集中在横向上.非“一"字形排布虽然增加了纵向的特性.但由于纵向的排列不一致,就比“一"字形更增加了多传感器同时感应的可能性,从而将控制策略复杂化.而“一”字形排布结构简单,对应的控制策略简单,容易实现,所以采用“一”字形排布形式2。4 测速模块为了使智能车快速,稳定的跟随黑色轨迹,一个快速,准确的测速传感器系统是必不可少的。常用的测速传感器包括红外光电传感器,霍尔传感器和测速发电机。本设计采用了基于红外光电传感器的智能车测速系统。选用红外光电传感器,响应时间是微秒量级,对于测量系统中的速度是完全足够的。经过测量,车轮周长17cm
9、,所以采用了17孔的测速码盘,就可以满足系统的要求,并且经实际测试可以达到上述目的。电路原理图及测速码盘示意图如下:图2。3 测速传感器电路图 图2.4 测速码盘示意图2.5 电机驱动模块电机驱动模块采用的是大赛组委会提供的MC33886芯片.MC33886简介:20个引角,其中D1,D2为使能端,IN1,IN2为输入端,OUT1,OUT2为输出端,将MC33886的输入端接到单片机PWM输出口,在其输出口可以得到与单片机PWM输出口相应的并可以驱动直流电动机的PWM信号MC33886其实质就是一个H桥驱动电路,只不过它又加了一些保护电路,起到过流保护等作用.MC33886内部具有过电流保护电
10、路,刹车效果好,接口简单易用,能够提供较大的驱动电流,但对于小车骤然时所需的电流还是不够的,而且其发热量也比较大。为了解决发热的问题,我们采用了两片33886芯片并联使用的方式,经过实验这种方式可以有效的驱动电机并且发热量很小,完全可以满足要求.2。6转向模块为了尽量缓解舵机滞后性所带来的影响,提高它的响应速度,我们采取了相应的措施:1)尽量加大舵机的工作电压,提高其转动速度.2)利用杆杠原理,通过对小车的拉杠的调整,增大前轮转角和舵机转角的传动比。3)将小车的脉冲波形周期由20ms缩短到10ms,提高其响应速度。第三章 控制策略与软件实现智能车控制算法是影响智能车运动性能的重要因素之一,在输
11、入信号有限的条件下,运用一种有效的算法,对于提高智能车的运动性能,有着重要的作用。系统方框图如下:图3。1 系统方框图3。1黑线检测方法使用集成红外传感器的缺点是它对路径的检测是离散的量,不能连续观注到黑线位置的变化.当传感器的横向间隔距离比较稀疏时,模型车进行方向纠正的时候会在黑线两侧产生较大的波动.所以传感器的间距不能过大,应当尽量的缩小。但是,传感器的分布过密也有不足之处,如果过密会大大增加路径检测模块的质量,加大模型车的转动惯量,不利于过弯。同时由于传感器的数量的限制,如果在个体之间布置过密,则整体的宽度也受到影响,检测范围缩窄,同样不利于模型车的稳定运行。所以,传感器的间距应当根据实
12、际的情况,在各种利弊之间进行合理的取舍,最终确定比较适中的间距。经过反复的分析和实验测试,最终我们采用十二只光电传感器“一”字型等距排列,间距是15mm。如图3.2所示: 图3.2 前排光电排布示意图为了能够有效的反应黑线相对于小车的位置,对前排光电进行坐标赋值,从左至右依次是-11,9,-7,5, -3,-1,1,3,5,7,9,11,当某一个或两个光电检测到黑线时(即返回信号为低电平时),通过软件编程,根据光电反馈回来的高低电平的信号,当某个光电返回的信号为低电平时其对应的坐标值才为有效值,而反馈回的信号为高电平的光电对应的坐标值无效,为零。单片机根据收到的数据信息对十二个坐标值进行累加,
13、然后除以具有有效坐标值的光电数,即为黑线相对于小车前排光电的位置坐标。通过软件实现的细分的方法,可以把黑线相对于小车的位置值由12个提高到25个,在宽度不到170mm的范围内细分为25个有效坐标点,即为黑线与小车的相对位置每偏离5mm,此偏差即会被单片机识别,这个精度完全可以满足对小车的控制要求。 在制作前排光电和调试的过程中,我们常常遇到光电管坏了而不知道,想知道某个光电处于的状态时,信息却无从知晓。为此,我们把每个光电串了个发光二极管(如图3。2),利用一定阻值的上拉电阻提高它的电压,使当光电检测到黑线时对应的二极管发光。这样我们就可是方便的观察小车在运行的过程中每个光电的工作状态了。在实
14、际跑道调试的过程中,由于长时间在同一跑道测试小车,使跑道局部受损或者由于小车轮胎的摩擦造成跑道变黑 ,常常造成光电误判,即当某个光电检测到受损或者变黑的地方误判成是黑线,而且光电对光照特别敏感,再加上每个光电的特性也不完全相同,所以,对于十几个光电能否同时适应不同的环境,会不会出现误判现象对于小车能否稳定运行起到至关重要的作用,光电之于智能车就相当于眼睛对于我们一样重要。因此,为了解决这个难题,我们在硬件上已经采取了一定的措施,例如每个光电都加了可调电阻,通过改变光电检测返回的电平信号的大小,从而在一定程度上能够使光电在同一环境保持效果一致.为了更有效的解决问题,我们采用软件滤波的方式,使在某
15、一时刻同时最多只有3个光点是有效的,这样就大大减小了误判的几率,而且不用每次改变环境后都要重新调试光电,利用这种方案后可以说已经解决了误判的问题.3。2路径形状判断路径识别模块是智能车系统的关键模块之一,路径识别方案的好坏,直接关系到最终性能的优劣。根据规定,跑道的形状主要是直道、普通弯道和连续弯道(S弯道),能否控制好转向和速度最重要的一个因素就是能否准确的判断路径的形状:即在直道上以尽可能快的速度行驶,在遇到弯道时能够及时的降速和转弯。a)判断入弯:在这里采用记录黑线相对于小车中心的偏差的连续变化次数来实现对弯道的判断,当黑线连续向右或者向左偏离5次,即为了确保小车能尽量准为前方路径为弯道
16、。而且确及时的判断出弯道,还通过软件加了保险措施:以某个边缘的光电为必须转弯的极限值.即当黑线相对于小车的坐标出现大于等于7或小于等于7时,小车一定运行在弯道上。b)判断出弯入直道:经过常时间的调试发现,由于小车的前瞻距离短及舵机相应滞后等因素的影响,小车在转弯的过程中,黑线相对于小车中心的偏离量较大,而当出弯入直道时,偏离量会减小到零,经过舵机的调节会迅速保持偏离量为零,这样小车就能够稳定的在直道上运行。基于以上经验,采用中间三个坐标值(-1,0,1)为直道标志位,即当黑线相对于小车的坐标为以上三个值时,即为小车运行在直道上。c)判断S弯道:S弯道也是弯道的一种,基于以上对弯道的判断方法完全
17、可以实现对S弯道的第一个弯道的判断,那么如何才能实现连续弯道的判断呢?考虑到路形的可能情况,普通弯道的下一个路形不是直道就是连续弯道(即S弯),那么,在出弯的程序中加入一个过渡函数,即在一定时间内连续采集路况信息,如果出现偏离量增大或者减小(即没有维持零状态)的情况,那就说明下一路径形状为弯道,而刚才经过的弯道和现在的弯道将构成S弯道.如果在过渡函数执行的过程中,偏离量一直为零或者以零为中心上下波动,那么说明当前的路径形状为直道。3。3转向控制策略经过反复的实验调试,应用PID算法的P控制就完全可以实现对舵机的转向控制。转向控制的方框图如下: 目标位置 P控制 舵机 位置检测 实际位置 图3.
18、3 转向控制的方框图在这里由于在直道要求小车尽量不要产生波动,能够快速的运行,而弯道上则要尽量大的调节以利于转弯,所以,采用分段比例控制,根据偏移量和路形的不同而改变P控制的比例系数Kp。如下图所示:偏移量 转角(度) -40 -15 15 40 11 7 -11 -7 图3.4 舵机转角与小车偏移量示意图在调试的过程中,时常会出现舵机打死现象,往往会使小车停止不动。为此,在转向控制的软件实现上,我们对舵机的控制信号实行了保护措施,即设定了舵机的最大和最小转向角,从而有效的解决了这个问题。3.4 速度检测本设计利用一个圆周分成17分的测速码盘与一个投射式的红外光电传感器组成智能车的测速系统。就
19、相当于小车每前进1cm就会出现上升沿或者下降沿,然后使用HS12上的输入捕捉功能对输入脉冲进行二次捕捉后,可以计算出两次脉冲之间的时间t,从而可以比较精确的计算出小车的速度v。3.5 速度控制策略PID控制算法具有原理简单,易于实现,鲁棒性强和实用面广等优点。即使在过程计算机控制中,PID控制仍然是最广泛的控制算法,使用计算机实现PID控制就不简单是把PID控制规律数字化,而是进一步与与计算机的逻辑功能结合起来,使PID的控制更加灵活多样。PID的作用:(1)比例控制的优点是当误差一旦产生,控制器立即产生控制作用.使被控制量向误差减少方向变化。其缺点是对于阶跃响应的终值为一个有限值时,系统的控
20、制存在稳态误差,加大Kp可减少稳态误差。但Kp过大时,会使动态性能变坏,即产生过多的振荡甚至会使整个闭环系统不稳定。(2)积分控制的优点是能对误差进行积分,有利于消除稳态误差。其缺点是积分具有滞后特性,积分控制作用太强了会使控制的动态性能变差,以至于使系统不稳定。(3)微分控制的优点是能对误差进行微分,迅速地感应出误差的变化趋势。增大微分控制作用可缩短系统响应时间,使超调量减少,增加系统的稳定性。其缺点是它对干扰同样敏感,使系统抗干扰能力降低对于速度的控制采用增量式PID控制,根据测速系统反馈回来的小车当前速度值和系统记录的上两个状态的速度值,从而实现对速度的调节.调速系统框图如下: 路 形
21、目标车速 PID控制 电机 实际速度 测速码盘 图3.5 速度控制方框图增量式PID公式如下:u(n)=Kpe(n)e(n-1)+Ki e(n)+Kde(n)-2e(n1)+e(n2)其中u(n)为第n次输出增量,则u(n+1)- u(n)=u(n),Kp,Ki,Kd分别为P,I,D调节参数,e(n)代表位置偏差.利用HS12单片机的外部捕捉中断和RTI实时中断,可以精确及时的计算出小车的速度并与目标车速进行比较而得出速度偏差,根据当前的速度偏差以及系统记录的上两个状态的速度偏差,利用PID算法即可及时的调节速度。调速系统在此模型车的主要作用就是能够及时的加速减速使其达到理想的速度值,而由直道
22、入弯道时能否快速的使速度降到弯道的速度是保证小车顺利转弯的关键所在。为此,采取过三种减速方式:一是利用H桥驱动电路实行反转点刹制动.这种方式的优点是可以快速的使速度降低到目标值.缺点是由于刹车反应过快,使速度较低到零,然后再重新加速到目标值,这样就浪费了时间.而且这种反转刹车的方式会产生过大的冲击电流,有可能造成单片机的复位和死机。二是利用H桥驱动电路的反转连续刹车,同时利用测速系统对车速进行监控,当达到目标车速时就停止刹车.这种方式能够实现迅速刹车,同时能够解决上述方法的浪费时间的缺点。但是由于降速时间太短,很有可能造成车反转运行在目标车速上。三是利用调速系统进行PID调速来实现降速。这种方
23、式能够实现快速降速,但相对于上两种方式要慢一些。但他却不会出现上述方式的错误现象。综上,采用第三种方式来实现智能车的调速。经过反复的实验,得出尽量增大PID调速系统的比例系数Kp,有利于快速调节速度,但Kp值也不能太大,太大就会造成系统的不稳定。3。6 记忆控制方案由于光电前瞻量的限制使小车不能过早的得知路径的形状,以及舵机的机械延迟性使指令的发出与执行存在滞后,就限制了小车的行驶速度。为了能够再提高小车的运行速度,采用了路径记忆的方法,即小车以稳定的速度跑完第一圈,同时能够可靠准确的记录下跑道的路径信息,这样,在跑第二圈时就能够提前知道前方的路径形状而实现提前对小车采取相应的控制.在这里我们
24、主要采用了记忆跑道中直道的长度;即通过记录测速码盘产生的脉冲数量来记录直道的长度。在第二圈时就可以让小车在直道上全速运行,并根据记录的直道的长度数据来进行提前降速,以利于小车能够顺利转弯.此方案在很大程度上提高了车的平均速度,但是当跑道中直道比较少时,这种方式的提速效果就不明显了.基于记忆控制思想的软件流图如下:图3。6 软件流图第四章 总结及比赛心得本方案的设计中没有对车模做任何的改动,而是按照车模附带的图纸进行的搭建。本设计采用12个光电传感器组成路径检测系统,通过软件配合,可以准确的识别路径信息。采用分段比例控制转向,可以使小车在各种路形上都能稳定的运行.利用投射式光电传感器和码盘组成的
25、测速系统可以精确的测量车速。适当的PID参数使速度可以及时的得到调节。从小车的实际运行情况来看,这套方案基本上是成功的。在赛车调试的过程中,为了便于观察一些重要的数据,我们使用了串口调试软件,可以通过串口线准确的把要知道的数据传到电脑上。还利用了液晶显示装置,可以把小车运行时某一时刻的速度值等数据显示在液晶屏上。通过这些方式,对于调试小车起来很大作用。比赛心得:1)大部分参赛队伍采用的是摄像头检测路面信息,而且效果明显优于光电检测。虽然摄像头检测需要涉及图像处理的问题,算法也会更复杂,但是摄像头是更好的路径检测装置.2)有些参赛队伍对舵机的外部机械结构进行了改动,使舵机的反应速度大大加快,这是
26、个相当好的方法,值得借鉴。3)利用MC33886驱动电机,虽然可以实现基本功能,并且利用两片芯片并联可以有效解决散热问题,但由于芯片本身的限流保护作用,在一定程度上限制了驱动电流,使小车的加速变慢。4)采用记忆策略时,应在第一圈完全的记忆跑道,如果只记忆知道部分,那么对于知道少的跑道,就大大的不利了。5)在比赛前我们做的在制作硬件电路时,要选择质量号的器件,以防止在比赛前出现器件坏掉的危险。参考文献1卓晴,黄开胜,邵贝贝.学做智能车-挑战“飞思卡尔”杯M.北京:北京航空航天大学出版社,2007年3月2 邵贝贝.单片机嵌入式应用的在线开发方法M。北京:清华大学出版社,2004年3 朱玉玺,崔如春
27、,邝小磊.计算机控制技术M。北京:电子工业出版社,2005年 6月4 陶永华.新型PID控制及其应用M。北京:机械工业出版社,2002年10月5 蒋新松智能车学导论M沈阳:辽宁人民出版社,19944204266 诸静智能车与控制技术M杭州:浙江大学出版社,1991710,115126,2222537 Kraus T W, Myron T J。 SelfTuning P I D Controller Uses Pattern Recognation Approach。 Control EngineeringC, 1984 。6: 109-1118 陶永华. PID控制原理和自整定策略C 。工业仪
28、表与自动化装置。1997(4): 6064附录:源代码#include <hidef。h> / common defines and macros /include mc9s12dg128.h /* derivative information */pragma LINK_INFO DERIVATIVE ”mc9s12dg128b"static int sp_e;static int Speed_dtct;static int Speed_set;static int Kp_s;static int Ki; static int Kd;static int inc_mdu
29、ty;static int Mduty;static int x3;static int y;static int AD12;static int conter2;static int sign3;static int flag;static int zkb1;static int SPEED3;static int black,black2,black3;static int Kp;static int sudu1,sudu2,sudu3,sudu4,sudu5;static int timer30;static int pulse;static int end;static int dat
30、e;static int date2;static int circle;void DelayNS(int dly) /输入是1000时大概延时0.75sint i;for(;dly0;dly)for(i=0;i1000;i+);void ini_port(void) DDRA=0XEF; PORTA=0XFF; void ini_ad(void) ATD0CTL2=0xC0; / AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 ATD0CTL3=0x20; / 每个序列4次转换, No FIFO, Freeze模式下继续转换 ATD0CTL4=0x83; / 8位精度,
31、2个时钟, ATDClock=BusClock0.5/PRS+1 ; PRS=5, ATD1CTL2=0xC0; / AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 ATD1CTL3=0x20; / 每个序列4次转换, No FIFO, Freeze模式下继续转换 ATD1CTL4=0x83; / 8位精度, 2个时钟, ATDClock=BusClock0.5/PRS+1 ; PRS=5, ATD0DIEN=0x00; / 禁止数字输入 ATD1DIEN=0x00; / 禁止数字输入 void AD_caiji_12(void) int i; black2=0; blac
32、k3=0; for(i=0;i<=7;i+) ADi=0; ATD1CTL5=(i+128); while(!(ATD1STAT1 0x01)); ADi = ATD1DR0L; for(i=0;i<=3;i+) ADi+8=0; ATD0CTL5=(i+128); while(!(ATD0STAT1 0x01); ADi+8 = ATD0DR0L; if(AD0>100)AD0=0; else AD0=11;black2=black2+1; if(AD1>100)AD1=0; else AD1=-9;black2=black2+1; if(AD2100)AD2=0;
33、else AD2=7;black2=black2+1; if(AD3100)AD3=0; else AD3=5;black2=black2+1;black3=black3+1; if(AD4100)AD4=0; else AD4=3;black2=black2+1;black3=black3+1; if(AD5>100)AD5=0; else AD5=1;black2=black2+1;black3=black3+1; if(AD6100)AD6=0; else AD6=1;black2=black2+1;black3=black3+1; if(AD7100)AD7=0; else AD
34、7=3;black2=black2+1;black3=black3+1; if(AD8>100)AD8=0; else AD8=5;black2=black2+1;black3=black3+1; if(AD9100)AD9=0; else AD9=7;black2=black2+1; if(AD10>100)AD10=0; else AD10=9;black2=black2+1; if(AD11100)AD11=0; else AD11=11;black2=black2+1; void SCI0Init(void) SCI0BDL = (unsigned char)((16000
35、000UL /* OSC freq / / 2) / 9600 / baud rate */ / 16 /*factor*/); SCI0CR2 = 0x0C;void SCI_AD(void) SCI0Init(); while (!(SCI0SR1 & 0x80); SCI0DRL = timer0; while (!(SCI0SR1 & 0x80)); SCI0DRL = timer1; while (!(SCI0SR1 0x80)); SCI0DRL = timer2; while (!(SCI0SR1 & 0x80); SCI0DRL = timer3; wh
36、ile (!(SCI0SR1 0x80); SCI0DRL = timer4; while (!(SCI0SR1 0x80)); SCI0DRL = timer5; while (!(SCI0SR1 & 0x80); SCI0DRL = timer6; int zuobiao() int z,k; AD_caiji_12(); black=0; for(k=0;k<=11;k+) if(abs(ADkx0)3) ADk=0; if(ADk>0)black=black+1; z=0; /注意重新赋初值 for(k=0;k<=11;k+) z=z+ADk; /y小车位置坐
37、标 if(black=4)z=x0; if(black=3)z=z/3; if(black=2)z=z/2; if(z=0) if(x0>9)z=11; else if(x0<9) z=0; else z=x0; return(z); void ini_pwm() PWMCLK=0x00; /选该2通道的时钟源为B,0,1通道为A PWMPOL=0x03;/0,1通道高电平开始 PWMPRCLK=0x23; /决定时钟A或B的频率(B是总线的1/4,A是1/8) PWMCNT7=0;/计数器清0 PWMCNT6=0;/计数器清0 PWMCNT2=0;/计数器清0 PWMCNT1=0
38、;/计数器清0 PWMCTL=0x10;/0,1级联 void PWM0(int duty) /启动函数:通过duty值改变速度 PWMDTY0=duty/256; PWMDTY1=duty%256; PWMPER0=39; /set period PWMPER1=16; /value as 10000PWME=0x03; /选通PWM的0,1通道 void PWM1(int duty) PWMDTY0=duty/256; PWMDTY1=duty%256; PWMPER0=39; /set period PWMPER1=16; /value as 10000PWME=0x43; /选通PWM
39、的0,1,6通道 void PWM6(int duty) /通过duty值改变速度PWMDTY6=duty; /改变占空比duty/200PWMPER6=0xc8; /周期200PWME=0x43; void PWM7(int duty) /通过duty值改变速度PWMDTY7=duty; /改变占空比duty/200PWMPER7=0xc8;/周期200PWME=0x83;ini_speed() /测速初始化 CRGINT =0X00; /屏蔽rti中断 RTICTL = 0X49; /分频100HZ CRGFLG = 0X80; /清零 TCTL4 = 0X01; /上升沿选择,输入捕捉器
40、0使能 TSCR2 = 0x06; /将计数时钟周期设为16微秒 ICSYS_BUFEN=1; /使能保持寄存器 ICSYS_LATQ =0; /队列模式 DLYCT = 0x02; /防止毛刺 TIE=1; CRGINT = 0x80; TSCR1 = 0x80; #pragma CODE_SEG _NEAR_SEG NON_BANKED /测速子模块 void interrupt 8 timer4speed(void) TFLG1=1; if(TC0>TC0H)sp_e=TC0TC0H; else sp_e=65535-TC0H+TC0; Speed_dtct=12500/sp_e;
41、 pulse=pulse+1; #pragma CODE_SEG _NEAR_SEG NON_BANKED /调速子模块void interrupt 7 rti(void) Kp_s=15; Ki=3; Kd=0; CRGFLG = 0X80; /清零 SPEED0=Speed_setSpeed_dtct; inc_mduty=Kp_s(SPEED0SPEED1)+Ki*SPEED0+Kd(SPEED02*SPEED1+SPEED2); Mduty=Mduty+inc_mduty; if(Mduty=200)Mduty=200; if(Mduty=0)Mduty=10; PWM7(0); PW
42、M6(Mduty); SPEED2=SPEED1; SPEED1=SPEED0; int transition() int i; PORTA_BIT6=1; /路径指示灯 PORTA_BIT7=1; Kp=20; flag=0; PWM1(1490); for(i=0;i<=450;i+) y=zuobiao(); if(y3) /判断是否有入右弯道的趋势 conter0=7; conter1=0; PORTA_BIT6=1; /路径指示灯 PORTA_BIT7=0; sign0=1; sign1=0; sign2=1; flag=1; break; if(y<-3) /判断是否有
43、入左弯道的趋势 conter0=0; conter1=7; PORTA_BIT6=0; /路径指示灯 PORTA_BIT7=1; sign0=1; sign1=1; sign2=0; flag=1; break; zkb1=1490+Kp*y; PWM1(zkb1); x2=x1; x1=x0; x0=y; if(flag=0) / Kp=10; if(circle=2) if(timerdate>50) Speed_set=sudu1; else Speed_set=sudu5; date2=date2+1; conter0=0; / 入直道 conter1=0; PORTA_BIT6
44、=0; / 路径指示灯 PORTA_BIT7=0; sign0=1; sign1=0; sign2=0; pulse=0; void qipaoxian() / 区分起跑线和十字交叉线 int i; for(i=0;i<=100;i+) if(black3=6) DelayNS(80);break; y=zuobiao(); if(black36) circle=circle+1; timerdate=pulse25/100; pulse=0;end=date; date=0; if(circle=2)Speed_set=sudu1;void fir_cir() if(y>=5si
45、gn1=0) PORTA_BIT6=1; / 路径指示灯 PORTA_BIT7=0; conter0=0; conter1=0; Kp=23; if(flag=0) timerdate=pulse*25/100; date=date+1; pulse=0; Kp=30; sign0=0; sign1=1; sign2=0; flag=1; if(y<=-5sign2=0) PORTA_BIT6=0; / 路径指示灯 PORTA_BIT7=1; conter1=0; conter0=0; Kp=23; if(flag=0) timerdate=pulse*25/100; date=date+1; pulse=0; Kp=30; sign0=0; sign1=0; sign2=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《密封件基础知识》课件
- 2024年贵州建设职业技术学院单招职业技能测试题库标准卷
- 单位管理制度集合大全人事管理十篇
- 单位管理制度汇编大全人事管理
- 单位管理制度合并汇编【人员管理】
- 单位管理制度呈现汇编职工管理篇十篇
- 单位管理制度呈现大全人员管理
- 《矿山劳动卫生》课件
- 《生活中的问题》课件
- 《安全防护栏标准》课件
- “双减”背景下小学数学“教、学、评”一体化的思考与实践
- 中外美术评析与欣赏智慧树知到期末考试答案章节答案2024年湖南大学
- 事业单位考试《综合知识和能力测试》试卷
- 福利住房与购房补贴制度
- 康师傅乌龙茗茶营销策划书
- 【川教版】《生命 生态 安全》四上第13课《预防冻疮》课件
- 工厂筹建方案
- UPVC管道安装施工方法
- 河南省郑州高新技术产业开发区2023-2024学年三年级上学期1月期末科学试题
- 女装行业退货率分析
- 计算机基础理论-进制的概念及换算试题及答案
评论
0/150
提交评论