您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页基于颜色识别的机器人小球跟踪

基于颜色识别的机器人小球跟踪

来源:测品娱乐


编号:

毕业设计说明书

题 目:基于颜色识别的机器人小球跟踪

院 (系): 电子工程与自动化学院 专 业: 学生姓名: 学 号: 指导教师:

职 称:

题目类型: 理论研究 实验研究 工程设计 √工程技术研究 软件开发

摘 要

本系统设计以飞思卡尔公司的 MC9S12XS128 微控制器为核心,MC9S12XS128是飞思卡尔公司推出的S12XS系列单片机中的一款增强型16位单片机;该单机采用CPU12X V2内核,可运行在40MHz总线频率上,并且该单片机有128KB FLASH和8KB RAM,完全满足本次设计的软件资源要求。

在颜色识别上,通过美国TAOS公司生产的一种可编程彩色光到频率的传感器TCS230来对小球颜色进行识别,该传感器的处理速度较高,结合摄像头使用是不会抢占单片机对摄像头操作的时间。由于实际要求的需要,本系统只识别红色和绿色。

颜色识别后再通过CCD 摄像头检测小球的运动位置和运动方向,使用视频分离芯片和电压比较器对采集到的图像进行二值化处理,单片机一数组的形式存储,以便后续的处理。用光电编码器检测小车的速度结合使用PID 控制算法调节电机的转速,完成对小车运动速度的闭环控制。为了使小车的运动方向与小球的运动方向始终保持一致,本系统用模糊算法提高小车的行驶速度和稳定性。

关键词:MC9S12XS128;颜色识别;CCD摄像头;PID控制;小球跟踪;模糊

控制

Abstract

The system was designed to fly think of Carle 's MC9S12XS128microcontroller as the core, MC9S12XS128 is fly think of Carle company introduced the S12XS series single-chip microcomputer in an enhanced16 bit single chip microcomputer; the single machine using CPU12X V2 kernel, can run on the 40MHz bus frequency, and the single chip with128KB FLASH and 8KB RAM, fully meet the design of the software resource requirements.

In the color recognition, through the United States TAOS company production of a programmable color light to frequency sensor TCS230 to ball color recognition, the sensor of high processing speed, combined with the camera to use is not preempted single-chip camera operation time. Due to the practical requirement, the system identifies only the red and green.

Color recognition and then through the CCD camera to detect the movement of the ball position and direction of movement, the use of video separation chip and a voltage comparator for collected image processing two values, in the form of an array of memory chip, so that subsequent processing. Photoelectric encoder was used to detect vehicle speed using a combination of PID control algorithm to regulate the speed of the motor, to complete the car speed closed-loop control. In order to make the car and the motion direction of the movement of the ball direction remains the same, the system using fuzzy algorithm to improve the car 's speed and stability.

Key words: MC9S12XS128; color recognition; CCD camera; PID control; ball

tracking; fuzzy control

目 录

引 言.......................................................................................................................................1 1 课题的研究背景与发展前景...................................................... 错误!未定义书签。

1.1 智能车研究背景.................................................................................. 错误!未定义书签。 1.1.1发展历史............................................................................................ 错误!未定义书签。 1.1.2智能车研究方向................................................................................................................2 1.1.3小球跟踪的应用前景........................................................................................................3 1.2 概要.................................................................................................... 错误!未定义书签。

2 智能车设计思路及图像采集方案 ............................................................................3

2.1智能车整体框架...................................................................................................................3 2.2图像采集方案....................................................................................... 错误!未定义书签。 2.3摄像头信号处理方案...........................................................................................................5 2.4车体控制...............................................................................................................................6

3 硬件系统设计..................................................................................................................7

3.1 单片机最小系统..................................................................................................................7 3.2 时钟电路与复位电路..........................................................................................................8 3.3 电源系统设计......................................................................................................................9 3.3.1单片机及其他外设电源....................................................................................................9 3.3.2摄像头电源......................................................................................................................10 3.4 速度传感器........................................................................................................................ 11 3.4.1光电编码器...................................................................................................................... 11 3.4.2鉴相电路..........................................................................................................................12 3.5 电机驱动电路....................................................................................................................13 3.6 视频信号采集及二值化电路............................................................................................15

4 软件系统设计................................................................................................................15

4.1 S12系统片内资源 .............................................................................................................15 4.2 系统初始化........................................................................................................................16 4.2.1摄像头初始化..................................................................................................................16 4.2.2 PWM初始化 ...................................................................................................................16 4.2.3速度传感器初始化..........................................................................................................17

4.2.4串口初始化......................................................................................................................17 4.2.5超频初始化......................................................................................................................18 4.2.6液晶初始化......................................................................................................................18 4.3 图像采集与小球跟踪........................................................................................................19 4.3.1采集信号时序..................................................................................................................19 4.3.2图像信号采集..................................................................................................................20 4.3.3小球跟踪..........................................................................................................................21 4.4 小球颜色识别....................................................................................................................21

5 控制策略 .........................................................................................................................21

5.1 小球跟踪的平稳性控制——PID控制 ............................................................................21 5.1.1几种过程控制的基本概念..............................................................................................21 5.1.2数字PID控制器 .............................................................................................................22 5.1.3针对智能车的PID算法改进 .........................................................................................23 5.2 小球跟踪的准确性控制——模糊控制............................................................................24 5.2.1模糊控制基础..................................................................................................................24 5.2.2模糊控制基本理论..........................................................................................................24 5.2.3模糊控制在本系统中的应用..........................................................................................26

6 系统调试 .........................................................................................................................27

6.1 编程工具............................................................................................................................27 6.2 采集调试............................................................................................................................29 6.2.1图像采集监控调试..........................................................................................................29 6.2.2串口通信..........................................................................................................................31 6.3编码器调试........................................................................................... 错误!未定义书签。 6.4电机驱动板调试.................................................................................................................34

7 总结 ..................................................................................................................................36

谢 辞.......................................................................................................................................37 参考文献...................................................................................................................................38 附 录.......................................................................................................................................39

桂林电子科技大学毕业设计(论文)报告用纸

第 1页 共48页

引 言

机器人技术是“体现了当前最高意义上的自动”的一门技术,是自动化学科的集大成者,综合的了材料,结构,控制,感知,智能等各方面的最新研究成果。学习研究机器人技术的原动力应该首先来自于对未知领域的科学探索,其次来自于社会和国家的实际应用需求。当前面,高校,研究机构,乃到企业,来自各方面的研究人员对智能机器人的研究已经处于一个由前沿探索转向产业化、实用化的关键时期。大量的玩具机器人(娱乐机器人)已经推向市场,并取得良好效益,例如Wowwee.Inc 推出的Robosapien 机器人,SONY 公司推出的Aibo 机器狗;多种服务机器人也在世界范围内销售数十万台,例如iROBOT公司推出的Rommba自主扫地机器人;可携带武器在战场上替代士兵执行任务的军用地面移动机器人,自主移动车辆(类似AGV)等广义的机器人已经在发达国家进入。机器人的发展已处于关键阶段。

机器人小球的跟踪是机器人足球赛的一个分支,实现机器人对目标物体的实

时精确的跟踪,是机器人后续各种动作的前提。机器人足球赛是机器人在娱乐领域的经典应用。仿人机器人的头部视觉跟踪系统利用视觉信息作为反馈,来规划机器人的头部运动使其能实时的跟踪运动目标。视觉跟踪是仿人机器人的重要功能之一,它的研究对于仿人机器人的自主导航、人机交互以及视觉伺服都具有极其重要的意义。

1 本课题的研究背景与发展前景

1.1 智能车的研究背景 1.1.1发展历史

智能小车系统是迷你版的智能汽车,二者在信息提取,信息处理,控制策略

及系统搭建上有很多相似之处,可以说智能小车系统将为智能汽车提供很好的试验和技术平台,推动智能汽车的发展。摄像头作为很多智能汽车的信息输入的传感器具有其他很多传感器所不具有的优势,如对物体的特征提取,视野宽广等,因此基于摄像头的智能小车系统的研究将推动智能汽车的发展。

智能汽车是未来汽车的发展方向,将在减少交通事故、发展自动化技术、提高舒适性等许多方面发挥很重要的作用;同时智能汽车是一个集通信技术,计算机技术,自动控制,信息融合技术,传感器技术等于一身的行业,它的发展势必促进其他行业的发展,在一定程度上代表了一个国家在自动化智能方面的水平[1]。汽车在走过的100多年的历史中,从没停止过智能化的步伐,进入20世纪90年代以来,随着汽车市场竞争激烈程度的日益加剧和智能运输系统(ITS)地兴

桂林电子科技大学毕业设计(论文)报告用纸

第 2页 共48页

起,国际上对于智能汽车及其相关技术的研究成为热门,一大批有实力有远见的大公司、大学和研究机构开展了这方面的研究。很多美国、日本和欧洲等国家都十分重视并积极发展智能车系统,并进行了相关实验,取得了很多成就。我国的相关研究也已经开展,清华大学成立了国内最早的研究智能汽车和智能交通的汽车研究所,在汽车导航、主动避撞、车载微机等方面进行了广泛而深入的研究,2000年上海智能交通系统进入实质性实施阶段,国防科大研制出无人驾驶汽车,西北工业大学、吉林交通大学、重庆大学等也展开了相关研究[2]。这一新兴学科正在吸引越来越多的研究机构和学者投入其中。 1.1.2 智能车研究方向

1.驾驶员行为分析(Driver Behavior Analysis)任务:研究驾驶员的行为方式、精神状态与车辆行驶之间的内在联系;目的:建立各种辅助驾驶模型,为智能车辆安全辅助驾驶或自动驾驶提供必要的数据,如对驾驶员面 表情的归类分析能够判定驾驶员是否处于疲劳状态,是否困倦瞌睡等;

2.环境感知(Environmental Perception)主要是运用传感器融合等技术,来获得车辆行驶环境的有用信息,如车流信息、车道状况信息、周边车辆的速度信息、行车标志信息等;

3.极端情况下的自主驾驶(Autonomous Driving on Extreme courses)主要研究在某些极端情况下,如驾驶员的反应极限、车辆失控等情况下的车辆自主驾驶;

