基于飞思卡尔单片机的智能小车设计与应用39
《基于飞思卡尔单片机的智能小车设计与应用39》由会员分享,可在线阅读,更多相关《基于飞思卡尔单片机的智能小车设计与应用39(39页珍藏版)》请在装配图网上搜索。
1、安徽建筑大学 毕 业 设 计 (论 文) 专 业 通信工程 班 级 10级1班 学生姓名 刘新 学 号 10205040117 课 题 基于飞思卡尔单片机的智能小车设计与应用 ---主监控程序和行使控制程序的设计 指导教师
2、 夏巍 2014年6月1日 摘 要 本文主要是以全国大学生“飞思卡尔”杯智能小车竞赛为背景的一项课题研究。本次课题研究主要采用利用飞思卡尔公司的32位单片机MPC5604MINI作为核心控制单元,用CCD进行对道路信息的采集,用编码器对小车速度进行检测,使用7.2V锂电池进行供电,并用MPC5604MINI产生PWM波控制电机模块和舵机模块,从而达到控制小车的速度和转向。本文主要介绍主监控程序和行驶控制程序的编写,就是编写程序让小车各个部分协调工作,让小车行驶并能够实现转向。 关键词:智能小车;M
3、PC5604MINI;主控电路;行驶控制。 Abstract This article is based on National College "Freescale Cup" smart car competition as a research background.The research mainly uses Freescale's 32-bit singlechip as the core control unit MPC5604MINI,and Carried out on the road with a CCD information collection, and u
4、se encoder to detect the speed of the car, using a 7.2V lithium battery-powered and used to generate PWM wave MPC5604MINI module and servo motor control module, so as to control the car's speed and steering.This paper describes the preparation of the master control procedures and driving control pro
5、gram, is to write the program so that the coordination of the various parts of the car, so the car driving and steering can be achieved. Keywords: Smart car;MPC5604MINI;Control circuit;Driving control. 目 录 摘要 Ⅰ Abstract Ⅱ 1引言 1 1.1课题研究意义 1 1.2 智能小车国内外概况
6、1 1.2.1 国内研究概况 1 1.2.2 国外研究概况 2 1.3 智能小车发展前景 2 2 系统设计及方案论证 3 2.1 系统设计要求 3 2.2 系统设计方案 3 2.2.1 主控芯片的选定 3 2.2.2 传感器模块 5 2.2.3 测速传感器模块 5 2.2.4 转向舵机模块 6 2.2.5电机驱动模块 6 2.2.6国内外概况 6 3系统硬件电路介绍 8 3.1 主控芯片电路 8 3.2 速度检测电路 8 3.3 电机驱动电路 8 3.4 舵机驱动电路 9
7、 3.5 拨码开关电路 9 4 软件设计 9 4.1软件流程 10 4.1.1程序流程图 10 4.1.2 程序流程图介绍 10 4.2 CodeWarrior介绍 11 4.2.1 CodeWarrior简介 11 4.2.2 CodeWarrior功能 11 4.3 系统的初始化设计 12 4.3.1时钟模块 12 4.3.2 PWM模块 12 4.3.3 速度检测模块软件设计 12 4.3.4 车体控制算法 13 4.3.5 PID控制算法 13 4.3.6 行进
8、电机的PID控制 16 4.3.7 转向舵机的PD控制 16 5总结 18 致谢 19 参考文献 20 附录: 21 基于飞思卡尔单片机的智能小车设计与应用 --—主监控程序和行使控制程序的设计 电子与信息工程学院 通信工程 2010级1班 刘新 指导教师 夏巍 1引言 1.1课题研究意义 随着汽车电子和机器人智能技术的发展,智能车已经成为自动控制领域内的一个研究热点。智能汽车是一种集环境感知、规划决策、自动行驶等功能于一体的综合系统,集中的运用到了自动控制、模式识别、传感器技术、汽车电子、电气、计算机、机械等众多
9、学科,是典型的高新技术综合体,具有重要的军用和民用价值。智能车辆( intelligent vehicles, IV)是智能交通系统的重要构成部分,其研究的主要目的在于降低日趋严重的交通事故发生率,提高现有道路交通的效率,在某种程度上缓解能源题,同时降低人的劳动强度,让人类更好的生活。 在此背景下我们开始研发智能小车模型,随后出现了飞思卡尔智能小车竞赛。我们现阶段的研究主要是为了飞思卡尔智能小车竞赛而进行的。通过飞思卡尔智能小车的竞赛不断积累经验,为以后的智能车辆奠定基础。 1.2 智能小车国内外概况 1.2.1国内研究概况 受教育部高等教育司委托,高等学校自动化专业教学指导委
10、员会负责主办全国大学生智能车竞赛。该项比赛已列入教育部主办的全国五大竞赛之一。首届“飞思卡尔”杯全国大学生智能车邀请赛于2006年在清华大学成功举办。此项赛事,在韩国已举办过多届,其专业知识涉及控制、模式识别、传感技术、汽车电子、电气、计算机、机械等诸多学科,对学生的知识融合和动手能力的培养,对高等学校控制及汽车电子学科学术水平的提高,具有良好的推动作用。 在第一、二届的比赛中参赛选手必须使用大赛组委会统一提供的竞赛车模,以Freescale公司生产的16位微控制器MC9S12DG128作为核心控制单元。第三届则要求参赛队伍除了X系列的微处理器不用以外,其他8位和16位微控制器可由参赛对自己
11、选择(8位的单片机最多可选两块),这无疑给大家一个更位大的选择余地,此届比赛则准许使用官方推荐的MC9S12XS128双核芯片及以往的8位极16位单核微控核心。 2007年,中国大学生制作的智能车的速度已经打破了韩国智能车比赛连续七届的冠军速度。该项赛事现已在我国是成功举办五次,规模已经有刚开始的112支队伍增加到了600支队伍,竞争已经相当激烈。随着飞思卡尔智能汽车大赛的影响力加大,全国各类学校踊跃参加此项赛事,场面也越来越壮观,技术上也越来越成熟,各支队伍在技术上的创新也越来越多,对全国高校学子的各项能力发展起到很大的作用。 1.2.2 国外研究概况 韩国大学生智能模型车竞赛是韩国汉
12、阳大学汽车控制实验室在飞思卡尔半导体公司资助下举办的以HCS12单片机为核心的大学生课外科技竞赛。组委会将提供一个标准的汽车模型、直流电机和可充电式电池,参赛队伍要制作一个能够自主识别路线的智能车,在专门设计的跑道上自动识别道路行驶,跑完整个赛程用时最短,而且技术报告评分较高的参赛队就是获胜者。制作智能车,需要参赛队伍学习和应用嵌入式软件开发工具软件Codewarrior和在线开发手段,自行设计和制作可以自动识别路径的方案、电机的驱动电路、模型车的车速传感电路、模型车转向伺服电机的驱动以及微控制器MC685912DP256控制软件的编程等等。 随着赛事的逐年开展,将不仅有助于大学生自主创新能
13、力的提高,对于高校相关学科领域学术水平的提升也有一定帮助,最终将有助于汽车企业的自主创新,得到企业的认可。这项赛事在韩国的成功可以证明这一点。2000年智能车比赛首先由韩国汉阳大学承办开展起来,每年全韩国大约有100余支大学生队伍报名并准予参赛,至今已举办5届,得到了众多高校和大学生的欢迎,也逐渐得到了企业界的极大关注。韩国现代公司自2004年开始免费捐赠了一辆轿车作为赛事的特等奖项。德国宝马公司也提供了不菲的资助,邀请3名获奖学生到德国宝马公司研究所访问,2005年SUNMOON大学的参赛者获得了这一殊荣。 近年来,飞思卡尔半导体公司参与举办的智能车大赛有了进一步的发展。2008年12月1
14、3日飞思卡尔半导体在马来西亚UITM工程学院举办了首届飞思卡尔智能车大赛。共有26组,涉及约52工科学生来自10个地方大学参加智能汽车竞赛。该国竞赛由马来西亚科协举办。 1.3智能小车的发展前景 智能车辆系统的进步和发展需要计算机技术、信息技术、电子技术、通信技术、控制技术、传感技术、机械制造等众多技术领域发展的推动,其发展又能够推动所涉及学科和技术的进步与发展。这是一个能够将汽车产业,交通系统与信息产业紧密结合起来的新型领域。智能车辆的研发为世界各国的高新技术产业提供了又一广阔的发展空间。欧洲、日本、美国等发达国家虽走在了前面,但目前与我国的实际差距还不是很大。因此,把握住这一机遇,有计
15、划、有步骤地制定相应的发展策略,提供各种优惠政策来积极指引和引导其健康发展,从而在改善和发展我国交通,提高交通安全性的同时,缩小该领域与发达国家之间的差距。 2 系统设计及方案论证 2.1 系统设计要求 本次研究必须使用竞赛秘书处统一指定的竞赛车模套件,采用飞思卡尔半导体公司的8位、16位、32位微控制器作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动、转向舵机控制以及控制算法软件开发等,完成智能车工程制作及调试,同时使用四轮车模通过指定的线阵CCD器件获得一维连续或者离散点赛道信息,最终完成基于单片机的自动控制系统使得模型车在指定的跑道上自主循迹运行。
16、 2.2 系统设计方案 系统由CCD模块、测速传感器模块、主控模块、转向舵机模块、电机驱动模块。框图如图2.1所示: 图2.1 系统总框图 2.2.1 主控芯片的选定 MC9S12XS128型开发板是以Freescale公司16位汽车级MCU芯片,MPC5604MINI型开发板是以Freescale公司32位汽车级MCU芯片,他们都是专为智能小车控制设计的,可以减小我们的开发周期,同时也可用于其他二次开发等应用场合。 MPC5604MINI与S12XS128的比较: 用MPC5604MINI替代S12XS128,计算能力会有极大的提高;RAM空间有了大幅的增加,可适应复杂算法;有
17、更多的UART、SPI、IIC通信接口,可以挂更多外设,更便于调试;PWM和脉冲计数功能比S12更强大、更方便好用;外部IO中断的使用更自由;DMA功能可以让摄像头车的设计大为改变,所以最后我们选择MPC5604MINI型开发板。 程序主要用到MPC5604MINI芯片中的PWM模块,PIT模块、I/O模块以及SCI模块等模块化设计。PWM模块主要用来控制舵机和电机的运转,捕捉编码器边沿触发并计算“瞬时”速度;PIT模块主要是用在了定时读取速度和数据定时采集,I/O模块主要是用来分配给指示灯和激光管的发射和接受;SCI模块主要用在串口传送模块观测实时数据。 主控芯片中所用模块简介: (1
18、) PWM 模块: PWM 调制波有3 个输出模块,每一个输出模块有8个输出通道,每个输出通道都可以独立的进行输出。每一个输出模块都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和多个可供选择的时钟源。每一个PWM 输出通道都能调制出占空比从0—100%变化的波形。 每一个通道都可以通过编程实现左对齐输出还是居中对齐输出,同时他们可以配置为低保真和高保真模式方便用户编程。 (2) PIT模块: MPC5604MINI 增强型捕捉计时器模块在标准定时器的基础上增加了一些特点,用以扩展它的应用范围,基准计时器的核心仍然是一个16位的可编程计数器,其时钟源来自一个预分频器。
19、该模块包括三个独立的定时器,可以方便用户编程同时他们的优先级可以设置。 (3) I/O模块: MPC5604MINI拥有多达70个GPIO且他们都工作在总线频率下(最高50M),每个IO可独立的配置为输入输出,内部上拉和自动。利用其高的工作频率我们利用它来发射激光,在中断中实时读取IO信息(激光反射信息)并存储并用来判断赛道信息。 (4) SCI模块: SCI 是一种采用NRZ 格式的异步串行通信接口,它内置独立的波特率产生电路和SCI 收发器,可以选择发送8 或9 个数据位( 其中一位可以指定为奇或偶校验位) 。SCI是全双工异步串行通信接口,主要用于MCU与其他计算
20、机或设备之间的通信,几个独立的MCU也能通过SCI 实现串行通信,形成网络。 MPC5604MINI里有四个SCI(SCI0、SCI1、SCI2、SCI3),其中有两个工作在系统时钟下其他的工作在分频后的总线频率下。 2.2.2 传感器模块 良好的巡线方式是保证模型车稳定快速运行的基础,也是调试过程中花费时间和精力最多的一部分。按照指导老师给出的定义与要求,车模通过采集赛道上中间的黑线信息进行自动循迹,运用CCD进行黑线信息的采集,我们有两种摄像头的选择,一种是CCD的,另一种是CMOS的,CCD的摄像头是一种采集的图像很清晰,对摄像头的稳定性要求比较高,适用于低置摄像头,CMOS的摄像头
21、采集的图形没有CCD的清晰,但是对于摄像头放置的稳定性要求没有那么高,适用于高置摄像头,结合查找网上的资料和老师的意见,总结出各传感器的优势以及不足,最终我们选用蓝宙公司的TSL1401线性CCD的图像传感器传感器。CCD的图像传感器具有图形清晰的优点更有利于提前判别道路信息从而提高车速。 2.2.3 测速传感器模块 为了使得智能车能够平稳地沿赛道导引线运行,除了控制前轮转向舵以外,还需要比较精确地控制车速,使智能车在急转弯时不会由于速度过快而冲出跑道。根据自动控制原理可以知道闭环的系统一般比较稳定,通过一定的方法实时测量智能车的速度,从而形成闭环控制,使得智能车更加准确的运行。一般可以采
22、用以下几种测速方法: 方案一:霍尔传感器测速。在后轮的轴附近安装一个霍尔传感器,相对应的再在轴上安装多个小型永磁铁,根据霍尔传感器特点,用一个上拉电阻将其接至5V,随着后轮的转动就会形成多个脉冲信号。根据单位时间内的脉冲数量就可以测得当前车速。 方案二:反射式光电管测速。在后轮的轴上安装一个黑白相间的光码盘,然后通过一侧安装的反射式光电管读取光码盘转动的脉冲。 方案三:投射式光电管测速。采用具有齿槽结构的圆盘固定的后轴上,采用直射式红外光传感器读取齿槽圆盘的转动脉冲。 方案四:光电编码器测速。光电编码器可以为分为增量式光电编码器和绝对式光电编码器。增量式光电编码器可以输出正比于转速的脉
23、冲,记录单位时间内的脉冲数就可以间接测取实时速度。 鉴于光电编码器安装简单,输出信号比较规整,所以我们采用方案四。 速度传感器用于感知车模本身的行驶速度,是速度闭环控制的一个必须环节。我们使用光电编码器作为速度传感器,安装在车尾与传动齿轮啮合,使用与电机齿数成比例的齿轮,相当于直接测得电机的“转速”。 2.2.4 转向舵机模块 舵机又称伺服电机。其工作原理是:控制信号由接收机通道进入信号调制芯片,获得直流偏置电压。舵机由脉宽调制波(PWM)控制,其旋转角度由PWM波占空比决定,其占空比在0~100可调。本设计中控制信号由单片机一路16位PWM口给出。 2.2.5电机驱动模块 电机
24、的驱动可以使用专用的电机驱动芯片、达林顿管驱动、场效应管驱动。分离的达林顿管,场效应管虽然能获得大的电流和响应速度快的优点,但搭建电路较复杂且调试难度大,电机驱动芯片MC33886,内部具有过流保护电路,刹车效应好,接口简单易用,虽然能够提供比较大的驱动电流,但对于小车骤然加速时所需的电流不够,发热量也比较大,经过试验我们决定使用飞思卡尔比赛使用的BTS7960。它既有MC33886的功能,且小车骤然加减速不易发热在电流上比MC33886大,给我们在提速策略上提供了方便。 2.2.6 电源管理模块 电源模块是整个电路最基本的模块也是整个电路的核心部分,具体框架如图2.1所示:
25、 图2.1 电源模块框图 全部硬件电路由7.2V、2A/h的可充电锂电池提供。主要包括如下不同的电压: (1)5V电压,经过线性开关电源后,输出5V电压,为单片机和编码器,以及现行CCD提供电源。 车模附带的直流电池正常输出电压约为7.2V-8.5V。而智能车系统中,单片机最小系统、拨码开关模块以及测速光电编码器都使用5V供电,因此需要电 压转换。 常用的电源有串联型线性稳压电源LM2940、7805。两者都具有纹波小、电路结构简单的优点;前者价格较高但低压差性能好,后者便宜但低压差性能差且功率较小容易带载时发热,对于单片机,需要提供稳定的5V电源,由于LM2940的
26、稳压的线性度非常好,为提高单片机电源的稳定性,我们将单片机电源模块与其他模块分开,单独使用一片电源芯片为其供电。 经测试,我们的主控模块工作正常,电压稳定,没有出现电压不足或静电干扰复位的情况。 (2)6V电压,为转向舵机供电。 舵机供电可以选择串联型线性稳压电源或开关型稳压电源,LM2941和LM1117,都可以从电池电压稳压到6V也就是都可以用来控制舵机,但通过查阅 资料得知LM1117相对稳定,且电压可调,故选择LM1117给舵机供电。LM1117是一个低压差电压调节器系列,其压差在1.2V输出,负载电流为800mA时为1.2V。LM1117提供电流限制和热保护。电路包
27、含1个齐纳调节的带隙参考电压以确保 输出电压的精度在±1%以内。 (3)3.3V备用电压直接从电池稳压得到,减少了中间环节,在紧急情况下 可对单片机供电防止数据丢失和损坏单片机。 (4)7.2V电压,这部分电压直接取自电池两端,为电机驱动以提供动力, LED0是电源指示灯,SW为整个系统的总开关。 3 系统硬件电路介绍 系统电路是本次课题研究的基础,一切研究都是建立在硬件基础之上的,所以软件编写也是依靠硬件电路作为基础。下面将对小车所用到的电路做简单介绍。 3.1 主控芯片电路 主控芯片电路是整个电路最基本的电路也是整个电路的核心部分,我们自主设计的主控模块省
28、去了所有不用的接口,大大减小了主控模块的面积。主控芯片是现成的MPC5604MINI系统开发板,MCU是电源模块提供5V电压的接口,我们在尽量少占空间的前提下引出了所有所有我们需要的接口。同时还设计两个LED指示灯,绿灯在程序初始化时可以将其点亮以检测程序是否运行正常,红灯时上电的电源指示灯。同时我们还设计了3.3V的备用电路用来防止系统板自带稳压芯片损坏造成单片机数据瞬间丢失。 3.2 速度检测电路 速度采集我们采用欧姆龙光电编码器,虽然其成本较高,但精度高,稳定性好。光电编码器是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器,光电编码器由光栅盘和光电检测装置组成。
29、光栅盘是在一定直径的预案板上等分地开通若干那个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲,脉冲直接接在单片机的输入捕捉端口,每一个上升沿发生一次中断,通过计算每10毫秒中断的个数就能反映当前电动机的转速。 3.3 电机驱动电路 BTS7960由一个P型通道的高电位场效应晶体管N型通道的低电位场效应晶体管结合一个驱动晶片形成一个完全整合的高电流半桥。所有三个芯片是安装在 一个共同的引线框,利用芯片对芯片和芯片芯片技术。 电源开关应用垂直场效应管技术来确保最佳的阻态。由于p型通道的高电位开关,需要一
30、个电荷泵消除电磁干扰。通过驱动集成技术,逻辑电平输入、电流取样诊断、转换速率调整器,失效发生时间、防止欠电压、过电流、短路结构轻易地连接到一个微处理器上。BTS7960可结合其他的BTS7960形成全桥和三相驱动结构。在电机驱动上我们采样上桥臂PWM下桥臂恒通的调制方式,PWM在高电平时,其中一片7960的p型通道的高电位场效应晶体管导通另一片的7960的n型通道的低电位场效应晶体管恒通,这样电流流过电机使电机电刷换向从而旋转,倒转和也是正转一样。占空比越大提供给电机的电流就越大通过调节占空比达到调节电机转速的效果。 3.4 舵机驱动电路 由于MPC5604MINIPWM输出的高电平时3.
31、3V,无法驱动舵机所以我们用三极管做开关形成5V的脉冲驱动舵机。舵机PWM的周期是20ms频率不是很高,一般的三极管就能满足要求,这里我们选用了NPN的9013,STEER是6V(可调)电压供给舵机。 3.5拨码开关电路 拨码开关中的SW1到SW8连接至单片机端口,当开关闭合单片机端口识别为低电平,当开关断开单片机识别为高电平。小车要想在跑道上高速稳定的运行,路况信息影响很大,所以我们通过检测拨码开关的电平状态设置8个档位,每个档位对应一段特殊的程序,这样就可以在不同的路况给出不同的策略,保证小车快速稳定地行驶。其实在这里还可以选择其它的方式,比如说按键式和触摸屏式,但是这两种方式
32、不仅价格要高而且功耗大,为了节省外围电路功耗,提高车速,节省经济,故采用拨码开关。 4 软件设计 本系统控制软件采用大赛提供的CodeWarrior软件及BDM作为调试工具,此外,厂家提供的编程环境支持C语言和汇编语言的程序设计,以及C语言与汇编语言的混合编程,大大方便了用户的程序设计,提高了系统开发效率。本系统程序代码使用C语言编写。 本程序设计由以下几个模块组成:单片机初始化模块,实时路径检测模块,舵机控制模块,驱动电机控制模块,中断速度采集模块,PID控制模块。 单片机的初始化模块包括:I/O模块、PWM模块、AD模块、计时器模块、定时中断模块初始化。 实时路径检测模块:前排C
33、CD检测黑线,将返回信号输入单片机的输入端口,程序不间断地读入输入端口的信号,通过判断语句,得出合适的PWM信号控制舵机转向。 舵机控制模块,驱动电机控制模块:通过直接输出PWM信号控制。舵机的控制采用开环控制,驱动电机采用PID算法闭环控制。 4.1软件流程 4.1.1程序流程图 程序流程图如图4.1所示: 图4.1 软件流程图 4.1.2 程序流程图介绍 该系统的软件设计流程是先通过线性CCD对赛道信息进行采集,把采集到的信息通过外围运算放大器进行放大,滤波后,计算自适应曝光时间。只需设置一个合理的阈值,把图像处理成只有黑白两种颜色,便于我们采集到赛道两边的黑线信息,然
34、后再进行滤波,把信号采集中出现的椒盐噪声所引起的一些孤立黑点给去除掉,从而可以提取出一条清晰的赛道信息,把赛道信息传给主控芯片,由主控芯片产生一个PWM波,PWM波是一个占空比可调的,再由PWM波去控制转向舵机,从而控制小车的转动方向,双向电动机的转动方向的转动速度也是由PWM波控制的,最终使小车在赛道上平稳快速的行使。 4.2 CodeWarrior介绍 4.2.1 CodeWarrior简介 CodeWarrior包括构建平台和应用所必需的所有主要工具 - IDE、编译器、调试器、编辑器、链接器、汇编程序等。另外,CodeWarrior IDE支持开发人员插入他们所喜爱的工具,使他们
35、可以自由地以希望的方式工作。CodeWarrior开发工作室将尖端的调试技术与健全开发环境的简易性结合在一起,将C/C++源级别调试和嵌入式应用开发带入新的水平。开发工作室提供高度可视且自动化的框架,可以加速甚至是最复杂应用的开发,因此对于各种水平的开发人员来说,创建应用都是简单而便捷的。 它是一个单一的开发环境,在所有所支持的工作站和个人电脑之间保持一致。在每个所支持的平台上,性能及使用均是相同的。无需担心主机至主机的不兼容。CodeWarrior开发工作室包括完成大多数嵌入式开发项目所需的所有工具。 4.2.2 CodeWarrior功能 项目管理器:为软件开发人员处理最高级别的文件
36、管理;按照主要组别组织项目条目;追踪状态信息(例如文件修改日期);确定每个构建中特定文件的构建顺序及内容;协调插件程序以提供箱版本控制和RTOS支持这样的业务。 文本编辑器:支持源代码和其他文本文件的创建和处理。与其他的IDE功能完全集成。 搜索引擎:查找特定的文字串;以替代文字替换找到的文字;支持常规表达的使用;提供文件比较及差别功能。 源浏览器:保存用于程序的符号数据库;包括变量及功能的名称和值的符号的举例;使用符号数据库协助代码浏览;将每个符号与此符号相关代码的其他位置链接;处理目标导向和程序语言。 构建系统:使用编译器从源代码生成可重新定位的目标代码,并使用链接器从目标码生成最
37、后的可执行图像。CodeWarrior C/C++编译器工具包括业内领先的C/C++语言CodeWarrior编译器,包括标准模板库(STL)及各种其他工具。 源级别调试器:提供高性能窗口的源级别调试器,配备最新的高效率增强型图形性能,缩短板的bring-up和应用开发时间;使用符号数据库,提供源级别调试;支持符号格式,例如CodeView、Debug With Arbitrary Records Format(DWARF)和STABS。 指令组模拟器:用于jump-starting应用开发的集成指令组模拟器(仅适用于特定的结构)。 版本控制工具:市场中众多的版本控制工具与CodeWar
38、rior产品兼容。 4.3 系统的初始化设置 在整个系统设计中,用到了7个单片机基本功能模块:时钟模块、PWM输出模块、外部中断模块、ECT模块以及普通IO模块。根据系统实际需求,对各个模块进行了初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。 4.3.1 时钟模块 单片机中有四个不同的时钟,即外部晶振时钟、锁相环时钟、总线时钟和内核时钟。本文采用的是8MHz的外部晶振,因此外部晶振时钟为8MHz,默认设置下,锁相环时钟为64MHz,总线时钟为SMHz,内核时钟为64MHz。锁相环时钟与外部晶振时钟的倍、分频关系由SYNR、REFDV两寄存器决定。 总线时钟用作片
39、上外围设备的同步,而内核时钟则用作CPU的同步,它决定了指令执行的速度。为了提高外围设备的工作性能,对单片机进行了超频。 本文通过实时中断的时间间隔来控制参数采样及控制指令输出的周期,在系统中,由于各个任务的工作周期不相同。路径识别传感器的采样周期为10ms,舵机的控制指令输出的周期为5ms。为了满足不同任务的需求,将单片机的实时中断间隔时间设置为1ms,然后通过软件计数的方式来产生不同周期的时间间隔。 4.3.2 PWM模块 脉宽调制模块有8路独立的可设置周期和占空比的8位PWM通道,每个通道配有专门的计数器。该模块有4个时钟源,能分别控制8路信号。通过配置寄存器可设置PWM的使能与否
40、、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(八个8位通道还是四个16位通道)。 在智能模型车系统中,一共用到四路PWM输出,两路用于舵机控制,两路用于电机控制;为了提高控制精度,将两路8位通道合并为一个16位通道来控制舵机,这样可使舵机的控制精度从1/255提高到1/65536。对于电机的控制,8位的输出精度可以满足应用要求,一路PWM输出用于控制电机的正转,一路PWM输出用于控制电机的反向制动。 4.3.3 速度检测模块软件设计 前面我们介绍过速度检测模块采用光电编码器,由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成
41、的检测装置检测输出若干脉冲,脉冲直接接在单片机的输入捕捉端口,每一个上升沿发生一次中断,通过计算每10毫秒中断的个数就能反映当前电动机的转速。 4.3.4 车体控制算法 车体控制算法是整个系统的核心,它直接关系到赛车的表现。在经过对传感器信息的处理后,利用CCD采集的路径形状信息来控制转向舵机和行进电机的输出量,其中转向舵机采用PD控制算法,行进电机的控制采用PID控制算法。 4.3.5 PID控制算法 PID(比例、积分、微分)控制是一种建立在经典控制理论基础上,对过去、现在和未来信息进行估计的控制算法。PID控制策略其结构简单,稳定性好,可靠性高,并且易于实现。其缺点在于控制器的参
42、数整定相当繁琐,需要很强的工程经验。相对于其他的控制方式,在成熟性和可操作性上都有着很大的优势。所以最后我们选择了PID的控制方式。 图4.2 PID模拟控制框图 PID控制器的数学模型为: 式(4.1) 式(4.l)中,Kp为比例系数,Ti不为积分时间常数,Td为微分时间常数。u(t)经被控对象获得新的输出信号y(t)。这个新的输出信号被再次送到感应比较器以发现新的误差信号,这个过程就这样周而复始地进行。 由式(4.l)可得出,Kp值增大时,系统的响应速度加快,闭环系统响应的幅值增加,当其达到某个Kp值,系统将趋于不稳定;当增加积分时间常数Ti的值时,
43、系统超调量减小,而系统的响应速度将变慢。因此,积分环节的主要作用是消除系统的稳态误差,其作用的强弱取决于积分时间常数界的大小。当增加微分时间常数Td时,系统的响应速度增加,响应的幅度也增加,同时由于该环节反应了控制量信号的变化速率,因此微分环节还可实现系统的预判,大大提高系统响应速度,但对控制量信号无变化,或者变化缓慢的系统不起作用。在本系统中,赛车位置信号为y(t),由传感器采集得到;其期望的运行位置r(t)为预先设定好的定值输出信号。y(t)可作为舵机的控制信号。 运用PID控制的关键是调整Kp,Ti和Td三个比例系数,即参数整定。PID控制器参数整定的方法很多,我们通过试凑法来整定参数
44、,试凑法是通过闭环试验,观察系统响应曲线,根据各控制参数对系统响应的大致影响,反复试凑参数,以达到满意的响应,最后确定PID控制参数。试凑不是盲目的,而是在控制理论指导下进行的。 在控制理论中已获得如下定性知识: 比例调节(P)作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。 积分调节(I)作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用
45、就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。 微分调节(D)作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。
46、试凑法的具体实施过程为: 1、整定比例部分,将比例系数由小变大,并观察相应的系统响应,直至得到反应快、超调小的响应曲线。如果系统静差小到允许范围,响应曲线己属满意,那么只需比例控制即可,由此确定比例系数。 2、如果在比例控制基础上系统静差不能满足设计要求,则加入积分环节,整定时首先置积分时间为很大值,并将经第一步整定得到的比例系数略微缩小(如缩小为原值的0.8),然后减小积分时间,使得在保持系统良好动态的情况下,静差得到消除,在此过程中,可根据响应曲线的好坏反复改变比例系数和积分时间,以期得到满意的控制过程,得到整定参数。 3、若使用比例积分控制消除了静差,但动态过程经反复调整仍不能满意
47、,则可加微分环节,构成比例、积分、微分控制器。在整定时,先置微分时间为零,在第二步整定基础上增大微分时间,同样地相应改变比例系数和微分时间,逐步试凑以获得满意的调节效果和控制参数。 以上简要介绍了PID算法的原理和特性,在实际过程中,由于传感器是按一定间隔周期获取位置信息的,因此必须将连续PID控制算法离散化,这样可得到数字位置式PID控制算法,其数学模型为 式(4.2) 式(4.2)表示的控制算法提供了执行机构的位置ui,所以被称为位置式PID控制算法。当执行机构需要的不是控制量的绝对值,而是其增量(如驱动步进电机)时,由式(4.2)可推导出数字增量式PID控制算法为
48、 式(4.3) 式(4.4) 式(4.5) 式(4.6) 式(4.7) 式中:e为引导线偏离车体中轴线的偏差值;K为比例系数;T为速度采样周期;Ti为积分环节时间常数;Td为微分环节时间常数。 4.3.6 电机运行的PID控制 车速采用闭环控制,由PID控制器调节,其输入量为目标速度值与当前速度值的差值,目标速度根据当前的路况信息以及路况更迭信息确定,PID调节器的输出即为与行进电机转速成比例的数值,经处理后,得到与所需速度相对应的PWM脉宽信号。 电机运行
49、的程序框图如图4.3所示: 图4.3 电机运行的程序框图 4.3.7 转向舵机的PD控制 舵机作为赛车的方向控制机构,其控制算法直接影响到赛车的运行质量,如舵机的控制算法不好,会导致舵机转角不平滑,过弯时出现多次转弯,使车速在设计数字式PID控制算法时,对模型的结构进行了许多简化。首先,使用红外射/接收管阵列作为位置信息的提取装置,认为其返回状态的信息对应于赛车的际位置,并通过它与理想状态的偏差,弯道时大大的减小,因此,舵机控制算的主要目的是舵机及时平滑的过渡。 具体编写程序时,首先通过估算建立了一个量化表,将采集到的不同位置传器的状态信息数字量转
50、换成相应引导线偏离车体中轴线的偏差量。然后对该差值进行位置式PD控制算法处理,得出此时偏差所对应的转向舵机转角的PWM宽,对舵机进行控制,其控制算法为: 式(4.8) 式(4.8)中,可调参数T为采样周期,T,Kp和Td值由实验确定。 为了更灵活地控制舵机的转角,还可以通过比较本次与上一次车体偏差的大,对舵机的转角作进一步校正。其舵机转角校正算法为: 式(4.9) 式4.9中,θ为最终输入舵机的PWM脉宽;Kc为舵机调整系数;direcition的值为+1或-1,代表引导线的移动方向;position的值为+l或-1,代表引导线相对于车体中轴线的左右位置。 当
51、引导线与车体中轴线的本次偏差大于上一次偏差时,表明引导线在继续外,应使舵机在偏离的方向上加大原有转角,使车体更快的调整到正确的方向上;反之,当本次偏差小于上一次偏差时,表明引导线内偏且车体正在逐渐调整位置,可以适当减小舵机原有转角使赛车更加平滑地运动至引导线的中心线位置。 导线的偏移状态与参数数值的选择和舵机转角要求的对应关系如表4.1所示。 表4.1引导线偏移状态与参数数值的选择和舵机转角要求的对应关系 引导线偏移状态 Position 引导线偏移方向 Direction 要求 引导线在车左 +1 向外偏 +1 车轮增大左偏角度 引导线在车左 +1 向内偏 -
52、1 车轮减小左偏角度 引导线在车右 -1 向外偏 -1 车轮增大右偏角度 引导线在车右 -1 向内偏 +1 车轮减小右偏角度 舵机运行的控制程序如图4.4所示: 图4.4 舵机运行的程序框图 5总结 自行设计制作的PCB电路板形状根据车模量身定做,布局走线合理,并根据功能实现了模块化分离,使电路的易用性、稳定性大幅提高,维护和更换也更加容易。虽然我们设计的小车最终能够按我们的要求自动循迹,但我们最初的想法是让小车能够沿着赛道的中心位置行使,但在测试的时候小车总是沿着赛道的内到行使,最终发现不是小车的硬件设计问题,是控制小车行使的算法问题,经过
53、同组同学的改正之后,小车是正常按照赛道的中心位置行使的。小车在运行过程中有时会冲出赛道,是由于目前能力问题程序还是不太完善,还有待提高。我的子课题是主监控程序和行驶程序的设计,硬件要是不可靠软件再完美也是望洋兴叹,开始一切都很顺利,在调试电机的时候有时会倒转,发现是BTS的温度过高。最后我们选择在两片BTS上都加上散热装置才得以解决此问题。在未来的智能车设计中,定会出现更先进的图像传感器,也会出现更先进的技术,使智能车拥有更大的前瞻,采集到更多的赛道信息。随着信息的增加,控制算法也会越来越复杂。期待着更先进的技术出现。技术进步永无止境! 致 谢 毕业设计即将结束,我们也基本完成了课题任务中
54、的要求。我们向在毕业设计中一直关心和指导我们的夏老师表示由衷地感谢。正是夏老师的精心指导,我们才能比较顺利的完成我们的毕业设计。他平日里工作繁多,但在我做毕业设计的各个阶段都给予了我悉心的指导,他严谨治学的态度也使我非常敬佩。 另外我要感谢我们组各位同学的积极帮助,在我的毕业设计中,他们的指导给予了我极大的帮助,使我对整个毕业设计的思路有了总体的把握,并耐心的帮我解决了许多实际问题,使我有了很大收获。他们在整个开发过程中提出了许多建设性意见,并给我解决了一些专业性问题。 最后我们也向关心我们的电子与信息工程学院的领导表示感谢,感谢领导为我们在即将离校之际提供一个锻炼我们实际动手能力的毕业设
55、计并为我们提供了良好的实验环境。 面临毕业,我们将不辱使命,发挥自己所学所长,积极向上。 参考文献 [1]卓晴,黄开胜、邵贝贝.学做智能车[M].北京航空航天大学出版社;2007 [2]索雪松,纪建伟.传感器与信号处理电路[M].北京:水利水电出版 社;2008. [3]杨宝清.现代传感器技术基础[M].中国铁道出版社,北京:2001. [4]王立权.机器人创新设计与制作[M].北京:清华大学出版社;2007. [5]吴红星.电机驱动与控制专用集成电路及应用[M].中国电力出版社;2006 . [6]陈爱弟.Prote199实用培训教程[M].北京; 人民邮电出版社;2
56、000. [7]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:清华大学出版社;2004. [8]杨国田,白焰. Motoro 1a68HC 12系列微控制器原理、应用与开发技术[M].北京:中国电力出版社;2003. [9]刘建刚,程磊,黄剑,等.基于CCD图像识别的HCS12单片机智能车控制系统[J].光电技术应用,2007:22(6):52-60. [10]葛亚明,刘涛,王宗义.视频同步分离芯片LM1881及其应用[J].应用科技, 2004,31(9):20-22. [11]卓晴,黄开胜,邵贝贝.学做智能车:挑战“飞思卡尔”杯[M].北京:北京航空航天大学出版社,2007
57、:35-40. [12]程亚龙,周怡君.基于CMOS传感器的智能车路径识别研究[J].机械制造与研究,2007, 36(5):13-15. [13]代荣,龙燕,李剑峰,等.基于CCD成像系统的硬件电路设计[J].现代电子技术, 2007, 30(22):185-187. [14]李义高,南忠良,马骁.线阵CCD高速采集和实时传输系统设计[J].自动化与仪表,2007, 22(6):70-74. [15]吴文明,赵田东.基于面阵CCD的视觉图像传感器[J].浙江大学学报(工学版),1997, 31(4):556-561. [16]贾秀江,李 颢.摄像头黑线识别算法和赛车行驶控制策略[J
58、].电子产品世界,2007. [17] 智能车制作论坛. [18] [19] MC5604 Technical Data, Freescale Semiconductor[DB/OL]. 附录: 1、 小车实物图 (1)小车俯瞰图: (2)MPC5604实物图: (3)CCD实物图: (4)编码器实物图: (5)BTS实物图: 2、 程序 (1)主控制程序: #include "MPC5604B_M27V.h" /* Use proper include file */ #include "IntcInt
59、errupts.h" #include "Init.h" #include "Variable_def.h" #include "Car.h" #include "CCD.h" #define key1 PIF_PF8 #define key2 PIF_PF9 #define key3 PIF_PF10 /******************主函数*************************/ void main(void) { sysclk_module_init_fnc(); //系统时钟初始化,选
60、择64MHz System_Int(); //LED闪烁两次,并配置PF13(BTS),PE15(CCD_SI),PG11(CCD_CLK) PIT_Init_Fnc(); //定时器初始化 定时1ms SCI0_Init(); //串口通信初始化 9600 ADC_init(); //AD转换初始化 init_offset(); //小车加速度计陀螺仪直立零偏移量初始化 System_In
61、t(); //初始化完成 initEMIOS_0(); //PWM 初始化 initEMIOS_1(); //read the pluse initEMIOS_1ch00(); //PG14 左电机编码器 initEMIOS_1ch08(); //PH6 右电机编码器 initEMIOS_0ch01( ); initEMIOS_0ch02( ); initEMIOS_0ch03( ); initEMIOS_0ch04( ); initEMIOS
62、_1ch19();//电机速度初始化 initEMIOS_0ch07(); //舵机方向初始化 CCD_IO_Init(); //CCD初始化 EnableInterrupts ; //开中断 执行定时器 // DisableInterrupts //关闭中断 // EMIOS_1.CH[19].CBDR.R = 35; //电机速度 PIT0_INTC(); //PIT0中断设置,包括调用中断服务程序,识别中断向量,设置中断优先 for(;;) { /* 2
63、0ms Task */ if(TimerFlag20ms == 1) { TimerFlag20ms = 0; /* Sampling CCD data */ ImageCapture(Pixel);//128个像素点采集 /*均值滤波处理*/ lvbo_program();//均值滤波函数 /*动态阈值*/ cal_value();//计算动态阈值
64、 /*二值化处理*/ binarize();//二值化处理 /* Calculate Integration Time */ CalculateIntegrationTime();//计算曝光时间 /* Send data to CCDView every 100ms if(++send_data_cnt >= 5) { send_data_cnt = 0;
65、 //yu(Pixel); SendImageData(Pixel); }*/ black_line();//黑线提取函数 duoji_control_pid();//舵机PD函数 makespeed();//电机 } } } /********************************************************
66、***************************** 函数void PIT0_INTC(void) 功能:PIT0中断设置,包括调用中断服务程序,识别中断向量,设置中断优先级 说明: **************************************************************************************/ void PIT0_INTC(void) { INTC_InstallINTCInterruptHandler(PIT0_ISR,59,2); INTC.CPR.R=0; } /************************************************ 函数名称: void PIT0_ISR(void) 函数功能: PIT0中断服务程序 定时1ms 调用函
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。