智能车模技术报告 - 太理工前进 - 图文

更新时间:2024-03-23 15:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一届“飞思卡尔”杯全国大学生

智能汽车邀请赛

技 术 报 告

附件C智能车模的巡线算法设计

附件D关于智能车模起跑线识别方法的设计与实现

学 校: 太原理工大学 队伍名称: 太理工前进 参赛队员: 姚世选 薄志强 裴永斌

带队教师: 常晓明

关于技术报告和研究论文使用授权的说明

本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、

使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛智能车模的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。

参赛队员签名: 带队教师签名:

日 期:

目 录

第一章 引言 ....................................................... 1

1.1相关背景 .................................................... 1 1.2构成概要 .................................................... 1 第二章 硬件电路设计 ............................................... 2

2.1设计思路 .................................................... 2

2.1.1硬件系统框图 ........................................... 2 2.1.2框图说明 ............................................... 2 2.2电源管理模块 ................................................ 3

2.2.1电源分配 ............................................... 3 2.1.2电源电路说明 ........................................... 3 2.3红外光电传感器巡线模块 ...................................... 3

2.3.1黑色引导线的识别原理 ................................... 3 2.3.2器件选择 ............................................... 4 2.3.3测试平台制作 ........................................... 4 2.3.4搭建实验电路 ........................................... 5 2.3.4信号处理 ............................................... 6 2.4舵机驱动模块 ................................................ 7

2.4.1舵机驱动 ............................................... 7 2.4.2 测试车轮转角与舵机驱动信号的关系 ...................... 7 2.5动力直流电机驱动模块 ........................................ 8

2.5.1 MC33886简介 ........................................... 8 2.5.2搭建驱动电路 ........................................... 9 2.6速度检测模块 ............................................... 11

2.6.1空载速度检测 .......................................... 11 2.6.2法兰盘测速模块电路实现 ................................ 12 2.7生成电路印刷板 ............................................. 13 第三章 软件控制算法设计 .......................................... 14

3.1 MC9S12DG128单片机的资源分配 ............................... 14 3.2控制软件基本思想 ........................................... 14 3.3红外光电传感器的布局 ....................................... 15

3.3.1 确定布局方式及与单片机的接口 ......................... 15 3.3.2 红外收发管间距的确定 ................................. 15 3.4基本行进算法分析 ........................................... 18

3.4.1车模对直线的处理 ...................................... 19 3.4.2车模对曲线的处理 ......................................... 23

3.4.3车模对十字线的处理 .................................... 23 3.4.4车模对起始线的处理 ....................................... 25 3.5记忆行进算法分析 ........................................... 26

I

3.6智能车的模糊控制 ........................................... 28 3.7 控制软件的流程图 ........................................... 29 第四章 车模机械安装与系统调试 .................................... 30 4.1机械安装 .................................................... 30

4.1.1舵机的安装 ............................................ 30 4.1.2模块电路板的安装 ...................................... 30 4.1.3法兰盘制作及安装 ...................................... 31 4.1.3安装完成后的车模 ...................................... 31 4.2测试赛道的制作 ............................................. 32 4.3 系统调试 ................................................... 33 第五章 结论 ...................................................... 34

5.1智能车模 ................................................... 34 5.2技术指标 ................................................... 34 5.3存在的问题及解决方法 ....................................... 35 参考文献 .......................................................... 36 附录A 硬件电路原理图 ............................................. 37 附录B 程序源代码 ................................................. 40 附录C:研究论文1 ................................................. 65 附录D:研究论文2 ................................................. 71

II

第一章 引言

1.1相关背景

第一届“飞思卡尔”杯全国大学生智能汽车邀请赛即将来临,我队是太原理工大学唯一参赛的队伍,队伍名称为“太理工前进队”。智能车模的开发调试都是在我校“晓明研究室”的研究环境下完成的,到目前为止一切顺利。我队参赛队员由一个博士研究生和两个本科生组成,博士研究生主要负责整体方案构思和工作协调,两个本科生软硬分工明确,各自负责硬件电路设计、机械安装和软件算法实现。在整个开发过程中,主要经历了下面几个阶段:

第一阶段:计划和方案的制定; 第二阶段:硬件电路的实现; 第三阶段:软件控制算法的实现; 第四阶段:系统的调试及改进。

1.2构成概要

本技术报告共包含五章内容。第一章为引言部分。主要概述智能车模制作情况,并阐明了报告内容的构成。第二章为智能车模硬件系统电路的设计。详细介绍智能车模各个功能模块的电路实现,展示了在制作过程中的实验场景等。第三章为智能车模软件行进算法的实现。详细介绍智能车模控制软件主要理论、算法说明及代码设计介绍等。第四章为智能车模的机械安装及系统调试。详细说明了智能车模机械部分安装及改造、电路板的固定及连接等,并对智能车模开发过程中的系统调试作了简单介绍。第五章为总结部分。概括说明了模型汽车制作情况和技术指标,指出了存在的问题及改进方向。

1

第二章 硬件电路设计

2.1设计思路

2.1.1硬件系统框图

7.2V电池7.2V5V电源管理模块5V6V7.2V红外光电传感 及信号处理 模块MC9S12DG128B最小系统法兰盘测速 路况记忆 模块舵机驱动电路直流电机 图2.1 硬件系统框图

2.1.2框图说明

在图2.1所示智能车模的硬件系统框图中,智能车模是以清华提供的MC9S12DG128单片机最小系统板为控制核心;使用电压为7.2V,容量为2AH的镍镉电池作为能量来源,分别产生智能车模各个模块需求的电平;通过前后共14路红外光电传感模块检测赛道路况信息,并进行信号处理,送往单片机进行算法运算处理;单片机经过路况分析后,合理、准确地输出PWM45信号控制舵机的转动方向,从而很好地控制智能车模转向;单片机输出PWM67信号经过功率放大,控制动力直流电机转速,从而控制智能车模的行进快慢;法兰盘测速、路况记忆模块是在智能车模制作的后期根据算法需求加上的,它的主要目的是在智能车模赛道第一圈行进中记录路径信息,在第二圈根据记忆算法使智能车模以最佳速度行进,顺利完成大赛规定的赛道。