4.规范环境下的自主导航(Autonomous Navigation on Normal environment)主要研究在某些规范条件下,如有人为设置的路标或道路环境条件较好,智能车辆根据环境感知所获得的环境数据,结合车辆的控制模型,在无人干预下,自主地完成车辆的驾驶行为。

5.车辆运动控制系统(Vehicle Motion Control Systems)研究车辆控制的运动学、动力学建模、车体控制等问题;

6.主动安全系统(Active,Safety Systems)主要是以防为主,如研究各种情况下的避障、防撞安全保障系统等;

7.交通监控、车辆导航及协作(Traffic Monitoring,Vehicle Navigation and coordination)主要研究交通流诱导等问题;

8.车辆交互通信(Inter-Vehicle Communication)研究车辆之间有效的信息交流,主要是各种车辆间的无线通信问题;

9.军事应用(Military Applications)研究智能车辆系统在军事上的应用; 10.系统结构(System Architectures)研究智能车辆系统的结构组织问题; 11.先进的安全车辆(Advanced Safety Vehicles)研究更安全、具有更高智能化特征的车辆系统。

桂林电子科技大学毕业设计(论文)报告用纸

第 3页 共48页

1.1.3 小球跟踪的应用前景

机器人小球的跟踪是机器人足球赛的一个分支,实现机器人对目标物体的实时精确的跟踪,是机器人后续各种动作的前提。机器人足球赛是机器人在娱乐领域的经典应用,可见在未来机器人对运动物体的跟踪仍将大量应用与这方面。

跟踪机器人在军事,工业,农业等领域同样有着广泛的应用前景。在图像处理算法日益成熟后,基于图像处理的机器人运动目标跟踪将更加准确高效,这就意味着跟踪机器人具有非常广阔的应用前景。 1.2 概要

本系统采用飞思卡尔半导体公司16位微控制器MC9S12XS128作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动、转向电机控制以及控制算法软件开发等。由于控制单元的运算速度等原因,本系统用硬件二值化将图像二值化,再采用高速LM393芯片,保证了单片机能采集到足够多的像素点用于之后的信息处理。

在小车的运动控制中,本系统运用MC33886作为电机的驱动控制,采用PWM脉宽调制方法控制电机的运动,通过编码器对小车的实际速度进行采集,运用PID算法对小车的输出速度进行调制,确保小车能平稳的运动。

2 智能车设计思路及图像采集方案概要说明

2.1智能车整体框架

智能车是在车模结构的框架上,搭上硬件结构,通过MC9S12XS128单片机的处理能力,将传感器采集到的信息处理分析后得出运算结果,指挥电机和舵机做出适应赛道及战术策略的响应的一套系统。其硬件结构框架如下图图2.1:

桂林电子科技大学毕业设计(论文)报告用纸

第 4页 共48页

图2.1 硬件结构框架

2.2 图像采集方案

在整个系统中,图像采集方案有着决定性作用。小车的机械结构,电路结构,控制策略都取决于外部图像信息的采集方案。现在关于单片机的图像采集方案集中在光电传感器寻迹方案、CDD(CMOS)传感器寻迹方案以及二者结合这三种。但相比之下,使用面阵CCD 器件则可以更有效的解决很多问题。

CCD 器件在比赛规则中算作一个传感器。普通CCD 传感器图像分辨率都在300 线之上,远大于光电管阵列。通过镜头,可以将小车前方很远的目标图像映射到CCD 器件中,从而得到小车前方很大范围内的道路信息。根据智能小车应用的实际经验,车身长度不会超过40CM,而一般小车本身车长即有31.6CM,因此安装的对射传感器只能向前方伸出不到10CM,即使加上一定的投射角度(还需要制作特殊的大功率脉冲式对管)也不会超过20CM,而如果用摄像头,理论上如果支撑杆足够高(规则对高度没有),摄像头可以看到任意远处的小球信息。当然支撑过高又会带来其他问题,比如车重的增加,重心的升高,转向负载增大等等。但是肯定可以找到一个平衡的高度,既满足探测需要又不降低小车的性能。同时,用CCD 对图像中的运动目标参数进行检测,不仅可以识别目标的中心位置,同时还可以获得运动物体的方向、曲率等信息。利用CCD 器件,通过图像信息处理的方式得到目标物体信息,可以有效进行小车运动控制,提高路径跟踪精度和小车运行速度。基于前述对“线型检测阵列”寻物

桂林电子科技大学毕业设计(论文)报告用纸

第 5页 共48页

能力局限性的考虑,并综合参考了关于摄像头视频采集原理文章以及飞思卡尔比赛中使用CCD 方案的队伍技术报告的基础上,本系统选择采用摄像头作为采集传感器。一方面摄像头所能探测的目标信息远多于“线型检测阵列”所能探测的信息,有利于对控制算法进行优化;此外摄像头成像范围调整灵活,可以提供足够远的预判距离识别出运动目标拐弯。 2.3 摄像头信号处理方案 方案一:

采用单片机的AD口,读取图像数据。这个方案的优点是外接电路简单。缺点是受到单片机AD转换速率的影响,读取的数据慢,而且数据错误率较高,同时严重的占用单片机的资源,导致程序运行慢等的缺点。一般单片机超频到M下,一行采集大概是80个点。其精度对于图像的分析是不够的,特别是前瞻50cm以后的信号。此方案比较简单易懂适合新手,但是稍微要提高车子的速度,该方案有很大的局限。 方案二:

采用高速比较器,例如是高速比较器AD8032,通过选择合适的电压作为比较器的参考电压,把图像信号转化为高低电平信号,其输出信号直接接到单片机的IO口,可以读取到图像信号,一般可得到深色物体为1,浅色物体为0的图像信号。

此方案优点是数据转化速率快,若输出信号接单片机低位的IO口,同时单片机超频到M和使用指针程序,一行可以采集到250个点。同时能够实现准确的数据转换(几乎不会出错)。其精度对于图像的分析是够的,一般在光线均匀和参考电压合理的前提下,最远处的黑线信号可以采集到4-5个点。

此方案缺点是参考电压固定不变,若不经过其他电路或者软件处理,很难实现动态阀值,所以导致图像信号受环境光线强度的影响。造成车子的环境适应能力很差,特别是当车跑的快时,容易丢失信号,造成车子未能正确识别目标。所以此方案虽然有很大的优点,但也有其比较致命的缺点。 方案三:

采用高速比较器,例如是高速比较器AD8032。通过镜像电路,得出与原图像信号相反的电压信号作为比较器的参考电压,(也就是按照我们人的思维,当摄像头输出电压比较高的浅色物体时,我们希望找到一个比这个浅色物体的电压低很多的电压值作为比较器的参考电压,同时若摄像头输出电压比较低的深色物体时,我们希望找到一个比这个深色物体的电压高很多的电压值作为比较器的参考电压,这样的话,我们就能够确保比较器输出的信号是准确的。把原始的图像信号镜像后作为比较器的参考电压,刚刚好符合这个人的思维)把图像信号转化

桂林电子科技大学毕业设计(论文)报告用纸

第 6页 共48页

为高低电平信号,其输出信号直接接到单片机的IO口,就可以读取到图像信号,一般可得到深色物体为1,浅色物体为0的图像信号。此方案优点是数据转化速率快,若输出信号接单片机低位的IO口,同时单片机超频到M和使用指针程序,一行可以采集到250左右个点。同时能够实现准确的数据转换(出错率小于0.1%)。同时当环境光线变化时,本摄像头会自动改变给比较器的参考电压,来适应环境的变化,相当于动态阀值,单片机不用采用任何处理,一般光线在比较大的范围内变化,最远处的黑线信号都可以采集到4-5个点,其精度对于图像的分析是绝对够的,同时也能确保在不同光线的环境下,也能输出正确的目标信号。

此方案缺点:由于镜像电路需要响应时间(镜像电路的工作频率150MHZ),故一行图像中黑线的起始点与没有采用镜像电路的方案三相比将往后推迟一个点左右,但几乎不影响目标的提取,采用此方案,提取的点个数不变。所以此方案有很大的优点,缺点相对对车子的影响可以忽略。

基于以上的方案探讨,本系统决定用第三种方案。 2.4 车体控制

智能车应根据目标大小和当前车体位置及目标移动速度,对小车转弯时间和驱动电机PWM波的占空比进行及时调整。关于这方面的控制方案有PID控制、Bang-Bang 控制和模糊控制等。飞思卡尔比赛的技术报告中均对电机 PID 控制进行了深入研究,文中列出了不同P、D参数下赛车的平均速度和调整程度,并指出当 P 参数适中、D 参数较小时,性能最佳。此外,该文还介绍了S12单片机模糊控制指令的应用。虽然理论上模糊控制在非线性场合存在优势,但实际测试表明 PD 控制已能满足需求,所以电机控制仍采PD或者P控制。电机速度闭环控制是实现速度合理分配的基本前提,于是本设计采用传统的PID控制加上模糊控制的方法,综合两者的优点控制小车平稳准确地跟踪小球。 (1)机械安装

桂林电子科技大学毕业设计(论文)报告用纸

第 7页 共48页

把摄像头支架安装在车后部,并且将电路板均匀排布在车体位置,使小车重心降低并且靠后,提高小车在弯道时的灵活性和稳定性。 (2)驱动电路

驱动电路的驱动芯片采用的是飞思卡尔公司的MC33886H桥驱动芯片,该芯片负载电流可以达到 5A,而内阻只有16mΩ。MC33886在较小的电路板空间占用的情况下为大电流保护的 PWM 电机驱动提供了一种成本优化的解决方案。 (3)控制策略

控制策略方面,使用经典控制方法里的 PID 控制。由于 PID 算法具有对模 型参数要求不高、参数整定方便的优点,比较适合用来做小车寻迹。

在 PID 算法的基础上,整合加入模糊控制算法,有利于对小车系统的非线性特性因素的控制。

3 硬件系统设计

3.1单片机最小系统

单片机最小系统板使用MC9S12XS128单片机。该芯片采用5V供电,功能强大,总线频率高达40MHz。芯片含有丰富的片内设备,包括128K的Flash存储器,8K的RAM,8K的EEPROM,两路串行通信接口(SCI),一路串行外围接口(SPI),八路定时器通道,两个(80引脚为一个)八路可调转换精度的A/D口,八路PWM输出,91(80引脚为59)个离散数字I/O口,一个MSCAN模块。该单片机适合于在汽车电子中的应用,成为很多车载电子设备的控制芯片。其功能模块如图3.1所示,单片机最小系统原理图如图3.2所示:

