




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告学 校: 西安文理学院目录第一章 引言11.1 背景介绍11.2 控制简述11. 3 章节介绍2第二章 基本原理32.1 车模平衡控制42.1.1 车模角度和角速度测量62.2 车模速度控制82.3 车模方向控制9第三章 机械机构及硬件电路的设计与实现113.1 车模机械结构的安装113.1.1 线性CCD传感器123.1.2 角度传感器和陀螺仪的安放123.1.3 PCB板的安放133.1.4 速度传感器的安装143.2 硬件电路的设计与实现143.2.1 电源稳压电路153.2.2 电机驱动电路153.2.3 测速方案选择16第四章
2、软件算法的设计与实现174.1 MC9S12XS128片资源简介174.2 软件功能与框架184.3 赛道识别与处理214.3.1 传感器简介214.3.2传感器的安装与调整224.3.3赛道信息的采集与处理22第五章 开发及调试工具265.1 开发工具265.2 辅助调试工具26第六章 车模的技术参数28第七章 结论29参考文献31附件A 系统原理图32附件B 部分源代码33第一章 引言1.1 背景介绍 飞思卡尔杯全国大学生智能车竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,涵盖了机械、模式识别、电子、电气、传感技术、计算机、自动化控制、汽车理论等多方面知识,从一定程度上反映了
3、当代大学生综合运用所学知识和探索创新的精神。同时该赛事是教育部高等教育司委托(教高司函2005201 号文),由教育部高等自动化专业教学指导分委员会主办的全国性/多学科交叉、趣味性、创新性赛事,旨在加强大学生实践与团队合作精神,促进高等教育改革。学校积极响应教育部关于加强大学生的创新意识、合作精神和创新能力的培养的号召,成立智能车队伍参加比赛。我们积极组队参加第八届“飞思卡尔”杯全国大学生智能车比赛,多方搜索资料。由于今年光电组改为直立平衡车,我们大量研究和参照了去年电磁组赛车的机械结构和控制算法,但由于本届平衡组指定特定型号的线性CCD作为检测并在原有赛道要素基础上增加了障碍、坡道为我们增添
4、了很大的挑战和创新的空间。为满足智能车在高速与急转等恶劣情况下的动力性能和稳定性能,我们参考了上届的队伍参赛经验,经过深思熟虑对整车进行了合理的重心与电路等的布局。本技术报告主要讲述西安文理学院beyond智能车的制作历程,包括机械和硬件的设计、改装,HCS12单片机的学习和使用,控制算法的研究与应用,车模机械参数的讨论和修改等。1.2 控制简述我们采用鲁棒性较强的PID控制算法来作为车子的主导控制。由Freescale半导体公司的16位单片机MC9S12XS128,线性CCD传感器和角度传感器组成智能车系统。小车通过角度传感器采集到的信号进行处理,控制电机保持直立。另一方面,再根据线性CCD
5、传回的信号,控制小车两个电机的差速转向使小车沿着赛道行进。整个智能车系统包括机械设计和软/硬件设计。机械结构设计包括车模的简化改装,CCD传感器的安装,PCB主板的固定,测速编码器的安装,倾角传感器的安装等;车体硬件系统设计包括主板的设计,测速电路的设计,电机驱动的设计等;软件系统设计包括,软件滤波处理,中断调用处理,PID控制算法处理,各个基本模块的分析及其初始化。在制作过程中,我们重点参考了第七届竞赛秘书处的电磁组参考设计方案以及上一届电磁组队伍的技术报告。在控制方案上对其进行了多项改进。在调试时应用单片机集成的串口通信接口配合PC上的上位机给调试带来了极大方便。结合上位机接收的线性CCD
6、波形,我们在参照以往摄像头组光电组的循线算法基础上设计出自己的算法,识别赛道区分十字,虚线,起跑线,障碍,并针对各种情况进行算法处理的尝试,不断完善识别和处理算法,不断提高准确性和稳定性。1. 3 章节介绍 第一章是引言部分,对比赛的背景意义与系统的总体方案进行简单的叙述。第二章是基本原理部分。第三章是机械结构与硬件的设计部分。第四章是算法设计部分。第五章是开发工具、辅助调试工具的说明部分。第六章是车模的技术参数说明。第七章是总结部分。第二章 基本原理光电组比赛要求车模在直立的状态下以两个轮子着地沿着赛道进行比赛,相比四轮着地状态,车模控制任务更为复杂。为了能够方便找到解决问题的办法,首先将复
7、杂的问题分解成简单的问题进行讨论。车模运动控制任务可以分解成以下三个基本控制任务:(1)控制车模平衡:通过控制两个电机正反向运动保持车模直立平衡状态。 (2)通过调节车模的倾角来实现车模速度控制,实际上最后还是演变成通过控制电机的转速来实现车轮速度的控制。 (3) 控制车模方向:通过控制两个电机之间的转动差速实现车模转向控制。车模直立和方向控制任务都是直接通过控制车模两个后轮驱动电机完成的。假设车模电机可以虚拟地拆解成两个不同功能的驱动电机,它们同轴相连,分别控制车模的直立平衡、左右方向。在实际控制中,是将控制车模直立和方向的控制信号叠加在一起加载电机上,只要电机处于线性状态就可以同时完成上面
8、两个任务。车模的速度是通过调节车模倾角来完成的。车模不同的倾角会引起车模的加减速,从而达到对于速度的控制。三个分解后的任务各自独立进行控制。由于最终都是对同一个控制对象(车模的电机)进行控制,所以它们之间存在着耦合。为了方便分析,在分析其中之一时假设其它控制对象都已经达到稳定。比如在速度控制时,需要车模已经能够保持直立控制;在方向控制的时候,需要车模能够保持平衡和速度恒定;同样,在车模平衡控制时,也需要速度和方向控制也已经达到平稳。这三个任务中保持车模平衡是关键。由于车模同时受到三种控制的影响,从车模平衡控制的角度来看,其它两个控制就成为它的干扰。因此对车模速度、方向的控制应该尽量保持平滑,以
9、减少对于平衡控制的干扰。以速度调节为例,需要通过改变车模平衡控制中车模倾角设定值,从而改变车模实际倾斜角度。为了避免影响车模平衡控制,这个车模倾角的改变需要非常缓慢的进行。这一点将会在后面速度控制中进行详细讨论。2.1 车模平衡控制世界上还没有任何一个天才杂技演员可以蒙着眼睛使得木棒在自己指尖上直立,因为没有了眼睛观察进行负反馈,当木棒在人的指尖上直立时,眼睛观察到木棒的倾斜角度和倾斜趋势(角速度),相应的通过人脑做出反应,使手掌移动以抵消木棒的倾斜角度和趋势,从而保持木棒的直立。这就形成了反馈机制。其反馈机制如图2.1所示。图2.1 人保持木棒直立的反馈机制车模平衡控制也是通过负反馈来实现的
10、,与上面保持木棒直立比较则相对简单。因为车模有两个轮子着地,车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。如图2.2所示。图2.2 通过车轮运动保持车模平衡下面对倒立车模进行简单数学建模,然后建立速度的比例微分负反馈控制,根据基本控制理论讨论车模通过闭环控制保持稳定的条件。 假设倒立车模简化成高度为L,质量为m的简单倒立摆,它放置在可以左右移动的车轮上。假设外力干扰引起车模产生角加速度x(t)。沿着垂直于车模地盘方向进行受力分析,可以得到车模倾角与车轮运动加速度a(t)以及外力干扰加速度x(t)之间的运动方程。如图2.3所示。图2.3 车模运
11、动方程对应车模静止时,系统输入输出的传递函数为:,此时系统具有两个极点。一个极点位于S平面的右半平面,因此车模不稳定。车模引入比例、微分反馈之后的系统如下图所示:系统传递函数为:。此时两个系统极点位于:。系统稳定需要两个极点位于S平面的左半平面。要满足这一点,需要k1g,k20。由此可以得出结论,当k1g,k20时,直立车模可以稳定。 在角度反馈控制中,与角度成比例的控制量称为比例控制;与角速度成比例的控制量称为微分控制(角速度是角度的微分)。因此上面系数分别称为比例和微分控制参数。其中微分参数相当于阻尼力,可以有效抑制车模震荡。通过微分抑制控制震荡的思想在后面的速度和方向控制中也同样适用。
12、总结控制车模直立稳定的条件如下: (1)能够精确测量车模倾角的大小和角速度的大小; (2)可以控制车轮的加速度。 电机的运动控制有三个作用: (1)通过电机加速度控制实现车模平衡稳定。(2)通过电机速度控制,实现车模恒速运行和静止。 (3)通过电机差速控制,可以实现车模方向控制。2.1.1 车模角度和角速度测量车模倾角以及倾角速度的测量成为控制车模直立的关键。测量车模倾角和倾角速度可以通过安装在车模上的加速度传感器和陀螺仪实现。由于陀螺仪输出的是车模的角速度,不会受到车体运动的影响,因此该信号中噪声很小。车模的角度又是通过对角速度积分而得,这可进一步平滑信号,从而使得角度信号更加稳定。因此车模
13、控制所需要的角度和角速度可以使用陀螺仪所得到的信号。 由于从陀螺仪角速度获得角度信息,需要经过积分运算。如果角速度信号存在微小的偏差和漂移,经过积分运算之后,变化形成积累误差。这个误差会随着时间延长逐步增加,最终导致电路饱和,无法形成正确的角度信号,如图2.3所示。图2.3 角速度积分漂移现象消除累积误差:通过加速度传感器获得的角度信息对此进行校正。通过对比积分所得到的角度与重力加速度所得到的角度,使用它们之间的偏差改变陀螺仪的输出,从而积分的角度逐步跟踪到加速度传感器所得到的角度。如图2.4所示。 图2.4 通过重力加速度来矫正陀螺仪的角度漂移利用加速度计所获得的角度信息g与陀螺仪积分后的角
14、度进行比较,将比较的误差信号经过比例1/Tg放大之后与陀螺仪输出的角速度信号叠加之后再进行积分。对于加速度计给定的角度g,经过比例、积分环节之后产生的角度必然最终等于g。 为了避免输出角度跟踪时间过长,可以采取以下两个方面的措施: (1)仔细调整陀螺仪的放大电路,使得它的零点偏置尽量接近于设定值,并且稳定。 (2)在控制电路和程序运行的开始,尽量保持车模处于直立状态,这样一开始就使得输出角度与g相等。此后,加速度计的输出只是消除积分的偏移,输出角度不会出现很大的偏差。 如下车模角度控制方案框图: 图2.5 角度控制框图2.2 车模速度控制对于直立车模速度的控制相对于普通车模的速度控制则比较复杂
15、。由于在速度控制过程中需要始终保持车模的平衡,因此车模速度控制不能够直接通过改变电机转速来实现。要实现对车模速度的控制,必须测量车模的实时速度,改变车模的倾角,以及如何根据速度误差控制车模倾角。安装在电机输出轴上的光电编码器来测量得到车模的车轮速度。通过给定车模直立控制的设定值,在角度控制调节下,车模将会自动维持在一个角度。在车模直立控制下,为了能够有一个往前的倾斜角度,车轮需要往后运动,这样会引起车轮速度下降(因为车轮往负方向运动了)。由于负反馈,使得车模往前倾角需要更大。如此循环,车模很快就会倾倒。原本利用负反馈进行速度控制反而成了“正”反馈。如图2.3所示。图2.3 车模倾角控制速度中的
16、正反馈车模的速度控制本质上是通过调节车模的倾角实现的,由于车模是一个非最小相位系统,因此该反馈控制如果比例和速度过大,很容易形成正反馈,使得车模失控,造成系统的不稳定性。因此速度的调节过程需要非常缓慢和平滑。2.3 车模方向控制实现车模方向控制是保证车模沿着竞赛道路比赛的关键。通过检测道路两边黑线确定中心线偏差与电机差动控制实现方向控制,从而进一步保证车模在赛道上。将在下面分别进行介绍。(1)道路中心线的偏差确定确定道路中心线简单的方法可以通过安装在车模上前方的线性CCD检测赛道两边黑线位置通过算法实现道路中心与车模中心偏差的确定。(2)电机差动控制利用道路中心与车模中心偏差检测信号分别与车模
17、速度控制信号进行加和减,形成左右轮差动控制电压,使得车模左右轮运行速度不一致进而控制车模方向。如图2.4所示。图2.4 通过电机驱动差动电压控制车模方向第三章 机械机构及硬件电路的设计与实现本章节主要对车模的设计制作及硬件电路进行介绍,软件控制算法进行系统的介绍。3.1 车模机械结构的安装 车模的机械部分是整辆小车的基础,它代表着硬件架构的稳定性,影响小车行驶的性能,其重要性为小车的所有方面之最。一旦对其进行改动将会影响以后的设计,所以一开始一个良好的机械架构将会节省很多不必要的麻烦。因此,车模的机械性能是我们最优先所考虑的问题。为使小车能更稳定的上跑道,必须使小车的重心降得更低,这样使小车在
18、转弯时不会出现甩尾,今年的车模是两轮着地,小车的质量主要是来自电池,所以将电池放的越低越好。小车的整体效果图如图3.1所示。图3.1 小车整体效果图3.1.1 线性CCD传感器CCD传感器安放原则:前瞻远,质量轻,宽度大。我们选择碳纤维管作为传感器的固定支架。碳纤维管质量轻,硬度高。CCD感器的安放图如图3.2所示: 图3.2 CCD传感器安放图3.1.2 角度传感器和陀螺仪的安放 车模在运行过程中会有强烈的晃动,如果安放太高将会对角度传感器和陀螺仪产生很大的偏差,所以我们选择将其安放在车模的中心偏上位置,这样振动小,敏感度也较高。安装位置如图3.3所示。图3.3 角度和陀螺仪的安放图3.1.
19、3 PCB板的安放为使车模重心尽量低且具有向前的倾角,我们将PCB板安放在小车背面且尽量低,安放图如图3.4所示。图3.4 PCB板安放图3.1.4 速度传感器的安装测速模块采用欧姆龙增量式光电编码器,增量式编码器安装于车的最后部分,安装时必须保证齿轮的充分啮合既不能太紧也不能太松,如图3.5所示:图3.5 编码器的安装图3.2 硬件电路的设计与实现硬件上要做到稳定可靠,简洁高效。本章节将对小车各模块的硬件电路进行详细的介绍。整个智能车控制系统是由三部分组成的:S12X为核心的最小系统板、电源模块、电机驱动电路板。我们使用的是官方提供的S12X核心板模块,这里就不对它进行详细的介绍,为了使小车
20、更简洁轻巧,我们在主板上为最小系统板预留好了插槽,将其他所有模块都做到主板上。其原理图见附件1。3.2.1 电源稳压电路图3.6 稳压电路原理图把电压为7.2V的电池经LM2940稳压后完成如下功能:经过稳压芯片LM2940稳压后,输出5V电压为单片机以及角度传感器和光电编码器供电。3.2.2 电机驱动电路我们采用BTS7960芯片作为电机驱动芯片。BTS7960最大电流为43A,具有集成度高、外接电路少、内阻小等特点,因此,我们采用4片BTS7960芯片组成全桥驱动电路进行驱动。BTS7960驱动电路图如图3.7所示。图3.7 电机驱动原理图3.2.3 测速方案选择速度采集是闭环控制系统中必
21、不可少的环节。为了使得车模能够平稳地沿着赛道运行,车速要与转向配合,以保证车模在各种道路上性能稳定。所以要实时检测当前车模速度,并根据车模在赛道上所处的情况来调整速度。车速检测可用光电码盘、编码器、透射式光电检测和霍尔传感器检测等。在实际运用中我们对这几种方式进行了比较发现编码器的精确度更高,因此最后我们采用了编码器对电极进行测速。由于我们所用的芯片只有一路脉冲累加器,而需要两路测速,为此我们另一路采用CD4520累加计数并用IO读取的方法,每5毫秒采集一次并累加,控制周期为100毫秒最后以两路速度的平均值作为速度控制的输入量。第四章 软件算法的设计与实现4.1 MC9S12XS128片资源简
22、介MC9S12XS128 微控制单元作为MC9S12 系列的16位单片机,由标准片上外围设备组成,包括16位中央处理器、128KB的Flash 存储器、8KB的RAM、2KB的EEPROM、两个异步串行通信接口、两个串行外围接口、一组8通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8 通道10 路模数转换器、一组8通道脉宽调制模块、一个字节数据链路控制器、29路独立的数字I/O接口、20路带中断和唤醒功能的数字I/O 接口、5个增强型CAN总线接口。同时,单片机内的锁相环电路可使能耗和性能适应具体操作的需要。 MC9S12XS128片内资源表如图4.1所示。图4.1 MC9S12XS128片
23、内资源在整个系统设计中,用到了5个单片机基本功能模块:时钟模块、PWM 输出模块、ECT 模块、串口通信模块以及普通IO 模块。根据系统实际需求,对各个模块进行了初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。4.2 软件功能与框架软件的主要功能包括有: (1) 各传感器信号的采集、处理; (2) 电机PWM输出;(3) 车模运行控制:直立控制、速度控制、方向控制; (4) 车模运行流程控制:程序初始化、车模启动与结束、车模状态监控; (5) 车模信息显示与参数设定:状态显示、上位机监控、参数设定等。图4.2 主程序框架程序上电运行后,便进行单片机的初始化。初始化的工作包括
24、有两部分,一部分是对于单片机各个应用到的模块进行初始化。这部分的代码由CodeWarrior集成环境的ProcessorExpert工具生成。第二部分是应用程序初始化,是对于车模控制程序中应用到的变量值进行初始化。经初始化;通过系统参数的手动调节,使系统能够按照准确的设想方式运行;然后通过线性CCD采集数据和角度传感器及陀螺仪对车模与地面的角度及角速度角度的感知,经过相应处理得出当前赛道路径和车模的信息;同时,电机测速模块测得车模当前的运行速度,反馈给系统;最后,经路径控制系统综合当前赛道路径信息和车模速度值作出相应的处理,来控制电机的运行。初始化完成后,首先进入车模直立检测子程序。该程序通过
25、读取加速度计的数值判断车模是否处于直立状态。如果一旦处于直立状态则启动车模直立控制、方向控制以及速度控制。 车模的直立控制、速度控制以及方向控制都是在中断程序中完成。通过全局标志变量确定是否进行这些闭环控制。中断程序框图如图4.2所示。图4.3 中断服务程序图4.2中,使用定时器,产生一毫秒的周期中断。中断服务程序的任务被均匀分配在0-4的中断片段中。因此每个中断片段中的任务执行的周期为5毫秒,频率为200Hz。 将任务分配到不同的中断片段中,一方面防止这些任务累积执行时间超过1毫秒,扰乱一毫秒中断的时序,同时也考虑到这些任务之间的时间先后顺序。 这些任务包括: (1)电机测速脉冲计数器读取与
26、清除。累积电机转动角度。累积电机速度,为后面车模速度控制提供平均数; (2)启动AD转换。进行10次模拟量采集,然后计算各个通道的模拟量的平均值。这个过程是对于模拟信号进行低通滤波。(3)车模直立控制过程。包括车模角度计算、直立控制计算、电机PWM输出等(4)车模速度控制:在这个时间片段中,又进行0-19计数。在其中第0片段中,进行速度PID调节。因此,速度调节的周期为100毫秒。也就是每秒钟调节10次。 (5)车模方向控制:根据前面CCD读取的道路灰度数值,根据跳变沿确定赛道边界通过转换计算车模中心与道路中心偏差数值。然后计算电机差模控制电压数值。4.3 赛道识别与处理4.3.1 传感器简介
27、大赛规定参加光电平衡组的车模可以使用光电传感器、指定型号的线性CCD 传感器进行道路检测,禁止使用激光传感器。光电平衡组若采用线性CCD,需使用Texas Advanced Optoelectronic Solution公司的TSL1401 系列的线性CCD。 TSL1401线性CCD传感器包含128个线性排列的光电二极管。每个光电二极管都有各自的积分电路,以下我们将此电路统称为像素。每个像素所采集的图像灰度值与它所感知的光强和积分时间成正比。如图4.4所示。使用者需要在SI持续高电平20ns后产生第1个CLK信号,并在每个CLK信号的下降沿时采集AO引脚的输出的电压值。在采集了128个像素后
28、,还必须生成第129个CLK以结束本次采集。在第129个CLK之后到下一个SI信号之间的时间就是下次采集的曝光时间(这里说的曝光时间是忽略了第19到129个CLK之间的时间)图4.44.3.2 传感器的安装与调整 使CCD中心尽量放在车模中心线上,考虑到对稳定性及前瞻的影响我们将CCD用碳杆加高并使车模行驶时支架与地面垂直。在车模的调试过程中需要不断调整前瞻以适应不同的速度。合理的前瞻加上好的参数就可以是车模行驶路径优化。前瞻确定以后就要进行调焦,所谓调焦就是调节镜头在镜头座上的进出。一般来说线性CCD模块的焦距是固定的,因此要想得到清晰的图像就需要通过调节镜头的进出来解决。如果镜头拧的位置合
29、适,则会得到得到清晰的图像,CCD输出的数据在波形上会表现的比较尖锐从而更容易找到黑线;如果镜头拧的不合适,则会得到模糊的图像,CCD输出的数据在波形上会显得比较平滑就会可能不识别或者误判。4.3.3 赛道信息的采集与处理首先采用连续曝光法对CCD进行曝光并且根据亮度自适应曝光时间,同时将曝光时间限制在一个合理的范围内以使采集的灰度值更加合理且黑白分明。连续曝光法是利用单片机的周期定时器来控制SI信号的间隔,即曝光时间。该法通过设置单片机PIT的中断周期时间来获取不同的曝光时间,并在PIT中断函数内进行AO的数据采集。 对于CCD的选择,我们认为CCD的镜头选择要选择合理,我选用的是蓝宙的CC
30、D,它有几种类型的镜头,一种是超轻聚焦镜头,这种镜头优点是前瞻足够远,我们试了,轻易就能达1米前瞻,但是有个问题是,它在分辨黑白区域时,不好很明显区别。还有几种镜头属于大光圈的镜头:45度,60度,81度。我们尝试过45度大光圈镜头,效果比较好,黑白分辨也很清晰,我们用了近两个月这种镜头。后来无意中尝试了一下81度的镜头,发现效果比45度的还好,它的波形很稳定,黑白也很容易区分,视角够大,所以不容易丢线。所以到目前为止,我们一直选用81度的广角镜头。 选好了镜头,接下来是我们的CCD算法的介绍:因为线性CCD提取黑线有点类似于摄像头组的面阵CCD。通过一段时间的思考以及借鉴前人的算法。我们最终
31、采用了寻找跳变沿的方式提取黑线,图4.5是我们通过上位机传回来的道路信息图片: 图4.5从图上看出,灰度大约170的属于跑道的白色区域。灰度大约是60的属于跑道的黑色边沿及跑道外的背景,我们可以明显地看出跑道白色部分与黑色部分的灰度差值很大。正因为如此,我们通过从中间向两边遍历的方式,找出连续3个点出现灰度相差大于某个阈值的边界,如果符合条件,那么就认为此处出现了黑线。上图体现的是车身在直道的情况,很容易处理,那么在转急弯的时候就会出现以下情况:图4.6图4.7图4.6为左边丢线情况,图4.7为右边丢线情况。基于上图所说的丢线情况,我们采用了补线的思想,以路宽哪边丢线补哪边。如果出现两边丢线,
32、有可能是采集不到,或者是处在十字路段,可以分情况处理,如果图像是全白,肯定是十字部分,那么就直走。如果全丢线后,判断上次的方向有值,那么就沿用上次的值,这样就排除了在弯道突然两边丢线而冲出去的可能。这种方法还对虚线处理有很大作用。因为总决赛有障碍,为了我们的车能更稳地通过障碍,我们决定运用看到障碍提前减速,前提是,先要判断出障碍。因为大赛规定障碍时全黑的,所以我们通过检测道路的灰度来识别:图4.8图4.8是CCD检测到障碍时的图像,很明显,灰度很低,基本成一条直线,我们通过取点和求平均值结合的方式,判断出全为低电平,如果出现符合上述两种情况,就认为是障碍,然后我们通过迅速改变零偏,改变车子的角
33、度,车子就很快减下速来。过完障碍,又恢复原来的角度,车子正常往前跑。第五章 开发及调试工具5.1 开发工具 Codewarrior 是Metrowerks 公司开发的软件集成开发环境(简称IDE)。飞思卡尔所有系列的微控制器都可以在codewarrior IDE 下进行软件开发。开发人员可以在不同的操作系统下使用codewarrior IDE 来开发自己的软件。这些操作系统包括Windows, Macintosh, Solaris, 和 Linux.IDE 在不同操作系统下的界面完全相同。IDE 支持高级语言,比如: C,C+,和Java。另外还支持大多数微控制器的汇编语言。它的开发环境界面统
34、一,IDE 支持许多通用的桌面或嵌入式处理器。IDE 的功能可以通过加入各种插件来扩展。现在IDE 支持的插件包括: 编译器,链接器,预先链接器,后链接器,常用的面板, 版本控制以及其他工具。插件可以让CodeWarrior IDE 支持不同的语言和处理器。在软件开发过程中,通常需要经过以下几个步骤: 新建:创建新项目,源文件; 编辑:按照一定的规则编辑源代码,注释; 编译:将源代码编译成机器码,同时还会检查语法错误和进行编译优化; 链接:将编译后的独立的模块链接成一个二进制可执行文件; 调试:对软件进行测试并发现错误;在软件开发中,每个过程都会用到不同的工具。如果每个工具都单独存在,这样就会
35、给开发人员带来很多不便。所以公司为开发人员提供了非常方便的集成开发环境。开发人员可以在同一个工作平台上完成以上全部的工作。5.2 辅助调试工具VisualScope串口分析仪(虚拟示波器),在相应硬件(如USB转TTL,无线蓝牙模块等)支持下能够进行串口高速数据采集,并使数据在PC机上实时图形显示。这是一款功能极其强大的串口调试工具,界面明了,易于使用,可以随时看软件的各种参数,为车模角度波形,速度波形调试带来极大地方便。如图5.1为调试中的角度波形。图5.1 角度波形CCDView作为线性CCD特定上位机真的很好用。它能够实时显示CCD128个像素点采到的灰度值,我们能够直观的看到波形也可以
36、单击查看某一点具体的灰度值,而且以条形码视图的方式动态显示黑线位置为我们采集调试带来了极大方便,图5.2所示为用上位机查看道路信息。图5.2 道路波形 第六章 车模的技术参数项目参数路径检测方法(赛题组)光电组车模几何尺寸(长、宽、高)(毫米)160、130、370车模轴距/轮距(毫米)车模平均电流(匀速行驶)(毫安)1500电路电容总量(微法)1100传感器种类及个数线性CCD 1个,编码器2个, 加速度传感器1个,陀螺仪2个新增加伺服电机个数0赛道信息检测空间精度(毫米)6赛道信息检测频率(次/秒)50主要集成电路种类/数量CD4520*1、BTS7960B*4车模重量(带有电池)(千克)
37、0.75第七章 结论经过飞思卡尔比赛,感觉自己学到了很多,比赛是个很漫长的过程,让我学会了坚持不懈,对于我们光电车,我觉得直立是根本而角度波形的调节是基础。随着调车的进行机械结构对于车的稳定性和速度的提升影响越来越大,降低重心很重要,因为如果重心位置太高会容易引起侧翻,所以必须得降低重心。开始准备制作小车到现在有了大半年的时间,参赛车队由三名本科生和两位指导老师构成,小组三人分工协作在老师的指导下,从对小车的一无所知到现在自己写程序、调硬件,最后小车慢慢的跑起来了。在智能车的制作过程中,我们的小车曾经出现过很多问题,如小车在行驶的中途突然趴下,CCD感器撞坏,电机驱动烧毁,因为采集不稳定经常冲
38、出赛道等问题,或多或少拖慢了我们的进度,但经队员们不断的努力,和指导老师的帮助,我们从硬件和软件上做了一步步的改进和完善,渐渐对各模块有了深入的认识,对整体有了清晰的把握,我们在不断的前进的同时,小车也不断的加速前进。虽然在我们的努力下小车不断完善但仍有些不足。从小车总体性能各因素考虑,小车系统分为采集、处理、控制三部分。对于采集部分:由于线性CCD特点决定了小车的前瞻比较小,而前瞻的大小对速度是有着很大的影响。在这个过程中,我们分析了CCD的各种摆放方式对赛道的检测结果。但前瞻不是越长越好,太长的话容易在过急弯的时候完全丢线而冲出跑道。线性CCD对光线变化比较敏感,所以我们尝试用不同角度的镜
39、头,用偏振片,结合动态阈值来使小车能够适应各种环境下道路的采集和准确判断。在控制算法上,由于整个控制为三闭环控制系统,直立为根本,为直接实现,而调速和循迹作为间接实现。若参数整定不到位,极可能出现环路与环路之间的耦合现象,导致小车无法稳定行使。除此之外,机械结构的布局也从侧面决定了小车提升的空间。还存在杜邦线接触不良、 PCB不够合理、 机械结构不够简洁 软件 、速度控制不理想等问题。针对以上问题我们总结的做法是:进一步优化机械结构,再设计PCB板时就尽量将所用的模块接口考虑进去能不用线连接就不用线从根本避免接头因碰撞或老化接触不良的现象,改进和优化算法采用卡尔曼滤波得到更加稳定准确的角度波形
40、;在不影响直立和方向的同时加强速度控制使车模能够迅速实现加减速。在这个大半年中我们曾因为程序迷茫过,为过虚线而苦恼,为过不了障碍而难过,为起跑线的稳定识别而发愁,更为小车的一次次提速而喜悦,为小车克服一个个困难而兴奋不已。这个过程中感觉不像是在和其他的车竞争,而是和自己在竞争,因为我们不知外界的情况是如何,我们只有不断地超越自己现在的速度,超越自己现在的稳定性,不断地去突破,才能使自己走的更远。在此,忠心感谢物电学院提供的比赛场地,感谢指导老师的辛勤指导,感谢大赛组委会提供给我们的这个比赛平台。参考文献 1 李玲,桂玮珍,刘莲C语言程序设计教程北京人民邮电出版社20102 陶永华 新型PID控
41、制及其应用,机械工业出版社,2002 3. 卓晴 黄开胜 邵贝贝,学做智能车M,北京:北京航空航天大学出版社,20074 邵贝贝,单片机嵌入式应用的在线开发方法,北京:清华大学出版社,20045. Freescale Semiconductor, Inc. MC9S12DG128 Device User Guide. 6. 孙同景主编, Freescale 9S12 十六位单片机原理及嵌入式开发技术,机械工业出版社,20087. 刘敬忠,于玲.车辆侧滑与行车安全浅谈.江苏农机化.20068. 张葵葵,吴义虎. 汽车急转侧滑的预防控制原理. 现代制造工程. 2006 9. 仇慎谦, PID 调节
42、规律和过程控制,江苏科学技术出版社,1987.12 10. LPLDTSL1401线性CCD手册附件A 系统原理图附件B 部分源代码int key_flag=1; /初始化为1,薄码开关是低电平有效,故初始化为一int qidongqipao_flag=0; /int key_qibu_flag=1; /起步拨码标志位float g_nSpeedControlPeriod = 0;float g_nDirectionControlPeriod =0;long ADValue7=0;/-标志位-int g_nStartFlag = 0,Time_count = 0; /静止转为启动的标志;时间设
43、定标志int g_nSCI_flag =0,SCI_count = 0; /串口发送标志 int DIRCTION_LEFT_ZERO_default =0,CV_GYRO_ZERO_default =0;/#define TIME1MS_INT_FLAG Key_LCD_Flag /启动定时标志int g_nDebugStopFlag =0; /-LCD调节变量- float CV_ACCE_OFFSET =1648.0;/1200;/1300.0 ; /加速度中间值;float g_CAR_AA_P_INT=4.50;/12.0;/4.0; /15;float g_CAR_AA_D_INT
44、 =0.085;/0.046;int CAR_SPEED_SETfDelta = 47;/35;/42;/18.0;/25.0;/(18;)/8 (40,170,0.77)float SPEED_CONTROL_P =10.2;/8.2;/7.0;/25;/25;/25;/15;12float SPEED_CONTROL_I =0.13;/0.13;/0.12;/0.13;/0.35;/0.2;/0.15;/0.25;/0.7;/1.2; /速度PIfloat DIR_CONTROL_P =200;/180.0;/170.0;/80.0;/80.0;/(50.0;)/40.0/60/ 40.0
45、;/40/30;/0;float DIR_CONTROL_D =0.5;/0.82;/0.50;/ (0.38;)/0.35/0.2;/0;/0.05;/0.025;float MOTOR_OUT_DEAD_VAL= 10.0;/25 ; /(140,0.75,35) (165,0.77,38) (180,0.85,40)int yuzhi_gudingzhi=50;/阈值固定值/-外部变量- extern float OutData4; extern float g_fMotorOutLeft;extern long g_nCarAngle;extern int g_nCarSpeedSta
46、rtFlag; int L_qipao=0,R_qipao=0; /static int STOPCOUNT=0,STOPCOUNT_START=0;int STOPCOUNTFLAG=0;void Delay_1MS(int Number) static int i =0,j = 0 ; for(i =0;iNumber;i+) for(j=0;j2200/2;j+)/1ms-2200延时 _asm(nop); /*定时器0中断*/#pragma CODE_SEG _NEAR_SEG NON_BANKED /指示该程序在不分页区void interrupt 66 PIT0(void) sta
47、tic int Eventcount=0,g_nDirectionControlCount=0,g_nSpeedControlCount=0; int control_period=5,SPEED_CONTROL_COUNT=20;/20; int i; DisableInterrupts; baoguang(); / g_nSpeedControlPeriod +; SpeedControlOutput(); g_nDirectionControlPeriod +; DirectionControlOutput(); switch(Eventcount) case 0: for(i = 0;
48、 i = SPEED_CONTROL_COUNT) SpeedControl(); g_nSpeedControlCount = 0; g_nSpeedControlPeriod = 0; break; case 3: g_nDirectionControlCount +; DirectionVoltageSigma(); if(g_nDirectionControlCount = DIRECTION_CONTROL_COUNT) DirectionControl(); g_nDirectionControlCount = 0; g_nDirectionControlPeriod = 0; b
49、reak; case 4:GetMotorPulse(); break; Eventcount+; if(Eventcount=control_period) Eventcount=0; /停车延时 if(L_qipao=1&R_qipao=1) STOPCOUNT_START=1; / 检测到起跑线,计数开始标志 if(STOPCOUNT_START=1) STOPCOUNT+;/停车计数 if(STOPCOUNT=150) /1百毫秒后停车 STOPCOUNTFLAG=1; STOPCOUNT=0; /清零 PITTF_PTF0=1;/清中断标志位 EnableInterrupts; /*串口接收中断*/void interrupt 20 SCI0_ISR(void) byte tmp; static float adjust; DisableInterrupts; tmp = SCI0SR1; /清除标志 adjust = uart_getchar(); uart_putchar(adjust); EnableInterrupts; g_CAR_AA_P_INT = adjust ; /调整参数 void main(void) DisableInterrupts; PLL_init(); SCI_init()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何打印社保证明(8篇)
- 拓展影响社团工作影响计划
- 全职骑手用人合同标准文本
- 丰富课外活动提高幼儿兴趣计划
- 养狗协议合同标准文本
- 专项分包合同标准文本
- fidic施工合同标准文本
- 买卖土地定金合同标准文本
- 优化固定支出的方式计划
- 临床水平测试练习测试题附答案
- 形势与政策总体国家安全观
- 《QOHAB123-2023高端G系列冷镦钢用热轧盘条》
- 2024年世界职业院校技能大赛中职组“食品药品检验组”赛项考试题库(含答案)
- Unit 5 Humans and nature Lesson 1 A Sea Story 说课 课件-2024-2025学年高中英语北师大版(2019)必修第二册
- 智能运维知识库建设方案设计与实施规划
- 幼儿园办园行为督导评估指标体系表
- 宫颈癌护理查房-5
- 水工建筑物课程设计水闸
- 核心素养下小学道德与法治实践性作业设计探究
- 室外消防管道保温施工方案
- 养猪基地合同模板
评论
0/150
提交评论