版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告学 校: 山东轻工业学院 队伍名称: 雷霆 参赛队员: 宁昭凯 付常佩 赵春昊 带队教师: 孙凯 陆宏谦 目 录第一章引 言.1第二章 方案设计 2.1整车设计思路 . 2 2.2传感器设计.22.2.1红外传感器 .2 2.1.2激光器. . .3 2.3系统总体方案的设计. .3 2.4 小结 .4第三章 智能车机械改造设计 3.1车体机械建模 . . .53.2车模重心的调整 .73.3光电编码器 . .7 3.4模型车技术参数统计 .83.5改装后车模 . .9第四章 智能车的电路设计及现 4.1各模块的作用 .10 4.2稳压芯
2、片的选择.104.3稳压芯片电路设计.114.4舵机供电设计 .11 4.5电机驱动模块 .124.6 Altium Designer 6简介.12 4.7本章小结 .13第五章 软件设计及其应用5.1总体程序设计 .14 5.2开发、调试工具 .145.3.1Code Warrior .14 5.3.2 BDM 开发工具 .155.3本章小结 . 16第六章 智能车的路径识别跟速度控制 6.1路径信号的获取识别 . .17 6.1.1 方案的选取 .186.1.2具体方案的实现 . .186.1.3激光抗干扰处理 . .186.1.4 不同路径的识别 . .186.2速度控制. .196.2
3、.1控制算法 . .196.3 本章小结. .21报告总结 . .22 参考程序 . .23 第一章 引言本文介绍山东轻工业学院队员半年来努力准备飞思卡尔智能车所得的心得及其成果。本车选用飞思卡尔组委会统一规定的MC9S12X128为主控芯片,软件平台为CodeWarrior IDE 5.1开发环境,采用统一的B型车模,按照要求在规定范围为稍加改装。文中介绍了智能小车控制系统的硬件结构的构建和控制算法及其部分开发流程。整个智能车的设计包括传感器的安装、光电信号的提取及其处理、运行控制算法、闭环系统的控制等各个方面。为了使智能车更加适不同的赛道类型,更快速度的处理突发情况我们队员做了大量的数据统
4、计及其不同算法的尝试。经过队员的不懈努力终于确定了最终确定了现有的系统结构和各项控制参数。关键字: 智能车 光电信号 闭环系统 控制第二章 方案设计2.1整车设计思路参赛选手须使用竞赛秘书处统一指定并负责采购竞赛车模,采用飞思卡尔16位微控制器MC9S12XS128作为核心控制单元,参考往届技术报告和指导老师的指导自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、电机驱动、转向舵机控制等。系统的设计过程中,主要包括硬件部分,机械部分,软件部分等三个方面的设计与调试,三者相辅相成,不能偏废其一。在硬件上想方设法提高智能车的前瞻,简化电路,提高电路可靠性。在机械部分要减轻车模重量
5、,降低整车重心。在软件部分要在实用的前提下精简程序,尽量使得程序美观,可读性强。2.2传感器设计2.21红外传感器采用反射式红外光电管,也是路径检测常用的方法。这种方法利用了路面不同的材料和颜色对光线的吸收和反射量不同,这样我们检测反射回来的光线就可以得到当前位置的材料或者颜色。这种方法的优缺点如下:优点:电路简单,信号处理速度快。光电传感器的排列方法、个数、彼此之间的间隔都与控制方法密切相关。缺点:感知前方赛道距离有限,受外界红外频段光线干扰,精度比较低。实际制作过程中主要用于起跑线的识别和过坡道时的控制。2.22激光传感器激光的原理及特性激光的英文名为LASER,是取自英文Light Am
6、plification by Stimulated Emission of Radiation的各单词的首字母组成的缩写词。意思是“受激辐射的光放大”。即激光的产生源自于受激辐射。激光主要有四大特性:高亮度、高方向性、高单色性和高相干性。我们的智能车采用的便是5mw激光传感器。光电传感器检测路面信息的原理是由发射管发射一定波长的光线,经地面反射到接收管。如图2-1,由于在黑色和白色上反射系数不同,在黑色上大部分光线被吸收,而白色上可以反射回大部分光线,所以接收到的反射光强是不一样,进而导致接收管的特性曲线发生变化程度不同,而从外部观测可以近似认为接收管两端输出电阻不同,进而经分压后的电压就不一
7、样,就可以将黑白路面区分开来。图2-1 光电传感器原理2.3系统总体方案的设计在选定智能汽车系统采用上排光电传感器、下排红外传感器方案后,赛车的位置信号由车体前方的光电传感器采集,红外用于检测起跑线或者作为激光的辅助检测,两者接收到信号后,经 MCU 的 I/O 口接收后,用于赛车的运动控制决策,同时内部发出 PWM 波,驱动直流电机对智能汽车进行加速和减速控制,以及伺服电机对赛车进行转向控制,使赛车在赛道上能够自主巡线行驶,并以最短的时间最快的速度跑完全程。为了对赛车的速度进行精确的控制,在智能汽车电机输出轴上安装光电编码器,采集编码器转动时的脉冲信号,经 MCU 捕获后定时通过 PID算法
8、自动进行速度控制,完成智能汽车速度的闭环控制。 图2-2 系统的总体框架2.4小结 本章重点介绍了通过对激光传感器采集到的道路信息控制转向舵机;通过编码器返回值和其它反馈信息对汽车模型进行速度控制的总体框架。也是作为初学者的我们花费时间最多的地方之一,该部分的稳定性直接决定整个系统设计的稳定性。第三章 智能车机械改造设计智能小车的机械性能对于其行驶表现具有非常重要的影响,任何控制算法和软件程序都需要通过智能小车的机械结构来执行和实现。为使模型车在比赛中发挥出最佳性能,使其直线行驶高速稳定,入弯转向灵活,结合现代汽车控制理论对智能车的运动特性进行分析,并据此对智能小车的机械结构进行相应的调整和参
9、数优化。3.1车体机械建模 智能汽车竞赛光电组专用B型车模图3.1 B型车模根据往届比赛的一些经验,我们在规则允许范围内主要对模型车进行一下一些调整。为保证智能车行驶稳定,转向轻便灵活,需要对其机械结构进行调整和改造,以使其更适合高速运行使用。以下是需要改造的部分:(1)车身高度车身高度指的是当车子满载的时候,底盘离地面的高度。为了降低重心,需要适当降低底盘高度。(2)前轮角度Toe角度(束角)是描述从车的正上方看,车轮的前端和车辆纵线的夹角。车轮前端向内倾(内八字),称为Toe-in,车轮前端向外倾(外八字),称为Toe-out。不同的Toe角度会改变车辆的转向反应和直道行驶的稳定性。可以通
10、过改变前万向节拉杆的长度来改变Toe角度。(3)舵机连杆车模的原装连杆不够长,我们将其换成加长连杆。而且将车模原来的舵机调整到前端,采用立式安装,使前轮转向更加流畅,平衡性更好。(4)舵机臂 长度不同的舵机臂效果不同,舵机臂的长度是可调的,经过多次试验,我们发现2.6cm的舵机臂效果最好,我们选用2.6cm舵机臂,舵机更加灵活。图3.2 舵机的安装3.2车模重心的调整智能车的重心位置,主要影响赛车在转弯时的稳定性能 。智能车在转弯半径一定时,速率越高,离心作用越明显。为了增强赛车弯道的稳定性,应尽量的使车体的重心降低,同时由于转弯时为前轮转弯,后轮跟从,所以应使车的重心相对的偏向后轮方向。为保
11、证直线赛道上能平稳行驶,赛车重心应在车体的重心应在左右的对称面上。因此,基于重心和重量的优化,我们在调试的过程中,对车模进行了适当的改装,将主控板尽量降低,反复实验测试重心的最佳位置。 3.3光电编码器 我们采用增量式光电编码器实现对驱动电机转速的检测,通过齿轮传动的方式将测速电机上小齿轮与差速齿轮啮合,可以实时地获得准确的运行速度。我们最终选用100线的欧姆龙光电编码器,该编码器的体积较大,适合B型车模,价格也相对便宜。当采样时间在 2.5MS的时候,可以返回 100 多个脉冲,这样使PID控制精度足够。图3.3 光电编码器的安装3.4模型车技术参数统计项目参数路径检测方法(赛题组)光电组车
12、模几何尺寸(长、宽、高)(毫米)300 *160 *170车模轴距/轮距(毫米)200*160车模平均电流(匀速行驶)(毫安)1500电路电容总量(微法)1450传感器种类及个数7新增加伺服电机个数0赛道信息检测空间精度(毫米)15赛道信息检测频率(次/秒)1003.5改装后车模图3.4 智能车外观第四章 智能车的电路设计及实现赛车共包括六大模块:MC9S12XS128 主控模块、光电传感器模块、电源模块、电机驱动模块、速度检测模块。4.1各模块的作用MC9S12XS128 主控模块:智能车系统以MC9S12XS128MAA 为控制核心,将采集光电传感器、光电编码器等传感器的信号,根据控制算法
13、做出控制决策,驱动直流电机和伺服电机完成对智能汽车的控制并实现了单片机硬件的最优化设计和单片机资源的合理化使用。 光电传感器模块:可以通过一定的前瞻性,提前感知前方的赛道信息,为智能汽车做出决策提供必要的依据和充足的反应时间。 电源管理模块:为整个系统提供合适而又稳定的电源。 电机驱动模块:驱动直流电机和伺服电机完成智能汽车的加减速控制和转向控制。速度检测模块:检测反馈智能汽车轮的转速,用于速度的闭环控制。 4.2稳压芯片的选择5v电源模块用于为单片机系统、光电传感器模块等供电。常用的电源有串联型线性稳压电源(LM2940、7805等)和开关型稳压电源(LM2596、LM2575等)两大类。前
14、者具有纹波小、电路结构简单的优点,但是效率较低,功耗大;后者功耗小,效率高,但电路却比较复杂,电路的纹波大。对于单片机,需要提供稳定的5V电源,由于LM2940的稳压的线性度非常好,所以选用LM2940-5单独对其进行供电;而其它模块则需要通过较大的电流,而LM2596-5,转换效率高,带载能力大,缺点是其纹波电压大,不适合做单片机电源,不过对其它模块供电还是能保证充电的电源。利用LM2940-5和LM2596-5对控制系统和执行部分开供电,可以有效地防止各器件之间发生干扰,以及电流不足的问题,使得系统能够稳定地工作4.3稳压芯片电路设计在电机启动、停止、加速、减速以及舵机的启动、停止时,都会
15、对电源电压产生影响,使电源产生一定的波动。为了解决这一问题,我们专门在LM2940电源输入引脚前串一功率电感,可有效降低电源波动对5V稳压芯片的干扰。原理如图4.1:图4.1LM2940稳压电路4.4 舵机供电设计本次比赛提供的舵机是FUTABA3010 ,其供电电压为6V。为此我们将电池与一个二极管串联后给舵机供电,舵机供电电路图如图4.2:图4.24.5电机驱动模块我们选用了驱动芯片IRF 3205 IRF 4905 ,可以承受高强度电流。我们利用四片MOS管构成一个完整的H桥驱动,可以很好实现电机的正转、反转、制动。电路原理图如图: 图4.3 电机驱动原理图 图4.4电机驱动原理图4.6
16、 Altium Designer 6.9 简介Altium Designer 是业界首例将设计流程、集成化PCB 设计、可编程器件(如FPGA)设计和基于处理器设计的嵌入式软件开发功能整合在一起的产品。Altium Designer 6.9极大地增强了对高密板设计的支持,可用于高速数字信号设计,提供大量新功能和改进,改善了对复杂多层板卡的管理和导航,可将器件放置在PCB 板的正反两面,处理高密度封装技术,如高密度引脚数量的球型网格阵列 (BGAs)。Altium Designer 6.9 极大减少了带有大量管脚的器件封装在高密度板卡上设计的时间,简化了复杂板卡的设计导航功能。在实际制作过程中,
17、我们的光电检测模块采用Altium Designer设计制作,其他模块采用手工焊接。4.7本章小结硬件电路对整个系统的稳定性有着至关重要的作用。而电源电路则是重中之重。因此在电源电路设计过程中,选用多种稳压芯片来保证电源的稳定性。单片机最小系统是智能车的核心,设计时充分考虑了抗干扰、防静电和运行的稳定性。第五章 软件设计及其应用5.1总体程序设计智能车系统的软件编写是基于MC9S12XS128单片机,主要用到S12芯片中的PWM模块,TIM模块、I/O模块以及SCI模块等模块化设计。PWM模块主要用来控制舵机和电机的运转;TIM模块主要是用在了测速模块和数据采集,捕捉中断并计算瞬时速度;I/O
18、模块主要是用来分配给开关和激光管扫描、信息采集;SCI模块主要用在无线串口调试模块。5.2开发、调试工具5.2.1 Code Warrior比赛的软件开发平台为Metroworks 公司Code Warrior开发软件。其使用界面如图5.1所示:图5.1 CodeWarrior程序编写界面图CodeWarrior的功能强大,可用于大部分单片机、嵌入式系统的开发。用户可在新建工程时将芯片的类库添加到集成环境开发环境中,工程文件一旦生成就是一个最小系统,用户无需再进行繁琐的初始化操作,就能直接在工程中添加所需的程序代码。如图6-2所示,利用CodeWarrior和配套的BDM。用户可以进行一系列的
19、调试工作,如监视寄存器状态、修改PC 指针、设置断点等,这样能快速地帮助我们找到软件或硬件的问题。图5.2 Hiwave下载调试界面在源程序编译、连接通过后,就可以进行程序下载了。下载前,先将单片机上已经存在的程序擦除,然后点击Load,将bin文件夹下生成的后缀为.abs的文件打开,就可以完成下载。5.2.2 BDM开发工具图5.2BDM开发工具后台调试模式(Background Debug Mode)是当代单片机普遍采用的调试方式之一,在BDM 模式下主要可以实现一下3 个方面的功能:首先是应用程序的下载与在线更新。在BDM 模式下,可以对Flash 做写入和擦除操作,故可以在产品出厂前即
20、将应用程序下载的产品当中去,也可以在产品出厂后更应用程序。BDM 模式的另一功能是做单片机内部资源的配置与修复,程序的加密处理等。一些MCU 的内部寄存器只能在BDM 模式下操作,特别是一些单片机内部词源配置的寄存器。BDM 的第三个功能是做应用程序的动态调试。S12 系列单片机的BDM调试模式有这种功能。和多时现代单片机一向,S12 单片机CPU 内部使用了4 级流水线结构,这种结构使得CPU 的读取指令,解释指令,执行指令等操作看起来好像是并行的。5.3 本章小结 本章重点介绍了编译环境的使用及其在线调试的方案,合理使用软件能更高效的为队员服务,检测错误及其调节参数。第六章 智能车的路径识
21、别跟速度控制6.1路径信号的获取识别6.1.1方案的选取由于第七届非思卡尔光电路径识别要求较前几届又较大的改变,由中间循线变为两边循线,于是有以下循线方案。八字循线布局:图6.1光电模块的布局首先,硬件上要求传感器分成两部分,光点也从中间断开,一改以往连续光点的思想。 这里可以采用的光点是直线型分布,也可以采用圆弧形或者是斜线分布。这种设计硬件思想比较灵活被比较多的学校采纳。这种布局使用激光头少了,传感器也短了,并且传感器的不用伸出,有利于重心的稳定。中间还得加个下排的小前瞻或者红外来检测起跑线。传感器还是跟以前的差不多,可能要很宽,其实这种思想还是可行的,比赛的时候赛道的背景颜色是蓝色的,寻
22、白线的优势就很大,因为检测的光点基本要覆盖整个赛道,要用到的激光也不会很多,就是两边靠近黑线的激光要密集一点,算法控制也比较方便,但是在十字处理上比较困难。我们选用的这种方案在实际调试过程中,为了处理十字弯道,最终采用的做法是:最外边的2个激光压黑线,然后累加“全白”。这样就将直道和十字弯道区分开始,可是轻松判别十字弯道,经过实际实验,是可行的。6.1.2具体方案的实现 激光管采用74ls164(4/16线译码器)分时点亮,两侧激光从内向外扫描,循环一个周期,读取黑点,作为边界值,用于控制舵机和速度。6.1.3激光抗干扰处理为降低功耗,也为了避免激光发射管之间的相互干扰,采用了分时发光的策略,
23、即每个激光管分时扫描发光,一段延时后,读取对应接收管的信号,这样可以保证对应接收管接收到的是对应激光管发出的光线。为了避免太阳光等其他光线的干扰,可以将激光管发射出的红光调制成特定的频率,然后由特定频率的接收管接收,就避免了太阳光等其它光线的干扰 6.1.4 不同路径的识别在这整个智能车系统中,路径识别跟机械结构的设计书最重要的部分。为此我们队员也做了大量的测试及其数据统计与分析。最终定下如下方案:赛道的识别及其处理:在赛道的识别上,我们采用的总体方案是提取边界值,对左右两边的边界值进行50次累加,根据累加的结果,判断赛道是属于直道、大S、小S弯道,从而控制舵机的打角和电机的转速。坡道的识别及
24、其处理由于坡道一定会照成上排激光出线盲区,导致智能车出界,我们的处理方法是:当上排激光(左右两边)都出现盲区时,我们判别为坡道,此时切换至下排激光控制舵机,从而保证顺利通过坡道。在具体制作过程中由于时间紧迫,实际效果不是很好。 起跑线的识别及其处理对于起跑线的检测我们选用的经济型的红外一体接收管,当前排检测到压线的时候采取紧急制动策略,按照不同的经过起跑线的速度给予不用的反转时间,使车子可以迅速快速的停下来。此时,为了避免发车时候的错检,我们设定正式发车后5s开启起跑线检测模块,同时我们也设置相应的拨码开关,必要的时候控制开启跟关闭。 十字的检测及其处理经过测试,当智能车的前排激光连续20次没
25、有检测到黑线时,我们认为是十字。此时可以将直道和弯道区分开来,通过具体的算法,顺利通过十字赛道。6.2速度控制 6.2.1控制算法控制算法是一个控制系统的核心,其设计的好坏直接关系到系统能否以一种较好的状态稳定运行。赛车的控制算法既要有良好的鲁棒性,又要有很好的实时。考虑到赛车运动速度很快,故控制周期必须尽可能短,否则会因为时滞而产生过大的震荡,导致系统不稳定。这就要求控制算法尽可能简单,效率尽可能高。下面对我们选用的PID算法进行详细说明。PID是一种线性控制器,采用输出量和参考输入的误差及其微分、积分的线性组合来产生控制信号。PID控制具有控制结构简单,参数个数少而且容易确定,不必求出被控
26、对象的精确性模型就可以整定参数的特点,在控制系统中应用极为广泛。连续PID控制规律如下:Kp-控制器的比例系数Ti-控制器的积分时间,也称积分系数Td-控制器的微分时间,也称微分系数 图6.2 模拟PID控制系统原理图1.比例部分比例部分的数学式表示是:Kp*e(t)在模拟PID控制系统中,比例环节的作用是对偏差瞬间做出反应。偏差一旦产生,控制器立即产生控制作用,使控制量向偏差减少的方向变化。控制作用的强弱取决于比例系数Kp,比例系数Kp越大,控制作用越强,则过度过程越快,控制过程的静态偏差也就越小;但是Kp越大,也月容易产生振荡,破坏系统的稳定性。故而,比例系数Kp选择必须恰当,才能过渡时间
27、少,静差小而又稳定2.积分部分从积分部分的数学表达式可以知道,只要存在偏差,则它的控制作用就不断的增加;只有在偏差e(t)=0时,它的积分才能使一个常数,控制作用才是一个不会增加的常数。可见,积分部分可以消除系统的偏差。积分环节的调节作用虽然会消除静态偏差,但也会降低系统的响应速度,增加系统的超调量。积分常数Ti越大,积分的积累作用越弱,但系统在过渡时不会产生振荡;积分常数Ti越小则积分的累积作用越强,但系统在过渡时却有可能产生振荡。所以必须根据具体要求来确定Ti。3.微分部分实际的控制系统除了希望消除静态误差外,还要求加快调节过程。在偏差出现的瞬间,或在偏差变化的瞬间,不但要对偏差量做出立即
28、响应(比例环节的作用),而且要根据偏差的变化趋势预先给出适当的纠正。为了实现这一作用,可在PI控制器的基础上加入微分环节,形成PID控制器。微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定。 微分部分的作用由微分时间常数Td决定。Td越大时,则它抑制偏差变化e(t)的作用越强;Td越小时,则它反抗偏差变化的作用越弱。微分部分显然对系统稳定有很大的作用。适当地选择微分常数Td,可以使微分作用达到最优。同时设定误差门限,在误差比较大的时候采用
29、大输出控制电机,将误差在最短时间内减小到所要求的鲁棒控制即能很好的达到加减速的效果。6.3 本章小结 智能车的路径识别跟速度控制是整个控制系统的核心。软件上主要有以下几个难点: 1) 怎样判断采样的赛道信息的有效性;2) 如何准确判断赛道类型给予不同的速度; 3) 怎样使速度控制配合好舵机打角。 本章节讲解了解决了以上几个难点,工作过程如下:初始化后,方案的选取,进行扫描,开始处理采样数据,并计算出当前黑线与车身的相对位置。单片机根据当前位置决定随动舵机摆角的大小以保证紧跟黑线。单片机再根据光点所得到的位置综合前轮舵机的PWM值。经过复杂运算与处理得到速度期望值,并结合当前速度值对电机控制如加
30、速、减速、电机反转和反向刹车制动等。速度控制采用PID控制算法结合上位机实现闭环控制。报告总结首先从硬件设计来讲,先模块化、后集成的设计思路,保证了系统底层的稳定性。再看软件开发过程,采用通用化的软件接口,如位置信息、控制量等。方便了团队合作,提高了效率。而采用多种备用方案,根据环境条件进行实时选择的方式,使软件系统的鲁棒性和健壮性明显加强,保证了系统的稳定运行。作为一个锻炼大学生实践动手能力的比赛和项目,创新是必不可少的。而我们在整个过程中也确实开发了不少新的技术与方法。比如在光电传感器环节中,实验开发了采用激光作为照射光线的传感器模块,显著提高了系统的探测距离,为控制留下了充足的余地;在软
31、件开发中,实现了路径识别的连续化以及动态参数自适应等方法,很大程度上优化了系统的路径识别。 分析整个智能车系统,在智能车硬件及软件上都有许多改进与创新。系统主要有以下特色:(1)上排采用激光管作为循迹传感器。相比红外对管而言,大大提 高了前瞻距离,由于大赛对车模长度的限制,使用红外循迹,最大前瞻也只有15cm,而我们的激光前瞻已经提高到40cm 以上,大的前瞻有利于速度的提高。(2)对舵机转向机构进行了大胆地改动,将B型车模的转向机构直接根据A型车模的转向机构进行改进,同时加大了力臂,这样可以使传动机构简单,舵机更加灵活,反应速度加快。通过这样的锻炼,我们得以在团队合作的氛围中,充分体会到了一
32、个具体的工程实践项目从设计到实现,再到运行调试的全部过程。巩固和学习了理论知识,也积累了不少的实践经验,相信今后的工作和学习都会有很大的帮助。附录#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions */#include <math.h> #include <stdio.h> /*PID用变量*/int KP=25,KI=3,KD=3;int pulse_counts,turn
33、;/电机当前速度int speed_value; /速度的PID值 int EK1;/理想速度与当前速度的差值int EK2;/PID控制的速度差值int EK3;/PID控制的速度上一次差值int PID_flage;/*滤波变量*/int laser_bai_counts,lvbo_flag=1; /*边界用变量*/int pre_rbianjie,pre_lbianjie;/边界保持用变量int ATDL10=0,0,0,0,0,0,0,0,0,0;int ATDR10=0,0,0,0,0,0,0,0,0,0;int ATDH7=0;int i=0,j=0,k=0;/取边界值用变量int
34、 l,m,n,s,t;/检测起跑线用变量uint startline_up_flag,startline_counts;int start=0,start_flag=0,stop_times=2,stop_flag=0;/停车用变量uint start_counts=0xff,start_counts1=0xff;/上坡不停用变量int lbianjie=0,rbianjie=0,bianjie=0,bai=0,boma=100,bai_counts=0,shizi_flag=0;char lbianjie7_flag,lbianjie8_flag,rbianjie7_flag,rbianji
35、e8_flag;char Left_full_turn_flag=0,Right_full_turn_flag=0;int xbianjie,down,pre_down,xbianjie_temp;uint numl=0,numr=0,numx=0,hei=0;uint start_judge_flag=0,po_judge_flag=0,zhi_flag;uint save_lbianjie20=0,save_rbianjie20=0,INCR2=0,INCL2=0,INC2=0; /*速度给定用变量*/int speed_set1,speed_set11,speed_set2,speed_
36、set3,pulse_counts1,pulse_counts2; /拨码开关用变量int rrr,zzz=0,ttt;int normal_flag,half_normal_flag,unormal_flag;int chu_flag=1,PID_flag=0;unsigned int Straight_counts=0;int Straight_flag12=0,Straight_flag22=0,Straight_flag32=0,Straight_flag42=0,Straight_flag52=0,turn,turn2,turn3; Straight_stop_flag1,Strai
37、ght_stop_flag2,Straight_stop_flag3,Straight_stop_flag4,Straight_stop_flag5;unsigned int Speed_Set;/*舵机pd设置*/int error,d_error,dd_error;int pre_value6=0 ;unsigned int Steer_Proportion; /比例常数 Proportional Constunsigned int Steer_Derivative; /微分常数 Derivative Const int PWMDTY01_Temp,pwmdty01,final_weigh
38、t,PRE_PWMDTY01_Temp; /舵机暂时存储变量int dj_flag=1;/*函数声明*/ void delay2s(); void launchdelay(void) ; void Io_Init(void); void SET_PLL(void); void TIM_Init(void); void PIT_Init(void); void Servo_Init(void); void Forward_Init(void); void saomiao(void); void laser_chuli(); void dj_control(void); void speed_gi
39、ven(); void elect_boma(void); void jiansu(); void path_judge(void); void check_start(void); void shache1(void) ; void shache2(void) ; void drive(void); void bianjie_sum(); /*延时子程序*/ void delay2s() /延时2秒发车 int i,j; for(i=5000;i>0;i-) for(j=1700;j>0;j-); void delay() /延时2秒发车 int i,j; for(i=500;i
40、>0;i-) for(j=500;j>0;j-);void launchdelay(void) uint m;for(m=0;m<800;m+);/接收信号延迟时间 unsigned int abs(int a) return(a>=0?a:-a); /取绝对值/*各模块初始化*/ void Io_Init(void) /IO口初始化 DDRB=0xff; /B口作为输出口,控制激光管分时发光 ATD0DIEN=0xFFFF;/左边接收管输入口 DDR1AD0=0x00; DDRA=0x00;/右边接收管输入口 ECLKCTL_NECLK=1; DDRE=0x00;/E
41、口作为输入口,用于拨码开关 void SET_PLL(void) /设置总线频率为24M CLKSEL=0x00; PLLCTL=0xe1; SYNR=2; REFDV=1; /PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)=2*16M*3/2=48M PLLCTL=0x60; asm NOP; asm NOP; asm NOP; while(CRGFLG&0x08)=0); CLKSEL=0x80; /BUS Clok=pllclk/2=24M void PIT_Init(void) /定时10ms中断初始化函数 PITCFLMT_PITE=0;/PIT定时中断
42、通道0关 PITCE_PCE0=1;/定时器通道0使能 PITMTLD0=240-1;/8位定时器初值设定。240分频即24M/240 10us PITMUX=0x00; PITLD0=1000-1;/16位定时器初值设定 1000*10us=10ms PITINTE_PINTE0=1;/定时器中断通道0中断使能 PITCFLMT_PITE=1;/定时器通道0使能 void TIM_Init(void)/脉冲累计初始化 PACTL=0x50;/下降沿触发 PACNT=0x0000;/清0 void Servo_Init(void) /舵机 16 位PWM 控制6050,5175,4300 :
43、875 PWME_PWME1=0;/关PWM1通道 PWMPRCLK=0x33;/A=B=24M/8=3M PWMSCLA=1;/SA=3M/2=1.5M PWMSCLB=1;/SB=3M/2=1.5M PWMCLK_PCLK1=1;/SA作为时钟源 PWMCTL_CON01=1;/6.7级联 PWMPOL_PPOL1=1;/输出先高后低 PWMCAE_CAE1=0;/通道7左对齐 PWMCNT01=0;/计数器自动清零 PWMPER01=30000;/周期为20ms PWMDTY01=2100;/2100 PWME_PWME1=1;/开PWM1通道 void Forward_Init(void) / 假定前进方向,初始化函数 PWME_PWME3=0; /CLOCKA=3M,CLOCKB=6M PWME_PWME5=0; PWMP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模拟手术中小组动力学与团队配合优化
- 自愈合水凝胶的长期抗菌生物活性长效维持策略
- 2026年妊娠慢性肾炎调理诊疗试题及答案(肾内科版)
- 2026届四川省眉山一中办学共同体中学高三第三次教学质量检测试题化学试题含解析
- 2026届湖南省永州市宁远县一中高三4月高考模拟(二模)化学试题含解析
- 2026年上海市实验学校高三一模检测试题化学试题含解析
- 采购合同范本
- 26年急性白血病精准医疗路径精讲
- 2025~2026学年湖北省孝感市汉川市八年级上学期期末英语试卷
- 2025~2026学年江苏宿迁市泗阳县第一学期七年级期末学业水平监测英语试卷
- T/CECS 10169-2021埋地用聚乙烯(PE)高筋缠绕增强结构壁管材
- 七夕情人节介绍公开课课件
- 企业数据资产保护的法律法规及合规性要求
- 配送车辆卫生管理制度
- 2025-2030磁流变液行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 超星尔雅学习通《科学计算与MATLAB语言(中南大学)》2025章节测试附答案
- 《颈椎病的针灸治疗》课件
- 《一套汽车升降专用的液压升降平台的结构设计》14000字(论文)
- 西藏拉萨市2020-2021学年八年级下学期期中物理试题【含答案、解析】
- 《黄疸的诊断和治疗》课件
- 《桥梁敷设高压电缆工程技术规范》
评论
0/150
提交评论