智能车期末报告_第1页
智能车期末报告_第2页
智能车期末报告_第3页
智能车期末报告_第4页
智能车期末报告_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、得分 微机原理与接口技术课程考试作品报告作品名称: 智能小车制作 姓 名: 胡忠魁 1404110523 尹建璟 1404110519 李天恩 1404110609 专业班级: 电信1103 电信1104 中南大学物理与电子学院 2014年下学期学校: 中南大学 - 42 -摘要   本文介绍了摄像头二三队队员们在准备第八届飞思卡尔智能车大赛中的工作成果,智能车使用MK60DX256ZVLQ10处理器,使用IAR 开发环境,车模采用大赛组委会统一提供的E车模。    文中介绍了智能小车控制系统的软硬件结构及设计开发

2、过程,整个系统涉及车模机械结构调整、传感器电路设计及信号处理、控制算法和策略优化等多个方面。本文主要从硬件电路、机械设计、软件设计等方面阐述了小车的整体架构与设计思路。车模以MK60DX256ZVLQ10单片机为控制核心,以数字摄像头作为循迹传感器,以光电编码器检测速度信息。车模的控制主要可分解为直立控制、速度控制、方向控制,而这三个方面又相互影响。车模系统的简单工作原理是车体在保持平衡与适当速度的前提下,再由MK60DX256ZVLQ10单片机收集摄像头返回来的赛道信息对方向进行控制。关键词:MK60DX256ZVLQ10 单片机,数字摄像头,陀螺仪,加速度计,PID目录第一章系统

3、总体方案设计- 2 -1.1系统总体框图- 2 -第二章系统硬件设计- 4 -2.1主控模块- 4 -2.2电源管理模块- 5 -2.3电机驱动模块- 6 -2.4倾角传感器电路- 8 -2.5速度检测传感器电路- 10 -2.6赛道信息检测(线性CCD)- 10 -第三章 机械设计- 12 -3.1车模简化改装- 12 -3.2加固电机引线- 12 -3.3拨码开关的安装- 13 -3.4电池的安装- 14 -3.5光电编码器的安装- 14 -3.6 CCD的安装- 15 -3.7陀螺仪与加速度计传感器- 16 -第四章 系统软件设计- 17 -4.1 PID算法的应用- 18 -4.1.1

4、平衡的PD控制- 18 -4.1.2速度的PD控制- 19 -4.1.3速度的PD控制方向的PD控制- 19 -第五章 开发工具、安装、调试过程说明- 21 -5.1集成开发环境- 21 -5.2上位机- 24 -5.3示波器上位机- 25 -第六章 模型车的主要技术参数说明- 26 -6.1 智能车外形参数- 26 -6.2 电路部分参数- 26 -6.3 传感器个数以及种类- 26 -6.4 除了车模原有的驱动电机、舵机之外伺服电机数量- 26 -6.5赛道信息检测精度、频率- 26 -第七章 总结- 27 -附录- 29 -附录A 核心算法子程序- 29 -引言 在半导体技术日渐发展的今

5、天,电子技术在汽车中的应用越来广泛,汽车电子化已成为行业发展的必然趋势。汽车电子化被认为是汽车技术发展进程中的一次革命,汽车电子化的程度被看作是衡量现代汽车水平的重要标志,是用来开发新车型,改进汽车性能最重要的技术措施。汽车制造商认为增加汽车电子设备的数量、促进汽车电子化是夺取未来汽车市场的重要的有效手段。“飞思卡尔杯” 全国大学生智能汽车竞赛是由教育部批准并委托自动化分教指委主办,飞思卡尔公司协办,面向全国大学生的重要赛事。它是以迅猛发展的汽车电子为背景,涵盖了自动控制、模式识别、传感技术、电子电气、计算机、机械等多个学科交叉的科技创意性比赛。根据比赛章程,全国大学生智能汽车竞赛是在统一汽车

6、模型平台上,使用飞思卡尔半导体公司的8位、16位微控制器作为核心控制模块,通过增加道路传感器、设计电机驱动电路、编写相应软件以及装配模型车,制作一个能够自主识别道路的模型汽车。改装后的模型汽车按照规定路线行进,以完成时间最短者为优胜。竞赛集科学性、趣味性和观赏性于一体,吸引了大批同学参与其中,受到了广泛的欢迎。第一章 系统总体方案设计第一章系统总体方案设计本章主要简要的介绍智能车的总体设计思路与各个模块的分配,在后面的章节中将分为机械结构部份,硬件电路设部份,软件算法分析部份对智能车做再更一步的简介,各模块将会在各章节中详细论述。1.1系统总体框图车模的系统框图及各模块关系如图1.1所示图1.