2

第二章 硬件电路设计

2.2电源管理模块

2.2.1电源分配

在智能车模的硬件系统中,单片机最小系统、红外光电传感及信号处理模块需要5V供电,舵机工作需要6V供电,动力直流电机的驱动电路需要7.2V 直接供电。它们的产生采用了最常用的电源管理芯片7805和7806。具体电路如图2.2所示。

U278L066VSTR13C60.1uC72uFC810uFSW_POWER7.2VINJ3DC 7.2V INC11000uFPGND12U178L05PGNDGNDRGND10VinVoutVCCGNDVinVout3C30.1uC4470uFC50.1uC20.1u2

图2.2 电源电路原理图

2.1.2电源电路说明

在图2.2所示的电源电路中,J3为7.2V电池输入端,SW-POWER为电源开关,7.2V通过78L05产生5V电压VCC,通过78L06产生6V电压6VSTR。使用大电容C1,C4的好处:1、补偿使用电机时对电池造成的电压骤降;2、提供电机初启动时所需要的突发电流;3、增加电池的使用寿命。其他的小电容不会对车模的程序或电路的设计产生影响,却会减少隐藏的噪声源的影响。在模拟地和数字地之间接一个0欧姆的电阻起到噪声滤除作用。

2.3红外光电传感器巡线模块

2.3.1黑色引导线的识别原理

如图2.3所示,红外发光管发射一定光强的红外光线的前提下,红外光线

3

第一届全国大学生智能汽车邀请赛技术报告

遇到白色底板会被大量发射,而红外光线遇到黑色引导线会被吸收掉,这样就导致红外接收管接收到的红外光线会有很大差异,反向输出电压会有很大不同

[4]

。利用输出电压的这一特性,再经过滤波、整形等信号处理电路便可以识别

黑色引导线。

红外接收管红外发光管红外接收管红外发光管 图2.3 红外光电反射原理

2.3.2器件选择

基于算法识别赛道起始线的要求[1],红外收发管从图2.4所示的器件中选择了ф3mm的红外收发二极管。

贴片发射管贴片接收管微型红外对管3mm发射管3mm接收管红外对管

图2.4 各种红外发射接收管

2.3.3测试平台制作

为了能够很准确地测试红外光电传感器的各种参数,使用有机玻璃、螺丝、

4

第二章 硬件电路设计

螺母等材料,使用钻台、锉子、切割机、台式砂轮机等工具制作了一个测试平台。它的制作过程如图2.5所示。

材料

半成品

成品

图2.5 测试平台制作过程

2.3.4搭建实验电路

使用制作好的测试平台,按照图2.6搭建红外发射接收电路,主要为了确定几个重要参数。当时的实验现场如图2.7所示。

1.红外接收管接收红外线时距发射面的有效距离与红外发光管的发射功率之间的关系;

2.当红外收发管在黑白相间的表面上方移动时,红外接收管输出的电压信号;

VCCVR110KR11K电阻器示波器检测平台VR2100KAATD1VBRD1V游标卡尺电源实验电路实验数据记录本

图2.6 红外发射接收电路 图2.7 实验现场

结论:1.在满足要求的情况下,尽可能地让红外发光管的发射功率小,减小电

5

第一届全国大学生智能汽车邀请赛技术报告

路功耗。选择红外发射管的限流电阻为360Ω,留过它的电流不足10mA。

2.红外接收管把接收到红外光的强度转化为图2.6中B点电压信号,实验结果如图2.8所示,红外线照在黑色底板和白色底板后B点电压信号有明显的不同。经过处理这个电压信号就可以很方便的识别出白色赛道和黑色引导线。

3.53.0黑色底板白色底板2.52.01.51.00.50.0051015202530 距离d[mm] 图2.8 测试B点电压结果

2.3.4信号处理

为了将红外接收管反向端接收到的模拟电压信号转化为数字信号,我们使用L358制作了满足需求的滞回比较器,其电路原理如图2.9所示。

VCCR11KR3BVR110k32R4R21KC72uC80.1uU4ALM358R15Vref1k123U1ALM3581R162kOUT1白色底板电压[V] 图2.9 滞回比较器电路图

6

第二章 硬件电路设计

图2.9中,由U4A、VR1等组成滞回比较器参考电压产生电路,由U1A、

R15、R16等组成滞回比较器电路。

2.4舵机驱动模块

2.4.1舵机驱动

舵机[3]的控制信号共有三根,中间红色的是电源线,一边黑色的是地线,这两根线给舵机提供最基本的能源保证,主要是由内部电机的转动消耗掉了。需提供的电源一般有两种规格,一种是4.8V,一种是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;另外一根线是控制信号线,它的颜色是不确定的,随着生产厂家的不同而不同,我们用到的SANWA SRM-102舵机的控制信号线为蓝色。SANWA SRM-102标准舵机的信号线如图2.10所示。

图2.10 SANWA SRM-102 标准舵机信号线

舵机的控制信号[1]一般为频率为50Hz,周期为20ms的脉宽调制(PWM)信号,其中在一定范围之内的脉冲宽度与舵盘的0-180度位置相对应,且呈线性变化。

2.4.2 测试车轮转角与舵机驱动信号的关系

舵机安装在智能车模后,受到转向机构的限制,转动的角度范围发生了变化。为了能够准确控制智能车模的转向,需要对智能车模的车轮转角与舵机驱

7

第一届全国大学生智能汽车邀请赛技术报告

动信号之间的关系测试准确。为了达到这个目的,我们采用了物理方法对其进行测试,实验场景如图2.11所示。让智能车模面向一面墙,卸下其中一只车轮,在车轮的轴上安装一个激光管,让其发出的激光照射在墙上。当车轮每转动一个角度时,墙上的激光点就会从一点平移动到另外一点。最后测量光点之间的距离,以及智能车模与墙之间的距离等,经过几何运算计算出车轮的角度。

