版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告学校:同济大学队伍名称:Inspiring队参赛队员:张良潘明刘莉带队教师:朱劲关于技术报告和研究论文使用授权的说明本人完全了解第三届全国大学生“飞思卡尔”杯智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 摘要本文以第五届全国大学生智能车竞赛为背景,介绍了智能赛车设计、制作的技术信息。该比赛采用大赛组委会统一提供的1:10仿真车模,以Freescale半导体公司生产的16位单片机MC9S12XS128为核心控制器,采用CodewarriorIDE5.1作为开发环境,自主构思控制策略和算法结构,硬件上采用MC33886用两路PWM波控制电机,并另起一路PWM波控制转向舵机,传感器采用普通工字电感构成谐振回路,通过感应赛道导线上方的磁场,控制规定车模在50cm宽的赛道上稳定行驶。硬件上通过对汽车动力学理论的学习来优化智能车的机械结构,软件上通过对PID控制,Bang-Bang控制,以及模糊控制等理论的综合运用协调,来提高智能车的速度和鲁棒性。关键词:智能车单片机电磁导航PID控制器ABSTRACTThisarticleintroducestheinformationaboutdesigningandmakingthecarinthebackgroundofthe5thNationalIntelligentCarContestforCollegeStudents.Thiscontestadopting1/10EPon-racingcarprescribedbythecontestorganizationcommittee,Usingtheprovided16bitMCUMC9S12XS128offreescalecorporationasthemaincontroller,selectingtheCodewarriorIDE5.1asthedevelopmentenvironment,designthetactics.UsingtheMC33886tocontrolthemotorbytwoPWM-waves,tocontrolthesteeringenginebyonePWM-Wave.AdoptingthenormalDRCOREasthesensor,controlthesmartcartorunonthe50cm-wide-trackbyinducingthemagneticfieldabovethewireatthecenterofthetrack.Bystudyingtheautomobiledynamicstooptimizethemechanisminthehardwareandthecombinationofdifferentcontrol-theoriessuchasPIDcontrolandBang-Bangcontrolandfuzzycontrol,wecanmakethesmartcarmoresteadyandmorefastandreachhigherrobustness.【Keyword】Smart-CarMCUElectromagneticNavigationPIDController第一章系统设计概要1.1系统总体框架设计1.2最终设计展示第二章赛车机械设计结构2.1前轮定位在智能车的调试过程中,我们发现其机械结构对于提高车体运行的速度计稳定有相当大的影响。主要为前轮定位问题。前轮定位参数包括:主销后倾、主销内倾、车轮外倾和前束。主销后倾角由于汽车在车轮偏转后会产生一回正力矩,纠正车轮的偏转,后倾角越大,车速越高,车轮偏转后自动回正能力越强。但回正力矩过大将会引起前轮回正过猛,加速前轮摆正,并导致转向沉重。通常后倾角值应设定在1-3度。主销内倾角前轮的主销轴线与地面垂直线在汽车横向断面内的夹角,称为“主销内倾角”。主销内倾角也有使车轮自动回正的作用。当转向轮在外力作用下发生偏转时,由于主销内倾的原因,车轮连同整个汽车的前部将被抬起一定高度;当外力消失后,车轮就会在重力作用下恢复到原来的中间位置。另外主销内倾还会使主销轴线延长线与路面的交点到车轮中心平面的距离减小,同时转向时路面作用在转向轮上的阻力矩也会减小,从而使转向操纵轻便。但是,主销内倾角不宜过大,否则在转向时车轮绕主销偏转的过程中,轮胎与路面间将产生较大的滑动,从而会增加轮胎与路面间的摩擦阻力。这不仅将使转向变得很沉重,还将加速轮胎的磨损。前轮外倾角前轮外倾角即为通过车轮中心的汽车横向平面与车轮平面的交线与地面垂线之间的夹角。如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。所以可事先将车轮校偏一个外八字角度。前轮前束所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线的夹角。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力会自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。在车辆调试中由于模型车在运行过程中轮距变化较大,容易发生侧滑,如果主销内倾角调节过大的话会增加产生侧滑的可能性。在车辆调试中将其将其设为度。主销后倾角可通过增减垫片的数量来进行调节。我们使用前后垫片为1:3,即前一后三,使其倾角为负。这样可以减少回力矩的作用,使转向更为灵活。前轮外倾角可通过调节车体连接到车轮上的连杆长度进行调节。该角度需要与前轮前束相互配合。前轮前束可以通过调节舵机连接到车轮上的连杆长度进行调节,大约为1度。在车辆调试中,改装舵机安装方式使得转向对称并且易于前轮前束的调节。在模型车的调试过程中发现,前轮前束和前轮外倾角的调节主要会影响到车辆的回正以及转弯性能,所以机械调节的重点是对前轮前束和前轮外倾角的调节。最终本车采用了“前轮负外倾加前轮签束”的方案,通过不断的调试,在两者配合得刚好的时候,可以使得在保证汽车高速转向安全性的同时消除转向的侧向力。2.2重心位置重心位置的改变会影响汽车的动力性、制动性、操纵稳定性、平顺性、通过性和舒适性等重要特性。由汽车理论可以知道,重心位置必须保证驱动轮能够提供足够的附着力,因此,重心应靠近驱动轴;重心前移会使后轴侧滑,重心后移会使前轮丧失转向能力。因此,重心靠近后轴,对模型车动力性能有益;重心靠近前轴,对模型车的制动性和操纵稳定性有益。2.3传感器定位由于今年电磁组采用的是电感线圈感应磁场,在方案在导致了电磁组是没有前瞻的,只能通过在不超过整车的长度的前提下尽量将传感器向前伸出,并且在同一排上通过并排6个电磁传感器来实现横向上对整个50cm赛道的覆盖,但是这样的后果也就是让整车的重心前移,使得车的稳定性下降,而且由于整车频繁的加减速会带动后轮的抖动,进而带动整车的抖动和前排传感器的抖动,所以将传感器板进行四点定位,通过找到合适的定位点打孔,最大可能的增强传感器板的稳定性,进而减少因抖动而带来的传感器信号的波动。布局如图所示:2.4后轮差速调整差速机构的作用是在车模转弯的时候,降低后轮与地面之间的滑动;并且还可以保证在轮胎抱死的情况下不会损害到电机。当车辆在正常的过弯行进中,此时4个轮子的转速(轮速)皆不相同,依序为:外侧前轮>外侧后轮>内侧前轮>内侧后轮。此次所使用车模配备的是后轮差速机构。差速器的特性是:阻力越大的一侧,驱动齿轮的转速越低;而阻力越小的一侧,驱动齿轮的转速越高。在差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低,转弯时阻力小的车轮会打滑,从而影响车模的过弯性能。好的差速机构,在电机不转的情况下,右轮向前转过的角度与左轮向后转过的角度之间误差很小,不会有迟滞或者过转动情况发生。为达到此效果,调节方法如下:把小车的电池装上(主要是为了使用小车达到它的正常行驶重量);用一个夹子把小车的大传动齿轮夹紧,使其不能转动;把小车放在标准的赛道上用小水平向前的拉力拉动小车,观察后轮相对地面的滑动情况;调节后轮轴上的螺母,使小车的后轮刚好与地面相对半滑动为最佳。这样小车在入弯道时既能快速减速,又不会因为刹车时车轮抱死而失去方向的可控性。第三章赛车系统硬件设计3.1最小系统版模块系统版我们采用实验室自己开发的XS128整合版,上面集成了串口,RS232电平转换芯片以及245缓冲器,并一共引出108个引脚,包括ABEK四个普通I/O口,SCI1,SCI2两个串口接口,AN0到AN1516路AD输入口,PORTM作为拨码开关接入,方便直接离线在外部设置智能车的部分参数。图3.2最小系统版3.2电源管理模块由于现在本车只需要2种电压,电池电压直接给舵机供电,5V电压给其他所有模块供电,所以电源模块只需要一个5V稳压就行,在选材上我们采用了最常用的LM2596进行5V稳压,LM2596具有纹波小,压降低的特点,非常适合作稳压模块对单片机以及传感器供电。其电路图为:电源管理模块原理图3.3电磁赛道电源模块电磁电源模块原理图如图:电源模块采用NE555起振产生20KHZ方波,方波的频率为:F=1.443/(RA+2RB)*C10这里RA=R1,RB为滑变接入部分的阻值大小,因此必须要不断的调节C10的值来得到最优的波形,首先如果C10太小,在同等条件下会需要RB很大,同时,C10若很大,波形的畸变又会比较严重。因此此参数必须在PCB板生产出来以后不断的更换和尝试,直到用示波器看到满意的波形。3.4寻迹传感器模块组委会规定本次电磁组竞赛车模需要能够通过自动识别赛道中心线位置处由通有100mA交变电流的导线所产生的电磁场进行路径检测。可首先讨论赛道上的直道部分(弯道可以看作很多小直道微元的积分,故只要直道研究透彻,弯道就可以迎刃而解),如图:图2.2无限长直导线周围的磁场[5]利用毕奥-萨伐尔原理可计算得到:无限长直导线通以恒定电流I的时候周围的磁场为:(2-1)下面在计算放置在无限长直导线周围的电感线圈能感应出的电动势:图2.3导线周围磁场分布根据法拉第定律:(2-2)将线圈内部小范围内磁场近似认为是均匀分布的,将会得到(2-3)即导线周围放置的线圈感应出来的磁场与导线到线圈的直线距离成反比。因此根据此种特性即可制作出电磁感应传感器。本设计采用LC谐振放大整流的方法来得到最终的信号。首先通过一级LC的谐振,达到一个初步的选频滤波功能,即只感应20KHZ的电流产生的交流磁场,感应信号为正弦波,其幅值随着导线到传感器的距离而变化,后面接到运放做交流放大,放大倍数定为91倍,放大信号出来用二极管做整流,以后再接一级RC滤波稳定纹波后得到最终的输出。测试效果为:在导线上方大概8cm高的时候感应最大值还能达到2.5V左右,在导线两边顺次衰减,单个传感器检测范围达到10cm,纹波仅为80mV,效果非常让人满意。3.5电机驱动模块 电机驱动采用3片MC33886并联,并且在绘制PCB图的时候严格控制电流输出信号线的宽度,最大程度增加驱动能力。图3.4电机驱动模块第四章智能车软件设计4.1总体流程简图循环分析,决定舵机给定,速度给定速度闭环控制车速检测道路信息检测延时2s后智能车自启动单片机各个模块初始化循环分析,决定舵机给定,速度给定速度闭环控制车速检测道路信息检测延时2s后智能车自启动单片机各个模块初始化 图4.1电磁小车系统简图4.2输入量检测4.2.1速度检测voidinterrupt66PTI0(void){speed_back=PACNTL;PACNT=0;PITTF_PTF0=1;}通过中断设置,将每个10ms内检测到的脉冲数取出,该数与车速成正比,考虑到本系统对速度反馈的需求只是需要给单片机提供一个决策的依据,而并不需要得到具体的速度数值,因此程序里面省略了与齿轮传动比,脉冲时间,圈数等有关的系数的计算,直接用与速度成正比的脉冲数作为速度的代表,提供给单片机决策使用。4.2.2位置检测本设计采用在同一排上并排10个电磁传感器来实现路径检测,在程序上通过引入一个自主设计的“查2法”,即在10个传感器中查找返回值最大的2个传感器,则导线必定处于该两个传感器中间,然后再在这中间利用两个传感器的差值作细分,可以得到不同的分组,最后根据分组决定舵机量的给定,其实就是一个典型的模糊控制表[6]的建立,大体上结合每个传感器的值根据其幅值大小将车体位置和导线的关系令为“极左偏,左偏3,左偏2,左偏1,正中,右偏1,右偏2,右偏3,极右偏”等,具体程序略。主程序每调用一次该程序,都会查询出该时刻返回值最大的两个传感器,再结合下面的路径定位程序,得到具体的路径编码road1[0],该编码值为0到22之间的自然数,即为车体与赛道偏离程序的模糊量,0表示车体极左偏离赛道中心黑线,22表示极右偏离。最后利用查表法调出事先存好的舵机量的表PWM67[road1[0]],通过不断的修改该表,使得整车在不同的弯道上得到最大的过弯圆滑度。4.3策略与控制量计算4.3.1车速控制目前在智能车领域用得最多的速度闭环控制方法无非几种:PD控制,PI控制,PID控制和Bang-Bang控制,在试验了PID控制和Bang-Bang控制的结果后,发现Bang-Bang控制[7]有着最快的反应速度,再加上减速时候采用电机第二象限运行的反接制动,能让小车在牺牲一点调速过冲的前提下得到最快速的加减速性能,最后由于考虑到电磁小车并没有前瞻,所以更需要良好的减速性能来增加其直道入弯的安全系数。因此本设计最终采用了Bang-Bang控制作为智能车的速度控制策略。4.3.2滤波策略在经过无数次的实验以后,我们发现即使使用10个传感器,当车身严重偏离导线的时候,信号还是会有误差。这一点“在工程上是正常的,再为优秀的理论方法在运用到实际中时总会因为噪声影响产生误差,这时,我们需要做的就是滤波”,因此必须引入良好的纠错机制,如果不给予纠正,会让智能车作出错误的判断,从而给出错误的舵机量,因此必须在这种时候引入滤波程序。本程序在多处嵌入式的引入了不同的滤波策略,比如在路径定位中引入:if(sensor[max1]<0X20&&sensor[max2]<0X20){if(sensor[0]>0X15&&sensor[9]<0X15)road1[0]=0;elseif(sensor[0]<0X15&&sensor[9]>0X15)road1[0]=20;elseroad1[0]=road1[1];PWMDTY67=PWM67[road1[0]];这里就是发现当车的最右边传感器向左偏离导线5cm或者最左边传感器向右偏离导线5cm以后,就会使得所有传感器的信号大部分都是噪声,因而不能用这个信号来做路径判断,于是我们再程序中引入判断,当所有的传感器的返回值小于一定阈值以后,进入滤波处理,比如这里的滤波策略就是在开进入危险带(所有传感器返回值小于阈值)的时候就判断看最左和最右的传感器信号是否还正常(实验发现传感器的输出在小于0X10的时候就全部是噪声了,这里留了余量,将阈值定为0X15),如果左边还正常,那说明整车右偏,并且马上将进入全部不正常带,所以这个时候将路径设置为最右组,即认为整车在这个时候应该打向左的最大舵角,使得整车迅速进入正常带,同理可以得到左偏的情况。4.3.3直道策略由于电磁小车的前瞻太近,因此在策略上直道不敢加速太狠,不然直道定会过冲过度或者直接冲出赛道,因此设计程序在判断到直道(road1[0]处于12到15之间)的时候,进行直道计数,该计数值直接代表了在入弯前小车经过了多少长度的直道加速,利用这个参数作为判断依据,若是长直道,入弯时给定较小的速度,若短直道则只可以给定较高的速度。这样能够达到快速性和安全性的双赢。4.3.4弯道策略由于电磁组掌握的信息并不能像摄像头组那样丰富,可以进行赛道类型判断,而电磁组仅仅靠10个离散量,是不能完成那种功能的,因此在弯道上只能通过不断的实验出适合各种弯道的舵机量,然后取一个比较折中的舵机离散表。第五章系统开发与调试5.1调试平台介绍在对程序进行开发和软硬件联调的过程中需要一整套的软件开发与调试工具。在整个程序开发过程中,除采用汇编语言开发的方式外,还可使用Metrowerks公司为MC9S12系列单片机专门提供的全套开发工具(MetrowerksCodewarriorIDE)。这是一套用C语言进行编程的集成开发环境——本设计中智能车系统的软件设计部分就是在此开发环境下完成的。Codewarrior是由Metrowerks公司提供的专门面向Freescale所有MCU与DSP嵌入式应用开发的软件工具。其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C交叉编译器、汇编器、链接器以及调试器。其中在本设计方案中最为重要的部分就是集成开发环境IDE。5.1.1CodeWarriorIDE功能介绍CodeWarriorIDE能够自动检查代码中的语法错误,它通过一个集成的调试器和编辑器来扫描代码,以找到并减少明显的错误,然后编译、链接程序以便计算机能够理解和执行程序。每个应用程序都经过了像CodeWorrior这样的开发工具进行编辑、编译、链接和调试的过程。5.1.2CodeWarriorIDE基本使用方法A运行“开始菜单—>所有程序—>CodeWarriorIDE”,选择“File—>New”,出现如下的对话框:图6-2建立软件环境过程接着选择MC9S12XS128,按照提示选取期望的选项,直至建立工程文件如下:图6-3建立软件环境过程2B打开main.c文件,在提示“/*putyourowncodehere*/”的地方输入源代码。完成之后,点击左边(make)按钮,完成编译与链接。编译好后,会出现“Errors&Warnings”窗口,其中会显示程序中错误和警告信息。在排除所有错误之后,工程就能顺利编译。点击debug,可得:将BDM连接到芯片上,点确认吼即可烧写程序。至此就基本完成了从程序代码编写和设置,到程序烧写的主要过程。这些步骤是开发一个完整工程所必须具备的。5.2串口调试助手安装串口调试助手,点开其主程序界面图5.6串口调试助手将系统版的串口通过“串口-USB”连接到电脑上,并在硬件管理器里面找到相应的COM口,将波特率校验位等设置好,选择“16进制显示”之后便可以将数据从串口传到PC进行分析。非常方便,使用的时候再配合后面购买的无线串口模块,可以实现在车运动中间参数传回电脑,更加为调试提供了无比的便利。第六章总结本文介绍了基于第五届智能车比赛的智能小车制作情况。在历时将近半年的学习备战中,我们学到了很多知识,在此文中均有提及。主要包括:硬件方面:学习并研究了电磁传感器的各种制作方案,对其工作原理及应用有了一定的了解。掌握了各种应用电路的工作原理。软件方面:学习了飞思卡尔S12系列单片的知识,并将其运用在智能车制作上。掌握了编程方法。在控制方面,运用了PID控制和Bang-bang控制,学习并试验了许多控制策略,较好的完成了对舵机和车速的协调控制。在智能车制作及调试阶段,我们投入了很多精力,也得到了回报。小车的最终结果为:可实现自主寻线并沿线进行跑动,可对速度进行闭环控制,并可适应直道,弯道各种赛道,平均速度为2.5m/s.谢辞在本次智能车比赛的准备过程中,我们要由衷地感谢在此项目的进行过程中,曾经关心、帮助、支持过我们的老师和同学。首先,要感谢指导老师朱劲教授。老师在我们整个智能车的制作过程中给予了极大的帮助和时刻的关心,朱老师经常到实验室来和大家一起讨论智能车的设计,从理论上给予了我们很大的技术帮助,朱老师治学严谨的作风,一丝不苟的态度深深的刻入我们心里,指导我们在试验过程中本着严谨求知的态度,每一项都做到最好,从而避免了因为前期没做好后面再赶回来补救的弯路。在此,向朱劲老师致以最衷心的感谢。我们还要感谢同济大学教务处的大力支持。无论是在经费支持,还是在场地提供和各部门协调上,教务处都提供了很大的帮助。最后,感谢历届做智能车比赛的学长,可以说,没有你们的带领,我们的入门将会异常艰难,还要感谢同实验室的其他同学,感谢我们同时工作在这么和谐的实验室。感谢你们在小车制作方面的帮助。附录一赛车主要技术参数项目参数路径检测方法电磁组车模几何尺寸(长、宽)(cm)39.2*24.3电路功耗(w)7.6电路电容总量(uF)1300传感器种类及个数寻线传感器6个光电编码器1个新增加伺服电机个数0赛道信息检测空间精度(mm)0.5赛道信息检测频率(/ms)1车模重量(带有电池)(千克)1.4kg附录二:小车源程序#include<hidef.h>/*commondefinesandmacros*/#include"derivative.h"/*derivative-specificdefinitions*/inti=0;charleft_flag,right_flag;charsensor[10];bytesensor1_temp[4]=0,sensor2_temp[4]=0,sensor3_temp[4]=0,sensor4_temp[4]=0;bytesensor5_temp[4]=0,sensor6_temp[4]=0,sensor7_temp[4]=0,sensor8_temp[4]=0;bytesensor9_temp[4]=0,sensor10_temp[4]=0;unsignedcharroad1[3]={13,13,13};unsignedcharerror[2]=0;unsignedchardanger_1;intspdset;intspeed_back;intmax1,max2;unsignedcharpwm5;//3880wordPWM67[]={3300,3350,3400,3450,3500,3550,3500,3750,3900,3950,4100,4150,4280,4300,4300,4320,4400,4450,4550,4600,4700,4850,4900,4950,5000,5050,5100,5150,};//4750/*wordPWM67_MAX[]={3300,3400,3550,3700,4000,4600,4800,4950,5100,5150};*/#pragmaCODE_SEGDEFAULTvoidPLL_INIT(void)//CPU总线时钟60M{REFDV=0x43;SYNR=0xce;POSTDIV=0x00;//busperiod=16Mhz*(SYNR+1)/(REFDV+1)=60Mwhile(0==CRGFLG_LOCK);//waitforVCOtostablizeCLKSEL=0x80;//openPLL}voiddelay(intms){intm,n;for(m=0;m<1000;m++)for(n=0;n<60*ms;n++);}//////*****************ICO1输入捕捉******************************//////voidECT_INIT(void){//TSCR1=0X08;TCTL4=0X04;//risingedegonlyTIE=0X02;//interruptenableTSCR2=0X02;//TSCR1_TEN=1;//enablethetimerPACTL=0X40;//fallingedge,prescalerfrequence,intterruptenable}///////********************定时中断产生10ms一次的中断*****************///////voidPTI_INIT(void){PITCE_PCE0=1;//chanel0enablePITINTE_PINTE0=1;//interruptenable;PITMTLD0=60;PITLD0=10000;//以上两句定义中断时间为:60*10000/60MHZ=10ms//1000PITCFLMT_PITE=1;//PITenable}/////*************************************************************//////////***AD采样程序,多通道采集,从0通道开始采样在采样9通道后返回**//////////*************************************************************//////////*************************************************************/////voidATD_INIT(){ATD0CTL0=0X09;//wraparoundafterAN9;ATD0CTL1=0X00;//8bit,nodischarge,AN0asexternalsourceATD0CTL2=0X42;//stopmode,fastclear,fallingedge,interruptenableATD0CTL3=0XD0;//rightDJ,continueconvertunderfreezemode,10convertionsperseqATD0CTL4=0X0E;//4clock,convertfrequence=60M/(2*(14+1))=2MATD0CTL5=0X30;//startfromAN0;ATD0DIEN=0X00;//nodigitalbufferinput}voidPWM_INIT(void){PWME=0X00;PWMPOL=0XFF;PWMCLK=0X80;//PP7selectSBasclockPWMPRCLK=0X25;//clockA=60/64,clockB=60/4PWMSCLB=0x03;//SB频率15M/2/3=2.5MPWMCAE=0X00;PWMCTL=0X00;PWMCTL_CON67=1;PWMPER67=25000;//T=10MSPWMDTY67=4300;//360046005380PWMPER4=255;PWMPER5=255;PWMDTY4=0;PWMDTY5=0;PWME=0Xff;}/****************SCI初始化*************************/voidSCI_INIT(void){SCI0BD=391;//60MHZ,9600BAUDSCI0CR1=0X00;//8bitdata,noparity,onestart_bit,onestop_bitSCI0CR2=0X20;}voidsci_send(bytear){SCI0CR2_RE=0;SCI0CR2_TE=1;while(!SCI0SR1_TDRE);SCI0DRL=ar;while(!SCI0SR1_TC);SCI0CR2_TE=0;}charABS(charar,charbr){charresult;if(ar>br)result=ar-br;elseresult=br-ar;returnresult;}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////速度闭环//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////voidspeed(void){intdsp;dsp=spdset-speed_back;//charspddiff;if(dsp>=60){PWMDTY5=250;PWMDTY4=0;}elseif(dsp>=50){PWMDTY5=240;PWMDTY4=0;}elseif(dsp>=40){PWMDTY5=230;PWMDTY4=0;}elseif(dsp>=30){PWMDTY5=220;PWMDTY4=0;}elseif(dsp>=20){PWMDTY5=200;PWMDTY4=0;}elseif(dsp>=10){PWMDTY5=180;PWMDTY4=0;}elseif(dsp<-10){PWMDTY4=250;PWMDTY5=0;}elseif(dsp<-5){PWMDTY4=230;PWMDTY5=0;}else{if(dsp>=0){pwm5=60*ABS(spdset,speed_back);if(pwm5>250)pwm5=250;PWMDTY5=pwm5;PWMDTY4=0;}else{pwm5=8*ABS(spdset,speed_back);if(pwm5>250)pwm5=250;PWMDTY4=pwm5;PWMDTY5=0;}}sci_send(speed_back);sci_send(0XFF);sci_send(spdset);}voidsensor_max(void){intm;max1=0;max2=0;for(m=0;m<10;m++){if(sensor[m]>=sensor[max2]&&sensor[m]<=sensor[max1])max2=m;elseif(sensor[m]>=sensor[max1]){max2=max1;max1=m;}}if(max1==0&&max2==0){max1=0;max2=1;}}///////////////////////////////////////////////////////////////////////////////////////////////////////加减速定位/////////////////////////////////////////////////////////////////////////////////////////////////////////voidmotor(void){if(road1[0]==13||road1[0]==14)spdset=100;elseif(road1[0]>14&&road1[0]<19)spdset=95;elseif(road1[0]>8&&road1[0]<13)spdset=95;elseif(road1[0]==19||road1[0]==8)spdset=90;elseif(road1[0]==20||road1[0]==7)spdset=85;elseif(road1[0]==21||road1[0]==6)spdset=80;elseif(road1[0]>21||road1[0]<6)spdset=70;}//********************************************************************////************************第一排传感器编码******************************////********************************************************************////********************************************************************//voidsensor_1(void){sensor_max();if(sensor[max1]<0X2A&&sensor[max2]<0X2A){if(sensor[0]<0X15&&sensor[9]>0x15)road1[0]=27;elseif(sensor[0]>0X15&&sensor[9]<0x15)road1[0]=0;elseroad1[0]=road1[1];PWMDTY67=PWM67[road1[0]];}else{if(max1==0&&max2==1){if(sensor[1]>=0X15&&sensor[1]<0X1B)road1[0]=0;elseif(sensor[1]>=0X1B&&sensor[1]<0X26)road1[0]=1;elseif(sensor[1]>=0X26&&sensor[1]<0X2D)road1[0]=2;elseif(sensor[1]>=0X2d&&sensor[1]<0X3F)road1[0]=3;elseif(sensor[1]>=0X3F&&sensor[1]<0X53)road1[0]=4;elseif(sensor[1]>=0X53)road1[0]=5;}elseif(max1==1&&max2==0)road1[0]=6;elseif(max1==1&&max2==2)road1[0]=7;elseif(max1==2&&max2==1)road1[0]=8;elseif(max1==2&&max2==3)road1[0]=9;elseif(max1==3&&max2==2)road1[0]=10;elseif(max1==3&&max2==4)road1[0]=11;elseif(max1==4&&max2==3)road1[0]=12;elseif(max1==4&&max2==5)road1[0]=13;//centerelseif(max1==5&&max2==4)road1[0]=14;//centerelseif(max1==5&&max2==6)road1[0]=15;elseif(max1==6&&max2==5)road1[0]=16;elseif(max1==6&&max2==7)road1[0]=17;elseif(max1==7&&max2==6)road1[0]=18;elseif(max1==7&&max2==8)road1[0]=19;elseif(max1==8&&max2==7)road1[0]=20;elseif(max1==8&&max2==9)road1[0]=21;elseif(max1==1&&max2==3)road1[0]=7;elseif(max1==1&&max2==4)road1[0]=7;elseif(max1==2&&max2==0)road1[0]=8;elseif(max1==2&&max2==4)road1[0]=9;elseif(max1==2&&max2==5)road1[0]=9;elseif(max1==3&&max2==1)road1[0]=10;elseif(max1==3&&max2==0)road1[0]=10;elseif(max1==3&&max2==5)road1[0]=11;elseif(max1==3&&max2==6)road1[0]=11;elseif(max1==4&&max2==2)road1[0]=12;elseif(max1==4&&max2==1)road1[0]=12;elseif(max1==4&&max2==6)road1[0]=13;elseif(max1==4&&max2==7)road1[0]=13;elseif(max1==5&&max2==3)road1[0]=14;elseif(max1==5&&max2==2)road1[0]=14;elseif(max1==5&&max2==7)road1[0]=15;elseif(max1==5&&max2==8)road1[0]=15;elseif(max1==6&&max2==4)road1[0]=16;elseif(max1==6&&max2==3)road1[0]=16;elseif(max1==6&&max2==8)road1[0]=17;elseif(max1==6&&max2==9)road1[0]=17;elseif(max1==7&&max2==5)road1[0]=18;elseif(max1==7&&max2==4)road1[0]=18;elseif(max1==7&&max2==9)road1[0]=19;elseif(max1==8&&max2==6)road1[0]=20;elseif(max1==8&&max2==5)road1[0]=20;elseif(max1==9&&max2==7)road1[0]=21;elseif(max1==9&&max2==6)road1[0]=21;elseif(max1==9&&max2==8){if(sensor[8]>0X5B&&sensor[8]<0X5E)road1[0]=22;elseif(sensor[8]>=0X54&&sensor[8]<0X5B)road1[0]=23;elseif(sensor[8]>=0X40&&sensor[8]<0X54)road1[0]=24;elseif(sensor[8]>=0X30&&sensor[8]<0X40)road1[0]=25;elseif(sensor[8]>=0X28&&sensor[8]<0X30)road1[0]=26;elseif(sensor[8]>=0X15&&sensor[8]<0x28)road1[0]=27;}PWMDTY67=PWM67[road1[0]];}road1[2]=road1[1];road1[1]=road1[0];PORTB=road1[0];/*sci_send(sensor[0]);sci_send(sensor[1]);sci_send(sensor[2]);sci_send(sensor[3]);sci_send(sensor[4]);sci_send(sensor[5]);sci_send(sensor[6]);sci_send(sensor[7]);sci_send(sensor[8]);sci_send(sensor[9]);sci_send(0X00);sci_send(max1);sci_send(max2);sci_send(0XFF);*/motor();}/*****************************方向决策函数******************************//*voiddirection(void){sensor_1();PORTB=road1[0];PWMDTY67=PWM67[road1[0]];motor();}*/#pragmaCODE_SEGNON_BANKED#pragmaTRAP_PROCvoidinterrupt22ATD(v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国石灰消化机项目投资可行性研究报告
- 中国高强度瓦楞纸项目投资可行性研究报告
- 专用备捻管行业深度研究报告
- 客户关系管理的多场景工具包
- 企业物流运输管理与成本控制模板
- 中国芯得浸膏项目投资可行性研究报告
- 中国蔬菜保藏项目投资可行性研究报告
- 中国栈板项目投资可行性研究报告
- 2025年高三生物物种形成机制题
- 数控交流稳压电源行业深度研究报告
- 《安全生产考核巡查办法》知识培训
- T-CEPPEA 5002-2019 电力建设项目工程总承包管理规范
- 2025-2030中国节能灶具行业市场深度调研及竞争格局与投资价值预测研究报告
- ktv安全生产实施方案2025安全生产工作方案
- 员工心理健康培训与实施方案
- 中医护理技术操作安全风险
- 2025年城管局事业编试题及答案
- CNAS-CL02-A004:2018 医学实验室质量和能力认可准则在临床免疫学检验领域的应用说明
- 2025年国家普通话水平考核测试标准试卷(共20套)
- 幼儿园一日活动观摩
- 游戏开发者入门作业指导书
评论
0/150
提交评论