7、1系统总图电源管理模块:主要提供系统各模块正常工作所需要的电源。稳定、高效的电源模块是系统正常工作的基础。单片机控制模块:本系统采用由Freescale公司生产的MK60DX256ZVLQ10单片机作为系统的控制核心,它负责控制各个模块间的协调工作,主要接收来自赛道信息采集模块的赛道信息和速度检测模块反馈的速度信息,通过对这些信息进行恰当的处理,形成合适的控制量对驱动电机进行控制。赛道信息采集模块:该模块相当于智能车的“眼睛“,主要负责采集小车所处位置当前或前面的赛道信息,输出相应的信号供主控芯片处理。本次大赛摄像头组采用数字摄像头来采集赛道信息。速度检测模块:该模块主要检测小车的当前速度,作

8、为速度反馈传至控制器,以实现速度的闭环控制。精准的速度检测,是实现准确控制小车速度的前提。电机驱动模块:驱动电路是整个系统的重要组成部分,也是高效的算法得以实现的硬件基础。它主要作为控制电机转速的执行机构,要求能有很好加速和制动性能。辅助调试模块:辅助调试模块用于构建一个良好的人车交互界面,如智能车调试时的一些重要信息的显示以及一些重要参数的设定等。第二章 系统硬件设计第二章系统硬件设计 设计车模控制系统的电路,首先需要分析系统的输入、输出信号,然后选择合适的核心控制嵌入式计算机(单片机),逐步设计各个电路子模块,最后形成完整的控制电路。系统的输入输出包括:1. AD转换接口(至少4路) CC

9、D :一路,用来传送摄像头采集的信息。 陀螺仪:两路。一路用于检测车模倾斜角速度,一路用于检测车模转动角速度。 加速度计:一路,测量加速度Z轴输出电压。 辅助调试:(备用)1到3路,用于车模调试、设置作用。 2. PWM接口(2路) 控制左右两个电极双方向运行。由于采用单极性驱动,需要四路PWM接口。如果采用双极性驱动,可以使用两路。3. 定时器接口(1路)测量两个电机转速,需要一个定时器脉冲输入端口,另一路用外扩芯片采集。 4. 通讯接口(备用)SCI(UART):一路,用于程序下载和调试接口;5. IO接口(备用)4到8路输入输出,应用车模运行状态显示,功能设置等。上述接口中,测量重力加速

10、度传感器和车模转动速度的陀螺仪可以简化省略掉。竞赛允许使用飞思卡尔公司处理器系列,绝大部分都能够满足上面的控制要求。本参考方案中选择飞思卡尔的DSC 16位处理器MC56F8013作为核心的控制处理器。2.1主控模块 图2.1 k60最小系统 单片机最小系统板:我们采用的飞思卡尔公司的kinetis系列的单片机MK60DX256ZVLQ10,它是系统的控制核心,具有丰富的资源,足以满足小车的控制。由于是新出的单片机,基于Cortex-M4内核,对于我们来说,掌握起来难度不小。2.2电源管理模块图2.2 电源模块 上图为整个小车的电源模块。组委会提供可充电7.2V电池作为唯一电源, 根据我们小车

11、的需要,我们将电源模块分为以下几个部分:电机驱动模块 7.2V,光电编码器5V。其电路图为:图2.3 电源模块pcb2.3电机驱动模块 BTS7960是由Infineon(英飞凌)公司推出的智能功率驱动芯片,内含电流检测电路、控制驱动电路,以及1个P型和1个N型MOSFET管,可以灵活应用于2相或3相、直流有刷或无刷电机的控制驱动电路中,不仅可以简化电路设计,而且使得控制更加简单。在过温、过压、欠压、过流和短路的情况下,芯片自动关断输入;当电流超过标定的最大电流时,通过MCU端的I0使能引脚关断驱动芯片。为了防止系统在工作过程中因为芯片保护而停止工作,在系统设计时要考虑散热、稳压、过流保护等情

