单片机控制智能寻迹小车的设计_第1页
单片机控制智能寻迹小车的设计_第2页
单片机控制智能寻迹小车的设计_第3页
单片机控制智能寻迹小车的设计_第4页
单片机控制智能寻迹小车的设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE本科专业职业生涯设计2011届分类号:单位代码: 本科专业职业生涯设计我的工程师之梦——单片机控制智能寻迹小车的设计姓名学号年级2007级专业机械设计制造及其自动化系(院)工学院指导教师2011年3月10日本科专业职业生涯设计PAGEPAGE38本科专业职业生涯设计PAGE目录第一部分 1我的工程师之梦 1一机械行业及机械专业 1二自我评估 1三自我要求 2四确立目标 3五制定行动计划和内容 3六结束语 3第二部分 5单片机控制智能寻迹小车的设计 51智能车机械结构设计 71.1模型车照片 71.2模型车的主要技术参数 71.3车模机械改装 81.3.1前轮定位参数的调整 81.3.2后轮距及后轮差速的调整 81.3.3底盘刚度的调整 82智能车的系统设计 92.1电机的驱动和控制 92.2电源供电模块 102.3传感器的设计与安装 112.3.1红外传感器的设计与安装 112.3.2霍尔传感器的设计与安装 133软件算法分析及设计 153.1概述 153.1.1智能车工作原理 153.1.2系统软件流程图 163.1.3编译及调试平台 163.1.4MC9S12DG128B模块及端口使用 163.2控制算法的选取 173.2.1各种控制算法分析 173.2.2模糊控制算法的优点 173.3行驶策略 173.3.1赛道分析 173.3.2舵机转角控制 183.3.3电机速度控制 193.4信号采样、滤波与处理 193.5小结 204开发工具制作安装及参数测试 214.1软件仿真 214.2路径识别传感器的性能测试 214.3转向性能测试方案 214.3.1测量舵机与转角关系 214.3.2测量转向延时 214.4调试与结果 225总结 24参考文献 25附录源程序代码 26谢辞 40本科专业职业生涯设计本科专业职业生涯设计PAGE39第一部分我的工程师之梦一机械行业及机械专业未来10年将是中国机械行业发展的最佳、最快时期——承接世界制造业的转移,中国正在逐步成为世界工厂。美国、德国、日本、韩国等国家已经进入工业化发展的高技术密集时代与微电子时代,钢铁、机械、化工等重工业正逐渐向发展中国家转移。我国目前经济发展已经过了发展初期,正处于重化工业发展中期。美国、德国的重化工业发展期延续了18年以上,美国、德国、日本、韩国四国重化工业发展期平均延续了12年,由此来看,中国的重化工业发展期将至少延续10年。因此,在未来10年内,国产机械产品的国际竞争力将不断增强,逐步替代进口,并加速出口。目前,中国机械行业中的一些子行业,如,船舶、铁路、集装箱及集装箱起重机制造等已经受益于国际间的产业转移,并将持续受益;电站设备、工程机械、机床等将受益于产业转移,加快出口进程。在工科院校的各个院系中,机械系学生的队伍颇为庞大。这是因为机械专业学科方向比较多,机械类专业下设有机械设计制造及其自动化、材料成型及控制工程、工业设计、过程装备与控制工程、机械工程及自动化、车辆工程、机械电子工程、汽车服务工程、制造自动化与测控技术、微机电系统工程、制造工程等专业,列“家族谱系”的话会是长长的一串。“机械工程”是教育部划定的一级学科,它的基本定义是这样的:机械工程的主要研究领域包括机械的基本理论,各类机械产品及系统的统计方法、制造技术检测与控制、自动化及性能分析与实验研究等。机械类专业日新月异的变化,这个定义没有涵盖。由于应用行业不同,实际上的研究方法也会有很大差别。有些院校以汽车研究见长,有的则在航空航天领域有着不可撼动的地位,还有的院校在机器人制造方面实力超群。机械类专业学生在本科阶段主要接触以下课程:机械制图、理论力学、材料力学、机械原理、机械设计、机械振动、工程材料、制造技术基础、电工学、电子学、计算机硬件技术、机械控制技术等。由于机械类专业的实用性和可操作性很强,在学习过程中各校都会很重视培养学生的动手能力,大家需要参加课程试验设计、金工实习,包括机械基础实验、电工电路设计、机械原理课程设计、机械设计课程设计等。二自我评估我最大的缺点就是意志力薄弱,易随波逐流,没有当机立断的勇气,进入大学我已成人,我想我已认识到缺点,就会时刻在意它。不会让它肆意发展,克服缺点需要战胜自己,只要咬牙坚持就会挺过来,事实上,真正实施时会很痛苦和困难,但我相信自己已成人,相信大学会把自己锻炼成才,凡事我不会气馁,以高标准要求自己,如果发现自己泄气想随大流,要立马找原因并及时解决。既然自己的心黑暗了20年,就给外面的阳光一次机会,打开心窗,重新认识自己,挑战自己。我会主动参加各项社团活动。大胆展示自己动人的一面,我会主动与别人谈话,交流。同时不放松学业,毕竟我仍是一名学生。以学业为主,其它为辅。我会多关注有关交流和演讲的书,多方面训练自己的说话方式和技巧。我有一颗善良且体察入微的心,我会善意帮助别人,诚实了解别人,关心别人。我有一颗容忍的心,凡事以退一步海阔天空为标准。我细心洞察秋毫,所以我会发扬自己的优点。我会非常认真扮演自己的角色。我会从别人的角度思考问题,甚至委屈自己。所以我相信努力的付出,汗水的价值。我会从一点一滴中改善自己,我相信别人说过的一句话:大河里有小鱼,小河里有大鱼.我会珍惜每一次上机机会.所谓江山易改,本性难移。内向并非全是缺点,使我少一份张扬,多一点内敛,但可相应加强与他人的交流沟通,积极参加各种场合各项有益的活动,使自己多一份自信、激扬,少一份沉默、怯场。充分利用一直关心支持我的庞大的亲友团的优势,真心向同学、老师、朋友请教,及时指出自身存在的各种不足并制定出相应计划加以针对改正。我是一个不甘平凡的男生,心中总有一种不服输的信念,我想每天都会是一个崭新的开始,面对新的希望,我没有理由去逃避。当朝霞生起的时候,我会放飞我新一天的希望,晚霞落下的时候,我会收获一天的幸福和快乐.因此,面对未来,我信心十足,不管人生道路何等艰辛,我都会勇敢走下去,直至成功。人的能力如同地下的煤,需要去发现它并开发出来,这样它才有机会发光发热,造福人类社会。世界上没有十全十美的人,每个人都有自己的缺点,我会在成长的过程中克服自己的缺点,作一个乐观、开朗、自信、宽容、真诚的人,有了这些朋友,在通向理想的道路上我在再大的困难面前也会信心百倍的。三自我要求从事机械领域,我应做到以下基本要求和技能:1、掌握高等数学,大学英语等基础知识,公共英语应通过高校英语应用能力四级,具有较好的人文社会科学和管理科学基础与较强的外语、计算机应用能力。2、掌握本专业的技术理论基础知识,包括力学,机械制造,液压与气动,电工与电子,电气控制与PLC、CAD/CAM、计算机网络、数控机床加工与编程以及车间生产管理等基础知识。3、具备较强的自学能力、创新意识和较高的综合素质。现已是大四时期,很快就面临毕业就业了,要充分利用好现在的学习时间,树立个人的职业目标,以勤奋的态度完成学业,虽已通过pro/e和cad高级资格考证,但英语能力要继续加强,以自身所具备的优势,扎实的专业基础在本地公司谋职做一名专业的技术人员。四确立目标我学的是机械设计制造及其自动化专业,通过大学四年的专业学习,我对本专业有了一定的了解,我最大的志向就是从基层干起,慢慢积累经验,不断充实自己,努力成为一名机械工程师。五制定行动计划和内容在校期间,多学习PLC,弱电电器的控制,伺服系统及交流伺服电机的使用,普通强电电路的设计,这些在当前设备及生产线中广泛运用,并且对人才的需求量比较大。熟悉金属材料,金属热处理,及制造工艺,机械设计基础,熟悉autocad,精一门三维设计软件,UG,PRO/E,这些软件在大型机械行业中,包括飞机,汽车等行业中运用非常普遍。实习及工作期间,应端正职业态度。眼下正值求职潮期,像我们大四学生特别迷茫,也特别地忙碌,忙的重心是尽快找到一份好工作。在简历撰写、形象包装、求职技巧等方面,我们花了很多时间和不算少的金钱,以精益求精来增加自己的竞争力,但心里依然没有底。我们希望得到一些求职建议,尤其是技巧方面的。可是需要注意的是,在求职中更重要的是职业心态。成也心态败也心态。求职前要有一个良好的求职心态,克服大学生普遍具有的“高不成,低不就”的现况。一切从基层干起,要不断地充实自己,明确自己的职业目标。更好的实现自己的人生价值。六结束语作为一名大学生,我所拥有的是年轻和知识。年轻也许意味着欠缺经验,但是年轻也意味着热情和活力,我自信能凭自己的能力和学识在毕业以后的工作和生活中克服各种困难,不断实现自己的人生价值和追求的目标。任何目标,只说不做到头来都会是一场空。然而,现实是未知多变的,定出的目标计划随时都可能遭遇问题,要求有清醒的头脑。一个人,若要获得成功,必须拿出勇气,付出努力,拼搏,奋斗。成功,不相信眼泪,未来,要靠自己去拼打!实现目标的历程需要付出艰辛的汗水和不屑的追求,不要因为挫折而畏缩,不要因为失败而一蹶不振,要有屡败屡战的精神,要有越挫越勇的气魄,成功最终会属于你的,每天要对自己说:“我一定能成功,我一定按照目标的规划行动,坚持直到胜利的那一天。”既然选择了认准了是正确的,就要一直走下去。在这里,这份职业生涯规划也差不多落入尾声了,然而,我的正真行动才仅仅开始。现在我要做的是,迈出艰难的一步,朝着这个规划的目标前进,要以满腔的热情去获取最后的胜利。第二部分单片机控制智能寻迹小车的设计摘要本课题来源于“飞思卡尔”杯山东省第一届大学生智能车竞赛,采用飞思卡尔16位微控制器MC9S12DG128B作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等,完成智能车的工程制作及调试。最终完成后的智能车能够自主识别黑色导引线,巡线高速平稳行驶,即使用红外传感器来采集路面信息,得到的数据送到单片机进行A/D转换,单片机根据转换后的数据,通过PWM波控制舵机的转动,通过MC33886控制电机的转动,以达到控制车速的目的。传感器对赛道的信息进行采样后,以电压的形式送给单片机,单片机经过A/D转换后通过对电压进行比较,识别出黑线的位置,以控制舵机的转动,从而达到循迹的目的。该赛车的制作涵盖了控制、模式识别、传感、电子、计算机和机械等多个学科。本次设计就是为了把理论与实际相结合,达到学以致用。关键词:单片机;智能车;传感器;飞思卡尔;C语言ABSTRACTThistopicisderivedfrom"Freescale"cupshandong1stnationaluniversityintelligentcarrace.UsingFreescale16-bitmicrocontrollerMC9S12DG128Basthecorecontrolunit,conceivethecontrolschemeandsystemindependently.Includingsensorsignalacquisitionandprocessing,controlalgorithmandexecution,powersteeringmotordrive,steeringgearcontroletc,toaccomplishtheintelligentvehicleengineeringcapabilitiesanddebugging.Thefinalcarwillrunalongtheblackguidelinewhichcanberecognizedbythecarsmoothlyandfast.Theprinciple:DatadetectedbyinfraredsensorfromtheroadwillbesenttomicrocontrollerforA/Dconversion.Accordingtotheconverteddata,SCMissuePWMwavecontrollingsteeringgearturnstocontrolthecarspeedbyMC33886;Atthesametime,thecollectedinformationwillbesenttoSCMintheformofvoltage.AfterA/Dconversionandcomparisontheguidelinecanbedistinguished,thenthetrackofthecarwillbesettled.Insummary,thisracingcarcoversmultipledisciplinessuchascontrol,patternrecognition,sensors,electronics,computersandmachinery.Throughthisdesign,IcanapplywhatIacquiredincollegetopractice,Ibenefitedalotfromit.Keywords:Microcontroller;intelligentvehicle;sensor;Freescale;Clanguage1智能车机械结构设计1.1模型车照片图1-1模型车照片模型车的主要技术参数项目参数路径检测方法(赛题组)光电组车模几何尺寸(长、宽、高)(毫米)380/231/90车模轴距/轮距(毫米)198/137车模平均电流(匀速行驶)(毫安)1200电路电容总量(微法)传感器种类及个数14个红外传感器1个霍尔器件新增加伺服电机个数0个赛道信息检测空间精度(毫米)19赛道信息检测频率(次/秒)250主要集成电路种类/数量MC33886,LM2596,MAX632,SN74LS373DW车模重量(带有电池)(千克)车模机械改装为了使模型车在直线行驶时稳定,转向轻便、灵敏,转向后能自动回正,并减少轮胎磨损,对其前轮定位,后轮距,后轮差速,底盘刚度进行了调整。1.3.1前轮定位参数的调整前轮定位参数包括:主销后倾、主销内倾、前轮外倾和前束。主销后倾:可以通过改变横臂轴上的4个垫片位置来调整主销后倾角。设置主销后倾角可以使模型车在车轮偏转后,产生一回正力矩,纠正车轮的偏转,速度越高回正力越大。垫片设置为前一后三,即2°~3°。主销内倾:主销内倾角也会使车轮具有自动回正的作用,在转向时轮胎会被抬高,通过重力的作用使其自动回正。主销内倾角设置为0°。前轮外倾和前束:前轮外倾角可以减小转向的阻力,使模型车转向轻便,还可以减少轴承以及锁紧螺母的负荷。在这里前轮外倾角设置为1°。前束是一个与前轮外倾角相对应的参数。通过调整前轮前束可以减小由于前轮外倾带来的转向轮的磨损。在这里前轮前束设置为一个很小的值。1.3.2后轮距及后轮差速的调整大的后轮距可以使模型车行驶更加平稳,不易发生侧滑。因此在这里通过更换调节块而增大了模型车的后轮距。后轮差速对模型车的转弯影响较大。差速的作用是在车模转弯的时候,降低后轮与地面之间的滑动;并且还可以保证在轮胎抱死的情况下不会损害到电机。通过不断的实验与观察,最终将后轮差速调整到较为合适的值,使其在行驶中不易发生侧滑现象,转弯灵活,直道不易摆动。1.3.3底盘刚度的调整通过在后悬挂纵向减震弹簧处增加垫片而增大了弹簧的预紧力,同时还增加了后悬挂横向减震弹簧,从而提高了底盘横向、纵向的刚度,使模型车行驶更加平稳。在调试中还发现在行驶一段时间后,舵机会有少许松动,此后模型车的转向会变得不灵活。因此在这里对舵机进行了加固,避免了因舵机松动而造成的转向延迟。同时还对霍尔器件进行了加固,避免了因霍尔器件抖动而造成的测速不准确。2智能车的系统设计整个系统由主控制模块、电机的驱动和控制模块、电源供电模块、传感器感测模块和舵机控制模块这五个部分构成,系统框图如图所示MCUMCU舵机红外传感器电机霍尔传感器LM2596MC33886直流电源IRF530BDMPC机后轮系统由主控制模块、电机的驱动和控制模块、电源供电模块、传感器感测模块和舵机控制模块这五个部分构成,系统框图如图所示后轮前轮图2-1系统框图2.1电机的驱动和控制电机是小车前行的直接动力源,电机的控制效果直接影响小车的速度以及前行的稳定性。直流电机的控制由单片机的PWM信号来完成,驱动芯片采用飞思卡尔半导体公司的半桥式驱动器MC33886。如图2.1-1所示。该芯片内部具有过流保护电路,刹车效果好,驱动能力强,接口简单易用等特点。其工作电压为5-40V,导通电阻为120mΩ,输入信号为TTL/CMOS,PWM频率小于10KHz。半桥式驱动器MC33886接线图驱动电路由两片MC33886组成,如图2.1-2所示。这样做首先是为了得到更大的驱动能力,其次是减小单片MC33886的发热量。起初采用一片MC33886驱动电机,发现调速时MC33886发热量很大,在这里用两片MC33886来为同一个电机供能,可以有效地减小单片MC33886的功耗,发热现象也可以得到部分缓解。在设计PCB时还要为MC33886添加散热盘,降低其工作时的温度。驱动电路2.2电源供电模块在设计中除了电池通过给定的MC33886来为电机供电之外,还选择了LM2596来为单片机、传感器供电,从LM2596输出的5V电压直接加到单片机和舵机上,而在接传感器电路板的时候,通过MOS管IRF530来使传感器的电源可关断,同样是为了降低功耗。LM2596是150KHz、3A的稳压芯片,我们使用的是其中的LM2596-5.0。其输入电压7V≤VIN≤≤ILOAD≤3A,输出电压为5V,极限状态为VMIN=4.800,VMAX=5.200。LM2596的功率利用率如图2.2-1所示。可以看出,在输入电压VIN=7.2V,输出电流ILOAD=3A时,利用率为77%左右。LM2596的功率利用率2.3传感器的设计与安装在模型车上我们使用了两种传感器,红外传感器和霍尔传感器。霍尔传感器装在后轮上,对智能车的当前速度进行采样读取。红外传感器位于智能车的最前方,起到预先判断路径的作用,我们采用的是反射式红外传感器。2.3.1红外传感器的设计与安装本模型车采用了14对发射/接收管,传感器固定的距离距车模头部约150mm,同时传感器的电路板有一定的角度,增加了车模的前瞻距离。每对发射/接收管都通过图所示的电路接到单片机的AD口上。需要事先对红外传感器进行选择和测试,选择最佳的红外传感器以及最佳的感测距离。我们最终选择的传感器的最佳感应距离为40~80mm,白色感应电压大于4V,黑色感应电压小于0.5V,通过A/D转换后,可以通过PC机很清楚的读出数据,来进行判断,能很好的识别到赛道的变化,具有较高的稳定性。根据图的电路,画出原理图,然后需要设计好红外传感器的摆放位置,我们采用了直线型的摆法,相邻两个红外传感器之间距离为19mm,这样由12对发射/接收管组成的电路板总长度为230mm,不会超过车宽要求。把发射/接收管焊接到电路板上之后,我们自制了一个铝条将PCB板固定在模型车前部。通过调节铝条,可以对发射/接收管的角度以及距地面高度进行调整。2.3.2霍尔传感器的设计与安装霍尔传感器的外形图和与磁场的作用关系霍尔传感器的外形图和与磁场的作用关系如图所示。磁钢用来提供霍尔能感应的磁场,当霍尔元件以切割磁力线的方式相对磁钢运动时,在霍尔输出端口就会有电压输出,所以霍尔传感器和磁钢需要配对使用。霍尔传感器检测转速示意图霍尔传感器检测转速示意图如图所示。在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘外缘附近。圆盘每转动一圈,霍尔传感器便输出一个脉冲。通过单片机测量产生脉冲的频率,就可以得出圆盘的转速。同样道理,根据圆盘(车轮)的转速,再结合圆盘的周长就是计算出物体的位移。如果要增加测量位移的精度,可以在圆盘(车轮)上多增加几个磁钢。霍尔传感器测速电路图霍尔传感器测速电路图如图所示。我们采用了开关型霍尔传感器,霍尔器件的响应速度大约在us量级,对于我们系统中用来测量速度是足够的。车轮的周长约为15cm,添加多个磁钢能够更好的反映速度的变化,根据车模的结构,我们选用了12个磁钢,可以对速度做出很精确地判断。我们安装的时候霍尔传感器与磁钢的距离为5mm左右,在测试时,传感器的输出高电平为5V,低电平为0.02V,效果很好。3软件算法分析及设计在软件调试方面,我们使用的是CodeWarrior,使用Windows下的超级终端软件实现PC机与开发板的通信,通过RS-232串行电缆往单片机烧写程序。部分程序源代码见附录A。智能车控制算法,是影响智能车运动的重要因素之一,在输入信号有限的条件下,运用一种行之有效的算法,对于提高智能车的运动性能,有着重要的作用。3.1概述3.1.1智能车工作原理在每个运算周期内,控制器即时地得到智能车车速以及传感器采样来的信号,经过控制算法的计算后,控制单元输出相应的前轮控制转角以及电机占空比的值,其输出值再经过函数映射关系转换为PWM脉宽信号传至前轮舵机以及驱动电机,从而实现一个周期的控制。由于赛车采用一字型光电传感器传感,输入信号简单明确,信号抗干扰能力强,但赛车对于未来的道路,是未知的,即前瞻性有限。根据赛车下的黑线,可以判断赛车在道路中的位置。通过对传感器的采样,可以分析出智能车相对于黑线的水平偏移量(如图2.1所示)。通过将赛车平滑地控制在黑线(黑点)上(水平偏移量为0),从而达到良好的控制效果。由此,我们可以抽象出系统的数学模型,如图3.1所示:图3.通过调整赛车的转向角,可以调整赛车的水平偏移量。转向角越大,水平偏移速度越大。所以,调整赛车转向角可以看成是调整赛车水平偏移量与水平偏移速度的映射。3.1.2系统软件流程图3.1.3编译及调试平台(1)编译软件:Metrowerks,CodeWarrior4.5。(2)调试工具:RS-232串行电缆。(3)调试系统:P42.4GHz,1GRAM,WindowsXP超级终端。MC9S12DG128B模块及端口使用(1)时钟模块:产生实时中断。(2)定时器模块:使用3个输入捕捉通道。1个用于测速,2个用于光电传感器检测路线。(3)PWM模块:使用3个通道。一个16位输出由于舵机控制,2个8位用于电动机控制。(4)A端口及B端口:拨盘开关与LED显示的数据。(5)串口模块:在调试中使用,用于向电脑传送记录的信息。3.2控制算法的选取3.2.1各种控制算法分析目前,人们所采用的自动控制方法大致分为三种:经典控制、现代控制和智能控制。经典控制是人们常用的控制方法,但是这种控制方法只能解决线性定常系统的控制问题。经典控制方法是以传递函数为基础实现的。一般的工业生产过程较多属于线性定常系统。故可以用经典控制方法来控制,经典控制方法最典型的就是PID控制方法。其调节品质取决于PID控制器各个参数的整定。现代控制理论可以解决时变系统的控制问题,在时变系统中,输入量和输出量的关系随时间的变化而变化。现代控制方法是以状态方程为基础实现。智能控制是制动控制发展的高级阶段,是人工智能控制论、系统论和信息论的多种学科的高度综合与集成,是一门新的交叉前沿学科。智能控制算一类无需人的干预就能够独立的驱动智能机器实现其目标的智能控制。3.2.2模糊控制算法的优点不管是经典控制还是现代控制方法,都要求建立一套精确的数学模型才能执行控制,如果没有数学模型,它们对系统就无能为力了。然而在实际中,有些复杂过程是难以求取数学模型或根本无法求取其数学模型的。智能控制方法是利用人的经验来控制复杂的过程的一种方法,目前还在不断完善和发展之中。智能控制方法中的一种模糊控制就比较适合智能车的控制。它有如下几个优点:(1)无需预先知道被控对象的精确数学模型。(2)由于控制规则是以人的经验总结出来条件语句表示的,容易掌握。(3)对被控对象的参数变化有较强的鲁棒性。(4)由于表示控制知识是以人的语言形式,故有利于人机对话和系统的知识处理,从而有利于系统处理的灵活性和机动性。3.3行驶策略3.3.1赛道分析经分析,赛道大致分以下①、②、③1赛道分析要使车沿黑线行驶,最主要的是保证车的稳定。此要保证两个方面:舵机的灵敏度和车的速度控制的稳定。在小车基本在线上运动时以高速行驶,车偏离线时,减速以调整车的方向。经分析,要求的是:(1)当黑线位于车中间时,即中间2个传感器探测到黑线时,以高速行驶。(2)在拐弯时有强减速。防止冲出赛道,减速后能够迅速拐弯。(3)在连续弯路线上能够减速以保证速度稳定。此时黑线位置在传感器探头移动的特点是左右大幅度摆动,根据这一特点可以判断连续弯的情况并采取相应的多弯运行策略使小车能稳定跟踪黑线运行。3.3.2舵机转角控制针对赛道的不同情况,分别采用以下三种不同的舵机转角策略。第一种是对应比例控制。概述:在舵机转角范围内(从左四十度到右四十度)划分出23个转角值,并根据14个光电传感器的接收信号(同样分为23种情况)进行一对一的赋值。其中为了避免小车入直道,以及在直道内的抖动,我们对于中间的五个转角值进行了处理,但总体而言这类的控制方式的基本思想便是,舵机总是跟着黑线走。优点:简单,不易出错;在小车低速行驶时能很好的沿着赛道行驶。缺点:一旦小车的速度提升到一定的程度后,在高速入弯的情况下容易冲出赛道。适用范围:用于记忆赛道的低速圈;连续的低速弯角(如:小S弯)。第二种是差分趋势控制。概述:在对应比例控制的基础上,根据最近三次光电传感器测到的黑线位置,推算出黑线的运动趋势。通过改变舵机的转角,使得黑线的变化趋势减小并且黑线的位置总处于小车的正前方。优点:前瞻性强,在小车高速行驶时能从容地应付急弯、大S弯等多种弯角。缺点:直道的直线性不强;在高速入小S弯的情况下仍旧容易损失速度甚至冲出赛道。适用范围:配合记忆算法使用。第三种是小转角控制。概述:在对应比例控制的基础上,相应减小舵机的转角值,从而应对小S弯内的速度损失问题。优点:能高速稳定地过小S弯。缺点:应激性不强。适用范围:仅适用于直道入小S弯这一种情况,需配合记忆算法使用。3.3.3电机速度控制根据黑线在传感器上的位置,我们由中间向两侧分为了直线区、小偏区、中偏区和大偏区。在直线区:小车高档加速,并且清空所用的刹车寄存器。在运用记忆的情况下,因为能提前预知直道长度,小车会使用满档加速。在小偏区:小车高档加速。但如果是由直道区进入小偏区,那么便会进行跳变刹车。在中偏区:小车高档加速。但如果是由直道区进入小偏区,那么便会进行跳变刹车。此外,根据进入中偏区的车速不同,入弯刹车寄存器内会被赋上不同的值,但不会进行刹车。在大偏区:小车先根据入弯刹车寄存器内的值进行入弯刹车,而后高档加速。特殊情况:如果小车检测到的黑线在光电传感器上出现跳变,那么便会进行跳变刹车。如果小车车速超过极限速度,那么就会减速。如果小车长时间处于弯角或速度偏低,便会自动屏蔽所有刹车开始加速。3.4信号采样、滤波与处理在调试的过程中发现,车子不明原因的冲出赛道,A/D采样出现了一定概率的错误,根据分析,采用软件滤波的方法,使用限幅滤波技术使得的系统具有纠错能力。定义一个16位的整数,保存传感器采样的结果,1表示黑线,0表示白线。限幅滤波技术,即在相邻两次传感器信号之间,限定一个范围。如果下一次的采样信号超过了规定的范围,则表示有干扰,过滤掉。具体方法是,通过上次的传感器的值,制作一个过滤层,如:上次传感器的值是000001000000,根据多次数据表明,经过4ms后,黑线不会跳跃N传感器的距离。设000111110000是过滤层,1就表示下一刻信号可能出现在这些位置,0就表示黑线在下一刻不可能出现的位置。再用过滤层和信号采样结果进行与运算,得到另一个16位的整数。考虑到一个最坏情况,即干扰信号没有被排除掉,比如出现了如000101000000这样的信号。所以,在滤波后,还要对过滤后的信号进行排错,如果是错误信号,则本次采样不成功,沿用上一个4ms时的采样值。由于模糊控制单元是对赛车的偏移量进行控制,所以传感器信号要处理成水平偏移量的值X0。由于的“一”3.5小结智能车的软件设计的核心思想是简洁有效。首先,由于直接通过电路将黑白路面情况转换为高低电平值,因此采用中断响应的方式处理探测赛道位置,其优点为,一、有利于节省处理器的时间,也不存在处理器定时查询路面信息要考虑的检测频率的问题;二,信号处理简便,只要判断高低电平即可知道黑线的位置,省去了AD转换与处理的时间。同时,由于这种方式比较简单,路面检测精度有限,在软件设计上也结合了一些其它的方式,比如通过定时器检测中断响应的间隔可一定程度上反映黑线的移动速度等等。这样就能得到更多的路面信息情况,有利于控制效果的提升。在方向与车速的控制上,不再是简单的通过黑线的位置线性地或是乘以某一权值后再给定舵机转角与车速,而是在位置式的基础上将其它检测信号通过相应的公式综合起来最终得到合适的给定信号。另外,参数给定的公式也不是一成不变的,小车也会根据传感器的信号对路面进行判断,区分直道,弯道,连续弯等情况,不同的赛道情况采用的公式也是不同的。这样,就大大提高了赛车的适应性,在各种赛道上均能很好达到要求,且使车速得到优化。4开发工具制作安装及参数测试4.1软件仿真采用Plastid系统仿真软件,主要做了控制算法的仿真实验,验证并改进控制算法。由于应用程序采用C语言编写,为方便移植,采用了Plastid提供的C结点仿真方案。将用C编写好的应用程序进行适当的修改,在VisualStudioIDE将其编译为dll文件。加载赛道与赛车文件,Plastid仿真时自动调用该dll,即时地输入变量(传感器的值、车速),经dll运算得出控制量并输送给Plastid仿真循环。经过分析仿真的结果,优化了控制算法。4.2路径识别传感器的性能测试为测试传感器的性能,设计了AD采样电路。将各接收管的输出端接到单片机的AD模块输入脚,测量其电压值。每次测量时,循环读取各AD数据寄存器的值,重复读四次,得到每个接收管的四个电压值,使用平均值滤波法计算均值,作为本次测量接收管的电压值。每两次测量间隔约50ms,每次试验采集1000组数据。将采用的数据通过串口传给PC机,使用Excel软件进行分析和绘图。4.3转向性能测试方案4.3.1测量舵机与转角关系因为不同的舵机对应相同的PWM占空比参数得到的车轮转角是不同的,所以设计了这个测量舵机与转角关系的实验。具体方案如下:在设定好PWM参数后,仅调整PWM的占空比,其他参数保持不变。按一定间隔变化修改占空比,看前轮转角变化,将测量数据记录后进行回归分析和绘图。轮胎的转向测量分为2种情况:(1)轮胎顺时针转动而且转动角度变化的方向一致; (2)轮胎逆时针转动而且转动角度变化的方向一致。实验发现在周期为50HZPWM信号控制下,舵机在空载情况下,舵机的转角和PWM信号的占空比基本呈线形关系。在分别测试两轮的情况下,发现两轮的角度分布情况并不完全对称。4.3.2测量转向延时由于舵机在接受命令后还需要一段反应时间才可以到达要求得角度,而舵机的延时将限制程序执行的周期,所以设计了这个实验测试舵机的转向延时。让前轮在0——x度之间来回转(x代表给定角度),开始给定一个稍小的频率,再加快频率测试。发现频率约为1Hz的时候,前轮可以转到预期角度;然后加快频率,直到前轮开始不能转到预期角度,记下转角x和此时频率f。测试多组数据,然后分析结果。实验结论:舵机反应延时时间为角度变化×5ms。4.4调试与结果为了软硬件的调试以及对智能小车系统的性能进行测试,我们自行制作了用于调试的赛道,如图4.4-1所示,赛道包括四种基本赛道特点:直道、弯道、连续弯道、十字交叉路口。实验光照为白天室内的正常光照情况,温度在左右。跑道以KT板作为白色底板,25mm黑色纸带作为的黑色轨迹。通过对系统硬件与软件的优化与调试,小车能够按照理想的航线与速度在轨道上行驶。小车在轨道上行驶时,速度的变化曲线如下图4.4-2所示:曲线1为速度的给定值,曲线2为传统模糊控制曲线图,曲线3为参数自整定的模糊控制曲线图。速度的量纲为一定时间内采集到的磁钢脉冲个数,时间的量纲为调节所需的采样周期的个数。由速度控制曲线可知,采用参数自整定的模糊控制器对速度进行调节,其响应时间短,幅值振荡小,控制效果明显。在小车的制作过程中,进行了多方面的调试,内容与过程比较复杂,下面仅举出个别最基本与重要的调试过程。速度控制调试:小车速度的提高应该要能使在直道速度更高,但弯道又要不能冲出赛道。因此我们在程序设计上也采取了多种措施,对不同路面情况也有不同的处理方式。其中一个比较重要的情况就是直道入弯道时的减速处理。这里对该情况下的调试进行简要介绍。实验方法:小车以较高速度通过米长的直道后入弯,在设定不同参数值的情况下记录小车偏离的最大距离以及小车整个运行过程的时间,综合比较小车的快速性与稳定性进行参数选择。经过调试,小车性能上逐步得到提高。目前在我们制作的赛道上,小车运行情况较稳定且能够达到较快的速度。但仍然有很多不足与上升空间。比如小车给舵机的控制信号虽然作了调正,但仍然不是连续的,因此使得小车在弯道运行过程运动仍不够平滑顺畅;小车对于赛道提前预测的能力有限,限制了速度的提升,且对于弯道一般只能是沿外道运行等等。另外,由于条件的限制,调试的赛道等方面还比较单一,还有很多地方考虑不够周全。这些问题都有待在今后的设计与调试过程中进一步解决。5总结本智能模型车系统以MC9S12DG128芯片为核心,由电源模块、传感器模块、电机驱动模块、路径识别模块、通讯调试模块和单片机模块组成。为了使智能车能够快速行驶,单片机必须把路径的迅速判断、相应的转向伺服电机控制以及直流驱动电机的控制紧密地结合起来。本设计将讨论传感器的种类、数量及安装,研究传感器的数据融合算法,并致力于提高转向伺服电机及直流驱动电机的控制能力。同时,单片机系统需要在接收路径识别电路信号和车速传感器信号后,采用某种路径搜索算法进行寻迹判断,进而控制转向伺服电机和直流驱动电机的,工作在本设计中,仅是提供了一种方案,因此本设计还可讨论其软件控制方案,研究高性能的控制算法。参考文献[1]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社,2004[2]杨国田,白焰.摩托罗拉68HC12系列微控制器原理、应用与开发技术[M].北京:中国电力出版社,2003[M].北京:高等教育出版社,2001[M].北京:高等教育出版社,1998[5]张宇河,董宁.计算机控制系统[M].北京:北京理工大学出版社,2002[6]陶永华,尹怡欣,葛芦生.新型PID控制及其应用[M].北京:机械工业出版社,1998[7]谭浩强.C程序设计[M].北京:清华大学出版社,2001[8]侯国屏,王坤,叶齐鑫.[M].北京:清华大学出版社,2005[9]HCS12SerialCommunicationInterface(SCI)BlockGuide[M].[10]Metrowerks.IDEHelpforCodeWarriorPlug-inforMotorola[M].MetrowerksSemiconductor,Inc.,2005[11]朱卫华.一种微机与单片机无线串行通信的设计方法.[D]南华大学,2002年8月.[12]周斌,李立国,黄开胜.智能车光电传感器布局对路径识别的影响研究[J].电子产品世界,[13]卓晴,黄开胜,邵贝贝.学做智能车[M].北京:北京航天航空出版社,2007[14]张幽彤,陈宝江.汽车电子技术原理及应用[M].北京:北京理工大学出版社,2006[15]张伟等.ProtelDXP高级应用[M].北京.人民邮电出版社.2002[16]FreescaleSemiconductor,Inc.MC9S12DG128DeviceUserGuide.[17]童诗白,华成英.模拟电子技术基础[M].北京.高等教育出版社.2000[19]张葵葵,吴义虎.汽车急转侧滑的预防控制原理[J].现代制造工程.2006[20]杨启梁.汽车制动过程中方向稳定性仿真分析[J].拖拉机与农用运输车.2007[21]魏道高,李克强等.汽车前束值算法研究[J].农业机械学报.2006.附录源程序代码#include<hidef.h>/*commondefinesandmacros*/#include<mc9s12dg128.h>/*derivativeinformation*/#include"crg.h"#include"pid.h"#pragmaLINK_INFODERIVATIVE"mc9s12dg128b"#defineDC_Limit450//450#defineMID3770//4200//#defineMAXTURN554//#defineAD_LEVEL170//判断黑白#defineSPEED55//yuan55//170,97168,96160,95#defineDEG11160/13//950/13//使用双摆角度volatileunsignedintstop_flag=0;volatileunsignedinttimer_overflow=0;volatileintNowSpeed;volatileunsignedintIC0Counter=0; //2.083msoneintvolatileunsignedintIC0Counter_1=0; //volatileunsignedintGearWidth[2]={0};volatileunsignedintGearIndex=0;unsignedlongGearWidthSum;unsignedlongAveGearWidth;unsignedlongAveSpeed;unsignedintpulse_counter=0;//计数intSensor;sCaiXinBoPIDSpdPID;intDCDuty;intObject_Speed=SPEED; //100cm/sinttime_up=0;//调速unsignedcharboma=0;//拨码开关intzdao_speed=0;//直到速度intswang_speed=0;//S形弯道速度intzwang_speed=0;//直角弯道速度intcchu_speed=0;//冲出速度intAD_LEVEL[14]={130,130,130,130,130,130,130,130,130,130,130,130,130,115};//红外对管标定{130,185,186,165,163,130,171,180,110,150,182,110,176,115}intatd_value[14];//量化为0-9的数组//黑1白0unsignedintAD_Value[14];voidATD_Init(void){ATD0CTL2=0xc0;//不开中断2;////上电,标志位快速清零 ... ATD队列转换完成中断使能ATD0CTL3=0x00;//sequencelength:80; //转换队列长度8,非FIFO存储模式,ATD0CTL4=0x85;//8位精度,AD时钟为bus_clk/(2*(5+1))//ATD0CTL5=0x91;//右对齐,无符号数,单次转换队列模式,ch1begin,6channels;多通道8路,从通道0开始ATD1CTL2=0xc0;//ADPU,fastflagclearATD1CTL3=0x30;//sequencelength:6,notfifomode,ATD1CTL4=0x85;//8bitdecision,ATDclock:bus_clk/(2*(5+1))}//***************Servo_Init()***************voidServo_Init(void)//舵机16位PWM控制{PWME_PWME1=0;//disablePWM1servoPWMPRCLK|=0x03;//CLKA:8分频PWMCLK=0x00;//这就是默认值//通道1用clockA时钟源//24MHZ/8=3MPWMPOL_PPOL1=1;//先高电平PWMCAE=0X00; //对齐方式默认左对齐PWMCTL_CON01=1;//通道1:16BIT连接PWMPER01=60000;//60000:20ms;;;20000//舵机的频率是150Hz 1/3M*x=1/150Hz//1ms脉冲到2ms脉冲PWMDTY01=4721;//4500:1.5ms; //控制3500左极限5500右极限4500正中央PWMCNT01=0; //写计数寄存器,会使PWMDTYx,PWMPERx进入锁存器,同时使能通道时会从此值PWME_PWME1=1;//PWM通道1输出}//***************RTIinitiation***************voidRTI_Init(void){/*setupoftheRTIinterruptfrequency*//*adjustedtoget1millisecond(1.024ms)with16MHzoscillator*/RTICTL=0x1f;//5*2^16:48.8hz//0x1f//setRTIprescaler::晶振16384分频;(低四位+1)*(2^(高三位+9))CRGINT=0x80;//enableRTIinterrupts;//低四位:1-7,不可为零,否则分频器不工作}//***************Forward_Init()***************voidForward_Init(void)//假定前进方向,初始化函数{ //PWM3:IN1//PWM5:IN2 =1//PWM7:EN//DDRP=0xff;//控制输出PWME_PWME3=0;PWME_PWME5=0;PWMPRCLK|=0x20;//clockb总线频率的4分频 //通道3用clockB时钟源//24MHZ/4=6MPWMPOL_PPOL3=0;//lowelectricallevelfirst,,highelectricallevelfirst,buthighlevelmakesmc33886disabled //对齐方式默认左对齐PWMCAEPWMCTL_CON23=1;//16BIT连接PWMPER23=750;//电机频率8kHz 1/1.5M*x=1/2KHz PWMDTY23=500; //占空比精度1/750PWMCNT23=0; //启动PWMPWME_PWME3=1;//PWM通道3输出}//***************ECT_Init()***************voidECT_Init(void)//ECT初始化,使用输入捕捉功能{TSCR1_TFFCA=1;//automaticallyclearflagTSCR2=0x87;//TimerOverflowinterruptopen,TCNTprescaler:24MHZ/128=187.5kHz计数频率TIOS_IOS0=0;//Thecorrespondingchannelactsasaninputcapture//ONCH0PT0;TCTL4_EDG0A=1;//captureonrisingedgeonlyonchannel0TCTL4_EDG0B=0;TIE_C0I=1;//EnableCh1InterruptsTSCR1_TEN=1;//ENABLETIMER}//一圈32个黑白,32次输入捕捉中断,上升沿输入捕捉中断,主定时器里的值送到输入捕捉寄存器中//voidPORT_Init(void){DDRK|=0x80;//PK7output,driveled,?//DDRP=0xff;//PWMchanneloutput,don'tneedconfigit,whencorrespondingchannel'sPWMenabled//DDRT=0x00;//IC/OCchannel,seemsneednotconfigit}voidmain(void){/*putyourowncodehere*///inti;SET_PLL(); SpdPID.ProportionalGainScale=13;//0.76的系数(0-1):GainScale=14//(0-2):gainscale=13 //(0-4)0-80-160-320-640-1280-256.. //.0-32768--不能取最后的那个数,可以有小数,随着数的增大,小数数减少,从15位到0位//精度1/327681 SpdPID.IntegralGain=20480;SpdPID.IntegralGainScale=14;//0.625的系数 SpdPID.DerivativeGain=20000;//0SpdPID.DerivativeGainScale=14;SpdPID.PositivePIDLimit=DC_Limit;SpdPID.NegativePIDLimit=0;SpdPID.IntegralPortionK_1=0;//=0SpdPID.InputErrorK_1=0;//=0/*durubomakaiguan*/DDRA=0xff;///速度调整值DDRM=0xff;//输出DDRT=0x00;//输入boma=PTIT;boma>>=4;boma&=0b00001111;zdao_speed=100+7*boma;//此处参数需要调整216111181+7*bomaswang_speed=80+5*boma;//111+5*boma178103120+5*bomazwang_speed=70+4*boma;//103+4*boma133103103+4*bomacchu_speed=60+boma;//速度设定拨码//921079290+bomaPTM=~boma;PORT_Init();ATD_Init();RTI_Init();Servo_Init();ECT_Init();Forward_Init();EnableInterrupts;for(;;){if(time_up==1){time_up=0;DCDuty=DC_Limit-CaiXinBoPIDController(Object_Speed,(int)AveSpeed,&SpdPID);if(DCDuty<1)DCDuty=0;if(DCDuty>DC_Limit)DCDuty=DC_Limit;/////////////////////////////////////////////////速度限制PWMDTY23=DCDuty;//changeMotorPWMduty;}///**/}/*waitforever*/}voidinterrupt16TIMER_OVERFLOW(void)//187.5khzcounterfreq.349.5msoverflowonce{inti;i=TCNT;//cleartheintflag//inIC0_int,clearthestop_flag, //ifthelaststop_flag==1,theninanoverflowintervaltheIC0didn'tinterrupt//350ms*32:oneround,mustbestopped/*停止指示灯ds1*//*if(stop_flag==1) //blinkwhenstoppedPORTK_BIT7=~PORTK_BIT7;elsePORTK_BIT7=1;*/if(stop_flag==1){PWMDTY23=DC_Limit;}stop_flag=1;//inIC0_int,clearingit}voidinterrupt8IC0_ISR(void) //whenspeedis2.4m/s,15roundspersec,15*32=480intpersec{staticintled_lit=0;IC0Counter=TC0;//获得当前IC0的计数值,clearingC0Fflagpulse_counter=IC0Counter-IC0Counter_1;//bydefault,timercannotgooneround:350ms//withoutoneIC0int//oncein350ms,there'snoIC0int,programuncontrollableIC0Counter_1=IC0Counter;GearWidth[GearIndex]=pulse_counter;//?GearIndex++;if(GearIndex>=1) //>=2.083*4ms反馈一次速度,预备在RTI_int中运算,和转弯一起运算{for(GearIndex=0;GearIndex<1;GearIndex++){GearWidthSum=GearWidthSum+(unsignedlong)GearWidth[GearIndex];}AveGearWidth=GearWidthSum;//?AveSpeed=93750L/AveGearWidth;//oneIC0int'saveragepulse_counter//getthespeed:0.5cm/(pulse_counter/187.5khz)NowSpeed=(int)AveSpeed;GearWidthSum=0;GearIndex=0;}stop_flag=0;if(led_lit==0){PORTK_BIT7=0;led_lit=1;} else { led_lit=0; PORTK_BIT7=1; }}voidinterrupt7RTI_int(){staticintrti_cnt=0,rti_cnt2=0;inti;staticinttotal_weight=0;staticintave_weight=0;staticintwhite_cnt=0;staticintlast_turn=0;CRGFLG|=0x80; //忘了清实时中断标志rti_cnt++;rti_cnt2++;if(rti_cnt2>=2) //调速{rti_cnt2=0;time_up=1;//调速标志}if(rti_cnt>=1)//2s{rti_cnt=0;//forgotclearingit;ATD0CTL5=0x90;//启动一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论