单片机最小系统板舵机控制线激光头舵机

图2.11 车轮转角检测实验场景

通过以上实验,发现一个现象:给舵机输入相同脉宽的PWM信号的情况下,车轮从左到右和从右到左转动时存在一个误差,这就需要在软件上对这个误差进行补偿。影响到这个误差大小的原因有两个:一是车模转向机构的影响,二是车模重量的影响。

2.5动力直流电机驱动模块

2.5.1 MC33886简介

MC33886是为控制和驱动直流电机设计的两通道推挽式功率放大专用集成电路器件,共有20个引脚,20 HSOP封装。在与逻辑电平兼容的控制信号输入时,MC33886可以在-40V之间工作。当RDS只有0.12欧姆时,它可以持续地输送电流至5A。MC33886提供给电机电流及故障反馈信息,并具有过流保护、过温保护、过压保护和断点保护。当避免过载和短路的情况下,它可以提供所有的电机运动模式(顺时针、逆时针、制动和惰行)。如果需要的话,它可

8

第二章 硬件电路设计

以在不同的电池组下工作,而不像逻辑电路那样仅仅局限在5V电平。MC33886也有它自己的缺点,它的PWM工作频率不能超过10KHz。图2.12是它的外形和引脚图。

图2.12 MC33886的外形和引脚图

MC33886引脚说明,如表2.1所示:

表2.1 MC33886的引脚说明

引脚1:模拟地; 引脚2:H桥故障状态输出; 引脚9、10、11、12:电源地; 引脚13、18:使能引脚; 引脚3:PWM驱动信号输入1; 引脚14、15:输出2; 引脚4、5、16:电源正极; 引脚6、7:输出1; 引脚8、20:空脚; 引脚17:电荷泵电容外接引脚; 引脚19:PWM信号输入2;

2.5.2搭建驱动电路

MC33886数据手册上的典型电路,如图2.13所示。在实际设计中由于车模不需要倒退,只使用了MC33886的半桥。为了方便测试该芯片的特性,将其焊接在一块电路板上,如图2.14所示。

9

第一届全国大学生智能汽车邀请赛技术报告

电源MC33886使能信号输入输出47uF33nF

图2.13 典型电路 图2.14 MC33886驱动直流电机电路

通过实验,选择1KHz的PWM驱动信号比较合适。在功率放大前后和接电机前后,这个PWM驱动信号会有很大的不同。具体如图2.15所示。

87654468电压[V]210-1-2-30.0000.0010.002电压[V]320-2

0.0000.0010.002 (1)驱动前信号 (2)驱动后信号

864864时间[s]时间[s]电压[V]20-20.0000.0010.002电压[V]20-20.0000.001 时间[s] 时间[s] (4)接电机后信号(3)接电机前信号

图2.15 电机驱动PWM信号

0.002 10

第二章 硬件电路设计

2.6速度检测模块

2.6.1空载速度检测

在智能车模设计的前期,算法不要求测量行进中的速度。为了了解智能车模性能,需要对智能车模空载时的速度进行测量,将一个霍尔元件安装在智能车模的后轮上,添加辅助电路测量它。霍尔传感器A44E实验连接图如图2.16所示。

图2.16 霍尔传感器A44E实验连接图

实验场景如图2.17所示,通过多次改变动力直流电机的PWM驱动信号的占空比来改变车轮转速,在不同频率下改变占空比,智能车模的空载转速结果如图2.18所示,最大7m/s左右。

10987速度[m/s]65432100.20.40.60.81.0 占空比[%]图2.17 空载时车模测试实验场景 图2.18 空载时车轮转速测试结果

11

第一届全国大学生智能汽车邀请赛技术报告

2.6.2法兰盘测速模块电路实现

采用透射式红外收发对管可以方便识别法兰盘,其驱动电路如图2.19所示。其输出信号FLP仍需要接一个滞回比较器处理,处理后直接送至MC9S12DG128单片机T0口。通过检测脉冲周期就可以计算出智能车模当前的速度值。

VCCR1100U1OPTOISO1R2120KwFLP 图2.19 法兰盘驱动电路 图2.20 法兰盘

转动车轮一周可使法兰盘产生30个脉冲,如图2.20所示。每产生一个脉冲车轮转动的角度是:

360 / 30 = 12(度)

智能车模车轮的直径是50mm,车轮每转一圈,智能车模行走的距离是:

2πR=2*3.14*(50/2)= 157(mm)

每一个脉冲智能车模行走的距离应该是:

157 / 30 ≈ 5.2(mm)

通过上面计算,5.2mm就是记忆路况的最小精度。通过估算智能车模速度不会超过3m/s,也就是说一个脉冲的周期最小也是1.7ms,足以让单片机记忆下脉冲个数和每个脉冲下的舵机驱动信号和当时的速度,这三个量也是记忆算法中及其重要的参数。

12

第二章 硬件电路设计

2.7生成电路印刷板

在开发的前期,我们使用实验板或有机玻璃搭建电路,安装在智能车模上。而到后期硬件电路基本定型,使用Protel99SE将其生成印刷板。根据实际考虑,制作了两块电路板,一块是前方红外光电传感电路板,一块为中央控制系统电路板,未安装元件的电路板如图2.21和图2.22所示。智能车模后方有一块电路板则采用实验板焊接元件。

图2.21 前方红外光电传感电路板

图2.22 中央控制系统电路板

13

第三章 软件控制算法设计

3.1 MC9S12DG128单片机的资源分配

MC9S12DG128[5]是飞思卡尔公司的一款以HCS12 CPU为核心的16位微处理器。该款单片机具有丰富的资源:128KB的FLASH、2KB的EEPROM、8KB的RAM、2路异步通信接口(SCI)、2路同步通信接口(SPI)、8路16位的定时器(ECT)、16路16位的AD转换、8路8位的PWM、2路CAN总线、1路I2C总线、若干个不连续的数字端口。