12、况并采取措施。 它所供电压为845 V,最大电流为50 A,驱动信号PWM频率为125 kHz。 图2.4 电机驱动 采用2片BTN7970组成一个完整的H桥驱动电路驱动l路有刷直流电机,如图所示。其中,0UT端分别接电机的两端;IS端接下拉电阻,用于配置IS端输出电压的范围;MOTOR_PWM_A与MOTOR_PWM_B,分别输出非零占空比的PWM和零占空比的PWM,保证左右半桥上下背各有一个导通,组成一个回路电机驱动模块由桥构成,H桥具有工作电压范围大,导通电阻小,导通电流大的优点。同时我们将PWM波控制信号通过与门接入控制端,这样通过这个信号我们可以将H桥的下半桥连接在一起,电机的两端接

13、通,电机处于能耗制动状态。能耗制动方式在减速性能方面和反转减速相差不大,但是对电机的损害较小,有利于电机的保护。2.4倾角传感器电路图2.5 陀螺仪与加速度计电路图图2.5中,将陀螺仪的输出信号放大了10倍左右,并将零点偏置电压调整到工作电源的一半(1.65V)左右。而对于加速度计则不在放大。以上电路只是将传感器的信号进行了放大处理,角度和角加速度的计算都是依靠单片机的软件来完成。对于角度信号的处理也可以通过硬件电路来完成。其中两陀螺仪和加速度计共占用3个AD口。我们采用双轴的陀螺仪如图2.6:图2.6 双轴陀螺仪 双轴陀螺仪分别检测车体的倾角与转弯时摆过的角度。其中对于车体倾角的检测我们用了

14、加速度计与陀螺仪相结合的方式。陀螺仪输出的电压曲线平滑,但由于从陀螺仪角速度获得角度信息,需要经过积分运算。如果角速度信号存在微小的偏差和漂移,经过积分运算之后,变化形成积累误差,所以静态特性差。而用加速度计进行角度测量时。由于车模倾角在两个角度位置过渡,除了角度变化信号之外,还存在由于运动引起的电压波动,这个电压波动随着车模运动速度增加会变得很大,这也导致了其动态特性差。而若将俩信号以一定的比例进行补偿则能较好的解决这个问题。图2.7 角度滤波曲线 如图2.7所示红线为用陀螺仪测量的角度,黄线为用加速度计测量的角度,蓝线为角加速度。2.5速度检测传感器电路 测速采用光电编码器方案,并且通过一

15、块金属支架安装在后轮齿轮处(如图3-9),与齿轮耦合。通过测量齿轮速率,间接测量车体的运动速率。光电编码器采用欧姆龙的E6A2-CS3C 小型光电编码器,其旋转一周可以输出500 个脉冲信号。将此信号输入单片机的脉冲捕捉模块可以获得编码器输出脉冲数。单位时间查看脉冲捕捉数值,并且清零即可获得车体运动速度。例如:车轮直径为53mm,可以计算得到车轮周长约为166.5mm,通过测试得到车轮选择一周光电编码器输出脉冲数为2138 个,可以计算得到车行走1mm 输出12.84 个脉冲。如果1ms 查看一次脉冲捕捉寄存器数值为128.4,则可以计算得到在1ms 时间里车体行走了10mm,则车速为10m/

16、s。 图2.8光电编码器 2.6赛道信息检测(OV7620)图2.9 CCD引脚 蓝宙电子OV7620传感器是由蓝宙电子科技有限公司面向智能车竞赛推出的智能车专用传感器。ov7620 是一款黑白 CMOS 型图像采集集成芯片,提供高性能的单一小体积封装。该器件分辨率可以达到 640X480,传输速率可以达到 30 帧;内置 10 位双通道 A/D 转换器,输出 8 位图像数据;具有自动增益和自动白平衡控制,能进行亮度、对比度、饱和度、 校正等多种调节功能;其视频时序产生电路可产生行同步、场同步、混合视频同步等多种同步信号和像素时钟等多种时序信号;支持连续和隔行两种扫描方式,VGA 与 QVGA

