温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
东北大学秦皇岛分校
东秦3队光电平衡技术报告
东北大学
秦皇岛
分校
东秦
光电
平衡
技术
报告
第八届“飞思卡尔”杯全国大学生 智能汽车竞赛 技技 术术 报报 告告 学 校:东北大学秦皇岛分校 队伍名称:东秦三队 参赛队员:李建伟 雷志强 韩晗 带队教师:顾德英 吕江涛 关于技术报告和研究论文使用授权的说明 本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日 期:I 第一章 引 言.1 1.1 智能车的发展意义.1 1.2 光电直立车的总体设计思路.1 1.3 本文结构安排.2 第二章 控制系统总体方案设计.3 2.1 系统设计思路.3 2.2 系统整体方案的设计.3 2.3.1 电源模块.5 2.3.2 循迹传感器模块.5 2.3.3 平衡传感器模块.5 2.3.4 测速传感器.5 2.3.5 电机驱动.6 2.3.6 单片机模块.6 2.4 车模技术参数.7 第三章 直立行走的原理.8 3.1 直立行走任务分解.8 3.2 车直立控制.9 3.3 车模速度控制.11 3.4 车模方向控制.13 3.4.1 传感器的选择.13 3.4.2 电机差动控制.13 3.5 车模倾角测量.14 3.5.1 加速度传感器.14 3.5.2 角速度传感器-陀螺仪.15 3.6 车模直立行走控制算法总图.16 第四章 软件编写与调试.18 4.1 程序流程图.18 4.2 初始化.19 4.2.1 PWM 模块初始化.19 4.2.2 ADC 模块初始化.20 4.2.3 UART 模块初始化.21 4.2.4 PIT 模块初始化.23 4.3 直立、方向、速度控制策略.23 4.3.1 PID 控制.23 4.3.2 直立控制.25 4.3.3 方向控制.25 II 4.3.4 速度控制.29 4.4 系统的调试.29 4.4.1 开发工具.29 4.5.2 串口在线调试.30 第五章 总结.33 参考文献.34 附录 A:程序源代码.XXXV 附录 B:原理图.XLIII 1 第一章 引 言 1.1 智能车的发展意义 智能车也称无人车辆,是一个集环境感知、规划决策和多等级辅助驾驶等功能于一身的综合系统。智能汽车的设计和开发,将从根本上改变现有汽车的信息采集处理、数据交换、行车导航与定位、车辆控制的技术方案与体系结构。随着科学技术的发展,特别是计算机技术、信息技术、人工智能、电子技术的突飞猛进,智能车辆技术有了实现的技术基础。目前智能车辆技术在轿车和重型汽车上主要应用于碰撞预警系统、防撞及辅助驾驶系统、智能速度适应、自动操作等,其在军事上的应用更加广泛和重要。智能车竞赛以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛。在实物平台基础上,制作一个能够自主识别路线的智能车,在专门设计的跑道上知道识别道路行驶,小车的成绩取决于单圈行驶所用的时间1。1.2 光电直立车的总体设计思路 智能车竞赛已成功举办了七届,第八届光电组比赛要求车模在直立的状态下以两个轮子着地沿着赛道进行比赛,相比四轮着地状态,车模控制任务更为复杂。我们对所能找到关于直立小车以及第七届电磁车的认真分析和总结,找出一种适合直立光电车的算法,并最终确定我们的设计思路3。第一,使小车可以直立行走。为了能够方便找到解决问题的办法,首先将复杂的问题分解成简单的问题进行讨论维持车模直立也许可以设计出很多的方案,本参考方案假设维持车模直立、运行的动力都来自于车模的两个后车轮。后轮转动由两个直流电机驱动。因此从控制角度来看,车模作为一个控制对象,它的控制输入量是两个电极的转动速度。第二,循迹直立行走。车模通过线阵 CCD 采集赛道信息进行路径检测,根据线阵CCD检测到的128个赛道信息进行方向控制,最终达到按照理想的路径行走。第八届全国大学生智能汽车邀请赛技术报告 2 在智能车硬件电路的设计上,采用了模块化的设计思想。将整个系统分为最小系统板、信号采集模块、信号初步处理模块等若干模块。每个模块只负责完成特定的功能,与其他模块之间相对独立。在前期开发阶段,可以对各个模块进行单独测试。在保证各个模块正确的前提下,保持各模块间接口定义不变,再将各个模块组合起来。同时所有硬件模块均制作了 PCB 板,减轻了车模的重量,增加了硬件电路的可靠性。1.3 本文结构安排 本文讨论以线阵 CCD 为路径探测传感器的路径识别算法和以陀螺仪和加速度传感器为小车控制小车直立的平衡算法的设计与开发,主要研究线阵 CCD 的道路检测方法、初步路径识别算法。1)引言。主要介绍了智能车的发展意义,并针对本文光电车的总体设计思路。2)控制系统总体方案设计。3)直立行走的原理。本章介绍直立行走原理,传感器。4)软件编写及调试。本章主要介绍小车行走的软件设计和串口调试。5)总结。3 第二章 控制系统总体方案设计 图 2.1 直立小车整体效果图 2.1 系统设计思路 作为一个完整的机电控制系统,在设计上需要考虑如系统机械性能、电气性能、系统软件设计、可靠性设计,甚至还需考虑外型设计、安装维护等诸多方面的设计问题。要让它能够很好的运行并达到预定目标,首先就应该尽快将其模型用最简化的设计建立起来,在不断发现新问题,提出新目标的同时,再进一步逐渐对在功能上、速度上,以及可靠性方面进行扩展和完善。我们最初的目标是在熟悉 K60 这款单片机的同时用最简化的手段将循线小车的功能实现。因此前期我们的工作主要是在于将陀螺仪和加速度传感器作为直立传感器使小车能够直立行走。2.2 系统整体方案的设计 该系统采用飞思卡尔MK60DN512ZVL100单片机为检测和控制核心4;以线阵CCD为路径检测传感器,根据 CCD 检测到的赛道信息和小车速度以及平衡信息,通第八届全国大学生智能汽车邀请赛技术报告 4 过软件对小车进行转向和速度的控制,结构如图 2.2 所示。图 2.2 智能车主板图 第二章 控制系统总体方案设计 5 据以上小车控制系统设计,系统可分为电源管理模块、直流电机驱动模块和单片机模块、速度检测传感器、平衡传感器模块、循迹传感器模块。各个模块实现不同的功能,更各模块之间有单片机协调控制实现直立行走。2.3.1 电源模块 电源使用的是组委会提供可充电 7.2V 电池作,根据我们小车的需要,我们将电源模块分为以下几个部分:电机驱动模块 7.2V,光电编码器 5V。其中电池一定要固定牢固!2.3.2 循迹传感器模块 循迹传感器模块(如图 2.4 所示),选用 TSL1401 线性传感器。CCD 模块具有体积小、重量轻、使用简单、易于固定、接口简单等优点。本产品经过严格的赛道环境测试,经测试该传感器能够采集到稳定的赛道信号,前瞻较远,能在较远距离采集到赛道黑线,且黑线与背景压差较大,用简单算法即可提取黑线位置信号。而且 TSL1401 线性 CCD 与单片机接口简单,只需要两路 IO 和1 路 ADC 资源。图 2.3 电源模块 图 2.4 循迹传感器模块 2.3.3 平衡传感器模块 平衡传感器模块(如图 2.5 所示),主要作用是使小车保持平衡(是直立小车的关键)。在陀螺仪固定时必须保持水平,否则会在小车转弯时不能保持平衡。2.3.4 测速传感器 测速传感器用来采集小车速度信息(如图 2.6 所示),为小车的速度控制提第八届全国大学生智能汽车邀请赛技术报告 6 供反馈依据,使小车始终按照给定的速度行驶。选择测速传感器时需要考虑:测速的精度,稳定程度以及传感器的安装等因素。2.3.5 电机驱动 电机驱动模块6控制直流电机(如图 2.7 所示),使电机在给定的速度下运行,控制电机加减速,是小车的执行机构。电机驱动选 BTN7971 驱动芯片。图 2.5 平衡传感器模块 图 2.6 测速传感器模块 2.3.6 单片机模块 单片机模块(如图 2.8 所示)在小车控制系统中扮演核心的位置,好比人的大脑,从硬件设计的角度来说,首先要保证其供电稳定,其次要对其部分功能模块如 PWM 通道,定时器通道的进行编程,写入驱动程序,使其工作良好。MK60DN512ZVL100 是一款飞思卡尔 32 位的单片机7,其开发方法和工作特点都与常用的单片机有一定的区别。开发环境也有不同。我们采用 CodeWarriar10.1作为开发工具。第二章 控制系统总体方案设计 7 图 2.7 电机驱动模块 图 2.8 最小系统 K60 2.4 车模技术参数 车模重量(kg)1.2 长*宽*高(mm)175*162*369 电容容量(uF)215 陀螺仪(ENC-03)2 个 加速度计(MMA7361)1 个 线阵 CCD 2 个 电机驱动 2 个 光电编码器 2 个 舵机 无 功耗(W)12 赛道检测精度(mm)30 赛道检测频率(Hz)66 第八届全国大学生智能汽车邀请赛技术报告 8 第三章 直立行走的原理 3.1 直立行走任务分解 光电组比赛要求车模在直立的状态下以两个轮子着地沿着赛道运动,相比四轮着地状态,车模控制任务更为复杂。为了能够方便找到解决问题的办法,首先将复杂的问题分解成简单的问题进行讨论。为了分析方便,根据比赛规则,假设维持车模直立、运行的动力都来自于车模的两个后车轮,后轮转动由两个直流电机驱动。因此从控制角度来看,由控制车模两个电机旋转方向及速度实现对车模的控制。车模运动控制任务可以分解成以下三个基本任务8(1)控制车模直立:通过控制两个电机正反向运动保持车模直立状态;(2)控制车模速度:通过控制两个电机转速速度实现车模行进控制;(3)控制车模转向:通过控制两个电机之间的转动差速实现车模转向控制。以上三个任务都是通过控制车模两个后轮驱动电机完成的。可以假设车模的电机可以虚拟地被拆解成三个不同功能的驱动电机,它们同轴相连,分别控制车模的直立平衡前进行走、左右转向。直流电机的力矩最终来自于电机驱动电压产生的电流。因此只要电机处于线性状态,上述拆解可以等效成三种不同控制目标的电压叠加之后,施加在电机上。在上述三个任务中保持车模直立是关键。由于车模同时受到三种控制的影响,从车模直立控制的角度,其它两个控制就成为它的干扰。因此在速度、方向控制的时候,应该尽量平滑,以减少对于直立控制的干扰。上述三个控制各自独立进行控制,它们各自假设其它两个控制都已经达到稳定。比如速度控制时,假设车模已经在直立控制下保持了直立稳定,通过改变电机的电压控制车模加速和减速。车模在加速和减速的时候,直立控制一直在起作用,它会自动改变车模的倾角,移动车模的重心,使得车模实现加速和减速。第二章 控制系统总体方案设计 9 3.2 车直立控制 车模直立是通过负反馈实现的。但相对于上面的木棒直立相对简单一些。因为车模有两个轮子着地,因此车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消倾斜的趋势便可以保持车体直立了。那么车轮如何运行,才能够最终保持车体垂直稳定?为了回答这个问题,一般的做法需要建立车模的运动学和动力学数学模型,通过设计最优控制来保证车模的稳定。为了能够比较清楚理解其中的物理过程。重力场中使用细线悬挂着重物经过简化便形成理想化的单摆模型。直立着的车模可以看成放置在可以左右移动平台上的倒立着的单摆。如图 3.1 所示。图 3.1 车模简化成倒立的单摆图 3.2 普通的单摆受力分析 普通的单摆受力分析如图 3.2 所示。当物体离开垂直的平衡位置之后,便会受到重力与悬线的作用合力,驱动重物回复平衡位置。这个力称之为回复力,其大小为 F=-mgsin(3.1)在此回复力作用下,单摆便进行周期运动。在空气中运动的单摆,由于受到空气的阻尼力,单摆最终会停止在垂直平衡位置。空气的阻尼力与单摆运行速度成正比,方向相反。阻尼力越大,单摆越会尽快在垂直位置稳定下来。图 3.3 显示出不同阻尼系数下,单摆的运动曲线。l l m l m 底部可以运动的倒立单摆 l l m 单摆模型 l 底部可以运动的倒立单摆 第八届全国大学生智能汽车邀请赛技术报告 10 图 3.3 不同阻尼力下的单摆运动 总结单摆能够稳定在垂直位置的条件有两个:(1)受到与位移(角度)相反的恢复力;(2)受到与运动速度相反的阻尼力。如果没有阻尼力,单摆会在垂直位置左右摆动。阻尼力会使得单摆最终停止在垂直位置。阻尼力过小(欠阻尼)会使得单摆产生震荡,阻尼力过大(过阻尼)会使得单摆到达平衡位置时间拉长。存在一个阻尼临界阻尼系数,使得单摆最快稳定在平衡位置。倒立摆在垂直位置时,在受到外部扰动的情况下,无法保持稳定。分析倒立摆的受力,如图 3.4所示。图 3.4 在车轮上的参照系中车模受力分析 倒立摆之所以不能象单摆一样可以稳定在垂直位置,就是因为在它偏离平衡位置的时候,所受到的回复力与位移方向相同,而不是相反!因此,倒立摆过阻尼 自由振荡 欠阻尼 m 气球 在 非 惯性 系中 物 体由 于惯性会受到惯性力 第三章 直立行走的原理 11 便会加速偏离垂直位置,直到倒下。倒立摆能够像单摆一样,只有两个办法:一个是改变重力的方向;另一个是增加额外的受力,使得恢复力与位移方向相反才行。由此,能够做的显然只有第二种方式。控制倒立摆底部车轮,使得它作加速运动。这样站在小车上(非惯性系)9看倒立摆,它就会受到额外的力(惯性力),该力与车轮的加速度方向相反,大小成正比。这样倒立摆所受到的回复力为 F=mgsin-mamg-mk1 (3.2)式中,假设控制车轮加速度与偏角成正比,比例为 k1。显然,如果 k1 g,(g 是重力加速度)那么回复力的方向便于位移方向相反了。此外,为了使得倒立摆能够尽快地在垂直位置稳定下来,还需要增加阻尼力,与偏角的速度成正比,方向相反。因此式(3.2)可变为 F=mg-mk1-mk2 (3.3)按照上面的控制方法,可把倒立摆模型变为单摆模型,能够稳定在垂直位置。因此,可得控制车轮加速度的控制算法 a=k1+k2 (3.4)式中,为车模倾角;为角速度;k1、k2 均为比例系数;两项相加后作为车轮速度的控制量。只要保证在 k1g、k20 条件下,可以维持车模直立状态。其中,k1 决定了车模是否能够稳定到垂直位置,它必须大于重力加速度,k2 决定了车模回到垂直位置的阻尼系数,选取合适的阻尼系数可以保证车模尽快稳定在垂直位置。因此控制车模稳定,需要下列两个条件:(1)能够精确测量车模倾角的大小和角速度的大小;(2)可以控制车轮的加速度 3.3 车模速度控制 车模运行速度是通过控制车轮速度实现的,车轮通过车模两个后轮电机经由减速齿轮箱驱动,因此通过控制电机转速可以实现对车轮的运动控制。第八届全国大学生智能汽车邀请赛技术报告 12 电机的运动控制有三个作用:(2)通过电机差速控制,可以实现车模方向,控制差速的控制方法参见下一小节“车模方向控制”。(3)通过电机速度控制,实现车模恒速运行和静止。虽然设计没有要求车模速度恒定,也没有要求车模在比赛之前和冲过终点之后保持静止状态。但是通过速度控制,可以提高车模稳定性。电机运动控制是通过改变施加在其上的驱动电压实现的。对于电机的电磁模型、动力学模型以及车模的动力学模型进行分析和简化,可以将电机运动模型简化成如下的一阶惯性环节模型10。施加在电机上一个阶跃电压 Eu(t),电机的速度变化曲线为 temTtEkt11 (3.5)式中,E 为电压;t为单位阶跃函数;1T为惯性环节时间常数;mk为电机转速常数。对应不同的电压,电机的速度变化曲线如图 3.5 所示 图 3.5 电机在不同电压下的速度变化线 由图 3.5 可以看出,电机运动明显分为两个阶段:第一个阶段是加速阶段;第二个阶段为恒速阶段。其中,在加速阶段,电机带动车模后轮进行加速运动,加速度近似和施加在电机上的电压成正比,加速阶段的时间长度取决于时间常加速阶段 对于电机模型进行了简化 恒速阶段 第三章 直立行走的原理 13 数 T1,该常数由电机转动惯量、减速齿轮箱、车模的转动惯量决定;在恒速阶段,电机带动车模后轮进行恒速运行,运行速度与施加在电机上的电压成正比。调整车模直立时间常数很小,此时电机基本上运行在加速阶段。由上一节计算所得到的加速度控制量 a 再乘以一个比例系数,即为施加在电机上的控制电压,这样便可以控制车模保持直立状态。车模运行速度调整时间相对很长,此时,电机速度与施加在其上的电压成正比,通过传统的 PID 反馈控制11,便可以精确控制电机的运行速度,从而控制车模的运行速度。电机速度控制需要测量电机的转速,电机旋转速度可以通过安装在电机输出轴上的光电编码盘方便获得。利用控制单片机的计数器测量在固定时间间隔内速度脉冲信号的个数可以测量电机的转速。电机速度控制采用了 PI 调节器,具体实现可以通过单片机软件编程实现。3.4 车模方向控制 实现车模方向控制是保证车模沿着竞赛道路比赛的关键。通过道路 CCD 中检测的偏差与电机差动控制实现方向控制。将在下面分别进行介绍。3.4.1 传感器的选择 光电传感器采集道路信息,为智能小车提供前进方向,使小车始终不偏离赛道的黑色引导线。所以要对传感器选型。传感器相当于智能车系统的眼睛,传感器的选择是整车设计的关键。根据要求我们选用官方推荐的线阵 CCD 为光电检测传感器。3.4.2 电机差动控制 利用 CCD 偏差检测信号分别与车模速度控制信号进行加和减,形成左右轮差动控制电压,使得车模左右轮运行角速度不一致进而控制车模方向。通过左右电机速度差驱动车模转向消除车模偏差,这个过程是一个积分过程。因此车模差动控制一般只需要进行简单的比例控制就可以完成车模方向控第八届全国大学生智能汽车邀请赛技术报告 14 制。3.5 车模倾角测量 在 3.2 节车模直立控制中介绍了控制车模直立的算法,通过测量车模的倾角和倾角加速度控制车模车轮的加速度来消除车模的倾角。因此车模倾角以及倾角加速度的测量成为控制车模直立的关键。测量车模倾角和倾角加速度可以通过加速度传感器和陀螺仪实现。3.5.1 加速度传感器 加速度传感器可以测量由地球引力作用或者物体运动所产生的加速度。竞赛规则规定如果车模使用加速度传感器必须使用飞思卡尔公司产生的加速度传感器。该系列的传感器采用了半导体表面微机械加工和集成电路技术,传感器体积小,重量轻。它的基本原理如图 3.18。图 3.18 加速度传感器原理 通过微机械加工技术在硅片上加工形成了一个机械悬臂。它与相邻的电极形成了两个电容。由于加速度使得机械悬臂与两个电极之间的距离发生变化,从而改变了两个电容的参数。通过集成的开关电容放大电路量测电容参数的变化,形成了与加速度成正比的电压输出。MMA7260 是一款三轴低 g 半导体加速度计,可以同时输出三个方向上的加速度模拟信号。只需要测量其中一个方向上的加速度值,就可以计算出车模倾角,比如使用 Z 轴方向上的加速度信号。车模直立时,固定加速度器在 Z 轴水平方向,此时输出信号为零偏电压信号。当车模发生倾斜时,重力加速度 g 便会在 Z 轴方向形成加速度分量,从而引起该轴输出电压变化。变化的规律为 sinkgu (3.11)第三章 直立行走的原理 15 式 3.11 中,g 为重力加速度;为车模倾角;k 为比例系数。当倾角比较小的时候,输出电压的变化可以近似与倾角成正比。似乎只需要加速度就可以获得车模的倾角,再对此信号进行微分便可以获得倾角加速度。但在实际车模运行过程中,由于车模本身的运动所产生的加速度会产生很大的干扰信号叠加在上述测量信号上,使得输出信号无法准确反映车模的倾角。车模运动产生的振动加速度使得输出电压在实际倾角电压附近波动,可以通过数据平滑滤波将其滤除。但是平滑滤波也会使得信号无法实时反映车模倾角的变化,从而减缓对于车模车轮控制,使得车模无法保持平衡。因此对于车模直立控制所需要的倾角信息需要通过另外一种器件获得,那就是角速度传感器-陀螺仪,如图 3.19 所示。3.5.2 角速度传感器-陀螺仪 陀螺仪可以用来测量物体的旋转角速度。竞赛允许选用村田公司出品的 EN-03 系列的加速度传感器。它利用了旋转坐标系中的物体会受到克里利奥力的原理,当旋转器件时会改变振动频率从而反映出物体旋转的角速度。图 3.19 角速度传感器 在车模上安装陀螺仪,可以测量车模倾斜的角速度,将角速度信号进行积分便可以得到车模的倾角。由于陀螺仪输出的是车模的角速度,不会受到车体振动影响。因此该信号中噪声很小。车模的角度又是通过对角速度积分而得,这可进一步平滑信号,从而使得角度信号更加稳定。因此车模控制所需要的角度和角速度可以使用陀螺仪所得到的信号。第八届全国大学生智能汽车邀请赛技术报告 16 为了避免输出角度跟着 g 过长,可以采取以下两个方面的措施(1)仔细调整陀螺仪的放大电路,使得它的零点偏置尽量接近于设定值,并且稳定。(2)在控制电路和程序运行的开始,尽量保持车模处于直立状态,这样一开始就使得输出角度与 g 相等。此后,加速度计的输出只是消除积分的偏移,输出角度不会出现很大的偏差。使用加速度计来矫正陀螺仪的积分漂移只是其中一种方法。还可以通过测量车模的运行速度和加速度来矫正陀螺仪的积分漂移,这样就可以省略加速度器件。这种控制方法请同学们在掌握了整个控制方案之后自行设计实现。3.6 车模直立行走控制算法总图 通过上面介绍,将车模直立行走主要的控制算法集中起来,形成控制算法总框图如图 3.20 所示 图 3.20 控制算法总框图 图 3.20 中,为了实现车模直立行走,需要采集如下信号:(1)车模陀螺仪信号;第三章 直立行走的原理 17(2)车模加速度计信号(z 轴信号);(3)车模电机转速脉冲信号;(4)车模数据偏差信号(两路)。需要进行如下控制环节,控制车模电机转动:(1)车模直立控制:使用车模倾角的 PD(比例、微分)控制;(2)车模速度控制:使用 PI(比例、积分)控制;(3)车模方向控制:使用 PD(比例、微分)控制。可通过单片机软件实现上述控制算法。车模的三种控制(直立、速度、方向)最终是将控制量叠加在一起作为电机输出电压控制量。直立控制是基础,它的调整速度非常快,速度和方向控制相对调整速度慢。速度和方向控制的输出量是直接叠加在电机控制电压上。它们假定直立控制会始终保持车模不跌倒,直立控制会自动调节车模的倾角以适应车模的加速、减速和转弯的需要。第八届全国大学生智能汽车邀请赛技术报告 18 第四章 软件编写与调试 4.1 程序流程图 图 4.1 主程序流程图 开始 车模是否跌倒 方向控制 直立控制 初始化 速度控制 车模停止运 数据采集 采集是否完成 N Y Y 速度采集 速度采集中断 3ms 中断 中断服务程序,完成车模直立,方向,速度控制 19 4.2 初始化 4.2.1 PWM 模块初始化 PWM(PULSE WIDTH MODULATION)即脉宽调制,脉宽调制波是一种可用程序来控制波形占空比、周期、相位的波形。它在电动机驱动、D/A 变换等场合有着广泛的应用8。voidvoid pwm_init()/PTC3 PTC4 PTD4 PTD5 作为四通道pwm 电机控制 SIM_SCGC5|=SIM_SCGC5_PORTC_MASK|SIM_SCGC5_PORTD_MASK;PORT_PCR_REG(PORTC_BASE_PTR,3)=PORT_PCR_MUX(4);/把引脚设置为FTM功能后默认为 input capture mode PORT_PCR_REG(PORTC_BASE_PTR,4)=PORT_PCR_MUX(4);PORT_PCR_REG(PORTD_BASE_PTR,4)=PORT_PCR_MUX(4);PORT_PCR_REG(PORTD_BASE_PTR,5)=PORT_PCR_MUX(4);SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;/选通FTM0模块时钟 FTM_SC_REG(FTM0_BASE_PTR)=0 x0;/FTM配置阶段应该配置的 /(1)FTM counter mode(2)the FTM counting limits(MOD and CNTIN registers value)/(3)the channels mode and CnV registers value according to the channels mode FTM_CNTIN_REG(FTM0_BASE_PTR)=0 x0000;FTM_CNT_REG(FTM0_BASE_PTR)=0 x1234;/updates the FTM counter with the CNTIN register value /and the channels output with its initial value /PTC3-FTM0_CH2 PTC4-FTM0_CH3 PTD4-FTM0_CH4 PTD5-FTM0_CH5 /High-true pulses(clear Output on match)FTM_CnSC_REG(FTM0_BASE_PTR,2)|=FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK;/通道模式为EPWM FTM_CnSC_REG(FTM0_BASE_PTR,3)|=FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK;FTM_CnSC_REG(FTM0_BASE_PTR,4)|=FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK;第八届全国大学生智能汽车邀请赛技术报告 20 FTM_CnSC_REG(FTM0_BASE_PTR,5)|=FTM_CnSC_MSB_MASK|FTM_CnSC_ELSB_MASK;FTM_MODE_REG(FTM0_BASE_PTR)|=FTM_MODE_INIT_MASK|FTM_MODE_FTMEN_MASK;/通道初始时输出低电平;FTM_MOD_REG(FTM0_BASE_PTR)=5000;FTM_CnV_REG(FTM0_BASE_PTR,2)=0;FTM_CnV_REG(FTM0_BASE_PTR,3)=0;FTM_CnV_REG(FTM0_BASE_PTR,4)=0;FTM_CnV_REG(FTM0_BASE_PTR,5)=0;FTM_CONF_REG(FTM0_BASE_PTR)|=FTM_CONF_BDMMODE(3);/bdm调试时,计数器正常计数 /FTM_COMBINE_REG(FTM0_BASE_PTR)|=FTM_COMBINE_SYNCEN1_MASK;FTM_SC_REG(FTM0_BASE_PTR)|=FTM_SC_CLKS(1)|FTM_SC_PS(0);/选择了时钟后,引脚由FTM控制 /PMW频率=系统频率(100MHZ)/2/(2FTM_SC_PS)/FTM_MOD=100,000,000/2/(20)/5000=10kHZ 4.2.2 ADC 模块初始化 ADC 模块主要是完成数据采集,将采集到的传感器的模拟信号转化为单片机能够处理的数字信号。voidvoid adc_init()SIM_SCGC6|=(SIM_SCGC6_ADC0_MASK);/SIM_SOPT7&=(SIM_SOPT7_ADC0ALTTRGEN_MASK|SIM_SOPT7_ADC0PRETRGSEL_MASK);/SIM_SOPT7=SIM_SOPT7_ADC0TRGSEL(0);SIM_SCGC3|=(SIM_SCGC3_ADC1_MASK);/SIM_SOPT7&=(SIM_SOPT7_ADC1ALTTRGEN_MASK|SIM_SOPT7_ADC1PRETRGSEL_MASK);/SIM_SOPT7=SIM_SOPT7_ADC1TRGSEL(0);adc_cal(ADC0_BASE_PTR);21 adc_cal(ADC1_BASE_PTR);/初始化ADC默认配置 /总线时钟,转换精度,长采样时间,分频系数 ADC_CFG1_REG(ADC0_BASE_PTR)|=ADC_CFG1_ADICLK(ADICLK_BUS)/选择总线时钟50MHz|ADC_CFG1_MODE(ACCURACY_8)/8 bit-mode ADCK 最大为18MHz|ADC_CFG1_ADIV(ADIV_2);/总线时钟4分频得到ADCK 25MHz ADC_CFG1_REG(ADC1_BASE_PTR)|=ADC_CFG1_ADICLK(ADICLK_BUS)/选择总线时钟50MHz|ADC_CFG1_MODE(ACCURACY_16)/16 bit-mode ADCK 最大为12MHz|ADC_CFG1_ADIV(ADIV_4);/总线时钟4分频得到ADCK 12.5MHz ADC_CFG2_REG(ADC0_BASE_PTR)|=ADC_CFG2_ADHSC_MASK;/ADC1配置为8次硬件均值(可选4,8,16,32)ADC_SC3_REG(ADC0_BASE_PTR)&=(ADC_SC3_AVGE_MASK);ADC_SC3_REG(ADC1_BASE_PTR)|=ADC_SC3_AVGE_MASK|ADC_SC3_AVGS(AVGS_8);4.2.3 UART 模块初始化 UART 就是串口通信,它的作用是上微机能够写或者读单片机内部的数据。程序在主循环中不停发送监控数据,在通过串口发送到上位机进行监控。void uart_init(UART_MemMapPtr uart_ptr,uint32 moudle_clk,uint32 baud)register uint16 sbr,brfa;uint8 temp;/UART_MemMapPtr uartch=hw_uart_get_base_address(uartNo);第八届全国大学生智能汽车邀请赛技术报告 22 /使能引脚 SIM_SCGC5|=SIM_SCGC5_PORTC_MASK;PORTC_PCR14=PORT_PCR_MUX(0 x3);/UART4 PORTC_PCR15=PORT_PCR_MUX(0 x3);SIM_SCGC1|=SIM_SCGC1_UART4_MASK;/禁止发送接受 UART_C2_REG(UART4_BASE_PTR)&=(UART_C2_TE_MASK|UART_C2_RE_MASK);/配置成 8 位无校验模式 UART_C1_REG(UART4_BASE_PTR)=0;/计算波特率,串口 0、1 使用内核时钟,其它串口使用外设时钟,系统时钟为外设时钟的 2 倍 sbr=(uint16)(moudle_clk*1000)/(baud*16);/UART baud rate=UART module clock/(16 (SBR12:0+BRFD)temp=UART_BDH_REG(UART4_BASE_PTR)&(UART_BDH_SBR(0 x1F);UART_BDH_REG(UART4_BASE_PTR)=temp|UART_BDH_SBR(sbr&0 x1F00)8);UART_BDL_REG(UART4_BASE_PTR)=(uint8)(sbr&UART_BDL_SBR_MASK);brfa=(moudle_clk*32000)/(baud*16)-(sbr*32);temp=UART_C4_REG(UART4_BASE_PTR)&(UART_C4_BRFA(0 x1F);UART_C4_REG(UART4_BASE_PTR)=temp|UART_C4_BRFA(brfa);/使能发送接受 UART_C2_REG(UART4_BASE_PTR)|=(UART_C2_TE_MASK|UART_C2_RE_MASK);23 4.2.4 PIT 模块初始化 PIT是一个模数递减计数器。首先给计数寄存器设定一个初值,每经过一个总线周期,计数器进行一次减一操作,当计数器子减溢出时,触发中断。因为周期是已知的,即可以通过计数器实现定时中断。此设计中,利用 PIT 我们设定是 1MS中断。VOID PIT_INIT(UNSIGNED CHAR PITNO,UNSIGNED INT TIMEOUT)/PIT定时器使用外设时钟 SIM_SCGC6|=SIM_SCGC6_PIT_MASK;/使能 PIT 时钟 PIT_MCR&=PIT_MCR_MDIS_MASK;/使能 PIT 模块时钟 PIT_MCR|=PIT_MCR_FRZ_MASK;/TIMERS ARE STOPPED IN DEBUG MODE PIT_LDVAL(PITNO)=TIMEOUT-1;/设置周期 PIT 使用 PERIPHERAL BUS CLOCK,32 位计数器定时 /PIT_TCTRL(PITNO)|=PIT_TCTRL_TEN_MASK;/使能PIT模块运行 4.3 直立、方向、速度控制策略 车体控制是整个控制算法的核心14,它直接关系到小车的性能好坏。小车控制主要是对电机的控制,其中又分为直立、方向、速度的控制,结合各种算法的优缺点,对直立和方向的控制选用了改进后的 PD 算法思想;对速度的控制选用了 PI 算法的思想。4.3.1 PID 控制 PID 控制是工程实际中应用最为广泛的调节器控制规律15。问世至今 70 年多年来,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。PID 的控制结构如图 4.4 所示。第八届全国大学生智能汽车邀请赛技术报告 24 图 4.4 PID 控制结构图 e 代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器计算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量 U。piddeuk ekedtkdt (5.1)其中pk,ik,dk分别称为比例系数、积分系数、微分系数。U 接着被送到了执行机构,这样就获得了新的输出信号 Y。这个新的输出信号被再次送到感应器以发现新的误差信号,这个过程就这样周而复始地进行。运用 PID 控制的关键是调整三个比例系数,即参数整定。PID 控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。一般来说,增大比例系数能够减小上升时间,并减小稳态误差,但不能消除。增大积分系数能够消除稳态误差,但会使瞬时响应变差。增大微分系数能够增强系统的稳定特性,减小超调,并且改善瞬时响应。以上简要介绍了 PID 算法的原理和特性,实际过程中,由于传感器是按一定间隔周期获取输出信号的,因此必须将连续 PID 控制离散化,这样得到的就是数字 PID 算法。25(5.2)其中,E(K)为本次控制周期偏差,E(K-1)为上次控制周期偏差。T 为采样周期。4.3.2 直立控制 直立控制采用 PD 控制。积分参数 I 虽然能消除余差,但也会使系统震荡,所以不采用积分。PD 控制可以使系统快速准确的稳定,因此采用 PD 控制。比例控制偏差来源于角度偏差,角度是用加速度计值和水平陀螺仪值通过软件整定得来,微分控制偏差来源于水平陀螺仪值,当车模前后晃动时,时水平陀螺仪输出电压,为晃动时的角速度,即所需的微分值。当车模前倾时,通过 PD 控制时车模向前加速,使车模倾角较小,由于陀螺仪和加速度计的零点测定偏有差和陀螺仪有严重的温飘,使得车模并不能稳定的直立在某一点,而是向一个方向加速运动,这一点,将在下面的速度控制中解决。4.3.3 方向控制 方向控制采用 PD 控制算法,由于加入 I 控制会引起超调,造成车模的抖动,所以不采用 I 控制,方向控制主要控制小车的行驶方向,在正确得到偏差E 的基础上,采用 PD 控制双电机差速。线性 CCD 作为主要的道路检测传感器,关键技术是通过寻线获得偏差来反应小车与赛道的相对位置。1、寻线思路:按照规则要求和线性CCD的特