此智能车模主要使用了该单片机的ECT输入捕捉功能、PORTH口的外部中断功能、PWM功能及模糊控制功能。ECT输入捕捉功能,使用了T0~T7八个口。其中T0口用来响应法兰盘的中断,T1~T7用来响应红外光电传感器对路况信息的中断。PORTH口具有响应外部事件中断的功能,使用了H0~H6七个口来响应红外光电传感器对路况信息的中断。

PWM功能在此智能车模中有两个作用:1、通过调节舵机的偏角来改变智能车模的方向;2、通过调节电机的转速来改变智能车模的速度。

在整个智能车模的控制软件制作过程中,我们使用CodeWarrior 3.1编写、编译软件代码,使用CodeWarrior 4.1下载控制软件[2]。控制程序最终下载在起始地址为0xC000的Flash空间。为了在第一圈中记忆路况,定义了一个较大的数组和若干个变量,最大程度的利用RAM空间。

3.2控制软件基本思想

智能车模是通过前后两排共14路红外光电传感器实现对路况信息的获取。根据前排 (7路红外光电传感器)和后排 (7路红外光电传感器)检测到引导线的红外光电传感器的组合,利用模糊控制功能调整智能车模的方向。考虑到智能车模出现检测不到引导线的情况,所以需要两个变量分别来记录前排和后排上一次检测到引导线的红外收发管的位置。这样,如果前排或后排能够检测到引导线,就更新相应的变量;若没有检测到引导线,则不更新该变量[6]。

14

第三章 软件控制算法设计

用红外光电传感器作为智能车模的巡线方法,其最大的缺点就是检测距离较近,一般是几个厘米,这样,车模只能“预知”前方很短的距离[1],当运行速度较高时车身很容易越出跑道。如果车模在以较稳定的速度下跑完全程并记录全程路况,这样,可根据路况信息在第二圈的运行中提高运行质量。

3.3红外光电传感器的布局

3.3.1 确定布局方式及与单片机的接口

大赛规则规定传感器的使用不能超过16个。在传感器不超过16个的前提下,经过多次实验论证,最后确定为“二”字型布局,即在车模的前后各安装7个红外收发管。它们与单片机的接口如图3.1所示。

T1H0T6H1T5H2T4车模T2H6 H5 T7H4H3T3 图3.1 智能车红外光电传感器的排布

ECT的输入捕捉和PORTH口的中断触发不完全相同,因此必须科学、合理的使用中断触发方式。ECT输入捕捉的8个口(PORTT口)中断方式可设置为上升沿和下降沿,除T0口响应法兰盘(响应方式为上升沿触发)外,T1~T7均用来获取路况信息(响应方式为上升沿和下降沿触发)。PORTH口的H0~H6同样来获取路况信息(响应方式为下降沿)。上升沿和下降沿都触发中断是最理想的,但是PORTT只有8个口可以使用,所以必须借助PORTH口。为了取得比较好的效果,使用ECT和PORTH口交叉排列的方式。

3.3.2 红外收发管间距的确定

比赛规则说明赛道由直线、曲线、起跑线、十字交叉线组成,智能车需要

15

第一届全国大学生智能汽车邀请赛技术报告

在规定的时间内跑完两圈。为了实现记忆路况信息这一功能,必须对起跑线和红外传感器的间距进行研究。

如图3.1所示,光电传感器阵列参数主要有管距D(管内侧距离),管直径d,影响光电传感器阵列参数的主要因素有:

1.标志线和十字交叉口的识别方案; 2.赛规则对车模尺寸的限制; 3.跑道黑色引导线的宽度; 4.需要考虑的舵机转弯精度。

根据以上影响因素,建立参数设定模型如图3.2所示。

17.5mm2100mm34D567123456725mmd12

图3.2 红外光电传感器阵列参数设定模型

起跑标志线和十字交叉口的识别方案要和光电传感器阵列参数联系起来考虑,所以首先根据起跑标志线的基本识别方法来确定光电传感器阵列参数。单片机在处理起跑标志线和十字交叉口的区别时,最方便的方法就是当光电传感器阵列经过十字交叉口时7个传感器全检测到黑线,而经过起跑标志线时应该个别传感器检测到白色赛道表面。根据这个检测方法,建立参数设定模型如图3.2所示,分两种情况讨论:

1.当第3个和第4个传感器S3和S4检测到白色跑道而其它传感器检测到黑线时,如图3.2 (a)所示,考察阵列布局参数;

2.当S3和S4都检测到黑线时,如图3.2(b)所示,要求相邻传感器S2必须检测到白色跑道。

根据以上两种情况,作相应的数学描述公式1。前提是本设计中光电传感器阵列采用等距分布。

16

第一届全国大学生智能汽车邀请赛技术报告

后面板无信号的处理要不同于前面板无信号,这种情况的处理要复杂一些。 当后面板无信号时,首先会取得最后检测到黑线的红外收发管的位置,再参照前排检测到信号的红外收发管位置。若后面板丢失信号的红外收发管在最左端,判断前面板检测到信号的红外收发管,若为最左端(图 a),将舵机调整为中间偏左的角度,若为最右端,直接令舵机偏向最右端(图 b)。其余情况查表获得。若后面板丢失信号的红外收发管在最右端,判断前面板检测到信号的红外收发管,若为最右端(图 d),将舵机调整为中间偏右的角度,若为最左端,直接令舵机偏向最左端(图 c)。其余情况舵机驱动信号参数由查表获得。

5.前后面板都无信号

12345671012-2--312345671012-2-3-12345671012-2-3-12345671012-2-3-3333车模891011121314车模车模车模891011121314891011121314891011121314(a)(b)(c)(d)12345671012-2-3-12345671012-2--333车模车模891011121314891011121314(e)(f)

图3.11 前后面板都没有信号

车模在运行过程中可能会出现如图3.11所示的几种情况。若是图a、图b、图c、图d这几种情况,取得前后面板上一次检测到信号的红外收发管位置,舵机驱动信号参数查表获得数据就可。若是图e、图f,可直接将舵机偏角调整

22

第三章 软件控制算法设计

