温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
乐山
师范学院
I 第十一届全国大学生“恩智浦”杯第十一届全国大学生“恩智浦”杯 智能汽车竞赛智能汽车竞赛 技术报告技术报告 学学 校:乐山师范学院校:乐山师范学院 队伍名称:乐师逐飞科技电磁队伍名称:乐师逐飞科技电磁 1 1 队队 参赛队员:曾智参赛队员:曾智 何博何博 吴磊吴磊 带队老师:李富带队老师:李富钢钢 张自张自友友 II III【摘要】本文介绍了智能车控制系统的软硬件结构和开发流程。该比赛采用大赛组委会提供的 E 型车模,以 Freescale 半导体公司生产的 32 位单片机 MK60DN512VLL10(以下简称 K60)核心控制器,在电磁比赛中利用了原来 E 型车模双后轮驱动特点,实现两轮自平衡行走,相对一传统的四轮车车模竞赛模式,车模直立行走在硬件,控制软件开发以及现场调试等方面提出了更高的要求。整个系统涉及车模机械结构调整、硬件电路设计及信号处理、控制算法和策略优化等多个方面。关键词:恩智浦、智能车、电磁直立、电磁信号【Abstract】semiconductor company MK60DN512VLL10(hereinafter referred to as K60)core controller,using the original E in electromagnetic characteristics of type double rear wheel drive car model,achieve the equilibrium of two rounds of the walk,relative to the traditional carriage models competition model,car model to walk upright in hardware,software development and on-site debugging and so on higher requirements are put forward.The whole system involving mechanical structure adjustment models,hardware circuit design and signal processing,control algorithm and the strategy optimization.Keywords:NXP,smart car,electromagnetic upright 1 目录目录 目录.1 第一章 引言.3 1.1 智能车大赛简介.3 1.2 概述.3 1.3 章节安排.3 第二章 总体方案设计.5 2.1 系统方案介绍.5 2.2 智能车系统总体结构.5 2.3 中央处理单元.6 第三章 机械结构调整优化.7 3.1 智能车整体布局.7 3.2 磁感应传感器.7 3.2.1 电磁传感器的选择.8 3.2.2 电磁传感器的布局.8 3.3 起跑线检测传感器.9 3.5 智能车中心位置的调整.11 3.6 其它机械结构的调整.11 第四章 智能车硬件系统.13 4.1 单片机最小系统.13 4.3 电机驱动模块.15 4.4 运放模块.15 4.5 无线模块.16 4.6 其它电路部分设计.17 第五章 软件系统设计.18 5.1 软件系统总体设计.18 5.2 软件各功能模块设计.18 5.2.1 时钟模块.18 5.2.2 PIT 模块.19 5.2.3 传感器.19 5.2.4 FTM 模块.19 5.3 磁场信息获取及处理.19 5.4 传感器采集处理算法.20 5.5.1 基于增量式 PID 的速度控制.20 5.5.2 基于 PID 算法的转角控制.22 5.5.3 弯道策略分析.23 第 6 章 开发工具与调试过程说明.25 第十一届全国大学生智能汽车邀请赛技术报告 2 6.1 开发工具.25 6.2 软件调试过程.26 6.2.1 控制算法的参数整定.26 6.2.2 最终调试效果.26 6.3 整车机械方面的调整.27 第七章 智能车参数设计.28 总 结.IV 致谢.V 参考文献.VI 附录 A:小车程序代码.VII 第一章 引言 3 第一章第一章 引言引言 1.1 智能车大赛简介 全国大学生“恩智浦”杯智能汽车竞赛是由教育部高等学校自动化专业教学指导分委会主办的全国大学生智能汽车竞赛,该竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程的实践比赛,是教育部倡导的大学生科技竞赛之一,参加竞赛能增强大学生的实践,创新能力和团队协作能力。竞赛要求在规定的汽车模型平台上,使用恩智浦半导体公司的微控制器作为核心模块,通过道路传感、电机驱动模块以及编写相应控制程序,制作一个能够自主识别带路的模型汽车。1.2 概述 在本文中,我们小组通过对小车设计制作整体思路、电路、算法、调试、车辆参数的介绍,详尽地阐述了我们的思想和创意,具体表现在电路的创新设计以及算法的独特想法上。为了使我们的小车达到最佳的状态,我们无论在小车的硬件方面或者是软件方面我们都付出了非常多的心血。硬件上我们主要考虑的是各个传感器的具体分布,使得小车的更加的轻便。软件方面我们主要是在算法方上,使得小车在转弯处和坡道处达到速度和精度达到最大。最终的目标是小车按照比赛规则在最短的时间内完成单圈赛道。1.3 章节安排 本技术报告的类容安排如下:第一章为介绍大赛的背景和概述 第二章主要介绍总体的设计方案 第三章主要介绍机械调整优化 第四章主要介绍智能车硬件系统 第十一届全国大学生智能汽车邀请赛技术报告 4 第五章主要介绍软件系统设计 第六章主要介绍开发工具与调试过程说明 第七章主要介绍智能车技术参数 第八章主要介绍小车制作过程的心得体会 5 第二章 总体方案设计 2.1 系统方案介绍 本智能车系统采用“恩智浦”32 位单片机MK60DN512VLL10 作为核心控 制单元,由安装在智能车前部的双排电磁传感器获得赛道空间磁场信息并传到 核心控制单元单片机中,由智能车“大脑”接收并处理从传感器传回的信息,PWM模块产生相应的PWM 波,通过输出不同占空比控制智能车的两个直流电机,以实现智能车保证直立的情况下速度更快。为了使智能车能够更加快速稳定的行驶,K60 单片机必须把对赛道路径的 判断、车身的角度、加速度以及对直流电机的控制紧密的联系在一起。不论是某一路采集信号的误判还是单片机对车身平衡控制的失当,都会引起智能车在行驶过程中产生抖动甚至偏离赛道。所以,对智能车总系统设计的合理性和科学性就显得尤为重要。2.2 智能车系统总体结构 智能车系统总体结构如图2.1所示:图2.1 系统结构框图 第十一届全国大学生智能汽车邀请赛技术报告 6 2.3 中央处理单元 本智能车系统采用恩智浦公司的32 位单片机MK60DN512VLL10 作为核心控制芯片,对采集的信号进行分析和处理,再根据信号对E车模的直流电机进行控制,实现直立、转向、速度的有效控制。MK60DN512VLL10 单片机CPU 属于Cortex-M4 内核单片机,片内最高总线频率能够达到200MHz。其片内具有128KB RAM、512 KB 程序闪存;FTM 模块 可设置成3 路不同频率的PWM 模块,也可作为脉冲输入检测模块,逻辑时钟选择频率宽;具有4 路差分输入和24 路单端输入的外部模拟输入A/D 转换器,双端可以设置为16 位、13 位、11 位、9 位精度,单端可以设置为16 位、12 位、10 位、和8 位精度模式;另外片内还具有周期中断定时器(PIT)和低功耗定时器(LPTMR)。完全可以胜任智能车的大量的数据处理和控制工作。电源模块:为各个电路模块提供稳定电源,保证各模块正常工作。5V 稳压电路采用的是LM117芯片,3.3V 稳压芯片也是采用LM117芯片。电磁检测模块:完成对赛道中心导线产生的磁场进行检测,判断道路信息,通过连接线把信息传送给中央控制单元分析、处理,使智能车沿着跑道轨迹稳定运行。速度检测模块:对模型车的速度进行检测,实现闭环控制,以便调整弯道和直道的速度,从而提高平均速度,使小车更快跑完全程。小车采用的是E6A2-CS3C线编码器,测速更准确。电机模块:对模型车上的电机进行驱动,控制赛车的速度。传感器模块:陀螺仪加速传感器主要作用是让小车直立行走,控制车轮的速度来平衡车身。无线通信模块:将小车的状态传送到电脑上位机,以便观察小车的运行情况。人机交换模块:主要用于智能车系统的调试、赛车状态监控等方面。第四章 智能车硬件系统 7 第三章 机械结构调整优化 3.1 智能车整体布局 根据行车的需要,我们对机械进行了调整。智能车的整体参数,包括车体重心、舵机、电机放置的位置、高度、传感器排布方式等,都对整个智能车系统的稳定运行起到至关重要的作用,因此小车的布局以精简、可靠、稳定为前提、尽量保持小车的左右平衡,以及寻找一个合适的重心,保证小车能够稳定的抓住地面,又能够对前轮舵机,后轮电机,有较快的反应,小车的整体布局如图3.1所示:图3.1智能小车整体布局 3.2 磁感应传感器 在电磁组赛道上铺有一根导线,通有 20mA 左右 2KHZ 的交变电流,根据麦克斯韦电磁理论,交变电流可以在空间产生交变的电磁场,导线周围的电磁场按照一定的规律分布,其强度和距离存在一定的关系,使用电感线圈可以对周围的交变磁场感应出感应电动势。因此我们利用谐振效应对不同的信号体现不同的阻抗大小的特点进行选频,识别有赛道导线发出的特征频率的电磁信号。第十一届全国大学生智能汽车邀请赛技术报告 8 3.2.1 电磁传感器的选择 经过前述理论分析可知,采用线圈传感器检测磁场强度的方法有很强的适应能力,并且容易实现。本设计采用的线圈传感器是工型电感,并将电感和电容串联通过谐振原理选频,输出信号较大,且能模拟出车身在赛道上距离中心导线位置的线性改变。在选取 LC 串联谐振电路时,分别使用了制成品电感和自制线圈的方法,由于自制线圈不易确定其电感值,无法找到匹配电容,最终选取 10mH 电感。根据公式 1 理论分析可以计算出 C=6.33nF,市场上最接近的电容值是 6.8nF,所以最终选择 6.8nF 电容作为 LC 串联谐振电路。3.2.2 电磁传感器的布局 为了能保证车模的速度,较长的前瞻是必须的,但较长前瞻对支撑传感器的材质需求较高。我们选择碳素杆作为支撑杆。碳素杆质量轻、硬度大、韧性强,可以保证其稳定性和防撞性。我们采用了两根碳素杆,加上一排传感器来分别判断前方路况和车身位置,如图 3.2 所示:图 3.2 电磁传感器运放电路布局 LC21f(公式 1)第四章 智能车硬件系统 9 3.3 起跑线检测传感器 起跑线附近的永磁铁的分布是在跑道中心线两边对称分布的,相应位置如图 3.3所示:图 3.3 永磁铁的分布 我们采用干簧管来作为检测元器件,当干簧管靠近到永磁铁时,会产生一个通断信号。因为干簧管防抖动的性能较差,且碰撞易损坏,如果选择常闭式干簧管,在智能车运动过程中发生碰撞或抖动时,干簧管会由闭合变成断开,产生误检测起跑线信号。为了避免误触发,且让单片机的信号是低电平触发,我们选用的是常开干簧管。前期直接用的玻璃干簧管,发现玻璃非常脆弱,所以改用塑料干簧管,如图 3.4、3.5 所示:图 3.4 玻璃干簧管 第十一届全国大学生智能汽车邀请赛技术报告 10 图 3.5 塑料干簧管 因为永磁铁的分布是在跑道中心两边对称分布的,因此我们干簧管的位置也根据永磁铁的分布一样,采用对称形式,但是为了节省材料同时为了减轻车身的重量只采用三个干黄管,使其均匀分布在小车的地部 如图 3.6 所示:图 3.6 干簧管电路分布图 3.4 编码器的安装 测速装置在智能车系统中占有非常重要的地位,其要求是分辨能力强、精度高和检测时间短。从精度要求来看,光电编码器最为合适,且集成性好,抗干扰能力强。最终采用光电编码器作为系统的测速模块。但光电编码器体积较大,会使车重增加。根据速度控制精度的要求,采用了 512 线的小型编码器。码器安装图如图 3.8 所示:第四章 智能车硬件系统 11 xzya*3000*图 3.8 编码器安装图 测速时,通过齿轮与后轮驱动齿轮咬合,后轮一转动,ECT 模块就在脉冲累加模式下对编码器产生的脉冲进行累加,而后在一定时长的定时中断中将脉冲数读出,通过换算转变为后轮转速。假设编码器采用 x 齿的齿轮,后轮驱动为 y 齿,后轮周长为 z 毫米。在 10ms 的中断内,编码器产生 a 个脉冲,那么后轮转速 v,见公式 2:3.5 智能车中心位置的调整 为了达到较远前瞻,必须把电感架到较远的位置,会引起车重心特别靠前,后轮正压力不足导致甩尾。为了使重心后移,我们尝试了很多传感器支架的搭 建方式,使得保证结构稳定的前提下尽量减轻重量。同时,我们把舵机和电池 均往后移,达到了预期的效果。3.6 其它机械结构的调整 另外,在模型车的机械结构方面还有很多可以改进的地方,比如说车轮、速变化的加减速过程,使得模型车的轮胎与轮辋之间很容易发生相对位移,可能导致在加速时会损失部分驱动力。在实验中调试表明,赛车在高速下每跑完一圈,轮胎与轮辋之间通常会产生几个厘米的相对位移,严重影响了赛车的加速过程。为了解决这个问题,我们在实际调试过程中对车轮进行了粘胎处理,可以有效地防止由于轮胎与轮辋错位而引起的驱动力损失的情况。(公式 2)第十一届全国大学生智能汽车邀请赛技术报告 12 此外,我们还对车身高度,以及底盘的形状和质量等,都进行了相应的改进和调整,均取得了不错效果。第四章 智能车硬件系统 13 第四章 智能车硬件系统 4.1 单片机最小系统 单片机最小系统为本智能车系统的核心。为了稳定和可重复使用,我们购买了单片机最小系统板。这个最小系统板引出了几乎所有功能引脚,板上自带晶振电路、复位电路、单片机电源电路。电路图如图4.1 所示。图4.1 单片机最小系统电路原理图 4.2 电源管理模块 电源是整个智能车系统动力的来源。稳定的电源供给是系统正常可靠工作的有力保证。在设计的时候,需要考虑电源转换效率,降低噪声,防止干扰和电路简单等方面的问题。智能车比赛使用的是组委会提供的 7.2V,2000mAh镍镉可充电蓄电池,该电池在饱和电能的情况下,电压在 7.8-8.2V 之间。由于各个模块所需的工作电压、电流各不相同,因此要对电源电压进行调节。本系统主要包括以下几种不同的工作电压:第十一届全国大学生智能汽车邀请赛技术报告 14 1)智能车使用镍镉充电电池,充满时电压在 7.88.2V。可直接用于电机供 电。2)一些数字器件使用直流+5V,5V 电源选用线型稳压芯片 LM117 以及 LM117 芯片。为了隔离电机的干扰,在稳压输入端加入磁珠。为按键、隔离器、编码器、传感器等模块供电。3)使用 3.3V 为单片机模块、无线模块供电,采用线性稳压芯片 LM117 加若干 LED 显示各类电源工作状况。部分电路如图 4.2、4.3 所示:图4.2 电源模块电路原理图 图4.3电源模块电路原理图 第四章 智能车硬件系统 15 4.3 电机驱动模块 驱动芯片我们采用了英飞凌公司的大电流电机驱动半桥芯片BTS7971。其输 出最大电流68A,内部带有一个P 沟道的高边MOSFET、一个N 沟道的低边MOSFET 和一个驱动IC。BTS7971 通态电阻典型值为16m。P 沟道高边开关省去了电荷 泵的需求,因而减小了EMI(Electro Magnetic Interference)。集成的驱动IC 具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和过温、过压、欠压、过流及短路保护的功能。如图4.4所示:图4.4电机驱动模块电源模块电路原理图 4.4 运放模块 稳定的电磁传感器是小车稳定运行的前提。经过我们的综合选型,最终选择了LM386,一种音频集成运放,具有低功耗、电压增益可调,电源电压范围宽、外接元件少,总谐波失真小等优点,但其电压增益最大只能达到200 倍,且在20KHz 频率时,增益已呈下降趋势。曲线图如图4.5所示。第十一届全国大学生智能汽车邀请赛技术报告 16 图4.5运放模块电源模块电路原理图 4.5 无线模块 无线采集模块在智能车的控制系统中尤为重要,它可以实时的反馈小车的运行过程中的参数,有利于我们调节参数从而更好的控制我们的小车,让它跑得更快。如图4.6所示:图4.6 无线模块电路原理图 第四章 智能车硬件系统 17 4.6 其它电路部分设计 测速模块:本小车使用广州科创电子的 mini 型编码器进行小车的测速,并由 TPS76850 为其提供 5V 工作电压。处理器通过读取编码器脉冲数来实现小车速度的检测,通过读取编码器旋转方向脚的高低电平来检测电机的正反转。如图 4.7 所示:图 4.7 测速模块模块电路原理图 人机交互模块:为了方便调试,控制参数的修改,设置了 4 个独立的按键、一个 OLED 液晶显示屏,如图 4.8 所示。图 4.8 人机交互部分电路原理图 第十一届全国大学生智能汽车邀请赛技术报告 18 第五章 软件系统设计 5.1 软件系统总体设计 在整个系统设计中,主要用到了K60 单片机的5 个基本功能模块:MCG 模块、FTM 模块、PIT 模块、AD 转换模块。通过配置寄存器线对所用到的模块进行初始化,并通过相应的数据寄存器或状态寄存器的读写,实现期望的功能。如表5-1所示:表5.1 系统所用到的IO 资源 AD模块 B0、B1、B2 电磁传感 FTM模块 D4、D5、D6、D7 电机控制 A12、A13、B18、B19 正交解码测速 GPIO C0、C1、C2、C3 按键 GPIO C4、C5、C6、C7 液晶显示 5.2 软件各功能模块设计 5.2.1 时钟模块 时钟基本脉冲是CPU 工作的基础。MK60DN512VLL10 微控制器的系统时 钟信号,由时钟振荡电路或专用时序脉冲信号提供。MCU 内部的所有时钟信号 都来源于EXTAL 引脚,也为MCU 与其他外接芯片之间的通信提供了可靠的同 步时钟信号。K60 单片机分为内核时钟、总线时钟和Flash 时钟,本系统通过工 程宏定义设置为内核时钟100MHz,总线时钟100MHz,Flash 时钟30MHz。#define MCG_CLK_MHZ PLL100/设置时钟频率#define MAX_BUS_CLK 100/bus 不要超过200M,这里设为100M#define MAX_FLASH_CLK 30/flash 不能超过32M,这里设为不超过30M 第五章 软件系统设计 19 5.2.2 PIT 模块 本系统采用PIT 定时5ms,在定时中断里对小车的行驶状态进行控制。程序 如下:pit_init_ms(PIT0,5);在定时器中断里对定时器中断标志位进行清除,程序如下:PIT_Flag_Clear(PIT0);5.2.3 传感器 本系统采用了1个陀螺仪模块和一个加速度传感器作为倾角传感器,两个电 磁检测传感器做为赛道信息识别传感器。陀螺仪模块分别使用B10、B16;加 速度传感器也使用B10、B16;电检测传感器使用B0、B1、B3。5.2.4 FTM 模块 K60 单片机用FTM 模块可以生成控制电机所需要的PWM 和两路电机测速,本系统使能C1C4 端口产生4 路频率相同的PWM 波,控制两个电机的正反转;使能A10A13 为正交解码脉冲输入捕捉,每5ms 读取一次编码器的值,达到精 确测速的目地。5.3 磁场信息获取及处理 由于传感器加上二极管倍压检波之后,出来的直流信号纹波有20mV-50mV 左 右,采用8 位精度AD 进行采样,每一份1/256=4mV,如果以前空间定位精度为 1mm,则现在精度被放大到5mm,所以,我们把放大后的信号不经过检波直接送 入单片机进行采样。为了获取更稳定的数据信息,我们对数组中的数据进行了滤 波处理。程序流程图如图5.1 所示。第十一届全国大学生智能汽车邀请赛技术报告 20 图5.1 程序流程图 5.4 传感器采集处理算法 编写采集函数 get_data(),其功能为控制 AD 采集某个通道(对应某个电感)的电压值,然后读出该值返回给函数。由于系统中存在噪声或干扰,进行算法滤波抑制和防止干扰是一项重要措施。在这里选择“中位值滤波法”。连续采样 N 次(N 取奇数)把 N 次采样值按大小排列取中间值为本次有效值。优点是能有效克服因偶然因素引起的波动干扰对温度、液位的变化缓慢的被测参数有良好的滤波效果。5.5 速度与转角控制算法 5.5.1 基于增量式 PID 的速度控制 PID 控制是工程实际中应用最为广泛的调节器控制方法。问世至今 70 多年来,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。单位反馈的 PID 控制原理框图如图 5.2 所示:第五章 软件系统设计 21 图 5.2 单位反馈的 PID 控制原理框图 单位反馈代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量。其中,Kp、Ki、Kd 分别称为比例系数、积分系数、微分系数,U 接着被送到了执行机构,这样就获得了新的输出信号,这个新的输出信号被再次送到感应器以发现新的误差信号,这个过程就这样周而复始地进行。数字控制系统中,PID 控制器是通过计算机 PID 控制算法程序实现的。计算机直接数字控制系统大多数是采样-数据控制系统。进入计算机的连续-时间信号,必须经过采样和整量化后,变成数字量,方能进入计算机的存贮器和寄存器,而在数字计算机中的计算和处理,不论是积分还是微分,只能用数值计算去逼近。用矩形数值积分代替上式中的积分项,对导数项用后向差分逼近,得到数字 PID 控制器的基本算式(位置算式):其中 T 是采样时间,Kp、Ki、Kd 为三个待调参数。对位置式加以变换,可以得到 PID 算法的另一种实现形式(增量式):TTeeTeTeknnnkdknpn11i1u(公式 3)(公式 4)dtdeedteukkkdip第十一届全国大学生智能汽车邀请赛技术报告 22 在实际代码实现时,处理成 car_speed+=s_kp*(s_ek0-s_ek1)+s_ki*s_ek0+s_kd*(s_ek0-2*s_ek1+s_ek2)(公式 6)式中 s_ek0=i_speed-new_speed;s_ek1=s_ek0;s_ek2=s_ek1;这里 s_ek0 表示理想计算速度与编码器测得的实际速度的差值,既当前偏差;s_ek1 表示上次的偏差,s_ek2 表示前两次的偏差。增量式 PID 具有以下优点:(1)由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的方法关掉。(2)手动/自动切换时冲击小,便于实现无扰动切换。此外,当计算机发生 故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。(3)算式中不需要累加。控制增量u(k)的确定仅与最近 k 次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。但增量式 PID 也有其不足之处:积分截断效应大,有静态误差;溢出的影响大。使用时,常选择带死区、积分分离等改进 PID 控制算法。5.5.2 基于 PID 算法的转角控制 舵机的控制是根据传感器检测到的电磁信号来实现的,关于电感的个数和排布,不同的控制方法有不同的选择,电感个数减少会带来处理上的方便,但也会使采集到的信息不够丰富,电感个数增加会使得信息处理稍显复杂,但是到的赛道信息较丰富。我们权衡后选择一排 6 个电感来进行处理。舵机的控制基本分为方向判断和打角控制。(1)舵机转向判断:我们利用中间两个电感的差值、竖着的两个电感的差值和 eeeTeTeekuuunnndnnnpnnnT21i1121(公式 5)第五章 软件系统设计 23 外面两个电感的差值可以较方便的进行转向判断。(2)舵机控制我们是根据对电感的差值和差值变化量进行模糊,得出模糊量后,对模糊量进行 PD 控制,通过修改模糊规则查询表和 PD 项的参数能够使得小车在赛道上实现较好的打角范围。5.5.3 弯道策略分析 在车辆进弯时,需要对三个参数进行设定:切弯路径、转向角度、入弯速度。其中,切弯路径主要决定了车辆是选择内道过弯还是外道过弯。切内道,路经最短,但是如果地面附着系数过小会导致车辆出现侧滑的不稳定行驶状态,原因是切内道时,曲率半径过小,同时速度又很快,所以模型车需要的向心力会很大,而赛道本身是平面结构,向心力将全部由来自地面的摩擦力提供,因此赛道表面的附着系数将对赛车的运行状态有很大影响。切外道,路径会略长,但是有更多的调整机会,同时曲率半径的增加会使得模型车可以拥有更高的过速度。转向角度决定了车辆过弯的稳定性。合适的转向角度会减少车辆在转弯时的调整,不仅路径可以保证最优,运动状态的稳定也会带来效率的提高,减少时间。在考虑转向角度设置时需要注意以下几个问题:对于检测赛道偏移量的传感器而言,在增量较小时的转向灵敏度;检测到较大弯道时的转向灵敏度;对于类似 S 弯的变向连续弯道的处理。对于入弯速度的分析,应该综合考虑路径和转向角度的影响。简单而言,我们会采取入弯减速,出弯加速的方案,这样理论上可以减少过弯时耗费的时间。然而,在过去几届比赛中,通过观察各参赛车对弯道的处理后,我们发现并不是所有人都选择了相同的方案。正如前面说到的那样,不联系路径和转向角度,只是单纯地分析过弯速度,会造成思路的局限甚至错误。例如,在不能及时判断入弯和出弯的标志点就采取“入弯减速、出弯加速”的方案,会出现弯道内行驶状态不稳定、路径差,同时出弯加速时机过晚,一样会浪费时间。所以现在本系统参考实际驾驶时的一些经验,对过弯速度的处理方式确定为:入弯时急减速,以得到足够的调整时间,获得正确的转向角度;在弯道内适当提速,并保持角度不变,为出弯时的加速节约时间;出弯时,先准确判断标志,然后加速,虽然会耗费一些时间,但是面对连续变向弯道可以减少判断出错的第十一届全国大学生智能汽车邀请赛技术报告 24 概率,保证行驶状态的稳定性,而且弯道内的有限加速对后面的提速也有很大的帮助。综合考虑用可以接收的额外时间换回行驶稳定性还是值得的。第六章 开发工具与调试过程说明 25 第6章 开发工具与调试过程说明 6.1 开发工具 程序的开发是在 IAR 下进行的,包括源程序的编写、编译和链接,并最终 生成可执行文件。IAR 的编译界面如图 6.1 所示:图 6.1 IAR 的编译界面 IAR Embedded Workbench(简称 EW)的 C/C+交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。EW 对不同的微处理器提供一样直观用户界面。EW 今天已经支持 35 种以上的 8 位/16 位 32 位 ARM 的微处理器结构。第十一届全国大学生智能汽车邀请赛技术报告 26 6.2 软件调试过程 6.2.16.2.1 控制算法的参数整定控制算法的参数整定 运用 PID 控制的关键是调整三个比例系数,即参数整定。PID 整定的方法有两类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。由于智能车整个系统是机电高耦合的分布参数系统,并且要考虑赛道具体环境,要建立精确的智能车运动控制数学模型有一定难度,而且对车身机械结构经常进行不断修正,模型参数变化较频繁,可操作性不强;二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单,采用了这种方法。1)方向控制算法的参数整定 方向控制采用 PD 控制。Kp 和 Kd 参数由工程整定得出,经过多次试验,得到一组稳定快速的参数为 10 和 20。设置合适的调节范围 LOCA_MAX。在车模中上,边界值由舵机转角的最大 值决定。经试验测量为制舵机的 PWM 波占空比寄存器变化为 200 时,达到舵控机最大转角。故 LOCA_MAX=1000。调节合适的调节死区,死区太小会造成调节不灵敏,太大则调节过于频繁。经试验测量设为 2 时较为适合。2)速度控制算法的参数整定 速度控制采用增量式 PID 控制,经多次试验得出,Kp,Ki,Kd 分别取 6,12,6 时,车模行驶直道和弯道加减速反映迅速,整体速度良好。6.2.26.2.2 最终调试最终调试效果效果 经过一个月的调试,小车可以稳定的在如图 6.2 所示的赛道跑完,所示赛道总长度为60m,不包含坡道。经过多次测试,最终小车完成一圈的用时稳定在 22.235s 左右。第六章 开发工具与调试过程说明 27 图 6.2 智能小车调试赛道 6.3 整车机械方面的调整 车模的机械也是很重要的一方面,针对电磁组车模,必须有几个特别需要 关注的地方:1)传感器支架必须结实耐撞,震动尽量小。震动会导致传感器得到感应电 动势“抖动”,导致车模会在赛道上“颤抖”。2)重心尽可能低,并且分布均匀。把车模地盘降低,车上装配的器件也尽 可能的放低,转弯效果会比较好。分布均匀可以防止车模在赛道甩动。28 第七章第七章 智能车参数设计智能车参数设计 车模的主要参数见表7.1所示:表7.1 车模的参数表 模型车技术参数统计 参数 所选车型 E型车模 车模尺寸(长、宽、高)482133(cm)电路电容总量 1800C 传感器种类及数量 电感:3个 编码器:2个 干簧管:3个 加速器:1个 陀螺仪:1个 车模重量(带有电池)878g 赛道信息检测频率 200次/s 赛道信息检测精度 4mm 电路总功耗 20w 第七章 智能车参数设计 29 IV 总 结 自参加“恩智浦”杯第十一届智能汽车竞赛以来,我们小组成员们查找资料,设计机构,组装车模,编写程序,分工明确,共同分析问题,克服困难,最后终于完成了最初目标,定下了现在这个方案。在此份技术报告中,我们主要介绍了准备比赛时的基本思路,包括机械,电路,以及最重要的控制算法的创新思想。在传感器布局,我们分析了前几届中出现的电感排布方法,综合考虑到程序的稳定性、简便性,我们最后敲定了现在的电感排布,并通过反复实践决定了传感器的数量和位置。在电路方面,我们以模块形式分类,在电源管理,电机驱动,接口,控制,信号采集,无线通讯,测距,传感器这八个模块分别设计,在查找资料的基础上各准备了几套方案;然后我们分别实验,最后以报告中所提到的形式决定了我们最终的电路图。在算法方面,我们使用 C 语言编程,利用 IAR 开发工具调试程序,经过小组成员不断讨论、改进,终于设计出一套比较通用的,稳定的程序。在这套算法中,我们结合路况调整车速,做到直线加速,弯道减速,保证在最短时间跑完全程。V 致谢 在这几个月的备战中,在场地、经费方面都的到了学校和学院的大力支持,在此特别感谢一直支持和关注智能车比赛的学校和学院领导以及各位老师。同时也感谢比赛组委会能组织这样一项很有意义的比赛。现在,面对即将到来的大赛,在历时近五个月的充分准备之后,我们有信心在比赛中取得优异成绩。也许我们的知识还不够丰富,考虑问题也不够全面,但是这份技术报告作为我们五个月辛勤汗水来的结晶,凝聚着我们小组每个人的心血和智慧,随着它的诞生,这份经验将永伴我们一生,成为我们最珍贵的回忆。VI 参考文献 1 邵贝贝.嵌入式实时操作系统LCOS-(第 2 版)M.北京清华大学出版社 2004 2 邵贝贝.单片机嵌入式应用的在线开发方法M北京清华大学出版社 2004 3 王晓明.电动机的单片机控制M北京.北京航空航天大学出版社 2002 4 臧杰,阎岩.汽车构造M.北京.机械工业出版社 2005 5 安鹏,马伟 S12 单片机模块应用及程序调试J.电子产品世界.2006第 21 期 162-163 6 童诗白,华成英模拟电子技术基础M北京.高等教育出版社 2000 7 沈长生常用电子元器件使用一读通M北京.人民邮电出版社 2004 8 宗光华机器人的创意设计与实践M北京.北京航空航天大学出版社 2004 9 张伟等 Protel DXP 高级应用M北京.人民邮电出版社 2002 10张文春.汽车理论M北京机械工业出版社 2005 11卓晴,黄开胜,邵贝贝等.学做智能车.北京,北京航空航天大学出版社,2001 12潘新民,王燕芳.微型计算机控制技术.北京,高等教育出版社,2001 13何立民.单片机应用系统设计.北京,北京航天航空大学出版社,1997 14谭浩强.C程序设计(第二版).北京,清华大学出版社,2001 VII 附录A:小车程序代码 /-common function-void Delay(long t)while(t-);int myabs(int x)return(x0?x:-x);int limit(int x,int y)if(xy)return(y);else if(x-y)return(-y);return(x);int limitab(int x,int a,int b)if(xb)return(b);else return(x);void rf_sendstring(char*ch,uint8 index)int i=0;for(i=0;iindex;i+)VIII n1P_TX_Buffi+1 =*ch;ch+;n1P_TX_Buff0=index;n1P_Send_Packet(n1P_TX_Buff);void rf_senddata(int data)if(data=12)Model=0;OLED_CLS();flag_key_4=0;if(gpio_get(PTC15)=0)flag_key_3=1;if(flag_key_3&gpio_get(PTC15)switch(Model)case 0:ACC_CENTER+=5;break;/case 1:set_speed +=5;break;case 2:STIME +=1;break;case 3:Start_acc +=10;break;case 4:Ramp_f +=1;break;case 5:check_time +=1;break;case 6:Turn_KD +=1;break;case 7:Turn_KP +=2;break;case 8:F1 +=10;break;case 9:F2 +=5;break;case 10:speed_p +=1;break;case 11:speed_i +=1;break;default:break;XI flag_key_3=0;i_speed=set_speed;if(gpio_get(PTC14)=0)flag_key_2=1;if(flag_key_2&gpio_get(PTC14)switch(Model)case 0:ACC_CENTER-=5;break;case 1:set_speed -=5;break;case 2:STIME -=1;break;case 3:Start_acc -=10;break;case 4:Ramp_f -=1;break;case 5:check_time -=1;break;case 6:Turn_KD -=1;break;case 7:Turn_KP -=2;break;case 8:F1 -=10;break;case 9:F2 -=5;break;case 10:speed_p -=1;break;case 11:speed_i -=1;break;default:break;flag_key_2=0;i_speed=set_speed;if(gpio_get(PTC13)=0)flag_key_1=1;if(flag_key_1&gpio_get(PTC13)flag_start=1;/flag_key_1=0;if(gpio_get(PTC16)=0)XII