温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
大连大学
小蚂蚁队
大连
大学
蚂蚁
第十届“飞思卡尔”杯全国大学生 智能汽车竞赛 技术报告 学校:大连大学 队伍名称:小蚂蚁 参赛队员:曹 立 蔡连鹏 郭月君 柳文强 指导教师:胡玲艳 杜秀丽 关于技术报告和研究论文使用授权的说明关于技术报告和研究论文使用授权的说明 本人完全了解第十届“飞思卡尔”杯全国大学生智能汽车竞赛有关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日 期:第十届全国大学生智能汽车邀请赛技术报告 摘要摘要 本文以第十届全国大学生智能车竞赛为背景,介绍了基于电磁导航的智能赛车控制系统软硬件结构和开发流程。该系统以 Freescale 半导体公司 32 位单片机 MK60DV510ZVLQ100 为核心控制器,使用 IAR6.3 程序编译器,采用 LC 选频电路作为赛道路径检测装置检测赛道导线激发的电磁波来引导小车行驶,通过增量式编码器检测模型车的实时速度,配合控制器运行 PID 控制等控制算法调节驱动电机的转速和转向舵机的角度,实现了对模型车运动速度和运动方向的闭环控制。同时我们使用集成运放对 LC 选频信号进行了放大,通过单片机内置的 AD 采样模块获得当前传感器在赛道上的位置信息。通过配合 Visual Scope,Matlab 等上位机软件最终确定了现有的系统结构和各项控制参数。实验结果表明,该系统设计方案可使智能车稳定可靠运行。关键字关键字:MK60DV510ZVLQ100,PID 控制,MATLAB,智能车 目录 第一章 引 言.6 第二章 系统方案设计.7 2.1 系统总体方案的设计.7 2.2 系统总体方案设计图.7 电磁传感器模块.8 控制器模块.8 电源管理模块.8 编码器测速模块.8 舵机驱动模块.9 起跑线检测模块.9 人机交互模块.9 测距模块.9 第三章 机械结构调整与优化.9 3.1 智能车前轮定位的调整.9 主销后倾角.10 3.1.2 主销内倾角.10 3.1.3 前轮外倾角.11 3.1.4 前轮前束.11 3.2 舵机的安装.12 3.3 编码器安装.13 3.4 车体重心调整.13 3.5 传感器的安装.14 3.6 测距模块的安装.15 第四章 硬件电路设计.16 4.1 单片机最小系统.16 4.2 电源管理模块.17 4.3 电磁传感器模块模块.18 4.3.1 电磁传感器的原理.18 4.3.2 信号的检波放大.19 4.4 编码器接口.20 4.5 舵机驱动模块.21 4.6 电机驱动模块.21 4.7 人机交互模块.22 第五章 控制算法设计说明.23 5.1 主要程序流程.23 5.2 赛道信息采集及处理.24 5.2.1 传感器数据滤波及可靠性处理.24 5.2.2 位置偏差的获取.26 第十届全国大学生智能汽车邀请赛技术报告 5.3 控制算法实现.28 5.3.1 PID 算法原理简介.28 5.3.2 基于位置式 PID 的方向控制.32 5.3.3 基于增量式 PID 和棒棒控制的速度控制.32 5.3.4 双车距离控制和坡道处理.34 第六章 系统开发与调试.35 6.1 开发环境.35 6.2 上位机显示.36 6.3 车模主要技术参数.37 第七章 存在的问题及总结.38 7.1 制作成果.38 7.2 问题与思考.38 7.3 不足与改进.38 参考文献.39 附录 A 部分程序代码.40 第一章第一章 引引 言言 随着科学技术的不断发展进步,智能控制的应用越来越广泛,几乎渗透到所有领域。智能车技术依托于智能控制,前景广阔且发展迅速。目前,掌握着汽车工业关键技术的发达国家已经开发了许多智能车的实验平台和商品化的车辆辅助驾驶系统。有研究认为智能汽车作为一种全新的汽车概念和汽车产品,在不久的将来会成为汽车生产和汽车市场的主流产品。全国大学生智能汽车竞赛原则上由全国有自动化专业的高等学校(包括港、澳地区的高校)参赛。竞赛首先在各个分赛区进行报名、预赛,各分赛区的优胜队将参加全国总决赛本次比赛分为光电、摄像头和电磁三个赛题组,在车模中使用透镜成像进行道路检测方法属于摄像头赛题组,使用电磁信号巡线属于电磁赛题组,除此之外则属于光电赛题组。其设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械、能源等多个学科的知识,对学生的知识融合和实践动手能力的培养,具有良好的推动作用。竞赛要求在规定的汽车模型平台上,采用飞思卡尔半导体公司的8位、16位、32位微控制器作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动、转向舵机控制以及控制算法软件开发等位微控制器作为核心控制模块,制作完成一个能够自主识别道路的模型汽车。参赛队员的目标是模型汽车需要按照规则以最短时间完成单圈赛道。自从第五届出现磁导组开始到今年第十届比赛,电磁小车已经在智能车的赛道上奔驰了6年。至此智能车比赛十周年之际,电磁组小车首次采用双车追逐的形式展开比赛,大大增加了电磁组比赛的观赏性,但同时也给小车的控制方案上带来了不小的挑战,经过不断的努力,我们最终解决了各种问题,使两辆小车稳定的运行在同一条赛道上并且保证了双车间距不会太远。第十届全国大学生智能汽车邀请赛技术报告 第二章第二章 系统系统方案设计方案设计 本章主要介绍了系统整体方案的设计与组成,在后面的几个章节中将详细介绍系统的机械结构设计,硬件电路设计,以及车辆控制算法等。2.12.1 系统总体方案的设计系统总体方案的设计 根据竞赛规则相关规定,智能车电磁组采用大赛组委会统一提供的B型车模或B车模加其他型号的车模组合的形式。由于今年电磁组首次采用双车追逐的方式行进,为了控制算法的简便,我们尽可能的保持双车机械结构上的一致性,我们选择了两辆车均使用B车模,这样做的原因是可以减少双车控制的工作量,将更多的时间用在车辆稳定性控制和双车配合的控制上。在控制器的选择上我们采用飞思卡尔公司生产的MK60N510ZVLQ100作为主控芯片,在IAR集成开发环境中进行控制算法调试。赛车通过LC选频电路检测通电导线周围产生的稳定电磁信号,通过集成运放电路将小信号放大,使得单片机的内部AD能够直接识别该信号并将模拟信号转换为数字信号,单片机通过对数字型号的处理计算出小车的当前位置以及路径信息,发出控制信号控制舵机使之按照正确的路径行驶。在速度控制上,通过编码器采集到脉冲信号并输入到单片机进行处理,得到车辆当前的速度信息,控制器综合当前的打角,实时速度,计算出一个适合当前路径的行驶速度,并通过PID算法计算PWM波的占空比提供控制信号控制电机驱动输出正确的等效电压来调节电机转速使得小车达到控制器的给定速度。2.22.2 系统总体方案设计图系统总体方案设计图 图 2.2 智能车总体结构图 根据以上系统方案设计,智能车共包括:电磁传感器模块,K60 核心板,电源管理模块,编码器测速模块,舵机驱动模块,电机驱动模块,起跑线检测模块,按键、拨码开关及液晶显示模块,超声波及红外收发模块,各模块的组成及作用如下:电磁传感器模块 电磁传感器模块共由三部分组成,LC 选频电路、信号放大电路以及滤波电路。由于赛道上漆包线中通过的是 20KHz 的变化电压,经过计算我们选择10mH 工字电感和 6.8nF 的校正电容作为 LC 选频电路的器件。LC 选频网络的输出电压幅值大约在 20 到 100mV 左右,因此需要对信号进行放大,综合比较了 LMV358,INA128,OPA2350,等器件之后我们最终选择了 OPA2350 作为放大电路的运放芯片。OPA2350 具有 38MHz 的通频带宽,轨到轨的输入输出特性,低电压偏移特性,完全能够满足智能车信号处理中的小信号放大应用。滤波电路我们选择了二倍压整流电路加 RC 滤波的方式,实验表明该滤波电路具有较好的滤波效果。控制器模块 我们选择组委会规定可以使用的飞思卡尔公司生产的MK60DN512ZVLQ100作为主控芯片,它具有丰富的片上资源,较高的主频,芯片稳定性高。完全能够满足智能车调试过程中的各种需要。电源管理模块 智能车主控板上根据不同模块需求,需将电池电压转换为3.3V,5.0V以及12V电压为各个模块供电,我们选择了TPS7333,AMS1117-3.3,AMS1117-3.3,MC34063等器件为模块提供电压。编码器测速模块 为了实现速度闭环控制,我们采用了采用200线编码器采集实时速度。并使用了单片机内部的正交解码模块进行脉冲计数,实现实时速度解算与控制。第十届全国大学生智能汽车邀请赛技术报告 舵机驱动模块 我们采用了组委会规定的SD-5数字舵机作为方向控制执行器。SD-5具有工作频率高,反映速度快的特性。起跑线检测模块 本届智能车比赛电磁组起跑线检测和往届一样,通过检测赛道上的强磁实现车辆的停止,因此我们采用常开型干簧管作为起跑线检测的装置。当磁场超过一定强度,干簧管的常开触头闭合,车产生一个电平信号输送到单片机,控制器针对此信号发出正确的动作信号。人机交互模块 人机交互模块包括:液晶显示,按键和拨码开关。在智能车参数调整过程中,通过液晶上显示数据,按键和拨码开关修改参数,省去了反复下载程序的过程,为调试节省了大量的时间。测距模块 测距模块包括超声波发射和接收,红外发射和接收。前车发射红外信号和超声波信号,由于红外信号传播的速度非常快,传输时间基本可以忽略不计,后车通过测量红外信号和超声波信号到达的时间差就能测算出前后车的距离。第三章第三章 机械结构机械结构调整与优化调整与优化 3.13.1 智能车前轮定位的调整智能车前轮定位的调整 模型车在过弯时,转向舵机的负载会因为车轮转向角度增大而增大。受离心力的作用,内侧前轮可能在急转弯时微微翘起,甚至将轮胎剥离轮毂,轻者转弯不流畅重者导致转向失败。为了尽可能降低转向舵机负载,我们对前轮定位进行了调整。前轮定位的作用是保障汽车直线行驶的稳定性,转向轻便和减少轮胎的磨损。前轮定位参数主要包括:主销后倾角、主销内倾角、前轮外倾角和前轮前束。主销后倾角 主销后倾角是指在纵向平面内主销轴线与地面垂直线之间的夹角。它在车辆转弯时会产生与车轮偏转方向相反的回正力矩,使车轮自动恢复到原来的中间位置上。所以,主销后倾角越大,车速越高,前轮自动回正的能力就越强,但是过大的回正力矩会使车辆转向沉重。通常主销后倾角值设定在 1到 3。如图 3-1-1 图 3-1-1 主销后倾示意图 模型车通过增减黄色垫片的数量来改变主销后倾角的,由于竞赛所用的转向舵机力矩不大,过大的主销后倾角会使转向变得沉重,转弯反应迟滞,所以设置为 0,以便增加其转向的灵活性。3.1.2 主销内倾角 主销内倾角是主销轴线与地面垂直线在汽车横向切面内的夹角,有使车轮自动回正的作用,小车转向时路面作用在后轮上的阻力矩也会减小,从而可减小转弯时舵机施加在转向力臂上的力,使转向操纵轻便,通常其调整范围为 0-10 度。如图 3-1-2 第十届全国大学生智能汽车邀请赛技术报告 图 3-1-2 主销内倾角示意图 3.1.3 前轮外倾角 前轮外倾角是指通过车轮中心的汽车横向平面与车轮平面的交线与地面垂线之间的夹角,对汽车的转向性能有直接影响,它的作用是提高前轮的转向安全性和转向操纵的轻便性。在汽车的横向平面内,轮胎呈“八”字型时称为“负外倾”,而呈现“V”字形张开时称为正外倾。如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。所以事先将车轮校偏一个正外倾角度,一般这个角度约在 1左右,以减少承载轴承负荷,增加零件使用寿命,提高汽车的安全性能。模型车提供了专门的外倾角调整配件,近似调节其外倾角。由于竞赛中模型主要用于竞速,所以要求尽量减轻重量,其底盘和前桥上承受的载荷不大,所以外倾角调整为 0即可,并且要与前轮前束匹配。3.1.4 前轮前束 前轮前束角是指前轮中心线与小车纵向中心线的夹角。它的作用是保证汽车直线行驶的性能,减少轮胎的磨损,前轮在滚动时,其惯性力会自然将轮胎向内偏斜,前束适当会抵消这种偏斜减少轮胎磨损,考虑到车轮与地面的摩擦力正比于抓地力,对小车加减速性能有重要影响我们调整了前束角,并在一定程度上减轻了车轮的磨损。如图 3-1-4 图 3-1-4 前轮前束示意图 3.2 3.2 舵机的舵机的安装安装 舵机的安装直接关系到转向问题。如果舵机调整不到位,将很大程度上限制转向角度和转向响应速度。舵机安装有两种方式,一种是卧式安装,另外一种为立式安装。卧式安装为车模默认安装方式,但这样安装会使左右两边轮子连杆不等长,根据杠杆原理可知舵机对长连杆轮子用的力要大些,因此造成了舵机对左右两边转向响应时间不一样。另外由于卧式安装会使连杆与水平面呈现一定角度,从力学知识可以知道在轮子转向获得的力只是舵机施加在连杆上力的一个水平方向上的分力。综合考虑,我们选择了舵机立式安装方式。将舵机安放于车模前部中间位置,以保证车模转向的机械对称性。采用标准化的舵机尺寸和连接方式,适当加长舵机力臂,并保证力矩作用在水平方向上而减小其他方向的损失,使舵机输出力臂增加,即让舵机转动一小角度前轮转动大角度,但这种做法一定程度上是以减小力矩为代价的,所以力臂不能加的太长,为此经过反复的调试,选取了恰当长度的连接杆,同时保证了较快的反应速度和足够大的输出力矩。如图 3-2-1 第十届全国大学生智能汽车邀请赛技术报告 图 3-2-1 舵机安装效果图 3.33.3 编码器安装编码器安装 我们采用欧姆龙 E6A2-CW3C 500 线编码器用于测量速度,安装于后轮齿轮上,通过齿轮箱与后轮连接。该编码器可输出 AB 两相脉冲,通过正交解码可以测出正反转。如图 3-3-1 图 3-3-1 编码器安装效果图 3.43.4 车体重心调整车体重心调整 智能车模用于竞速,理论上重心越低车模越稳定,但是考虑到车模必须通过坡道且不被卡住,所以我们将底盘高度调整为 6mm 左右。另外,车模高速运行中,机械的稳定性主要体现在四个轮子上,因此,前后重心应该调至四个轮子的几何中心,但是由于电磁车模为了获得足够多的前瞻,传感器支架比较长,因此我们将车模中质量较大的电池安装在车体后半部分,电机驱动安装在后轮正上方,同时使用质量较轻的方形碳素杆作为架设传感 器的支架,使得重心趋于四个轮子的几何中心。重心调节如图 3-4-1。图 3-4-1 重心调整示意图 3.53.5 传感器的安装传感器的安装 为了减轻车体前瞻的重量,我们除了采用质量较轻的碳素杆作为支架以外,只把 LC 选频网络中的电感放到车体前段,用漆包线将信号引回主控板,电容和放大电路及滤波电路全部布置在主控板上。这样做能最大限度的减轻传感器支架重量,在兼顾了车体重心的同时是提高传感器前瞻。前瞻的长度对于电磁车而言也是至关重要的,越长的前瞻就能发现越远处的赛道信息,车辆可以及早做出反应,有助于增加过弯的流畅性。但同时过长的前瞻可能导致在两个赛道靠的过近时造成车辆窜道,从而出现违规。传感器架设的高度及传感器排布也对车辆的行驶有着至关重要的作用,传感器架设较高,有利于检测出更多的赛道信息,但同时也增加了窜道的风险。传感器架设较低有利于检测出较稳定的赛道信息,但往往容易导致过弯不流畅等问题。传感器的排布方案决定了路径识别算法的方案,水平排布的电感线性度较好,斜电感对弯道较为敏感,竖直电感对直角较为敏感。综合以上方案考虑我们最终选择传感器前瞻在 47 厘米左右,高度在 20 厘米左右,电感排布方案和实际效果图如图 3-5-1 和图 3-5-2 所示。图 3-5-1 电感排布方案示意图 第十届全国大学生智能汽车邀请赛技术报告 图 3-5-2 传感器安装实际效果图 3.63.6 测距模块的安装测距模块的安装 本届竞赛增加了电磁双车追逐的方式比赛,这也是本届比赛电磁组最大的两点,为了实现双车的举例控制,我们采用了红外传感器和超声波模块配合使用来获得双车距离信息。在前车上安装了超声波发射模块和红外发射模块,在后车上安装了超声波接收模块和红外接收模块,由于红外线的传播速度接近于光速,而超声波在空气中传播的速度为 340 米每秒,远小于红外线的传播速度,因此,可以通过检测红外信号和超声波信号到达的时间差来获取两车距离。图 3-6-1 分别为前车和后车的测距模块安装示意图。图 3-6-1 前车(做)和后车(右)距离传感器安装效果图 车模整体效果图 1 车模整体效果图 2 第四章第四章 硬件电路设计硬件电路设计 4.14.1 单片机最小系统单片机最小系统 我们选择飞思卡尔公司生产的 MK60DN512ZVLQ100 作为智能车的主控芯片,该芯片是基于 ARM Cortex-M4 系列 32 位单片机,具有丰富的片上资源,完全能够满足智能车的控制需求。第十届全国大学生智能汽车邀请赛技术报告 图 4-1 单片机最小系统板接口电路 4.24.2 电源电源管理管理模块模块 智能小车使用组委会提供的 7.2V 2000mAh Ni-cd 电池作为小车的唯一的能量来源提供了 7.2V 的电压输出。根据不同的模块供电需求,主控板上还需要 3.3V 电源和 5.0V 电源。其中单片机和传感器对供电电压的要求较高,因此我们采用了低压差线性稳压器件 TPS7333作为单片机和传感器的供电电源。其他接口电路采用 AMS1117 为个模块提供所需的 3.3V 和5.0V 电源。此外,MOS 驱动芯片 HIP4082 还需要 12V 供电电源,此部分将在后面小节提到。各供电模块原理图如图 4-2 所示。图 4-2 电源管理模块 4.34.3 电磁电磁传感器模块传感器模块 电磁传感器是小车最重要的模块之一,传感器性能的好坏直接影响到信号的采集精度以及小车的控制性能。因此在智能车设计过程中,我们着重对传感器模块进行了研究。根据组委会的规定,电磁组赛场信号是基于频率为 20KHz,电流为 100mA 的交变电压产生的磁场信号。智能车通过检测该磁场信号获取当前赛道信息。在传感器模块的研究过程中,我们测试了大量的电感,发现只有 10mH 的电感能够得到较为规整的正弦波。频率和赛道电源频率一致,且随著电感距通电导线距离的增加幅值逐渐衰减。4.3.1 电磁传感器的原理 根据电磁学我们知道,导线中通过不均匀变化的电流将会在导线周围产生不均匀变化的磁场。在导线中通过按正选规律变化的电流将会在导线周围产生按正选规律变化的磁场。由电磁感应定律我们知道,导线切割磁感线将会在导线两端产生感应电动势。正是利用这第十届全国大学生智能汽车邀请赛技术报告 样的原理我们将电感放在通电导线的周围,导线产生的变化的磁感线将会切割电感的线圈,从而在电感两端产生感应电动势,通过检测该感应电动势的变化规律我们可以知道电感于导线的位置关系。但是空间中充满了各种电磁信号,它们切割电感线圈产生微弱的电动势将会对有用信息产生干扰。如图 4-3-1 所示,利用 LC 选频电路(带通电路)可以有效的解决这一问题。图 4-3-1 LC 并联谐振电路 图中感应电动势,R0 为等效电阻,L 是感应电感的电感值,C 为谐振电容。电路的谐振频率为:已知感应电动势的频率为=20KHz,感应电感的值 L=10 mH,可以计算出谐振电容的容值为 C=6.33109F,通常在市场上可以买的到的标称电容与上述值最接近的值为6.8Nf,为此我们试验了及中容值在 6.8nF 的电容,最后发现 6.8nF 矫正电容对信号具有较好的选频滤波作用。4.3.2 信号的检波放大 通过并联谐振电路产生的感应电动势幅值在 20mV-100mV 左右,不能直接送到单片机的 AD 口进行模数转换,因此需要将信号进行放大。官方给出的放大电路采用三极管进行放大,但是用三极管进行放大有一个不可避免的缺点就是温漂大,因此我们放弃了使用三极管放大的方案。经过多次试验,我们选定 OPA2350 作为放大电路的运放芯片,OPA2350,具有低电压漂移,高通频带,轨到轨的输入输出特性,完全能够满足放大电路的设计需要。由于 OPA2350 是单电源运放,因此我们在同相端加了 VCC/2 的基准电压,保证了能够进行全波放大,同时我们在个输入输出端增加了隔直电容抑制共模信号。从放大器输出的信号为峰峰值在 3V 左右的正弦信号,如果直接进行电压采样,将会增加软件滤波的工作量,因此我们设计了二倍压整流电路和 RC 滤波电路,使得将要送入采样的信号为较为稳定的直流信号,幅值与电感距通电导线的距离成比例。为了获得更大的电压摆幅,倍压整流电路中的二极管我们选用了肖特基二极管 SS14,这类二极管的开启电压约为 0.2V 小于一般的硅二极管的开启电压(约 0.7V)。最终方案确定如图 4-3-2 所示。图 4-3-2 信号检测方法模块 4.4.4 4 编码器接口编码器接口 我们使用欧姆龙公司生产的 E6A2-CW3C,500 线增量式旋转编码器,该编码器可输出 AB两路正交信号,正转时 A 相超前 B 相 90,反转时 B 相超前 A 相 90,通过正交解码可以测得正反转及实时速度。编码器接口如图 4-4 所示。如图 图 4-4 编码器接口电路 第十届全国大学生智能汽车邀请赛技术报告 4.54.5 舵机舵机驱动驱动模块模块 根据组委会要求,B 车模只能使用 SD-5 数字舵机,SD-5 的工作电压不超过 5.5V,工作电流约 800mA 左右,普通的线性稳压电源仅能提供约 500mA 左右的电流,因此我们选用了开关电源模块 LM2596 作为舵机的供电电源。原理图及舵机接口电路如图 4-5 所示。图 4-5 舵机供电及接口电路 4.64.6 电机驱动模块电机驱动模块 B 车模使用的 RS-540 电机相比于 C 车模的电机具有功率大,负载能力强的特点,同时也使得电机的工作电流较高,这就对电机驱动提出了比较高的要求,在以前的方案中我们使用过集成的电机驱动芯片 BTS7970 作为电机驱动芯片,但是在车模行驶过程中由于设定速度的改变需要频繁的正反转以控制速度,电机反接制动过程中会使芯片发热,温度过高时会导致芯片启动过热保护从而停止运行。针对此种不足,我们设计了由四片 NMOS 组成的全桥驱动,使用 HIP4082 作为 MOS 驱动芯片控制 MOS 管的导通与关断。HIP4082 是集成的MOS 驱动专用芯片,采用自举升压电路为上下桥臂的开通的关断提供电压,具有可调节的死区时间控制。由于 HIP4082 的工作电压为 10-15V,而电池只能提供 7.2V 的电压,因此需要 对电池电压进行直流升压,用以HIP4082的供电。我们采用MC34063作为升压芯片为HIP4082供电,MC34063 的最大输出电流为 500mA,完全能够满足 HIP4082 的工作要求。由于 12V 电压只是用于驱动 HIP4082,并没有直接加载到电机两端,因此并没有违反组委会关于电机供电电压的规定。MC34063 升压电路及 MOS 全桥驱动电路如图 4-6-1 和图 4-6-2 所示。图 4-6-1 MC34063 升压电路 图 4-6-2 MOS 全桥驱动电路 4.74.7 人机交互人机交互模块模块 人机交互模块包括按键,拨码开关以及液晶显示,在智能车参数调试过程中合理利用人机交互模块可以为调试节约大量时间。按键电路,拨码开关电路及液晶显示接口如图4-7-1,图 4-7-2,图 4-7-3 所示。第十届全国大学生智能汽车邀请赛技术报告 图 4-7-1 按键接口电路 图 4-7-2 拨码开关接口电路 图 4-7-3 液晶显示接口 第五章第五章 控制算法设计说明控制算法设计说明 5.15.1 主主要要程序程序流程流程 智能车控制算法是智能车设计的核心,好的控制算法能让智能车快速稳定的运行,控制算法中最主要的部分包括舵机的控制和速度的控制。单片机运行需要对各模块寄存器进行初始化配置,在进入主循环之前需要对单片机的时钟,IO 口,AD 转换模块,FTM 模块,UART,SPI,PIT 等模块相应寄存器写入正确的配置参数。进入主循环之后采集一次 AD 值,对采集到的信息进行处理,调用舵机和电机的 PID 运算,将结果写入到 FTM 相关输出寄存器中,通过改变 PWM 的占空比来改变舵机和电机的控制参数。主要程序流程图方框图如图5-1 所示。图 5-1 程序流程图 5.25.2 赛道信息采集及处理赛道信息采集及处理 在智能的控制中,赛道信息的采集及处理尤为关键。对于我们的电磁车而言,所有的赛道信息都来自传感器支架上六个电感采集到的赛道信息,通过分析每组数据之间的关系计算出小车与当前赛道的相对位置并根据赛道信息发出合适的控制信号控制舵机转向以及控制电机加减速。5.2.1 传感器数据滤波及可靠性处理 从放大器出来的电压信号经过倍压整流及 RC滤波电路直接送到单片机的模拟量输入通道。虽然经过硬件滤波,但是输入电压的幅值还是存在一定的纹波。由于我们采用的 AD 采集精度为 12 位精度,模拟信号经过采样、保持、量化、编码后转化为最大值为 4095 的数第十届全国大学生智能汽车邀请赛技术报告 字信号,采样精度较高,得到的原始数据波动较大。因此需要对数据进行软件滤波及归一化处理。为了保证采样的周期性,我们将数据的采集放在了周期定时中断中进行,中断的定时时间为 1ms,每一次进中断都会调用一次原始数据采集函数,为了保证数据的可靠性,我们对每一次采集到的原始数据进行了卡尔曼滤波,最大限度的保留了有效的信息的同时去除了可能出先的噪点,卡尔曼滤波的 C 语言实现如下:for(k_num=0;k_num6;k_num+)A_ppk_num=Last_A_Pk_num+A_Qk_num;A_Kk_num=A_ppk_num/(A_ppk_num+A_Rk_num);Kalman_ACCk_num=Last_ACCk_num+A_Kk_num*(AD_Valuek_num-Last_ACCk_num);Last_ACCk_num=Kalman_ACCk_num;Last_A_Pk_num=(1-A_Kk_num)*A_ppk_num;Last_A_Kk_num=A_Kk_num;我们对六个通道的电压值进行连续采样,每个通道分别进行卡尔曼滤波。将卡尔曼滤波之后的值作为处理后的原始值。为了保值数据的可靠性,连续调用五次卡尔曼滤波,每个通道得到五组原始数据,通过冒泡排序找出中间三个原始数据求均值,作为一个数据,调用周期为 1ms。具体实现如下:for(j=0;j5;j+)/卡尔曼滤波之后采五次 Kalman_Filter();for(i=0;i6;i+)AD_Value_tempij=Kalman_ACCi;for(i=0;i6;i+)/冒泡排序 for(j=0;j4;j+)for(k=0;kAD_Value_tempik+1)temp=AD_Value_tempik;AD_Value_tempik=AD_Value_tempik+1;AD_Value_tempik+1=temp;for(i=0;i65&AD365)if(abs(int16)(AD1-AD3)AD3)Direction_flag=3;/向左偏转,偏差为负 else if(AD1AD4)Direction_flag=3;if(AD0AD4)Direction_flag=1;for(i=0;i5;i+)/找出当前传感器最大值 if(ADmaxADi-1)max=i;AD2-=10;max_value=ADmax;if(max_value=AD0)max=4;else max=0;max_old=max;else max_old=max;根据不同的情况获取位置偏差 if(Stright_flag=1)position_error=ChaBiHe0*100;else if(Direction_flag=1)position_error=(100-AD2)+AD2*ChaBiHe0;else if(Direction_flag=3)position_error=(AD2-100)+AD2*ChaBiHe0;else position_error=ChaBiHe0*100;if(max=0)position_error=-(26000/(AD1+m0_L)-m1_L)*m2_L;if(max=4)position_error=(26000/(AD3+m0_R)-m1_R)*m2_R;5.3 5.3 控制算法实现控制算法实现 5.3.1 PID 算法原理简介 PID(proportional-integral-derivative)控制是比例-积分-微分的简称。在生产过程自动控制的发展历程中,PID 控制是历史最悠久,生命力最强的基本控制方式。此后,随著科学技术的发展,特别是电子计算机的诞生和发展,涌现出许多先进控制策略,然而直到现在,PID 控制仍然得到广泛的应用,概括起来该算法具有原理简单,使用方便,适应性强,鲁棒性强等优点。PID 调节器分为模拟式和控制式。前者采用运算放大器,阻容元器件等模拟电路构成,早起使用广泛,随著微处理器的发展,采用单片型微型计算机的数字式 PID 调节器引用越来越广泛。1)模拟式 PID 调节器 以模拟量连续控制为基础的理想 PID 控制算法表达式如下:式 5-3-1 式中 Kp 是比例放大系数,Ti 是积分时间常数,Td 是微分时间常数,u(t)是 t 时刻得输出,e(t)是 t 时刻控制器的输入,e(t)=r(t)y(t),r(t)和 y(t)分别是 t 时刻控制器的设定值和当前值。第十届全国大学生智能汽车邀请赛技术报告 图 5-3-1 模拟 PID 控制系统原理图。在模拟 PID 控制器中,比例环节的作用是对偏差作出反应。偏差一旦产生控制器立即产生控制作用,使控制量向减小偏差的方向变化。控制作用的强弱取决于比例系数,比例系数越大,控制作用越强,则过渡过程越快,控制过程的静态偏差也就越小;但是越大,也越容易产生振荡,破坏系统的稳定性。故而,比例系数选择必须恰当,才能过渡时间少,静态误差小而又稳定的效果。积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡;但是增大积分常数会减慢静态误差的消除过程,消除偏差所需的时间也较长,但可以减少超调量,提高系统的稳定性。当积分常数较小时,则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定积分常数。微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入,将有助于减小超调量,克服振荡,使系统趋于稳定,特别对髙阶系统非常有利,它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分,或在微分起作用之前先对输入信号进行滤波。2 2)数字式)数字式 PIDPID 调节器调节器 由于计算机控制技术的发展非常迅速,数字化PID算法得到了大量应用。由于计算机控制是一种采样控制,它只能根据采样时刻的偏差计算控制量,而不能像模拟控制那样连续输出控制量量,进行连续控制。由于这一特点模拟PID公式中的积分项和微分项不能直接使用,必须进行离散化处理。离散化处理的方法为:以T作为采样周期,k作为采样序号,则 离散采样时间kT对应着连续时间t,用矩形法数值积分近似代替积分,用一阶后向差分近似代替微分,可作如下近似变换:式 5-3-2 上式中,为了表示的方便,将e(kT)简化成e(k),将上式带入模拟PID 的公式中得到离散的PID表达式为:式5-3-3 或:式5-3-4 其中 k-采样序号,k=0,1,2;u(k)-第k次采样时刻计算机的输出值;e(k)-第k次采样时刻偏差的输入值;e(k-1)-第k-1次采样时刻偏差的输入值;Ki-积分系数,Ki=Kp*T/Ti;Kd-微分系数,Kd=Kp*Td/T;如果采样周期足够小,则(式 5-3-3)或(式 5-3-4)的近似计算可以获得足够精确的结果,离散控制过程与连续过程十分接近。(式 5-3-3)或(式 5-3-4)表示的控制算法式直接按(式 5-3-1)所给出的 PID 控制第十届全国大学生智能汽车邀请赛技术报告 规律定义进行计算的,所以它给出了全部控制量的大小,因此被称为全量式或位置式 PID控制算法。这种算法的缺点是:由于全量输出,所以每次输出均与过去状态有关,计算时要对 e(k)进行累加,工作量大;并且,因为计算机输出的 u(k)对应的是执行机构的实际位置,如果计算机出现故障,输出的 u(k)将大幅度变化,会引起执行机构的大幅度变化,有可能因此造成严重的生产事故,这在实际生产中是不允许的。增量式 PID 控制算法可以避免这种现象发生。所谓增量式 PID 是指数字控制器的输出只是控制量的增量 u(k)。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式 PID 控制算法进行控制。增量式 PID 控制算法可以通过(式 5-3-3)推导出。由(式 5-3-3)可以得到控制器的第 k1 个采样时刻的输出值为:式 5-3-5 将(式 5-3-3)与(式 5-3-5)相减并整理,就可以得到增量式 PID 控制算法公式为:式 5-3-6 由(式 25)可以看出,如果计算机控制系统采用恒定的采样周期T,只要使用前后三次测量的偏差值,就可以由(式 5-3-5)求出控制量。增量式 PID 控制算法与位置式 PID 算法相比,计算量小的多,因此在实际中得到广泛的应用。而位置式 PID 控制算法也可以通过增量式控制算法推出递推计算公式:式 5-3-7(式 5-3-7)就是目前在计算机控制中广泛应用的数字递推 PID 控制算法。5.3.2 基于位置式 PID 的方向控制 PID 算法的应用非常灵活,在实际引用中,可以根据执行器的不同特性选择增量式或位置式 PID,由于舵机的输出特性,我们选择采用位置式的 PD 控制,经过测试发现,具有良好的控制效果。具体实现如下:首先调用偏差获取函数,返回位置偏差 Error_0=Get_Position_Error();然后计算舵机输出量 Increment_Angle=(Angle_P*(float)Error_0+Angle_D*(float)(Error_0-Error_1);Error_1=Error_0;Angle=(uint16)(int16)(float)Steer_Middle_Value+Increment_Angle);对输出量进行限幅处理,防止舵机打角过大损坏舵机。if(Angle11350)Angle=11350;if(Angle1500)Output_old=1500;if(Output_old=0)if(Output1300)Output=1300;pwm_out(PWM_PIN_PTA7,(uint16)Output);pwm_out(PWM_PIN_PTA6,0);else if(Output1300)Output=1300;pwm_out(PWM_PIN_PTA7,0);pwm_out(PWM_PIN_PTA6,(uint16)Output);编写速度控制子程序,将棒棒控制和 PID 控制相结合 void Speed_control()static uint8 bangbang_flag=0;Ek0=SET_SPEED-PULSE;if(bangbang_flag=0)pwm_out(PWM_PIN_PTA7,1000);pwm_out(PWM_PIN_PTA6,0);if(Ek010)bangbang_flag=1;if(Ek0-20)&(bangbang_flag=1)pwm_out(PWM_PIN_PTA7,0);pwm_out(PWM_PIN_PTA6,1000);Output_old=0;else Moter_PID(