为最右端或最左端。

3.4.2车模对曲线的处理

12345671012-2--312345671012-2--312345671012-2--312345671012-2--312345671012-2-3-33333车模891011121314车模891011121314车模891011121314车模891011121314车模891011121314(a ) (b ) (c) (d) (e) 图3.12 车模在曲线上的示意图

车模在曲线和直线上的情况应该是不同的,但是可以近似认为车模前后面板之间的赛道为直线。这样曲线和直线就可以用同一种算法进行处理。

3.4.3车模对十字线的处理

12345671012-2-3-312345671012-2-3-312345671012-2-3-3车模车模车模891011121314891011121314891011121314(a)(b)(c)

图3.13 十字交叉口示意图(一)

23

第一届全国大学生智能汽车邀请赛技术报告

12345671012-2-3-12345671012-2-3-12345671012-2-3-333车模891011121314车模891011121314车模891011121314(a)(b)(c)

图3.14 十字交叉口示意图(二)

如图3.13所示是车模通过十字交叉口的基本情况。由于十字交叉口是直线与直线成90°相交,所以在进入十字交叉口前,车模已经进行了必要的调整,车身不会有多大的倾斜。如图3.14所示,车模进入黑线时,不会7个红外收发管同时进入,不管怎样排列,都会有一个最先进入十字交叉口的红外收发管和一个最后进入十字交叉口的红外收发管。

在程序中可以通过数组平均的方法处理检测到信号的红外收发管,如果车模的左侧或右侧最后检测到黑线的红外收发管离开黑线时没有检测到黑线时,车模就会转左或者转右。如图3.15所示。

12345671012-2--312345671012-2--312345671012-2--312345671012-2--33333车模车模891011121314车模891011121314车模891011121314891011121314(a)(b)(c)(d)图3.15 十字交叉口示意图(三)

24

第三章 软件控制算法设计

车模在运行中要时刻调整车身,保持前后面板与黑线垂直。做到绝对垂直是不可能的,但是一定要近似垂直,不能有过大的夹角。这样才能顺利通过十字口,否则很有可能冲出赛道。

3.4.4车模对起始线的处理

起始线就是比赛的开始线,当车模第一次进入时开始计时,第三次进入时比赛完成。车模跑完两圈后,应该停下来。起跑线与十字口有哪些联系和区别,它有什么特殊的特征,就必须详细分析。那么怎样才能准确判断起跑线呢?

起跑线与十字口的区别就是两边的黑线并没有同中间的黑线完全结合,所以不能按十字口处理。要检测中间的空隙就要合理排布红外收发管的间距,让车模通过起始线时能够出现黑线之间夹杂着白隙。而且绝对不会出现全部红外收发管都检测到黑线。

下面列举了可能的情况:

12345671012-2-3-12345671012-2-3-12345671012-2-3-333车模891011121314车模891011121314车模891011121314(a)(b)(c)

图3.16 起始线示意图(一)

如图3.16所示车模通过起跑线的理想情况,b为最理想情况。这几种情况通过黑线时一定能够检测到起跑线。但是实际运行中出现这几中理想情况几率是很小的。

25

第一届全国大学生智能汽车邀请赛技术报告

12345671012-2-3-12345671012-2-3-12345671012-2-3-333车模891011121314车模891011121314车模891011121314(a)(a)(a)图3.17 起始线示意图(二)

如图3.17所示是比较经常出现的情况,在通过起始线的时候红外收发管会发生变化,倾斜的程度过大时,不能正确检测到起始线。这就需要车模比较稳定的经过起始线。

3.5记忆行进算法分析

车模运行的主要参数有位置点P,当前时刻速度v,当前时刻加速度a,舵机转角A。根据这些已知参数可记录车模在运行过程中的路况信息,以及在运行中随时调节车行的稳定性。

车模从起始线开始运行,如图3.18所示,路况发生变化的位置点如图中Pi所示。在Pi点要求车模舵机偏转相应角度A,速度和加速度不应超过预定值,本文把这样的Pi点称为关键点。车模以较稳定的速度行完全程,记录各点P的舵机偏转值,如(P, A),根据舵机的偏转值A和位置点P可分析全程路况信息。

根据各点的速度v和加速度a的实测值调节车行的稳定性。综合关键点信息和曲线类型及曲率半径,随时调节车速,提高车模运行质量。

26

第三章 软件控制算法设计

起始线P1P1P2P3P4P5P6P7 图3.18 车模运行路况分析

本设计采用Freescale公司的16位单片机MC9S12DG128[3],在车行过程中记录各位置点的舵机偏转信息如图3.19所示。

舵机偏角值A16501350O1050P1P1P2位置P 图3.19 跑道位置点和舵机偏角值坐标图

位置点P1以后,舵机偏角明显加大,此时车身左转弯,P1ˊ点偏角值回落到1350,此时车身直行,随后又有大的左偏转。结合车模的运行算法可判断,

P1到P2为车行左转弯,P1和P2为关键点。进一步,根据P1到P2的舵机偏转A值的波形可分析出跑道的曲率半径。

P3到P6位置点的舵机偏转信息如图3.20所示。由图3.18可知,P3到P7为蛇形线,车行到P4点舵机偏转方向发生反向变化,P5和P6也类似,由此判断,P3 、

P4 、P5 和P6都是关键点。

27

第一届全国大学生智能汽车邀请赛技术报告

舵机偏角值A16501350O1050P3P4P5P6位置P 图3.20 跑道位置点和舵机偏角值坐标图

3.6智能车的模糊控制

为了更合理的调整车身和更充分的利用MC9S13DG128单片机的性能,使用了模糊控制功能。该款单片机共有4个模糊控制指令,可以实现模糊控制中的模糊化、模糊规则推理、反模糊化。

该方法主要是根据车模在赛道上的位置信息模糊出舵机驱动控制信号的值。经过模糊化、模糊规则推理、反模糊化后会得到一个模糊控制表,如表3.1所示。将该表添加进控制软件,当有信号反馈给控制器时通过查询模糊控制表表就可以取得舵机驱动信号参数。