17、 两种图像格式;第三章 机械设计第三章 机械设计机械部分调校的好,对软件的编写有很大的促进。有时软件上为达到某个目的,不得不编写大量的代码,而同样的问题,可能在硬件后机械上的稍加修改就能完美的解决问题。同时,良好的车模机械设计与制作,对于车模稳定运行、安全调试都非常重要。如下仅就车模简化改装与传感器安装两个方面进行讨论。3.1车模简化改装 由于今年摄像头组车模可以使用D和E车模,他们是双后轮驱动,前轮舵机转向的运动模式。下图为我们的组装图图3.1 E车模组装图 3.2拨码开关的安装通过拨码开关我们可以现场进行一些参数的更改。例如调节平衡位置和数据采集开关和速度设定等等。图3.2拨码开关3.4电

18、池的安装我们将电池设计在了车体的后方比车轮略高处。这样有利于车体重心的降低,使小车在转弯与过障碍时更加稳定,使得算法可以更加的简便。图3.4 电池3.5光电编码器的安装光电编码器采用欧姆龙的E6A2-CS3C 小型光电编码器,其旋转一周可以输出500 个脉冲信号。用热熔胶初步固定住编码器,使编码器和电机的齿轮咬合得恰到好处。再用硬板以三角架构将其固定。图3.5 编码器3.6摄像头的安装主要有三个部分组成:底板安装支架,线性CCD通孔支架。线性CCD通孔支架穿过碳素杆用螺栓进行固定,与之相连接线性CCD安装支架可以方便的调节角度。 图3.6 底板安装支架可以直接利用原车自带的一字形长孔进行固定,

19、不用自行打孔,简单方便。同时底板安装支架中间有直径为5mm的圆孔,固定在碳素杆支架上。3.7陀螺仪与加速度计传感器 车模倾角传感器包括陀螺仪和加速度计。我们将这块带有陀螺仪和加速度计的电路板固定在车模的底部,这样可以最大程度减少车模运行时前后振动对于测量倾角的干扰。安装角度传感器电路板时应保证陀螺仪传感器水平安装。图3.7加速度计和陀螺仪模块第四章 系统软件设计第四章 系统软件设计开发软件主要任务包括: 1. 建立软件工程,配置DSC资源,初步编写程序的主框架; 2. 编写上位机监控软件,建立软件编译、下载、调试的环境;3. 编写实现各个子模块,并测试各个子模块的功能正确性; 4. 通过程序初

20、步调试,验证控制电路板的正确性。 开发飞思卡尔公司56800/E系列DSC单片机应用程序环(CodeWarrior for 56800/E Digital Signal Controllers,目前版本v5.9)。与其它版本的CodeWrrior一样,DSC版CodeWarrior也提供了Processeor Expert功能模块,可以通过工程配置非常方便地生成单片机的各个外设的初始化代码和接口程序,帮助开发者将精力集中在应用程序的开发上。图4.1软件开发流程图 通过拨码开关我们可以现场进行一些参数的更改。此外,由于我们共用到两个上位机(CCD上位机和示波器上位机),所以需要用拨码开关来选择使

21、用哪一个上位机。在上电之前我们预先设计好拨码开关。在各模块初始化之后有2s的直立时间,之后进入主循环。程序在主循环中不停发送监控数据,通过上位机监测。 同时我们设计了一个1ms的定时中断。在中断中通过循环计数来造成不同的控制周期。如CCD的控制周期为20ms,而角度控制周期为5ms。由于1ms中断中CCD需要读取128个像素点用时较长,在40MHZ的频率下运行时间会超出1ms,时序也会因此紊乱。为此我们将频率调整至80M以保证严格的1ms中断。此外,在PWM的控制中我们加入了车模跌倒的判断,一但车模跌倒,则停止车模运行。车模的直立控制、速度控制以及方向控制、AD的采样都是在中断程序中完成。图4

22、.2中断4.1 平衡的应用和PID算法的应用2.1平衡车平衡的调节 原理:平衡部分用的是互补滤波,加速度计返回的模拟信号作为车身当前角度的信号,陀螺仪采集车身转动的角速度。主控输出PWM波控制电机的转速以保持车身的平衡和锁定赛道。 经验感受:刚开始做车什么都没有,车模弄好了,万事开头难,平衡部分的调节是最费时间的,参考清华平衡车调试指南与视屏,每天不停地看,不停地想,从二月二十几号到三月份十几号,每天都睡到224里,吃饭也叫外卖,那段时间的孤独与寂寞,想起来真的很让人心酸,靠的是意志,是队友的支持与信任去坚持,终于在没有任何资源下,车子终于可以直立了,那时候的开心,没有做过车的,一定体会不到。