图3.1 MC9S12XS128单片机功能模块示意图

桂林电子科技大学毕业设计(论文)报告用纸

第 8页 共48页

图3.2 单片机最小系统原理图

MC9S12XS128单片机有112引脚和80引脚两种型号,前者比后者多出8位AD口和其他的一些引脚资源。基于模块化设计的思想,这里专门设计了单片机子板,以便维护和更新。同时,参考数据手册,对单片机的外围电路进行了详细的设计,高质量的实现了去耦、旁路与隔离等作用,保证了其稳定性能。在对小车各个模块进行逐一分析后,确定了单片机的引脚分配。单片机引脚规划如下: PORTA0-7:液晶数据口 PORTB0:摄像头数据输入口 PORTE4-5:LED测试灯 PT0:奇偶场信号

PT1:行同步脉冲输入信号。 PT7:光电编码器脉冲输入信号。 PWM5,7:转向电机控制信号输出。 PWM1,3:前进电机控制信号输出。 PB2,4,6:颜色传感器控制输出。 PT4:颜色传感器脉冲输入。 3.2时钟电路和复位电路

时钟电路和复位电路是单片机最小系统的两个重要的子电路,时钟电路为单

桂林电子科技大学毕业设计(论文)报告用纸

第 9页 共48页

片机提供外部时钟脉冲,是程序运行的重要保证。复位电路是防止程序跑飞得手段,时钟电路与复位电路如图3.3所示:

图3.3 时钟电路和复位电路

3.3 电源系统设计 3.3.1单片机及其外设电

单片机及部分外设工作时,需要5V 电压。常见的可以提供5V 的稳压芯片 如下: 名称 LM2940 LM7805 输出电压(V) 最大输出电流(A) 5+0.15 5+0.2 1.0 1.0 0.5 2.0 压差(V) 备注 开关稳压 线性稳压 两者相比较而言,LM2940 具有超低压差的优点,可以避免小车启动、制动等过程中电池电压下拉之后单片机的重启。同时,开关稳压的效率高,耗电更少,使电池充电后使用更长久。所以优先选择LM2940-5V。

由上述分析,5V电源选取两种电源稳压芯片,一种要求纹波小,电流在1A以下,工作稳定,给单片机等芯片供电;另一种要求电流在1A左右,输出电流纹波没有太高要求,专门为人机接口板的数码管显示驱动和键盘扫描控制芯片供电。

由于整个系统中+5V电路功耗较小,为了降低电源纹波,我们首先使用串联型稳压电路,另外,后轮驱动电机工作时,电池电压压降较大,为提高系统工作稳定性,必须使用低压降电源稳压芯片。

为了提高电源的利用率,我们进一步选择DC/DC电源稳压电路。DC/DC是

桂林电子科技大学毕业设计(论文)报告用纸 第 10页 共48页

开关型稳压电路,它的优点是电路结构简单,对电源的高频干扰有较强的抑制作用、效率高,输入电压的范围宽,输出电压,电流的纹波值较小。

此外,本系统选用LM2940为人机接口板的视频信号处理电路和单片机芯片供电。LM2940也是常用的高性能线性稳压芯片之一,它的工作压差较小,只要输入电压达到6V以上就可以稳定输出5V电压,同时它的输出电流为1.5A,满足人机接口板的1A要求。连接如图3.4所示:

图3.4 LM2940电路原理图

3.3.2 摄像头电源

CCD摄像头需要12V电压供电。34063是一种用于DC-DC电源变换的集成电路,应用比较广泛,并且廉价易购,输出电压范围从0-40V,所以采用MC34063A对摄像头进行供电,MC34063是一单片双极型线性集成电路,专用于直流-直流变换器控制部分。片内包含有温度补偿带隙基准源、一个占空比周期控制振荡器、驱动器和大电流输出开关,能输出1.5A的开关电流。它能使用最少的外接元件构成开关式升压变换器、降压式变换器和电源反向器。 特点:

*能在3.0-40V的输入电压下工作 *短路电流 *低静态电流

*输出开关电流可达1.5A(无外接三极管) *输出电压可调

*工作振荡频率从100HZ到100KHZ MC34063引脚图及原理框图如图3.5:

桂林电子科技大学毕业设计(论文)报告用纸 第 11页 共48页

图3.5 MC34063引脚图及原理框图

MC34063体积小巧,便于集成,且输出电压值可以通过外接电阻方便调节,图3.6为其电路连接图。

图3.6 MC34063电路连接图

3.4 速度传感器

为了使得小车能够平稳地跟着目标运行,需要控制车速,使赛车在急转弯时速度不至过快而冲出摄像头的视野。通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因素影响,例如电池电压、电机传动摩擦力、道路摩擦力和前轮转向角度等。这些因素会造成小车运行不稳定。通过速度检测,对小车速度进行闭环反馈控制,即可消除上述各种因素的影响,使得小车运行得更稳定。此外,在记忆算法中为了记录道路信息,需要得到小车运行距离,这也可以通过车速检测来实现。车速检测的方式有很多种,例如用测速发电机、转角编码盘、反射式光电检测、透射式光电检测和霍尔传感器检测。 3.4.1 光电编码器

桂林电子科技大学毕业设计(论文)报告用纸 第 12页 共48页

经过对以往测速方案和测速器方案的比较,本系统中速度传感器采用的是OMRON公司生产的E6A2-CW3C型光电编码器,它由5-12V的直流供电。

速度传感器有三根引线,其中棕色线接VCC,蓝色线接地,黑色线为输出信号,需要上拉后接入单片机。车轮每前进一段距离时,速度传感器便产生一定数目的脉冲,单片机利用ECT 对脉冲进行计数,从而得到速度值。

通过测量给定时间里轮速脉冲信号的个数即可计算轮速,

2rN (3.1) VZt式中,r为车轮半径,Z为齿圈齿数,N为频率信号输出脉冲个数,t为测量时间。 3.4.2 鉴相电路

速度是一个矢量,不仅具有数值信息,还有方向信息。然而,用上述的脉冲计数法只能获取数值信息,却无法得知车体行驶的方向信息。为此,专门设计了一个鉴相电路来解决此问题,如图3.7所示。

图3.7 鉴相电路原理图

系统所采用的编码器提供两相输出,即A相和B相。当智能汽车向前行驶时,编码器从轴侧看是向左旋转的,此时两相输出如图3.8所示。

图3.8 编码器左旋转时两相输出波形图

由波形图可知,此时A相滞后B相90°。本文正是根据这个90°相差,利用一片D触发器74HC74构建了一个鉴相器。在该鉴相器中,以A相输出作为输入时钟信号,B相输出作为输入数据信号。当编码器左旋转时,由于A相滞后B相90°,相当于A相上升沿时B相总为高电平,根据D触发器的工作原理,74HC74的Q脚输出恒为高电平。反之,在编码器右旋转时则输出低电平。这样,

桂林电子科技大学毕业设计(论文)报告用纸 第 13页 共48页

就实现了鉴相的功能,如图3.9所示。

图3.9 鉴相电路在编码器左、右旋转时的波

3.5 电机驱动电路

关于电机驱动,在与两片并联的MC33886,集成半桥芯片BTS7970 比较后, 我们采用MC33883 与IRF1404 组成的H 桥电路,场效应管IRF1404 性能较高, 其主要性能可通过表3.1体现出来。电路原理图为图3.10

表3.1 IRF1404 主要性能

桂林电子科技大学毕业设计(论文)报告用纸 第 14页 共48页

图3.10 电机驱动原理图

驱动真值表如表3.2:

表 3.2 电机驱动真值表 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 In1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 In2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 In3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 In4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 电机状态 0 0 0 ※ 0 1 2 ※ 0 3 1 ※ ※ ※ ※ ※

桂林电子科技大学毕业设计(论文)报告用纸 第 15页 共48页

说明:0:停 。1:能耗制动。2:正转。3:反转。※:违法状态电机驱动会毁坏各场效应管编号见图3.4 右下角

在仔细总结真值表后发现,同一侧桥臂的场效应管不同时开启电机驱动就不会被烧毁,所以可以用与非门构成逻辑电路使只采用一路PWM 控制信号对电机调速,另采用两路控制信号控制其工作状态,但是会增加电路复杂程度,增加PCB 板的面积,所以本系统放弃此方案,采用4 路PWM 控制信号,控制电机运动状态。

3.6 视频信号采集及二值化电路

摄像头采集电路的核心芯片为LM1881,LM393,其中LM1881 是PAL 制式的视频解码芯片,LM393 是一款高速的电压比较串行芯片,其采集频率最高可达到20M,其高速采集特性满足了我们对视频信息处理时横向分辨率的要求。图3.11 是我们视频信号采集部分的电路原理图:

图3.11 视频信号采集电路原理图

4 软件设计说明

4.1 S12系统片内资源

MC9S12XS128 微控制单元作为MC9S12 系列的16 位单片机,由标准片上外围设备组成,包括16 位处理器、128KB 的Flash 存储器、8KB 的RAM、2KB 的EEPROM、两个异步串行通信接口、两个串行外围接口、一组8 通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8 通道10 路模数转换器、一组8 通道脉宽调制模块、一个字节数据链路控制器、29 路的数字I/O 接口、20 路

桂林电子科技大学毕业设计(论文)报告用纸 第 16页 共48页

带中断和唤醒功能的数字I/O 接口、5 个增强型CAN 总线接口,同时,单片机内的锁相环电路可使能耗和性能适应具体操作的需要。S12 的片内资源如图4.1 所示:

图4.1 S12 片内资源

具备了以上这些卓越的性能,MC9S12XS128完全能够满足我们设计的需要,并使得电路更加紧凑。以下将首先介绍系统设计中用到的各个软件功能模块的设置,然后再讨论黑线提取及车体控制算法。 4.2 系统初始化 4.2.1 摄像头初始化

由于摄像头行同步信号接到了S12 单片机的输入捕捉PT1引脚,所以当每行视频信号到来时,会产生一个中断,进入采集该行。 摄像头的初始化包括初始化中断,具体过程为: TIE=0X02; //中断IC1使能