表3.1 模糊控制表

Fi -3 Bi -3 -2 -1 0 1 2 3 1430 1435 1494 1551 1605 1630 1650 1330 1353 1414 1471 1522 1550 1570 1313 1330 1353 1412 1461 1511 1560 1254 1270 1297 1656 1407 1430 1452 1202 1220 1247 1301 1353 1480 1400 1141 1160 1186 1242 1297 1341 1373 1050 1070 1094 1155 1210 1268 1260 -2 -1 0 1 2 3

28

第三章 软件控制算法设计

3.7 控制软件的流程图

开始Hz_init()PortB_init()PortH_int_init()Ect_int_init()PWM_init() Labdata_init(); PORTB_BIT1 = 1 PORTB_BIT2 = 0

图3.21 主函数流程图

H口中断T口第1位中断T口第7位中断T口第0位中断Deal_center()Deal_center()Deal_center()第一圈?YN清中断标志清中断标志清中断标志存储当前路况第二圈?YN中断返回中断返回中断返回根据关键点提前调整方向和速度清中断标志中断返回

图3.22 中断函数流程图

29

第四章 车模机械安装与系统调试

4.1机械安装

智能车模的安装主要是将大赛组委会提供的舵机、MC9S12DG128单片机最小系统板、电池、电路板等合理地固定安装在智能车模上。

4.1.1舵机的安装

舵机的安装步骤:1、拆下SANWA SRM-102 标准舵机的舵盘,漏出输出轴齿轮;2、按照车模安装手册,把舵机固定在车模上;3、按照车模安装手册,安装其他机械结构。舵机安装完成后,如图4.1所示。

图4.1 安装完成的舵机

4.1.2模块电路板的安装

车模上共安装4块电路板,包括前方巡线模块电路板,中央控制模块电路板,后方巡线测速模块电路板。它们的安装根据车模的结构添加一些辅助支架即可安装固定在车模上。

前方巡线模块电路板的安装使用2mm厚的铝板切割成T字形连接车模,安装高度为4cm;MC9S12DG128单片机最小系统板插在中央控制模块电路板上,中央控制模块电路板安装在车模电机的正上方;后方巡线模块电路板的安装需考虑法兰盘的安装位置,安装后车模局部实物如图4.2所示。

36

图4.2 安装完成的模块电路板

4.1.3法兰盘制作及安装

法兰盘制作步骤:1、使用厚度为1.3mm有机玻璃制作一个外径4mm,内径2mm的圆环;2、使用制图软件画一个同样大小有等间距黑白相间的图形;3、将图形打印在透明塑料纸上;4、将图形剪切下来;5、将其粘贴在有机玻璃上;6、将制作好的法兰盘安装在智能车模后轮轴上。安装在智能车模上的法兰盘如图4.3所示。

图4.3 法兰盘的安装位置

4.1.4安装完成后的车模

在智能车模的开发过程中,根据开发阶段的不同需求共制作了三版的车模,如图4.4所示,其中第一版车模如图a所示,第二版车模如图b所示,

31

第一届全国大学生智能汽车邀请赛技术报告

第三版车模如图c所示。

图a 第一版车模 图b 第二版车模

图c 第三版车模

图4.4 开发过程中制作的三版车模

4.2测试赛道的制作

为了方便的开发和调试制作的车模,我们严格按照大赛规则中的赛道参数要求制作了两个赛道,如图4.4所示,其中图a是前期测试用的赛道,图b是依据2005年韩国赛道参数制作的赛道。

图a 前期测试用的赛道 图b 制作的2005年韩国赛道

32

图4.4 使用的测试赛道

赛道制作材料使用白色KT板和黑色粘贴纸等;使用工具:剪子、小刀、直尺、铅笔、细导线等。赛道制作场景如图4.5所示。

图4.5 赛道制作场景

4.3 系统调试

在智能车模的最后测试调试阶段,硬件方面调试手段有: 1.调节前后面板的高度和距离;

2.调节套在红外接收管上的热缩管的长度和方向; 3.调节红外光电传感器电路中的电位器阻值大小; 4.调节滞回比较器的参考电压。 软件方面的调试手段有:

1.改变舵机驱动信号脉冲宽度参数值; 2.调节智能车模的行进速度参数。

33

第一届全国大学生智能汽车邀请赛技术报告

第五章 结论

5.1智能车模

智能车模采用飞思卡尔16位单片机MC9S12DG128作为控制核心,使用红

外收发二极管制作的光电传感器来自动识别黑色引导线,利用先进的PWM技术对电动车模的行进方向和速度进行合理控制,采用法兰盘对实现对智能车的速度实时检测,软件方面采用合理的基本巡线算法和路况记忆算法。智能车模在自制的韩国决赛赛道上实际运行测试表明,它的硬件系统和软件算法都较稳定,能够以较快速度顺利完成赛道。

5.2技术指标

改造后智能车模的技术指标如下表5.1所示:

表5.1 改造后智能车模的技术指标

技 术 指 标 总体重量 车长 车宽 车高 记忆赛道最小精度 电机驱动信号频率 舵机驱动信号频率 电路所有电容总容量(不包括组委34

参 数 1.1kg 340mm 195mm 90mm 5.2mm 1kHz 50Hz 1484.5μF

会提供的核心S12的电路板) 电路总功耗

表5.1 改造后智能车模的技术指标(接上页)

空载时(8W) 负载时(24.5W) 技 术 指 标 传感器种类以及个数 除了车模原有的驱动电机、舵机之外伺服电机个数

参 数 反射式红外收发二极管14对; 对射式红外收发对管1个 无 5.3存在的问题及解决方法

此智能车模的功耗比较高,主要是由于14路红外光电传感器采用直流驱动红外发射二极管的原因。智能车模行进过程中过曲率半径0.5m的弯道时最快速度为1.1m/s,这就限制了弯道速度,需要合理地控制智能车模的速度,这也是此次大赛的难点,我们采用的是记忆算法来控制速度。