23、2.2平衡车速度的调节 原理:为了控制的准确性和快速性,我们使用编码器作为速度传感器。编码器返回的信号可以形成闭环,使用PID控制电机的转速。平衡组强烈的加减速会导致车身的倾角剧烈的变化,这并不利于车身保持平衡。因此整个调试过程就是要保证车身稳定的前提下不断提高车模前进的平均速度。经验感受:一堆废铁,速度的调节不像四轮车那样简单,因为你必须首先维持车子平衡,直立车速度是通过改变车子倾角来改变其速度的。速度调节花了大概一个礼拜的时间,还是像平衡一样,没日没夜的工作,车子从摇摇晃晃的走,逐渐到比较稳定的向前走,也需要一个突破。平衡做好后对我们来说是一个鼓舞,车子能站起来没用,跑不了还只是2.3平衡

24、车方向的调节 没有眼睛也只是一辆到处乱撞的盲车,摄像头的处理花了我大概将近一个月的时间,从实现摄像头的数据的采集到处理得到俩边的边线,提取出中线。 原理:ov7620产生的图像产生了严重的畸变,如果不进行校正,那么扫描到的数据的正确性将无法保证,那么对于道路形状的判定将会不准确,造成赛车判断失误,走的不是最优路径,严重时甚至冲出轨道。因此,在进行赛车方向控制时,进行坐标的校正就显得格外重要。下面一张图可以看出图像畸变:经验感受:对于摄像头的处理没有经验,也没有学长的指导,什么都要从零开始学起,从配置好摄像头的寄存器,到单片机正常采集出有用信息,而往往,摄像头由于数据量太大,图像处理耗时太久,导

25、致单片机进行图像采集的时候间隔太大,画面不连续,当然方向控制就会不及时,为了解决这个问题,我想到了类似于双进程并行运行的独立工作互不干扰的算法,即摄像头的图像的采集和处理并行运行,这幅图采集的同时,处理上一幅的数据,其实想法很简单,就是用俩个数组,一个数组采集完成后,用另一个数组接着采集,同时单片机可以处理上一个数组,这样节省出摄像头图像处理部分的时间,大大缩短了方向控制周期。直接导致校内赛后和校内赛前速度提升了一个大的档次。4.1.1平衡的PD控制图4.3角度控制框图利用加速度计所获得的角度信息g与陀螺仪积分后的角度进行比较,将比较的误差信号经过比例1/gT放大之后与陀螺仪输出的角速度信号叠

26、加之后再进行积分。对于加速度计给定的角度g,经过比例、积分环节之后产生的角度必然最终等于g。只要比例1/gT合适则得到的曲线即光滑,有良好的动态特性,又不会由于角速度积分而产生零点偏移。4.1.2速度的PD控制图4.4角度和速度控制框图 角度控制需要两个控制参数,分别是比例控制P参数和微分控制参数D。速度控制同样也有两个参数,分别是比例控制参数P和微分控制参数D。在这两个控制中都使用了微分控制,目的是增加车模的角度和速度的稳定性。4.1.3速度的PD控制方向的PD控制 图4.5转向控制框图 方向控制算法根据车模检测到电磁感应电压来生成电机差动控制量。通过左右电机速度差驱动车模转向消除车模距离道

27、路中心的偏差。通过调整车模的方向,再加上车前行运动,可以逐步消除车模距离中心线的距离差别。这个过程是一个积分过程,因此车模差动控制一般只需要进行简单的比例控制就可以完成车模方向控制。但是由于车模本身安装有电池等比较重的物体,具有很大的转动惯量,在调整过程中会出现车模转向过冲现象,如果不加以抑制,会使得车模冲出赛道。根据前面角度和速度控制的经验,为了消除车模方向控制中的过冲,需要增加微分控制。4.2人字处理在今年的比赛中加入了人字,这也是让我们比较头疼的一个问题,人字结构如下:组委会规定的强制调头区的安排示意图:车模通过强制调头区的时候,可以采用两种方式:一种是利用进入调头区对车模运行模式进行调