INTCR_IRQEN = 0; //清除外部中断标志 ATD0DIEN=0xFF; //设置AN为数字输入 4.2.2 PWM初始化

桂林电子科技大学毕业设计(论文)报告用纸 第 17页 共48页

脉宽调制(PWM)模块有8路的可设置周期和占空比的8位PWM通道,每个通道配有专门的计数器。该模块有4个时钟源,能分别控制8路信号。通过配置寄存器可设置PWM的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(单独输出还是合并输出)。

为了提高控制精度,将PWM0、PWM1两路8位通道合并为一个16位通道来控制转向电机,这样可使转向电机的控制精度从1/255提高到1/65536。PWM模块的初始化设置过程为:

PWME = 0x00; // 关闭PWM

PWMCTL_CON01 = 1; // PWM01合并为16位输出

PWMPRCLK = 0b00010001; // 时钟A = 20M, 时钟B = 20M PWMSCLA = 5; // 时钟SA = 时钟A/2/5 = 2M PWMSCLB = 5; // 时钟SB = 时钟B/2/5 = 2M

PWMCLK = 0b00011111; //PWM0,1-A; PWM2,3-SB; PWM4-SA PWMPOL = 0xff; // 极性位 = 1, duty = 高电平时间 PWMCAE = 0x00; // 左对齐 PWMDTY2 = 0;

PWMPER2 = 200; // 电机频率 = 时钟SB/200 = 10K

PWME_PWME2 1 = 1;//启动PWM 4.2.3 速度传感器初始化

通过对每个控制周期内速度传感器产生的脉冲数进行累加,可以测出这一周期内的平均速度。由于目前速度传感器的精度较高,所以用了16位的脉冲累加器PB进行脉冲计数。 其初始化过程为:

TIOS = 0x00; // 所有通道设置为输入捕捉 TSCR1=0X80; TSCR2=0X01; TCTL4=0B00000111; TFLG1=0X02; DDRM=0x00;

PBCTL_PBEN = 1; // 16位脉冲累加器B使能 PACN10 = 0;

4.2.4 串口初始化

S12有两个串行通信接口SCI0和SCI1,均为TTL电平输出。使用时,可以对波特率、数据格式(8 位或9 位)、发送输出极性、接收唤醒方式等进行选择。另外,

桂林电子科技大学毕业设计(论文)报告用纸 第 18页 共48页

发送和接收可分开使能,模块中还提供了多种避免传输错误的选项。在系统调试时,利用其中一个串口SCI0和上位PC通信,其初始化过程如下: SCI0BD=130; // 波特率=40M/(16*SCI0BD)=19200 SCI0CR1=0x00; //正常工作, 8 个数据位, 1 个停止位 SCI0CR2=0x0c; //允许收发

4.2.5 超频设置

S12单片机中有四个不同的时钟,即外部晶振时钟、锁相环时钟、总线时钟和内核时钟。目前电路采用的是16MHz的外部晶振,默认设置下,锁相环时钟为32MHz,总线时钟为8MHz,内核时钟为16MHz。通过将PLLSEL置位,可选择总线时钟从锁相环时钟获得,而锁相环时钟与外部晶振时钟的关系由SYNR、REFDV两寄存器决定。通过寄存器设置,将总线时钟超频到了40MHz。由于总线时钟用作片上外围设备的同步,而内核时钟则用作CPU的同步,它决定了指令执行的速度。具体设置过程为: REFDV=1;

SYNR=4; // 总线周期=16Mhz*(SYNR+1)/(REFDV+1)=40MHz while(0==CRGFLG_LOCK); // 等待 VCO 稳定 CLKSEL=0x80; // 锁相环打开 4.2.6 液晶初始化

液晶的使能信号控制口EN接PE2,写数据控制口RS接PE3,数据输出口write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x10); delay(5);

为PA0-7口;初始化程序如下:

写命令子程序:

void write_com(uchar com) {

lcdrs=0; delay(5);

LCD_DATA=com; delay(5); lcden=1; delay(5);

桂林电子科技大学毕业设计(论文)报告用纸 第 19页 共48页

}

lcden=0; lcdrs=1;

写数据子程序:

void write_date(uchar date) { }

4.3 图像采集和小球识别 4.3.1 采集信号时序

由于摄像头产品说明上通常只会给出有效像素和分辨率(分辨率即为每场信号中真正为视频信号的行数),但不会具体介绍视频信号行的持续时间、它们在每场信号中的位置、行消隐脉冲的持续时间等参数,而这些参数又关系到图像采样的有效实现,因此利用S12的定时器对这些参数进行了实际测量。具体结果见表4.1。

表4.1 视频信号时序参数 信号属性 行序数 行持续时间 行同步脉冲 持续时间 场消隐区 1-4 5 6 7-10 视频信号区 11-22 23-310 us us 4.7us 4.7us

lcdrs=1; delay(5); LCD_DATA=date; delay(5); lcden=1; delay(5); lcden=0; lcdrs=1;

消隐脉冲 持续时间 3.5us 8us 3.5us 3.5us 23us 27.3us 37.3us 29.8us 桂林电子科技大学毕业设计(论文)报告用纸 第 20页 共48页

场消隐区 (同步脉冲) us us 29.8us 53.4us 4.7us 4.7us 4.7us 4.7us 从上表可以看出,该摄像头扫描的每场中有320行信号,其中第23行到310行是视频信号,第311行到下一场的第22行是场消隐信号。在视频信号区,每行信号持续的时间相同,约为62us;每行的行同步脉冲持续时间也相同,约为4.7us。而在场消隐区,每行持续的时间会有所变化,每行对应的消隐脉冲持续时间,尽管大多数为3.5us,但也有变化。场消隐区中第320行的消隐脉冲持续时间远长于其他消隐脉冲,此脉冲即为场同步脉冲。 4.3.2 图像信号采集

通过视频信号采集电路捕获视频信号,省去了A/D转换,可以采用查询方式或者中断方式对视频信号进行采样。结合前面的电路原理图,主程序采用I/O查询方式判别奇偶场信号跳变,并用中断方式处理行同步引发的中断。当奇偶场信号发生跳变(即新的一场到来)时,对行同步信号计数器清零。在行中断服务函数中,每来一个行同步则行计数器加1,当行计数等于所需采样行时,结束采样进入控制算法,直到一个控制循环结束。行中断服务函数的流程为:

桂林电子科技大学毕业设计(论文)报告用纸 第 21页 共48页

图4.2 行中断服务函数流程

4.3.3 小球跟踪

当摄像头采集到外部图像时,黑色物体返回像素点为0,白色像素点为1;整

幅图像的像素点存到事先定义好的数组中;然后对素组进行滤波处理(比如规定某一行的黑色像素点少于一定的值时,认为该行为干扰行)。

实现对小球的跟踪比较简单的一种方法是提取小球的中心点,通过判断中心点的变化确定小球的运动方向,最后实现跟踪。 4.4 小球颜色识别

TCS230是美国TAOS公司生产的一种可编程彩色光到频率的转换器。该传感器具有分辨率高,可编程的颜色选择与输出定标单电源供电等优点;输出为数字量,可直接与微处理器连接。图4.3为TCS230的引脚封装与功能框图:

图4.3 TCS230的引脚封装与功能框图

5 控制策略

5.1 小球跟踪的平稳性控制——PID控制 5.1.1几种过程控制的基本概念

过程控制――对生产过程的某一或某些物理参数进行的自动控制。 1 模拟控制系统

图5.1 基本模拟反馈控制回路

被控量的值由传感器或变送器来检测,这个值与给定值进行比较,得到偏

桂林电子科技大学毕业设计(论文)报告用纸 第 22页 共48页

差,模拟调节器依一定控制规律使操作变量变化,以使偏差趋近于零,其输出通过执行器作用于过程。

控制规律用对应的模拟硬件来实现,控制规律的修改需要更换模拟硬件。 2

微机过程控制系统

图5.2 微机过程控制系统基本框图

以微型计算机作为控制器。控制规律的实现,是通过软件来完成的。改变控制规律,只要改变相应的程序即可。

一、 数字控制系统DDC

图5.3 DDC系统构成框图

DDC(Direct Digital Congtrol)系统是计算机用于过程控制的最典型的一种系统。微型计算机通过过程输入通道对一个或多个物理量进行检测,并根据确定的控制规律(算法)进行计算,通过输出通道直接去控制执行机构,使各被控量达到预定的要求。由于计算机的决策直接作用于过程,故称为直接数字控制。

DDC系统也是计算机在工业应用中最普遍的一种形式。

5.1.2 数字PID控制器

1 模拟PID控制规律的离散化 模拟形式 e(t)r(t)c(t) 离散化形式 e(n)r(n)c(n) de(t) dTe(n)e(n1) Te(t)dt 0te(i)TTe(i) i0i0nn

2 数字PID控制器的差分方程

桂林电子科技大学毕业设计(论文)报告用纸 第 23页 共48页

TTnu(n)KPe(n)e(i)De(n)e(n1)u0 TIi0TuP(n)uI(n)uD(n)u0式中 uP(n)KPe(n) 称为比例项

T uI(n)KPTIe(i) 称为积分项

i0n uD(n)KPTDe(n)e(n1) 称为微分项 T数字PID控制的两种类型: 1

位置型控制

T u(n)KPe(n)TITDe(n)e(n1)u0 Te(i)i0n 2 增量型控制

u(n)u(n)u(n1)

TDTe(n)2e(n1)e(n2)KPe(n)e(n1)KPe(n)KPTIT

图5.4 数字PID位置型控制示意图

图5.5 数字PID增量型控制示意图

5.1.3 针对智能车的PID算法改进

通过以上的论证与测试,本系统采用数字PID位置控制算法,速度环采用的PID 控制方法。速度环使用的是基本的PI 算式,在积分项处理上,积分项智能在积分限内变化。整个控制算式的比例系数Kp 较大,给调速系统带来较好的相应速度,虽然在空载下调节时间较长,但是车模本身对于调速系统来说是一个很大的惯性负载,系统的带载特性的调节时间主要取决于电池的供电能力。