35

参考文献

1. 山名宏治. 玩具机器人制作. 北京: 科学出版社, 2005, 58~59

2. 邵贝贝. 单片机嵌入式应用的在线开发方法. 北京: 清华大学出版社, 2004, 297~322. 3. 宗光华. 机器人的创意设计与实践. 北京: 北京航空航天大学出版社,2004, 46~84. 4. 陈永甫. 红外辐射、红外器件与典型应用. 北京: 电子工业出版社, 2004, 31~58

5. 9S12Core User Guide.pdf, [Online], available: http://www.freescale.com.cn ,August 17,

2000, 503~530.

6. 谭浩强. C语言程序设计. 北京: 清华大学出版社,1999, 50~152

37

附录A 硬件电路原理图

U278L066VSTRGNDRGND10PGND1VinVout3C60.1uC72uFC810uFSW_POWER7.2VINJ3DC 7.2V INC11000uFPGND12U178L05VCCGNDVinVout3C30.1uC4470uFC50.1uC20.1u2

图A-1 电源管理电路

U3MC3388612345678910AGNDFSIN1V+V+OUT1OUT1 DNCPGNDPGNDDNCIN2D1CcpV+OUT2OUT2D2PGNDPGND20191817161514131211IN12IN117.2VINMO117.2VINMO12DC1PGNDPGND 图A-2 MC33886驱动电路

JP3P1_CONP1P3P5P7P9P11P13FS1FS5P19P21P23DC1PB3PB5PB7BS6BS3P37P39P41P43P45P47BS2FS4P53P55P57P59P61P6313579111315171921232527293133353739414345474951535557596163246810121416182022242628303234363840424446485052545658606264P2P4P6P8P10P12P14FS3BS4P20P22PB0PB2PB4PB6PH7BS5P36P38P40P42P44P46P48FS2FS6P54P56P58P60P62P64JP4P2_CONP128P126P124P122BS1FS7P116P114PWM0PWM2PWM4PWM6P104P102P100P98P96P94P92P90P88P86P84P82P80P78P76P74P72P70P68P6613579111315171921232527293133353739414345474951535557596163246810121416182022242628303234363840424446485052545658606264P127P125P123P121BS7FLPOUTP115P113PWM1IN12IN11P103P101P99P97P95P93P91P89P87P85P83P81P79P77P75P73P71P69P67P65CON5CON_FSFS1FS2FS3FS4FS5FS6FS7Vref12345678CON4POWER_TOFVCCGND12CON4POWER_TOFVCCGND12VCCGNDTS21TS22TS23TS24TS25TS26TS27GNDHD1CON_BS1357911131517192468101214161820FLPGNDRS21RS22RS23RS24RS25RS26RS27GNDCON6SIGNAL_TOMC2MO121GND2CON2TOSTR1SIGNAL_STR16VSTR2GND3CON3SIGNAL_TOMC1MO111GND2CON1POWER_MCUVCC1GND2

图A-3 中央控制模块电路板接口

65

U21ALM358RS2121VR21VCC50kVR2250kVR2350kVR2450kVR2550kVR2650kVR2750kR21830kR21930kR22030kR22130kR22230kR22330kR22430kR2251k3R2262kU21BLM358RS2267R2271k5R2282kU22ALM358RS2321R2291k3R2302kU22BLM358RS2467R2311kU4CLM358RS2521R2331k3R2342kU23BLM358RS2667R11KR35KRS272VR110k31VrefR43K2C82uC90.1uLM358FLP67R21KR2391k5R2402kFLPOUTU24BLM3581U4AR2371k3R2382kBS7R2351k5R2362kU24ALM358BS644444BS1RS21R211TS21360R212TS22360TS23R213360R214TS24360R215TS25360R216TS26360TS27R217360VCCRS22BS2RS23RS24RS25BS3RS26RS27BS4VCC888885R2322kU23ALM358BS5U21CLM358U22CLM358U23CLM358U24CLM358VCC

图A-4 中央控制模块电路板其他电路

38

U11ALM358RS121R1251kVCCU11BLM358RS26R111360R112360R113360R114360R115360R116360R1173607R1271k5R1282kU12ALM358RS321R1291kVCCU12BLM358VR1150kVR1250kVR1350kVR1450kVR1550kVR1650kVR1750kR1311kRS4675R1322kU13ALM358RS52R11830kR11930kR12030kR12130kR12230kR12330kR12430k1R1331kRS7RS6RS5RS4RS3RS2RS13R1342kU13BLM358RS667R1351k5R1362kU14ALM358RS721R1371k3R1382kOUT7OUT6OUT5VCCOUT43R1302kOUT3OUT2CON12OUT1OUT2OUT3OUT4OUT5OUT6OUT7Vref87654321SIGNALCON11VCCGND21POWER3R1262kOUT11111111TD11TD12TD13TD14TD15TD16TD17888U11CLM358U12CLM358U13CLM3588U14CLM358444RD11RD12RD13RD14RD15RD16RD174Vref

图A-5 前方巡线模块电路板电路图

RD21TD211TD221TD231TD241TD251TD261TD271TS27RS27TS26RS26RD27TS25RS25RD26TS24RS24RD25TS23RS23RD24VCCTS22RS22RD23TS21RS21RD22VCCGNDTS21TS22TS23TS24TS25TS26TS27GNDHD2CON_CEN1357911131517192468101214161820FLPGNDRS21RS22RS23RS24RS25RS26RS27GNDR111100U111OPTOISO1R112120KFLP

图A-6 后方巡线模块电路板电路图

39

附录B 程序源代码

****************************************************************************** labdata.h

****************************************************************************** typedef unsigned char byte; typedef unsigned int word; typedef unsigned long dword;

typedef union { byte Byte; struct {

byte b0 :1; byte b1 :1; byte b2 :1; byte b3 :1; byte b4 :1; byte b5 :1; byte b6 :1; byte b7 :1; } Bits; } c1;

extern c1 _c1;

#define c_t _c1.Byte