28、整后再退出调头区继续行驶;另一种就是通过控制车模速度和方向不进入调头区直接通过该路口。如下图所示。这两种方式都要求车模不冲出赛道。我们根据我们自身条件,以缩短比赛的整体时间为目的,我们选择了第二种方式,即:通过控制车模速度和方向不进入调头区直接通过该路口。下面是我们对于过人字的步骤分析:(1) 150cm的直道判定: 由强制掉头区我们可以看到在进入掉头点之前,至少有150cm的直道,因此我们需要先检测出直道情况,然后再进行在直道的基础上检测强制掉头点,确定掉头时间。当然在真真掉头的部分是没有直道的,所以必须是在直道之后的一定时间范围内检测到掉头点。(2) 在进入斑马线之前,有一边的边线突然丢失

29、。对此我们必须进行严格的判定,首先其中一边的边线处在直道特征中,其次另一边突然消失。对于这个特征的判断还是比较难的,第一:在直入90度以上的弯道的时候也是有可能出现这一特征的,第二:如果用某一行的数据检测这个特征,则很有可能判断失误,因为有时图像会出现跳变。所以我们采用了动态扫描,通过动态扫描八行来进行识别。(3) 斑马线特征。其实这个特征很明显,很多人一看不就是白黑之间均匀跳变么,但是你要知道,车身进去的时候并没有直直的对着斑马线,而是与斑马线成六十度角看过去的,这样要提前识别,并直接转过人字要识别出完整的斑马线是不可能的,因此我们就通过观测图像,在直道上,我们是可以看到斑马线的一条黑线和一

30、条白线的,而在别的地方,在赛道外,是没有白色的,但是如果是在急弯前还有一条赛道的话,这样也会出现黑白条的,但是我们已经有了前面两个条件,就足以将其区别开来。人字的算法 : 直道判定:if(abs(GetBias(selectedRow)<15)&&(rightEndRow-rightBeginRow)>(cankao_height-2)&&(leftEndRow-leftBeginRow)>(cankao_height-2) ren_straight=1;renzi_delay2=0; 八行动态扫描的处理:if(left_row_flag &g

31、t;= 6) && (right_row_flag>= 6)/两边全采到 delt_left=(backcan_left1left_row_flag - backcan_left1left_row_flag - 4) /3; delt_right=(backcan_right1right_row_flag - backcan_right1right_row_flag - 4) /3; else if(left_row_flag<6) && (left_row_flag >= 0) && (right_row_flag=7) &a

32、mp;& (extern_line_l=0) && (right_count=8) && (abs(GetBias(25 + 2*left_row_flag) < 15) ) /表示左边线消失,但是右边没有消失,然后判断是否是突变 if(left_row_flag >= 2)/至少有三行存在 delt_left=(backcan_left1left_row_flag - backcan_left10)/left_row_flag ; temp_position_l = delt_left * 3 + backcan_left1left_row

33、_flag-2; else /只采到1行或者0行; delt_left=delt_left_pre; temp_position_l = delt_left_pre *(left_row_flag+1) + backcan_left10; if(temp_position_l > 60)/ && (rightEndRow >=37)/(abs(rightBoundaryrightEndRow - roadHalfWidthrightEndRow - CENTER) < 20)/若消失跳变在15以内则不属于突变 leftline_vanish=1;/gpio_i

34、nit(PTB19,GPO,0); else if(right_row_flag<6) && (right_row_flag >= 0) && (left_row_flag=7) && (extern_line_r=0) && (left_count=8) && (abs(GetBias(25 + 2*right_row_flag) < 15) ) /表示右边线消失,但是左边没有消失,然后判断是否是突变 if(right_row_flag >= 2)/至少有三行存在 delt_right=(

35、backcan_right1right_row_flag - backcan_right10)/right_row_flag ; temp_position_r = delt_right * 3 + backcan_right1right_row_flag-2; else /只采到1行或者0行; delt_right=delt_right_pre; temp_position_r = delt_right_pre *(right_row_flag+1) + backcan_right10; 列的检测:for(uint8 ii=18;ii<=56;ii+) if(rightjump_fla

36、g=0) if(bufferii(backcan_left1left_row_flag +20) - bufferii+2(backcan_left1left_row_flag +20) > 100) /从中心线向前搜搜索到白黑白跳变沿 right_pphang0=ii; rightjump_flag=1; if(rightjump_flag=1) if(bufferii(backcan_left1left_row_flag +20) - bufferii+2(backcan_left1left_row_flag +20) < -100) /从中心线向前搜搜索到白黑白跳变沿 rig

37、ht_pphang1=ii; if(right_pphang1-right_pphang0)<6)&&(right_pphang1-right_pphang0)>=1) rightjump_flag=0; you_flag=1; renzi_time=0; break; 第五章 开发工具、安装、调试过程说明第五章 开发工具、安装、调试过程说明前面几章一直是在为系统制定方案以及方案的细化。但整个系统的完善主要还是在系统的现场调试。在细分的每个模块中,大部分都涉及有众多参数,对这些参数的确定就需要软硬件联合调试。而这过程就需要一整套开发调试环境已工具。包括程序源代码的编