对于速度环,由于需要对高速行驶过程中突然出现的大的微分信号即赛道的

桂林电子科技大学毕业设计(论文)报告用纸 第 24页 共48页

特性发生变化说出快速的相应,因此不仅需要对积分部分加入积分限,还要有一个性能稳定的微分项的支持。微分项的作用是获知e 的变化趋势,以提前做出反映。那么通过增大舵机的连杆长度和增加前瞻距离达到同样的效果,相当于给系统增加两个固有的微分环节。

5.2 小球跟踪的准确性控制——模糊控制: 5.2.1模糊控制基础

模糊控制的基本思想是利用计算机来实现人的控制经验,而这些经验多是用语言表达的具有相当模糊性的控制规则。模糊控制器(Fuzzy Controller,即FC)获得巨大成功的主要原因在于它具有如下一些突出特点:

模糊控制是一种基于规则的控制。它直接采用语言型控制规则,出发点是现场操作人员的控制经验或相关专家的知识,在设计中不需要建立被控对象的精确数学模型,因而使得控制机理和策略易于接受与理解,设计简单,便于应用。

由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控制对那些数学模型难以获取、动态特性不易掌握或变化非常显著的对象非常适用。 基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同,容易导致较大差异;但一个系统的语言控制规则却具有相对的性,利用这些控制规律间的模糊连接,容易找到折中的选择,使控制效果优于常规控制器。 模糊控制算法是基于启发性的知识及语言决策规则设计的,这有利于模拟人工控制的过程和方法,增强控制系统的适应能力,使之具有一定的智能水平。 模糊控制系统的鲁棒性强,干扰和参数变化对控制效果的影响被大大减弱,尤其适合于非线性、时变及纯滞后系统的控制。 模糊控制的特点:

简化系统设计的复杂性,特别适用于非线性、时变、模型不完全的系统上。

利用控制法则来描述系统变量间的关系。

不用数值而用语言式的模糊变量来描述系统,模糊控制器不必对被控制对象建立完整的数学模式。

模糊控制器是一语言控制器,使得操作人员易于使用自然语言自然语言进行人机对话。

模糊控制器是一种容易控制、掌握的较理想的非线性控制器,具有较佳的适应性及强健性(Robustness)、较佳的容错性(Fault Tolerance)。 5.2.2

模糊控制的基本理论

所谓模糊控制,就是在控制方法上应用模糊集理论、模糊语言变量及模糊逻辑推理的知识来模拟人的模糊思维方法,用计算机实现与操作者相同的控制。该理

• •

桂林电子科技大学毕业设计(论文)报告用纸 第 25页 共48页

论以模糊集合、模糊语言变量和模糊逻辑为基础,用比较简单的数学形式直接将人的判断、思维过程表达出来,从而逐渐得到了广泛应用。应用领域包括图像识别、自动机理论、语言研究、控制论以及信号处理等方面。在自动控制领域,以模糊集理论为基础发展起来的模糊控制为将人的控制经验及推理过程纳入自动控制提供了一条便捷途径。 1. 模糊控制器的基本结构

如下图所示,模糊控制器的基本结构包括知识库、模糊推理、输入量模糊化、输出量精确化四部分。

2. 知识库

知识库包括模糊控制器参数库和模糊控制规则库。模糊控制规则建立在语言变量的基础上。语言变量取值为“大”、“中”、“小”等这样的模糊子集,各模糊子集以隶属函数表明基本论域上的精确值属于该模糊子集的程度。因此,为建立模糊控制规则,需要将基本论域上的精确值依据隶属函数归并到各模糊子集中,从而用语言变量值(大、中、小等)代替精确值。这个过程代表了人在控制过程中对观察到的变量和控制量的模糊划分。由于各变量取值范围各异,故首先将各基本论域分别以不同的对应关系,映射到一个标准化论域上。通常,对应关系取为量化因子。为便于处理,将标准论域等分离散化,然后对论域进行模糊划分,定义模糊子集,如NB、PZ、PS等。

同一个模糊控制规则库,对基本论域的模糊划分不同,控制效果也不同。具体来说,对应关系、标推论域、模糊子集数以及各模糊子集的隶属函数都对控制效

桂林电子科技大学毕业设计(论文)报告用纸 第 26页 共48页

果有很大影响。这3类参数与模糊控制规则具有同样的重要性,因此把它们归并为模糊控制器的参数库,与模糊控制规则库共同组成知识库。

模糊控制规则的来源有3条途径:基于专家经验和实际操作,基于模糊模型,基于模糊控制的自学习。 3. 模糊化

将精确的输入量转化为模糊量F有两种方法:

(1) 将精确量转换为标准论域上的模糊单点集。精确量x经对应关系G转换为标准论域x上的基本元素,则该元素的模糊单点集F为: uF(u)=1 if u=G(x)

(2) 将精确量转换为标准论域上的模糊子集。

精确量经对应关系转换为标准论域上的基本元素,在该元素上具有最大隶属度的模糊子集,即为该精确量对应的模糊子集。 4. 模糊推理

最基本的模糊推理形式为: 前提1 IF A THEN B 前提2 IF A′ 结论 THEN B′

其中,A、A′为论域U上的模糊子集,B、B′为论域V上的模糊子集。前提1称为模糊蕴涵关系,记为A→B。在实际应用中,一般先针对各条规则进行推理,然后将各个推理结果总合而得到最终推理结果。 5. 精确化

推理得到的模糊子集要转换为精确值,以得到最终控制量输出y。目前常用两种精确化方法:

(1)最大隶属度法。在推理得到的模糊子集中,选取隶属度最大的标准论域元素的平均值作为精确化结果。

(2)重心法。将推理得到的模糊子集的隶属函数与横坐标所围面积的重心所对应的标准论域元素作为精确化结果。在得到推理结果精确值之后,还应按对应关系,得到最终控制量输出y。 5.2.3 模糊控制在本系统中的应用

本系统以目标占整个图像的比例Er与这个比例的变化率Ce作为模糊控制器的输入,输出为小车的下一刻速度Cu。

桂林电子科技大学毕业设计(论文)报告用纸 第 27页 共48页

Er的语言变量为:小,中,大;论域为:[0 1]。 Ce的语言变量为:小,中,大;论域为:[0 1]。 Cu的言语变量为:小,中,大;论域为:[0 1]。

经过实际试验,在实时控制中当图像变化率较大时,可以直接去其变化率作为输入控制变量而可以忽略图像在屏幕的比例,这可以提高程序的实际效率。以下为程序初始化: #define PMAX 100 #define PMIN -100 #define DMAX 100 #define DMIN -100

#define FMAX 100 /*语言值的满幅值*/ int PFF[4]={0,12,24,48}; /*输入量D语言值特征点*/ int DFF[4]={0,16,32,}; /*输出量U语言值特征点*/ int UFF[7]={0,15,30,45,60,75,90} 模糊化:

模糊化即时将采集到的准确数值通过一定的公式运算转化为对应的隶属度。 程序如下: /*隶属度的确定*/

/*根据PD的指定语言值获得有效隶属度*/ if(P>-PFF[3] && Pif(P<=-PFF[2]) { Pn=-2;

PF[0]=FMAX*((float)(-PFF[2]-P)/(PFF[3]-PFF[2])); }

重心法反模糊:

重心法是指取模糊集隶属度函数曲线同基础变量轴所围面积的重心对应的基础变量值作为清晰值的方法。

6 系统调试

6.1 编程工具

系统的开发调试用到了Metroworks 公司的Code Warrior 3.1 开发软件,同

桂林电子科技大学毕业设计(论文)报告用纸 第 28页 共48页

时,我们使用了组委会推荐使用了CW4.7 作为主要的单片机程序下载和调试工具。

(1)编译工具

CW4.7 可以很方便的对单片机进行选择,并且在编写程序的过程中,强大 的功能使得程序员编写的代码紧凑,高效。 使用界面如下:

图 6.1 CW4.7 界面

(2)下载调试工具

桂林电子科技大学毕业设计(论文)报告用纸 第 29页 共48页

图6.2 下载调试界面

在cw 编译器中,集成了单片机下载和调试软件hiwave,在这个环境下,程序员可以使用BDM 对于单片机进行调试。使得单片机的调试极为方便,这种状况下,我们可以随意的看到程序运行过程中的各个状态,极大的方便了调试。 6.2 采集调试平台 6.2.1

图像采集监控调试

一个系统方案制定好后,其实主要的工作是不断对小车的各项状态进行细化和调试。同时为了观察摄像头采集和控制算法的直观效果,还采用了NI公司的虚拟仪器Labview作为辅助开发调试工具。本系统采用CCD摄像头来对小球信息进行获取,通过对所采集的小球图像进行分析,来编写小球识别及控制算法。虽然直接将摄像头通过视频接口接至电脑可观察所采图像,但这样对分析图像不够方便,且无法实时精确地反馈出一些特定信息。需要在Labview环境下开发了一套基于PC机平台的图像显示与处理程序,可完成对赛道的显示及相关参数的实时反馈。该程序的运行界面如下:

桂林电子科技大学毕业设计(论文)报告用纸 第 30页 共48页

图6.3 图像采集处理软件界面

图6.4 实时监控软件界面

该程序是在Labview8.5软件编程环境下实现的一个基于对话框的VISAS的应用程序。该软件采用WINDOWS操作系统常规的用户窗口和操作界面,完成存储数据、保存读取数据、图像显示和提取黑线的算法实现。该程序设计的主要软件模块功能如下:

i. 串口通信部分,采用串口控件实现通信功能,接收单片机所传送的数据; ii. 采用逐点画图的方法,对实时采集的图像进行显示;

桂林电子科技大学毕业设计(论文)报告用纸 第 31页 共48页

iii. 将采集到图像中的黑线的空间位置进行标定并实时显示。 6.2.2 串口通信

PC机平台与单片机的通信是通过RS-232串口通信来实现的。在labview中,采用VISA的串口控件实现通信功能。USB(Universal Serial Bus)接口是近年来应用在PC领域的新型接口技术。它基于单一的总线接口技术来满足多种应用领域的需求;它的即插即用、支持热插拔、易于扩展等特性极大地方便了用户的使用,已逐渐成为现代数据传输的发展趋势。传统的开发USB应用系统的步骤是,先用windowsDDK(设备驱动程序开发包)或第三方开发工具(如DriverSt LJdic))开发LJSB驱动程序,然后用Visual C++编写DLL(动态连接库),最后再调有DLL来开发应用程序。显然,这对windows编程不熟悉的人来说有一定的难度,何况USB驱动程序的开发难度很大。现在介绍一种简单、快速开发USB接口应用系统的方法,它直接在LabVIEW环境下通过NI-VISA开发能驱动用户USB系统的应用程序,完全避开了以前开发USB驱动程序的复杂性,大大缩短了开发周期。 1、 N1-VISA简介