#define c_t_b0 _c1.Bits.b0 #define c_t_b1 _c1.Bits.b1 #define c_t_b2 _c1.Bits.b2 #define c_t_b3 _c1.Bits.b3 #define c_t_b4 _c1.Bits.b4 #define c_t_b5 _c1.Bits.b5 #define c_t_b6 _c1.Bits.b6 #define c_t_b7 _c1.Bits.b7

typedef union { byte Byte;

40

struct {

byte b0 :1; byte b1 :1; byte b2 :1; byte b3 :1; byte b4 :1; byte b5 :1; byte b6 :1; byte b7 :1; } Bits; } c2;

extern c2 _c2;

#define c_h _c2.Byte

#define c_h_b0 _c2.Bits.b0 #define c_h_b1 _c2.Bits.b1 #define c_h_b2 _c2.Bits.b2 #define c_h_b3 _c2.Bits.b3 #define c_h_b4 _c2.Bits.b4 #define c_h_b5 _c2.Bits.b5 #define c_h_b6 _c2.Bits.b6 #define c_h_b7 _c2.Bits.b7

extern word j,k; extern word jk;

extern word jj[7],kk[7]; extern word m,n;

extern word startLine,shiziLine,quanShu; extern word max,mid,min; extern word q_i,h_i; extern word j_Tmp,k_Tmp; extern word b[7][7];

extern word pulse_Counter_Timer; extern word pulse_Counter_Now; extern dword comp[2];

extern word road_x,road[3500],road_index[200]; extern word imp_P, imp_P_Bef; extern word v_dec;

41

extern word v_k;

extern dword v1_time,v2_time;

****************************************************************************** main.c

****************************************************************************** #include

#include #include \

#pragma LINK_INFO DERIVATIVE \

extern void PortB_init(void); extern void PWM_init(void); extern void PortH_int_init(void); extern void Ect_int_init(void); extern void Deal_center(void); extern void Hz_init(void);

extern void Labdata_init(void);

extern unsigned int Control_speed(void); void Find_gjd(unsigned int f_p); void Deal_imp(void);

void Find_gjd(unsigned int f_p){ unsigned int x_qiang; for(x_qiang=f_p;x_qiang<3500;x_qiang++){ if(road[x_qiang]>=10000){ imp_P=imp_P_Bef; imp_P_Bef=30000+x_qiang; break; } if(road[x_qiang]==0){ imp_P=imp_P_Bef; imp_P_Bef=63499; break; } } }

42

void Deal_imp(void){ unsigned int cur_P; unsigned int P_P; unsigned int p_now;

p_now=pulse_Counter_Now/3; P_P=imp_P-30000;

if(p_now<=P_P){ if(road[P_P]>20000){ cur_P=road[P_P]-20000; if(((P_P-p_now)<=7)&&((imp_P_Bef-imp_P)>=25)){ PWMDTY67=680; v_k=0; PORTB_BIT6=~PORTB_BIT6; } }else{ if(road[P_P]>10000){ cur_P=road[P_P]-10000; if((cur_P>1480)||(cur_P<1240)){ if(P_P-p_now<=25){ if(P_P-p_now==v_dec){ if(cur_P>1480){ if(PWMDTY45+60<=1650){ PWMDTY45=PWMDTY45+60; PORTB_BIT7=~PORTB_BIT7; }else{ PWMDTY45=1650; PORTB_BIT7=~PORTB_BIT7; } } if(cur_P<1240){ if(PWMDTY45-80>=1050){ PWMDTY45=PWMDTY45-80; PORTB_BIT7=~PORTB_BIT7; }else{

43

PWMDTY45=1050; PORTB_BIT7=~PORTB_BIT7; } } } PWMDTY67=310; v_k=1; }else{ PWMDTY67=680; v_k=0; PORTB_BIT5=~PORTB_BIT5; } }else{ PWMDTY67=680; v_k=0; } } } }else{ Find_gjd(imp_P_Bef-30000+1); } }

interrupt void PortH_int(void) { Deal_center();

if(PIFH_PIFH0==1) { PIFH_PIFH0=1; }

if(PIFH_PIFH1==1) { PIFH_PIFH1=1; }

if(PIFH_PIFH2==1) { PIFH_PIFH2=1; }

if(PIFH_PIFH3==1) { PIFH_PIFH3=1; }

44

if(PIFH_PIFH4==1) { PIFH_PIFH4=1; }

if(PIFH_PIFH5==1) { PIFH_PIFH5=1; }

if(PIFH_PIFH6==1) { PIFH_PIFH6=1; }

if(PIFH_PIFH7==1) { PIFH_PIFH7=1; } }

interrupt void Timer_overflow(void){ pulse_Counter_Timer++; TFLG2_TOF=1; }

interrupt void Input0_int(void){ pulse_Counter_Now++; if(quanShu==1){

if(pulse_Counter_Now%3==0){ road[road_x]=PWMDTY45; road_x++; }

v_dec=Control_speed(); }

if(quanShu==2){

v_dec=Control_speed();

if(pulse_Counter_Now%3==0){ if(imp_P>=30000){ Deal_imp(); }else{

if(imp_P==0){ Find_gjd(1); Deal_imp(); } } road_x++; }

45

}

TFLG1_C0F=1; }

interrupt void Input1_int(void){ Deal_center(); TFLG1_C1F=1; }

interrupt void Input2_int(void){ Deal_center(); TFLG1_C2F=1; }

interrupt void Input3_int(void){ Deal_center(); TFLG1_C3F=1; }

interrupt void Input4_int(void){ Deal_center(); TFLG1_C4F=1; }

interrupt void Input5_int(void){ Deal_center(); TFLG1_C5F=1; }

interrupt void Input6_int(void){ Deal_center(); TFLG1_C6F=1; }

interrupt void Input7_int(void){ Deal_center(); TFLG1_C7F=1; } void main(void) { DisableInterrupts; Hz_init(); PortB_init(); PortH_int_init();

46

本文来源:https://www.bwwdw.com/article/mbp8.html

Top