38、辑以编译环境,参数调节与设定工具。5.1集成开发环境IAR Embedded Workbench 是一套完整的集成开发工具集合:包括从代码编辑器、工程建立到C/C+编译器、连接器和调试器的各类开发工具。它和各种仿真器、调试器紧密结合,使用户在开发和调试过程中,仅仅使用一种开发环境界面,就可以完成多种微控制器的开发工作。 如同Windows操作系统其它一般的软件安装一样,单击setup.exe进行安装,你将会看到如图5.1的界面。 图5.1 安装开始 图5.2 认证序列输入的认证序列以及序列钥匙正确后,单击“NEXT”到下一步,如图4所示,在你将选择完全安装或是典型安装,在这里我们选择完全安装。

39、当进度完成后,它将跳到下一个界面,到此我们便完成了安装的步骤。图5.3 安装完成仿真调试 编译好后接下来就是调试程序了。首先你需要连接你的硬件平台才能进行调试。在计算机与ZigBee硬件系统连接前,你需要确保你已在你的计算机上安装了必要的仿真器驱动。 安装完成仿真器驱动后,通过USB接口把ZigBee开发系统与计算机连接。选择菜单 ProjectDebug 或按快捷键CTRL+D进入调试状态,也可按工具栏上按钮进入调试。进入调试后,整体窗口如图5.5:图 5.5 调试界面设置并监控断点。使用断点最便捷的方式是将其设置为交互式的,即将插入点的位置指到一个语句里或靠近一个语句,然后选择 Toggl

40、e Breakpoint 命令。在 BK1KeyInit语句出插入断点。在编辑窗口选择要插入断点的语句,选择菜单 EditToggle Breakpoint 。或者在工具栏上单击按钮,如图:图 5.6 调试 设置一个断点 这样在这个语句设置好一个断点,用高亮表示并且在左边标注一个红色的“X”显示有一个断点存在。可选择菜单 ViewBradkpoint 打开断点窗口,观察工程所设置的断点。在主窗口下方的调试日志 Debug Log 窗口中可以查看断点的执行情况。如要取消断点,在原来断点的设置处再执行一次 Toggle Breakpoint 命令。 5.2上位机我们用到的上位机有两个(CCD上位机

41、和“示波器”上位机)。并且波特率均为9600. CCDView 软件由CCDView.exe、ComDataHook.dll 组成。CCDView主要用于显示用户CCD传感器采集的数据,并以图像的方式显示。条形码:CCD采集的数据,以灰度的方式表示,每个竖条代表一个数据。曲线图:横坐标为CCD数据的偏移,纵坐标为灰度值(0255)。图 5.7 CCD上位机5.3示波器上位机图 5.8 示波器上位机 该上位机共有4个通道,分别将数据用4种不同颜色的曲线表示出来。 第七章 总结第七章 总结经过一个学期时间的筹备,我们顺利完成了智能车的设计与制作,实现了智能车的寻迹自动行驶功能。在此过程中,完成了传

42、感器布置方案的比较和确定、测速传感器的比较和确定、MCU外围电路的设计、控制算法的编写、对直流电机、平衡、速度、方向PD控制以的控制等工作。分析整个车模系统,我们在车模硬件及软件上都做过一些努力。系统上主要有以下特点:1. 采用数字摄像头为循迹传感器。我们的前瞻约有150 厘米,大的前瞻有利于速度的提高。2. 角度的检测由加速度计和陀螺仪共同完成,取长补短,经过反复实验我们最终得到了理想的曲线,这使得我们之后的调试更加顺利。3. 在调试方面我们使用了OV7620上位机和示波器上位机,分别对线性摄像头和程序中的一些参数进行调试。但由于单片机的限制我们一次只能用其中的一种。这两种上位机均能用图像的