NI-VISA(Virtual Instrument Software Architecture,以下简称为\"VISA\")是美国国家仪器NI(National1nstrLlrnent)公司开发的一种用来与各种仪器总线进行通信的高级应用编程接口。VISA总线1/()软件是一个综合软件包,不受平台、总线和环境的,可用来对USB、GPIB、串口、VXI、PXI和以太网系统进行配置、编程和调试。VISA是虚拟仪器系统I/O接口软件。基于自底向上结构模型的VISA创造了一个统一形式的I/O控制函数集。一方面,对初学者或是简单任务的设计32者来说,VISA提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,VISA提供了非常强大的仪器控制功能与资源管理。 2、 LabVIEW简介

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是NI公司开发的一种基于图形程序的编程语言。用户利用创建和调用子程序的方法编写程序,使创建的程序模块化,而且程序编制简单、直观。一个LabVIEW程序分为部分:前面板、框图程序和图标/接线端口。前面板用于模拟真实仪器的前面板;框图程序是利用图形语言对前面板上的控件对象(分为控制量和指示量两种)进行控制;图标/接线端口用于把LabVlEW程序定义成一个子程序,从而实现模块化编程。

使用Labview控件接收数据的流程图如6.5所示。

桂林电子科技大学毕业设计(论文)报告用纸 第 32页 共48页

图6.5 VISA 控件接受数据流程图

Labview的模块化特性只需我们设置VISA控件相关属性即可实现串口通信。以上代码先将串口设为1号,设置接收和发送缓冲区的大小为4096字节,然后判断端口是否已经打开,如果没打开则打开串口。在接收数据方面,设置串口通信波特率为115200B/s,奇偶校验无,数据位为8,停止位为1,以二进制方式接收数据,触发方式是当接受缓冲区有数据时即触发。

桂林电子科技大学毕业设计(论文)报告用纸 第 33页 共48页

图6.6 VISA 串口配置前面版图

配置VISA串口通讯的方法: 3、VISA串口控件一共有八个VI节点 1).VISA Configure Serial Port :

设定波特率,数据位,停止位,奇偶校验位,流控制,超时处理,结束符使能,结束符。

特别需要注意的是超时(TIMEOUT) 和结束符号两个参数,TIMEOUT默认的10秒,结束符号默认是使能状态,默认的结束符是0X0A(\\n),另外,回车0x0D(\\r)也经常做为做为结束符号。

如果采用的是二进制通讯,可能会遇到结束符的问题。因为二进制中0A是10,0D是13,这两个是作为数字出现的,如果不禁止结束符号,会导致读提前结束,产生错误的结果,这再和设备通讯时可能会碰到。至于波特率、数据位等,对照要通讯的设备的要求设定就可以了。

2).Visa Write::这个节点负责把缓冲区的数据发送出去,并返回实际发送的数据。VISA是不管是否是字符串还是数值,都是采用二进制发送的,关键是在于我们的字符串是如何构成的。Visa Read等其它的几个都比较简单,在此就不再赘余。.

桂林电子科技大学毕业设计(论文)报告用纸 第 34页 共48页

图6.7 VISA串口结构框图

6.3 编码器调试

根据编码器手册定义,确认编码器的接口正确。由于编码器输出脉冲数和距离成正比,因此,只要比较脉冲比和距离比是否一致来判断编码器的性能。根据实际测试,让小车推行1米距离后停止,测出编码器输出大概3800个脉冲数,然后再推行5米距离,测出脉冲数约为19000 ,两比例一致,都为5,所以编码器工作正常

6.4 电机驱动板调试

仔细检查电源接口正负极,确定没有接反后,将电机驱动板通电,观察电源指示灯是否正确,各部分电压是否正常。正确后将电机接口与母板正确接插。然后下载MCU的电机驱动程序,从10%到90%给不同的PWM占空比, 用示波器观察波形是否正确,波形如下:

图6.8(1) 10%占空比 图6.8(2) 30%占空比

桂林电子科技大学毕业设计(论文)报告用纸 第 35页 共48页

图6.8(3 )50%占空比 图6.8(4) 70%占空比

图6.8(5) 90%占空比

由图6.8可以看出,输出波形正确,电机驱动板工作正常。

桂林电子科技大学毕业设计(论文)报告用纸 第 36页 共48页

7 总结

从2012年4月开始,我就开始了我的毕业论文,至今已基本完成虽然这段时首先,毕设是一次综合性较高的设计,此间我收集了很多与我本次设计相关间比较辛苦,但我还是感到收获颇多。

的资料,或是去图书馆,或是去网上搜索;这些都是我收集相关技术性资料的能力有了提高。整个毕业设计需要我整合利用大学四年所学到的知识,这让我更加牢固以前所学的知识之外,也让我知道了这四年我到底学到了什麽。

通过完成本次毕业设计,我学会了飞思卡尔公司的一款16位单片机,学会了智能车的制作,利用摄像头采集图像;对系统各个部分的系统工作有了一个了解。本次毕业设计我运用了模糊控制的智能控制算法,并且通过调试我更加深刻了解了模糊控制。

当然本次毕业设计还存在一些不足。整个系统的电源部分还有一些缺陷,这表现在当系统工作了一段时间后,5伏稳压芯片发热比较严重,影响了系统的稳定运行,同时摄像头采集图像还存在盲区,而且占用CPU时间较多,制约了小车的运行速度,这些都是我以后需要补充的。

桂林电子科技大学毕业设计(论文)报告用纸 第 37页 共48页

谢 辞

经过几个月的努力,终于成功的做完了毕业设计,在这里首先要感谢我的指导老师刘振丙先生,本次毕业设计得到了刘振丙老师的热心指导和帮助,从毕设选题,系统方案的设计,到最后方案的最终确定以及毕设的整个过程和最后阶段,都得到了刘振丙老师的很多帮助和指导。刘振丙老师和蔼可亲,平易近人,乐于助人,对学生的毕设进度和学习以及设计方案上都很关心。在做毕业设计的整个过程中,每当我遇到难题或者在毕设方案的设计有疑问的时候,他都能及时给予指导。他严谨细致,工作态度认真,平易近人。更重要的是,他善于与学生沟通与交流,在毕业设计中给我很多指导和帮助。他那种循序渐进的治学风格影响了我。让我对自己研究的课题从陌生到熟悉,到现在能熔入自己的应用。

其次,感谢学院为我们提供做毕设的实验室和其他实验器材,有了这些实验设备,我们就可以在每周的星期一到星期五到实验室做板和调试,也可以合理的安排时间进行毕业设计。我们的毕业设计能够顺利完成,离不开你们有计划的安排。同时,要感谢的是实验室的老师们,是你们每天按时到实验室开放实验室给我们,是你们在我们需要时总能借实验室的其它实验设备给我们用,也是你们在我们需要帮助时给予我们及时的指导,你们的热心和敬业精神,给了我很大的感触和帮相,谢谢你们。

借此机会,我还要感谢在这四年里给我教育,给我知识的所有老师,是你们用辛勤的汗水和劳动,把知识传播开了。在毕业设计中,我用到了很多你们教给我的知识,并用你们传授的学习方法学到更多的知识。有了这些知识,我才能在这么短的时间里做完我的毕业设计。以后等我走上工作岗位,我一定会努力工作,来报答学校和老师对我的教导和帮助。谢谢你们。

在做毕业设计的过程中,有幸查阅到了很多有关的资料,在此对这些作者们表示感谢。

同时要感谢同组的同学们和宿舍的舍友们在平时和我一起努力,大家一起营造了一个良好的做毕设的氛围,也感谢你们在平时和我一起讨论遇到的问题,并给我很多宝贵的意见,这些都使我进步了很多。最后,感谢我的家人给我的鼓励和支持,感谢爸爸妈妈在我遇到困难时总是一如既往的鼓励我,给我向前的勇气。

谨以此文献给对我学习和生活给予支持、关怀和帮助的老师、同学和亲人,在此向你们表示衷心的感谢和敬意;感谢所有的老师和朋友来对我的支持和鼓励。谢谢你们。

桂林电子科技大学毕业设计(论文)报告用纸 第 38页 共48页

参考文献

[1] 胡寿松.自动控制原理[M].北京:科学出版社,2001

[2] 孙同景.Freescale 9S12十六位单片机原理及嵌入式开发技术[M].北京:机械工业出版社,

2007

[3] 张毅,罗元,郑太雄.移动机器人技术及其应用[M].北京:电子工业出版社,2007 [4] 王威. HCS12微控制器原理及应用[M].北京:清华大学出版社,2007 [5] 易继锴,侯援彬. 智能控制技术[M]. 北京:北京工业大学出版社,2006

[6] ,王志强,房建成.永磁无刷直流电机控制技术与应用[M].北京:机械工业出版社.2008.

[7] 马建伟,李银伢. 满意PID控制设计理论与方法.北京:科学出版社[M]. 2007 [8] 李阳. 基于视觉的移动机器人运动目标跟踪技术研究[D].北京:北京交通大学,2009 [9] 席爱民. 模糊控制技术[M].西安:西安电子科技大学出版社,2008

[10] 欧宗瑛,张艳珍,袁野. 基于颜色信息足球机器人视觉跟踪算法[N].大连理工大学学报,

2000年6期

[11] 刘斌,赵书尚,任雁等. 基于颜色的目标跟踪系统在机器人中的应用[N].河南科技大学

大学学报,2010年2期

[12] 张宇飞. 模糊-PID混合控制技术在直流电机调速系统中的应用[N].计算机光盘软件与

应用,2012年3期

[13] 孙增祈. 智能控制理论与技术[M].北京:清华大学出版社,1997:169-181