43、形式直观的显示参数的变化,这让我们对参数调试的方向以及一些调试问题的分析判断都有很大的帮助。此外,我们还用到了拨码开关和无线串口,这些对现场调试也很有帮助。4. 对直立小车的控制主要从三方面着手:角度控制、速度控制、方向控制,这三种控制相互影响又互相制约。其中角度控制占主要因素,速度控制次之,方向控制再次之。所以我们从角度控制开始,再将速度与方向控制与之叠加。虽然其后的调试过程中我们又不断的反过来调试角度控制,但前期角度控制的稳定还是至关重要的。5. 在软件的编写上,单片机内部只开一个中断,作为系统的参考时钟。避免中断太多,程序指针的来回跳变,提高程序的稳定性。此外,我们利用对1ms中断的循环

44、计数来制造出不同的控制周期,使得算法的控制有很大的灵活性。同时,采用PD算法控制使得角度、速度的变化变得更加的稳定与快速。 由于知识水平和制作条件的限制,智能车在行驶过程中还存在一些问题。 1 在小车竞速的过程中,我们始终以匀速运行(除了路障),缺乏变速策略。如果我们能在不同赛道采用不同的处理方式我们的小车会跑得更好。此外,直立小车快速的变速也需要以参赛的稳定为前提,而在参数的稳定上我们还得多加研究。2 本智能车系统选用线性CCD,虽然基本可以保证小车的寻线,但小车的前瞻性还比较差,在直道转弯道预判方面还不能做的很好,在这方面我们将会在以后的工作中在传感器和算法方面加以学习、研究。3 本智能车

45、系统在控制算法上还是采用传统的控制算法,在智能算法研究上还有所欠缺。因此,在之后的工作中,智能算法的研究将是控制算法改进的主要方向之一,如:模糊控制、自适应控制等。 总之,通过这次比赛,我们不仅得到了软硬件结合的锻炼机会,更多的是培养了我们的创新能力和解决问题的人能力。对我们以后的工作带来了很大的帮助!附录附录A 核心算法子程序/*/单片机引脚功能初始化函数/*/void init() DisableInterrupts LED1_Init LED2_Init LED3_Init LED4_Init KEY_Init /初始化 ADC0 、十二位精度 、单端输入 /CCD ADC0_18-PT

46、E25 /h_gyro ADC0_channel_1 0P1 LPLD_ADC_Init(ADC0, MODE_12, CONV_SING); /accelerate z: ADC1_channel_0 0P3 /v_gyro ADC1_channel_1 1P1 LPLD_ADC_Init(ADC1, MODE_12, CONV_SING); SensorInit(); /初始化PWM 周期为100us即频率为10kHZ LPLD_FTM0_PWM_Init(10000); /开启PWM通道channel_4-PTD4、channel_5-PTD5、channel_6-PTD6、channe

47、l_7-PTD7; /初始化占空比为0,其中占空比duty=010000; LPLD_FTM0_PWM_Open(4,0); LPLD_FTM0_PWM_Open(5,0); LPLD_FTM0_PWM_Open(6,0); LPLD_FTM0_PWM_Open(7,0); /初始化电机脉冲计数FTM2_PHA-PTB18、FTM2_PHB-PTB19与FTM1_PHA-PTB0 /FTM1_PHB-PTB1 pluse_init(); /SI-PTE4 CLK-PTE5 AO-PTE3(ADC1_7a) CCD_Init(); /初始化定时中断Pit0 1250us LPLD_PIT_Ini

48、t(PIT0,1250, pit_isr0); /初始化串口0 PTB10-R PTB11-T LPLD_UART_Init(UART, 9600); /使能串口0接收中断 / LPLD_UART_RIE_Enable(UART, uart_recv_isr); EnableInterrupts /*/中断处理函数/*/void pit_isr0(void) DisableInterrupts; /禁止总中断 if(PIT_TFLG0&PIT_TFLG_TIF_MASK)!=0) d_acc_time(); /路障变速时间控制函数 speed_period+; speed_control_out(); /速度控制均匀输出函数 dir_period+; direction_control_out(); /角度控制均匀输出函数 TimeCount + ; /定时中断计数变量 if(TimeCount = 1) dir_count+; if(dir_count>=DIR_COUNT) LED4; dir_period=0; dir_count=0; direction_sample(); /竖直陀螺仪及CCD像素采样函数 direction_control();/方向控制函数 else if(TimeCount = 2) speed_count+; speed_sampl

温馨提示

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

评论

0/150

提交评论