[14] 李士勇. 模糊控制和智能控制理论与应用[M].哈尔滨:哈尔滨工业大学出版社,1990 [15] 王国俊. 模糊推理的一种新方法[J].模糊系统与数学,1999,13(3):1—10 [16] 窦振中. 模糊逻辑控制技术及其应用[M].北京:北京航空航天大学出版社,1995 [17] 吴晓莉,林哲辉. MATLAB辅助模糊系统设计[M],西安电子科技大学出版社. 2002 [18] Lee C C. Fuzzy logic in control system:fuzzy logic controller.1990,20(2):404-435

[19] F.Lasmiraux,J.P.Laumond.A practical approach to feedback control for a mobile robot with

trailer,1998

[20] H.P. Huang, C.C. Liang, C.W. Lin. Construction and soccer dynamics analysis for an

intelligent multi-agent soccer robot system,2001 [21] Graham,Ron. FAQ on PID controller tuning. 2007

桂林电子科技大学毕业设计(论文)报告用纸 第 39页 共48页

附 录

小球图像采集程序: 初始化: #define ROW 60 #define COLUMN 120

#define SAMP_ROW_START 5 #define SAMP_ROW_MAX 280 unsigned char Buffer[ROW][COLUMN]=0; unsigned char SampleFlag=0 ; unsigned char jiange; unsigned int m=0; unsigned int n=0; unsigned int line=0; unsigned char Flag=0; /*时钟初始化程序*/

void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟=2*16*(5+1)/(1+1)=96MHz //总线时钟48MHz

CLKSEL=0x00; PLLCTL_PLLON=1; SYNR=0XC0 | 0X05; REFDV=0X80 | 0X01; POSTDIV=0X00; _asm(nop); _asm(nop);

while(0==CRGFLG_LOCK);//锁相环锁定 CLKSEL_PLLSEL=1;//选定外部时钟 }

//--------------行场中断初始化-------------// void IC_Init(void) {

TIOS=0x00; TCTL4=0x09;

桂林电子科技大学毕业设计(论文)报告用纸 第 40页 共48页

TSCR1=0x80; TIE=0x03; TFLG1=0xFF; }

中断采集程序:

#pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 8 Port0_Interrupt() {

TFLG1_C0F=1;

line++; //行计数器加 1

if ( SampleFlag == 0 || lineSAMP_ROW_MAX )

{

return;//判断是否从新的一场开始 }

if(line<=50)jiange=10;

else if(line>50&&line<=210) jiange=4; else if(line>210&&line<=250) jiange=5; else

jiange=6; if(line%jiange==0) {

Buffer[m][0]=PORTB_PB0; Buffer[m][n+0]=PORTB_PB0; Buffer[m][1]=PORTB_PB0; Buffer[m][n+1]=PORTB_PB0; Buffer[m][2]=PORTB_PB0; Buffer[m][n+2]=PORTB_PB0; Buffer[m][3]=PORTB_PB0; Buffer[m][n+3]=PORTB_PB0; Buffer[m][4]=PORTB_PB0; Buffer[m][n+4]=PORTB_PB0; Buffer[m][5]=PORTB_PB0; Buffer[m][n+5]=PORTB_PB0; Buffer[m][6]=PORTB_PB0; Buffer[m][n+6]=PORTB_PB0; Buffer[m][7]=PORTB_PB0; Buffer[m][n+7]=PORTB_PB0; Buffer[m][8]=PORTB_PB0; Buffer[m][n+8]=PORTB_PB0; Buffer[m][9]=PORTB_PB0; Buffer[m][n+9]=PORTB_PB0; Buffer[m][10]=PORTB_PB0; Buffer[m][n+10]=PORTB_PB0;

桂林电子科技大学毕业设计(论文)报告用纸 第 41页 共48页

Buffer[m][11]=PORTB_PB0; Buffer[m][n+11]=PORTB_PB0; Buffer[m][12]=PORTB_PB0; Buffer[m][n+12]=PORTB_PB0; Buffer[m][13]=PORTB_PB0; Buffer[m][n+13]=PORTB_PB0; Buffer[m][14]=PORTB_PB0; Buffer[m][n+14]=PORTB_PB0; Buffer[m][15]=PORTB_PB0; Buffer[m][n+15]=PORTB_PB0; Buffer[m][16]=PORTB_PB0; Buffer[m][n+16]=PORTB_PB0; Buffer[m][17]=PORTB_PB0; Buffer[m][n+17]=PORTB_PB0; Buffer[m][18]=PORTB_PB0; Buffer[m][n+18]=PORTB_PB0; Buffer[m][19]=PORTB_PB0; Buffer[m][n+19]=PORTB_PB0; Buffer[m][20]=PORTB_PB0; Buffer[m][n+20]=PORTB_PB0; Buffer[m][21]=PORTB_PB0; Buffer[m][n+21]=PORTB_PB0; Buffer[m][22]=PORTB_PB0; Buffer[m][n+22]=PORTB_PB0; Buffer[m][23]=PORTB_PB0; Buffer[m][n+23]=PORTB_PB0; Buffer[m][24]=PORTB_PB0; Buffer[m][n+24]=PORTB_PB0; Buffer[m][25]=PORTB_PB0; Buffer[m][n+25]=PORTB_PB0; Buffer[m][26]=PORTB_PB0; Buffer[m][n+26]=PORTB_PB0; Buffer[m][27]=PORTB_PB0; Buffer[m][n+27]=PORTB_PB0; Buffer[m][28]=PORTB_PB0; Buffer[m][n+28]=PORTB_PB0; Buffer[m][29]=PORTB_PB0; Buffer[m][n+29]=PORTB_PB0; Buffer[m][30]=PORTB_PB0; Buffer[m][n+30]=PORTB_PB0; Buffer[m][31]=PORTB_PB0; Buffer[m][n+31]=PORTB_PB0; Buffer[m][32]=PORTB_PB0; Buffer[m][n+32]=PORTB_PB0; Buffer[m][33]=PORTB_PB0; Buffer[m][n+33]=PORTB_PB0; Buffer[m][34]=PORTB_PB0; Buffer[m][n+34]=PORTB_PB0; Buffer[m][35]=PORTB_PB0; Buffer[m][n+35]=PORTB_PB0; Buffer[m][36]=PORTB_PB0; Buffer[m][n+36]=PORTB_PB0; Buffer[m][37]=PORTB_PB0; Buffer[m][n+37]=PORTB_PB0; Buffer[m][38]=PORTB_PB0; Buffer[m][n+38]=PORTB_PB0; Buffer[m][39]=PORTB_PB0; Buffer[m][n+39]=PORTB_PB0; Buffer[m][40]=PORTB_PB0; Buffer[m][n+40]=PORTB_PB0; Buffer[m][41]=PORTB_PB0; Buffer[m][n+41]=PORTB_PB0; Buffer[m][42]=PORTB_PB0; Buffer[m][n+42]=PORTB_PB0; Buffer[m][43]=PORTB_PB0; Buffer[m][n+43]=PORTB_PB0; Buffer[m][44]=PORTB_PB0; Buffer[m][n+44]=PORTB_PB0;

桂林电子科技大学毕业设计(论文)报告用纸 第 42页 共48页

Buffer[m][45]=PORTB_PB0; Buffer[m][n+45]=PORTB_PB0; Buffer[m][46]=PORTB_PB0; Buffer[m][n+46]=PORTB_PB0; Buffer[m][47]=PORTB_PB0; Buffer[m][n+47]=PORTB_PB0; Buffer[m][48]=PORTB_PB0; Buffer[m][n+48]=PORTB_PB0; Buffer[m][49]=PORTB_PB0; Buffer[m][n+49]=PORTB_PB0; Buffer[m][50]=PORTB_PB0; Buffer[m][n+50]=PORTB_PB0; Buffer[m][51]=PORTB_PB0; Buffer[m][n+51]=PORTB_PB0; Buffer[m][52]=PORTB_PB0; Buffer[m][n+52]=PORTB_PB0; Buffer[m][53]=PORTB_PB0; Buffer[m][n+53]=PORTB_PB0; Buffer[m][54]=PORTB_PB0; Buffer[m][n+54]=PORTB_PB0; Buffer[m][55]=PORTB_PB0; Buffer[m][n+55]=PORTB_PB0; Buffer[m][56]=PORTB_PB0; Buffer[m][n+56]=PORTB_PB0; Buffer[m][57]=PORTB_PB0; Buffer[m][n+57]=PORTB_PB0; Buffer[m][58]=PORTB_PB0; Buffer[m][n+58]=PORTB_PB0; Buffer[m][59]=PORTB_PB0; Buffer[m][n+59]=PORTB_PB0; Buffer[m][60]=PORTB_PB0; Buffer[m][n+60]=PORTB_PB0; Buffer[m][61]=PORTB_PB0; Buffer[m][n+61]=PORTB_PB0; Buffer[m][62]=PORTB_PB0; Buffer[m][n+62]=PORTB_PB0; Buffer[m][63]=PORTB_PB0; Buffer[m][n+63]=PORTB_PB0; Buffer[m][]=PORTB_PB0; Buffer[m][n+]=PORTB_PB0; Buffer[m][65]=PORTB_PB0; Buffer[m][n+65]=PORTB_PB0; Buffer[m][66]=PORTB_PB0; Buffer[m][n+66]=PORTB_PB0; Buffer[m][67]=PORTB_PB0; Buffer[m][n+67]=PORTB_PB0; Buffer[m][68]=PORTB_PB0; Buffer[m][n+68]=PORTB_PB0; Buffer[m][69]=PORTB_PB0; Buffer[m][n+69]=PORTB_PB0; Buffer[m][70]=PORTB_PB0; Buffer[m][n+70]=PORTB_PB0; Buffer[m][71]=PORTB_PB0; Buffer[m][n+71]=PORTB_PB0; Buffer[m][72]=PORTB_PB0; Buffer[m][n+72]=PORTB_PB0; Buffer[m][73]=PORTB_PB0; Buffer[m][n+73]=PORTB_PB0; Buffer[m][74]=PORTB_PB0; Buffer[m][n+74]=PORTB_PB0; Buffer[m][75]=PORTB_PB0; Buffer[m][n+75]=PORTB_PB0; Buffer[m][76]=PORTB_PB0; Buffer[m][n+76]=PORTB_PB0; Buffer[m][77]=PORTB_PB0; Buffer[m][n+77]=PORTB_PB0; Buffer[m][78]=PORTB_PB0; Buffer[m][n+78]=PORTB_PB0;

桂林电子科技大学毕业设计(论文)报告用纸 第 43页 共48页

Buffer[m][78]=PORTB_PB0; Buffer[m][n+78]=PORTB_PB0; Buffer[m][79]=PORTB_PB0; Buffer[m][n+79]=PORTB_PB0; Buffer[m][80]=PORTB_PB0; Buffer[m][n+80]=PORTB_PB0; Buffer[m][81]=PORTB_PB0; Buffer[m][n+81]=PORTB_PB0; Buffer[m][82]=PORTB_PB0; Buffer[m][n+82]=PORTB_PB0; Buffer[m][83]=PORTB_PB0; Buffer[m][n+83]=PORTB_PB0; Buffer[m][84]=PORTB_PB0; Buffer[m][n+84]=PORTB_PB0; Buffer[m][85]=PORTB_PB0; Buffer[m][n+85]=PORTB_PB0; Buffer[m][86]=PORTB_PB0; Buffer[m][n+86]=PORTB_PB0; Buffer[m][87]=PORTB_PB0; Buffer[m][n+87]=PORTB_PB0; Buffer[m][88]=PORTB_PB0; Buffer[m][n+88]=PORTB_PB0; Buffer[m][]=PORTB_PB0; Buffer[m][n+]=PORTB_PB0; Buffer[m][90]=PORTB_PB0; Buffer[m][n+90]=PORTB_PB0; Buffer[m][91]=PORTB_PB0; Buffer[m][n+91]=PORTB_PB0; Buffer[m][92]=PORTB_PB0; Buffer[m][n+92]=PORTB_PB0; Buffer[m][93]=PORTB_PB0; Buffer[m][n+93]=PORTB_PB0; Buffer[m][94]=PORTB_PB0; Buffer[m][n+94]=PORTB_PB0; Buffer[m][95]=PORTB_PB0; Buffer[m][n+95]=PORTB_PB0; Buffer[m][96]=PORTB_PB0; Buffer[m][n+96]=PORTB_PB0; Buffer[m][97]=PORTB_PB0; Buffer[m][n+97]=PORTB_PB0; Buffer[m][98]=PORTB_PB0; Buffer[m][n+98]=PORTB_PB0; Buffer[m][99]=PORTB_PB0; Buffer[m][n+99]=PORTB_PB0; Buffer[m][100]=PORTB_PB0; Buffer[m][n+100]=PORTB_PB0; Buffer[m][101]=PORTB_PB0; Buffer[m][n+101]=PORTB_PB0; Buffer[m][102]=PORTB_PB0; Buffer[m][n+102]=PORTB_PB0; Buffer[m][103]=PORTB_PB0; Buffer[m][n+103]=PORTB_PB0; Buffer[m][104]=PORTB_PB0; Buffer[m][n+104]=PORTB_PB0; Buffer[m][105]=PORTB_PB0; Buffer[m][n+105]=PORTB_PB0; Buffer[m][106]=PORTB_PB0; Buffer[m][n+106]=PORTB_PB0; Buffer[m][107]=PORTB_PB0; Buffer[m][n+107]=PORTB_PB0; Buffer[m][108]=PORTB_PB0; Buffer[m][n+108]=PORTB_PB0; Buffer[m][109]=PORTB_PB0; Buffer[m][n+109]=PORTB_PB0; Buffer[m][110]=PORTB_PB0; Buffer[m][n+110]=PORTB_PB0; Buffer[m][111]=PORTB_PB0; Buffer[m][n+111]=PORTB_PB0;

桂林电子科技大学毕业设计(论文)报告用纸 第 44页 共48页

Buffer[m][112]=PORTB_PB0; Buffer[m][n+112]=PORTB_PB0; Buffer[m][113]=PORTB_PB0; Buffer[m][n+113]=PORTB_PB0; Buffer[m][114]=PORTB_PB0; Buffer[m][n+114]=PORTB_PB0; Buffer[m][115]=PORTB_PB0; Buffer[m][n+115]=PORTB_PB0; Buffer[m][116]=PORTB_PB0; Buffer[m][n+116]=PORTB_PB0; Buffer[m][117]=PORTB_PB0; Buffer[m][n+117]=PORTB_PB0; Buffer[m][118]=PORTB_PB0; Buffer[m][n+118]=PORTB_PB0; Buffer[m][119]=PORTB_PB0; Buffer[m][n+119]=PORTB_PB0; m++; }; }

#pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 9 Port1_interrupt() {

TFLG1_C1F=1; //清场中断 TFLG1_C0F=1; //清行中断 m=0; //列清零 line=0; //行计数器 SampleFlag=1;//场标志位置 1 Flag=0; }

电机驱动程序: void houlun(void) {

// D11=0; D12=1;

PWME_PWME3=0; PWME_PWME1=0; DDRP=0XFE; PTP_PTP1=0;

PWMCTL_CON23 = 1; //0和1联合成16位PWM; PWMSCLA = 16; //对clock SA 进行32分频 pwm clock PWMDTY23 = 350; //修改此处改变电机转速,最大到1000 PWMPER23 = 1024; //10为精度PWM

//后轮驱动子程序

桂林电子科技大学毕业设计(论文)报告用纸 第 45页 共48页

PWMCLK_PCLK3 = 1; //选择 clock SA 作为时钟源 PWMPOL_PPOL3 = 1; //设置极性位先输出高电平模式 PWMCAE_CAE3 = 0; //选择输出模式为左对齐 PWMCNT23 = 0; //计数器清零

PWME_PWME3 = 1; //开始计时 */ }

void qianlunl(void) { // D21=0; D22=1;

PWME_PWME7=0; PWME_PWME5=0; DDRP=0Xff; PTP_PTP7=0;

PWMCTL_CON45 = 1; //0和1联合成16位PWM; PWMSCLA = 16; //对clock SA 进行32分频 pwm clock PWMDTY45 = 400; //修改此处改变电机转速,最大到1000 PWMPER45 = 1024; //10为精度PWM

PWMCLK_PCLK5 = 1; //选择 clock SA 作为时钟源 PWMPOL_PPOL5 = 1; //设置极性位先输出高电平模式 PWMCAE_CAE5 = 0; //选择输出模式为左对齐 PWMCNT45 = 0; //计数器清零 PWME_PWME5 = 1; //开始计时 */ }

void qianlunr(void) { // D21=0; D22=1;

PWME_PWME7=0; PWME_PWME5=0; DDRP=0Xff; PTP_PTP5=0;

PWMCTL_CON67 = 1; //0和1联合成16位PWM; PWMSCLA = 16; //对clock SA 进行32分频 pwm clock

//前轮左转控制子程序

//前轮右转控制子程序

桂林电子科技大学毕业设计(论文)报告用纸 第 46页 共48页

PWMDTY67 = 400; //修改此处改变电机转速,最大到1000 PWMPER67 = 1024; //10为精度PWM

PWMCLK_PCLK7 = 1; //选择 clock SA 作为时钟源 PWMPOL_PPOL7 = 1; //设置极性位先输出高电平模式 PWMCAE_CAE7 = 0; //选择输出模式为左对齐 PWMCNT67 = 0; //计数器清零 PWME_PWME7 = 1; //开始计时 */ }

颜色识别程序:

/*-----------脉冲计数器初始化--------------*/

void ECT4_INIT(void) //输入捕捉通道4初始化函数 {

TSCR2=0X07; //关闭溢出中断且128分频

TIOS_IOS4=0; //定通道4为输入捕捉,1为输出比较 TCTL3=0X01; //上升沿捕捉 0x02为下降沿捕捉 TIE_C4I=1; //通道4中断关闭 TSCR1=0X80; //开启总定时器中断 TFLG1_C0F=1; //标志位清零 }

/*-------------颜色识别子程序-------------*/ void yanseshebie(void) {

// uint m=2;

PORTB_PB6=0; //oe=0 PTH_PTH4=1; //s0=1 PORTE_PE6=0; //s1=0 delay(200); //延时200ms PORTB_PB2=0;

PORTB_PB4=0; //检验是否为红色 ECT4_INIT(); //开脉冲计数器 delay(100); //延时100ms PORTB_PB6=1;

if(m==0) PORTB_PB0=0;

桂林电子科技大学毕业设计(论文)报告用纸 第 47页 共48页

freqR=m ;

//asm sei; //关总中断 m=0;

PORTB_PB6=0; PORTB_PB2=1;

PORTB_PB4=1; //检验是否为绿色 //asm cli; //开总中断 ECT4_INIT(); //开脉冲计数器 delay(300); //延时100ms freqG=m;

if(m==0) PORTB_PB0=0; m=0;

PORTB_PB6=1; if(freqR>freqG)

a=1; //红色识别标志 else a=0; //绿色识别标志 }

PID子程序:

//------------位置PID函数--------// typedef struct {

double ProportionalGain; double IntegralGain; double DerivativeGain; double InputErrork_1; double IntegralPortionk_1; double PositivePIDLimit; double NegativePIDLimit; } PIDSING;

float DoublePIDCalc(double GivenValue,double MeasureValue,PIDSING *pp)

PORTB_PB6=1;

// return m;

桂林电子科技大学毕业设计(论文)报告用纸 第 48页 共48页

{

float derror,error;

error=GivenValue-MeasureValue;

pp->IntegralPortionk_1=error+pp->IntegralPortionk_1; if(pp->IntegralPortionk_1>pp->PositivePIDLimit ) pp->IntegralPortionk_1=pp->PositivePIDLimit; if(pp->IntegralPortionk_1NegativePIDLimit ) pp->IntegralPortionk_1=pp->NegativePIDLimit; derror=error-pp->InputErrork_1; pp->InputErrork_1=error;

error=pp->ProportionalGain*error+pp->IntegralGain*pp->IntegralPortionk_1+pp->DerivativeGain*derror;

if(error>pp->PositivePIDLimit) error=pp->PositivePIDLimit; if(error>pp->NegativePIDLimit) error=pp->NegativePIDLimit; return error; }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务