温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
第八
光电
技术
报告
宁远
第八届“飞思卡尔”杯全国大学生
智能汽车竞赛
技 术 报 告
学 校:辽宁工程技术大学
队伍名称: 宁远队
参赛队员: 李绍明
邱金正
徐靖为
带队教师: 张国军
邱 彬
关于技术报告和研究论文使用授权的说明
本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:
带队教师签名:
日 期:
摘 要
本智能小车以MC9S12XS128MAL单片机为核心,辅以电源模块、传感器模块、电机控制模块和运行调试模块,通过感应赛道两边的黑线进行路径检测,从而实现智能寻迹。
本系统将直立小车的运动控制任务分解为三个基本控制任务:车模平衡控制、车模速度控制和车模方向控制。这三个基本控制任务都通过相应的PID算法来实现。其中,车模平衡控制利用陀螺仪和加速度传感器这两个传感器来测量车模的倾角,通过PD算法控制两个电机的正反转保持车模直立平衡状态;车模速度控制利用编码器测速,通过PID算法控制电机的转速来实现车轮速度的控制;车模方向控制利用线性CCD来检测跑道的黑线路径,通过PD算法控制两个电机间的差速实现车模的转向控制。此外,为了提高调试的方便性,我们还设计了液晶按键模块和应用了无线传输模块以及上位机软件。
关键字:MC9S12XS128MAL;平衡控制;速度控制;方向控制;PID
目录
第一章 引 言 1
1.1 智能车竞赛简介 1
1.2 内容结构安排 2
第二章 系统整体方案设计 3
2.1 系统供电电路 3
2.2 电机与驱动模块 3
2.3 车模直立检测与控制 3
2.4 车速检测与调节 4
2.5 车模方向控制 4
2.6 系统整体设计方案结构图 4
第三章 机械结构设计 5
3.1 车模的改装 5
3.2 车模上各模块的安装 6
3.2.1 电池的安装 6
3.2.2 主控板的安装 7
3.2.3 驱动板的安装 7
图3-2-3 驱动板安装图 8
3.2.4 编码器及CCD的安装 8
3.2.5 陀螺仪及加速度计的安装 9
第四章 硬件电路设计 10
4.1 主控芯片 10
4.2 系统供电模块 10
4.2.1 5V稳压电路 10
4.2.2 3V稳压电路 11
4.3 电机驱动模块 11
4.4 角度检测模块 12
4.4.1 陀螺仪 12
4.4.2 加速度计 13
4.5 速度检测模块 14
4.6 路径检测模块 15
4.7 系统调试模块 15
4.7.1 拨码开关 15
4.7.2 液晶按键模块 16
4.7.3 无线通讯模块 16
第五章 软件算法设计 17
5.1 数字PID 17
5.1.1 比例(P)控制 17
5.1.2 积分(I)控制 17
5.1.3微分(D)控制 18
5.2 车模直立检测与控制 18
5.2.1 卡尔曼滤波 19
5.2.2 车模直立控制(PD调节器) 19
5.2.3 车模直立控制程序 20
5.3 车速检测与调节 21
5.3.1 车模速度控制(PID调节器) 21
5.4 车模方向控制 23
5.4.1 车模方向控制(PD调节器) 23
5.4.2 车模方案控制程序 23
5.5 特殊路况的处理 24
5.5.1 路障的处理 24
5.5.2 白色背景的处理 25
5.6 调试工具 25
5.6.1 虚拟示波器 26
5.6.2 CCD调试工具 26
第六章 主要技术参数 28
第七章 总结 29
参考文献 30
附录A 部分源程序代码 I
附录B 原理图 XVIII
第一章 引 言
1.1 智能车竞赛简介
为加强大学生实践、创新能力和团队精神的培养,促进高等教育教学改革,受教育部高等教育司委托(教高司函[2005]201号文,附件1),由教育部高等学校自动化专业教学指导分委员会(以下简称自动化分教指委)主办全国大学生智能汽车竞赛。该竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神,为优秀人才的脱颖而出创造条件。
该竞赛由竞赛秘书处设计、规范标准硬软件技术平台,竞赛过程包括理论设计、实际制作、整车调试、现场比赛等环节,要求学生组成团队,协同工作,初步体会一个工程性的研究开发项目从设计到实现的全过程。该竞赛融科学性、趣味性和观赏性为一体,是以迅猛发展、前景广阔的汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械与汽车等多学科专业的创意性比赛。该竞赛规则透明,评价标准客观,坚持公开、公平、公正的原则,力求向健康、普及、持续的方向发展。
该竞赛以飞思卡尔半导体公司为协办方,得到了教育部相关领导、飞思卡尔公司领导与各高校师生的高度评价,已发展成全国个省市自治区近所高校广泛参与的全国大学生智能汽车竞赛。2008年起被教育部批准列入国家教学质量与教学改革工程资助项目中科技人文竞赛之一(教高函[2007]30号文)。
“飞思卡尔”杯全国大学生智能汽车竞赛已经成功举办了七届,为了提高全国大学生智能汽车竞赛创新性和趣味性,激发高校学生参与比赛的兴趣,提高学生的动手能力、创新能力和接受挑战能力,智能汽车组委会将第七届竞赛的电磁组比赛规定为车模直立行走。而本届竞赛,组委会将光电组比赛规定为车模直立行走,并在另外规定在车道上添加障碍和坡道,以增加难度。本论文主要介绍光电组的智能车制作。
1.2 内容结构安排
本文以车模平衡控制、车模速度控制和车模方向控制等三个控制任务为主要研究内容,基本分为机械,硬件,软件等四部分。文章的结构安排如下所示:
第一章引言:简单介绍了飞思卡尔智能车竞赛的一些情况;
第二章系统整体方案设计:介绍了直立光电车的设计思路以及最终方案;
第三章系统机械部分设计:通过分析直立车各功能的实现对小车机械的要求, 调整智能车的机械结构;
第四章系统硬件部分设计:介绍了本车各个模块的器件选取及电路设计;
第五章系统软件部分设计:主要介绍了直立车的平衡控制、速度控制和方向控制的算法及编程实现,并介绍了系统的调试工具;
第六章主要技术参数:介绍了本智能车的技术参数;
第七章总结:总结了本次智能车制作的收获与不足之处。
第二章 系统整体方案设计
本次设计的智能车要求车模通过两个轮子保持直立状态,并且在直立稳定的前提下能够按照指定的路径稳定运行。故而可将本次智能车的设计分为系统供电电路,电机与驱动模块,车模直立检测与控制,车速检测与调节,车模方向控制这5个部分分别进行控制,然后再逐一结合,从而实现指定的功能。现对这5个部分分别作简要的介绍与说明。
2.1 系统供电电路
系统供电电路的作用是为整个系统提供稳定而又可靠的电能,因而智能车能否稳定快速的运行与系统供电电路的质量密不可分。本次设计中系统的所有电能均来自于竞赛组委会指定的7.2V 2000mAh的可充电电池,其中除电机驱动模块电路的电源由电池直接提供外,其他控制电路的供电电源均由电池电压经5V或3.3V稳压芯片稳压后提供。
2.2 电机与驱动模块
本次智能车设计的动力源直流电机同样是整个系统中举足轻重的一部分,电机能否高效的运行,两个电机是否具有高度的对称性都将对整个系统的稳定运行产生巨大的影响。本次设计使用竞赛组委会指定的直流电机,通过经典的H桥电路分别对两个直流电机进行驱动控制,力求使两个电机都能保持高效对称的方式运行。
2.3 车模直立检测与控制
车模的直立控制是通过负反馈来实现的,如图2-1所示。
图2-1 通过车轮运动保持车模平衡
因为车模有两个轮子着地,车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。所以,有效的检测车模倾斜的角度将是控制车模直立行走的重中之重,本次设计引入加速度计和陀螺仪分别检测车模倾斜时的角度以及倾斜过程中产生的角加速度,然后将两者相互融合最终计算出车模实际的倾斜角度。
2.4 车速检测与调节
对于以竞速为主的智能车竞赛来说,在稳定运行的前提下,车速的快慢才是取得比赛胜利的关键,因而在运行过程中对车模运行速度的控制也是很重要的一个环节。本次设计采用光电编码器来检测车模运行速度,通过数字PID算法对车速进行有效控制。
2.5 车模方向控制
本次设计的智能车需要能够在指定赛道上自主循迹,而光电平衡组只能采用光电传感器对赛道进行检测,本次设计采用线性CCD来实现赛道信息的采集。而车模的的转向则是通过左右两个电机差速实现的,即通过使得左右电机的转速不同来实现车模的左右转向。
2.6 系统整体设计方案结构图
车模直立检测与控制
以上的5个小节分别对本次设计的5个主要模块进行了简单的描述与说明,详细的内容将在后续章节有所介绍。图2-2为本次智能车设计方案的整体结构图。
执行电机
系统供电电源
MC9S12XS128
车模方向控制
车速检测与调节
图2-2 设计方案的整体结构图
XIX
第三章 机械结构设计
第三章 机械结构设计
机械结构是整个智能车系统的基础,它的好坏与否将直接决定小车的性能优劣和极限所在,因此,一个优良的机械结构对于小车而言至关重要。在智能车比赛中,最关键的性能是小车的速度极限和稳定性,而智能车的机械结构无疑是影响速度和稳定性的关键因素之一。其中,小车重心和质心的位置显得尤为重要。下面将分为两部分介绍本车的机械结构。
3.1 车模的改装
原有车模为了减轻后轮振动对于车体的影响,后轮的支架与底盘之间采用了活动连接方式。但是,为了保证车模直立车体稳定性,需要将原有车模底盘与后轮支架固定在一起,使车模整体变为一个刚体。最简便的方式就是可以使用热熔胶在后轮支架与底盘之间的缝隙处进行粘接。但是这样效果并不是十分理想,车体上下两部分的变化角度还会有微小差异。为了获得更好的机械效果,本方案采用通过一块轻质板连接车模底盘与后轮支架的方式,使得后轮与车体之间形成一个刚体,便于进行直立控制。固定后的效果如图3-1所示。
图3-1 底盘固定板
3.2 车模上各模块的安装
在车模上安装各个电路板和传感器时,需要考虑小车的重心和质心问题。汽车重心是指汽车重力的作用点,汽车重心的位置会影响汽车的动力性、制动性、操纵稳定性、平顺性、通过性和舒适性等重要特性。通过物理知识可知,为了保证智能汽车在高速入弯时不发生侧翻,重心越低越好。所以,我们在安放各模块的时候尽可能的低。且为减轻车体重量,绘制板以小巧、简洁为重要指标。同时车体质心位置需要放在车体的中轴位置,这样可以使车的左右转动惯量相等,优化系统性能。
3.2.1 电池的安装
车模的重量大部分来源于电池的重量,因此电池的安装位置对车模重心的位置起决定性作用。为了降低车体重心,我们将电池的位置尽量降到最低。安装位置如图3-2-1所示。
图3-2-1 电池安装图
3.2.2 主控板的安装
为了降低车体重心,主控板的位置应该尽量降低。但同时考虑电机对电路板的影响,所以主控板与电机没有重叠放置,且存在一定距离。为了使电路板的质心位于中轴位置,主控板左右重量基本相等,在车模上安装时也尽量保持左右对称。因为主控板上有陀螺仪模块,所以在安装主控板时应该尽量保证陀螺仪传感器水平。如果陀螺仪不能水平安装,则会影响车模过弯的性能,对车模的行走很不利。主控板的安装位置如图3-2-2所示。
图3-2-2 主控板安装图
3.2.3 驱动板的安装
考虑到车体重心和质心的问题,驱动板放在了车体前方一侧,同时为了使车体有一个较大的角度活动范围,驱动板最终放在了后轮支架的垂直上方。安装位置如图3-2-3所示。
图3-2-3 驱动板安装图
3.2.4 编码器及CCD的安装
安装编码器和CCD的时候,同样主要考虑车体的重心和质心的问题,在条件允许的情况下,尽量降低安装位置。安装编码器时要保证两个编码器在同一水平线上,以保证质心位于车体中轴上。安装CCD时,要考虑CCD的视野问题,在保证满足系统视野要求的前提下,CCD的安装位置尽量靠下。编码器的安装位置如图3-2-4所示。
图3-2-4 CCD安装图
3.2.5 陀螺仪及加速度计的安装
陀螺仪和加速度计是系统测取车体角度的传感器,考虑到智能车在运动过程中会遇到各种路况,所以陀螺仪和加速度计被安装在了车体中心轴的位置。同时为了最大程度的减少车模运行时前后振动对倾角测量的干扰,加速度计的安装位置应该尽量靠下。而陀螺仪则应该尽量保持水平。陀螺仪及加速度计的安装位置如图3-2-5所示。
图3-2-5 CCD安装图
第四章 硬件电路设计
第四章 硬件电路设计
4.1 主控芯片
单片机系统是整个电路设计中最核心的部分,包括电源电路、时钟电路、复位电路和BDM 接口等。为了确保系统的稳定,我们购买了最小系统板。
4.2 系统供电模块
比赛要求智能车电源只能使用指定型号的的7.2V 2000mAh Ni-Cd电池供电。在本智能车系统中,电源是其他模块工作的能量来源,电压不稳定、电量不足等都不能使系统稳定的运行,无法实现预期的功能,因而电源模块的搭建至关重要。
本智能车系统使用到的电源有:+5V、+3.3V、+7.2V(电池直接驱动电机)三部分。下面主要介绍5V和3.3V的稳压电路。
4.2.1 5V稳压电路
整个系统中,5V电源使用次数最多。单片机,路径检测模块,角度模块,测速模块,调试模块等很多电路都要用到电源。因此,在整个电源模块中,5V电源是要求最高的一个。本设计采用两片TPS76850稳压芯片进行稳压,获得两路5V电源,分别作为数字电源和模拟电源,给不同模块供电。这样可以减轻仅有一路5V电源时的供电压力,而且数字电源和模拟电源分开,可以保障电源质量,减小各模块之间的影响。电路如图4-2-1所示。
图4-2-1 5V稳压电路
4.2.2 3V稳压电路
在系统中,3.3V电源主要为加速度计供电,并为单片机提供参考电压,本设计采用AMS1117芯片进行稳压。电路如图4-2-2所示。
图4-2-2 5V稳压电路
4.3 电机驱动模块
电机驱动模块采用了英飞凌公司的大电流电机驱动半桥芯片BTS7960。BTS7960是应用于电机驱动的大电流半桥高集成芯片,它带有一个P沟道的高边MOSFET、一个N沟道的低边MOSFET和一个驱动IC。P沟道高边开关省去了电荷泵的需求因而减小了EMI。集成的驱动IC具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和过温、过压、欠压、过流及短路保护的功能。BTS7960通态电阻典型值为16mΩ,驱动电流可达43A。对于车的电机此驱动表现的很完美。驱动电路如图4-3所示。
图4-3 驱动电路
4.4 角度检测模块
角度数据采集的准确与否,直接关系到直立环节的直立效果,而在直立环节,速度环节,转向环节中,直立环节又是另外两个环节的基础,所以角度数据采集显得尤为重要。本设计采用的角度检测传感器为陀螺仪和加速度计。
4.4.1 陀螺仪
陀螺仪可以用来测量物体的旋转角速度。竞赛允许选用村田公司出品的ENC-03 系列的加速度传感器。本次设计采用的是ENC-03MB,它利用了旋转坐标系中的物体会受到科里奥利力的原理,在器件中用压电陶瓷做成振动单元。当旋转器件时会改变振动频率从而反映出物体旋转的角速度。通过单片机采集其输出的模拟电压值来得知车模产生的角加速度。电路图如图4-4-1所示。
图4-4-1 陀螺仪电路图
4.4.2 加速度计
对陀螺仪的输出值积分便可得到车体的角度,但由于陀螺仪的输出存在温飘,导致其积分值与实际角度存在一定误差。为了消除误差,需要用加速度计测取角度值,并通过运算来消除误差
图4-4-2 加速度计电路图
4.5 速度检测模块
速度控制环节中为了更好地控制小车的车速,需要用测速编码器实时测取小车的车速,以便进行闭环控制。本设计中采用的是157线编码器。小车运行过程中,首先通过编码器采集速度信息,然后传送给施密特触发器74HC14,经过施密特触发器处理后,将一路脉冲直接发给单片机T7口进行内部计数,另外一路发给计数器CD4520进行外部计数,单片机每10ms采集一次技术结果并清零。74HC14连接图如图4-5-1所示。CD4520连接图如图4-5-2所示。
图4-5-1 74HC14连接图
图4-5-2 CD4520连接图
4.6 路径检测模块
对于赛道信息的采集,本次设计采用线性CCD图像传感器来完成,线性CCD图像传感器可直接将光学信号转换为模拟电流信号,电流信号经过放大和模数转换,实现图像的获取、存储、传输、处理和复现。
本次设计采用TSL1401线性CCD模块,该模块以TAOS公司生产的TSL1401R芯片为核心,集成了一个高达128像素的线性阵列传感器以及一个专门用于线性CCD的透镜,可以看到一维的图像,并可以通过移动模块来获得二维图像。
4.7 系统调试模块
为了方便系统调试,我们增加了系统调试模块。除了4个状态显示灯以外,还有拨码开关,液晶按键模块,无线通讯模块。
4.7.1 拨码开关
针对道路的具体情况,通过拨码开关对一些可变参数进行设定,这可以使
得小车的适应能力更强。拨码开关部分的电路很简单,只须将开关变量直接接
入单片机就行了。其中使用单片机的PB4~7 口输入。电路图如下
图4-7-1 拨码开关
4.7.2 液晶按键模块
为了方便小车参数的调整,提高小车对各种路况的适应能力,我们添加了液晶按键模块。由于诺基亚5110液晶性价比高、接口简单、速度快,所以我们选用5110液晶。
图4-7-2 按键电路
4.7.3 无线通讯模块
将小车的运行状态通过无线模块发送给电脑,经上位机显示,可以更直观的观察小车各项参数在运行过程中的变化情况。这样有助于方案的调整和参数的设定。
第五章 软件算法设计
第五章 软件算法设计
在有了良好的机械结构和优秀的硬件电路基础后,整个控制系统的软件算法设计就可以逐一有效的展开,本章重点介绍本次智能车设计的主要控制思想及其算法的实现。
5.1 数字PID
PID(比例-积分-微分)控制器,即按闭环系统误差的比例、积分、微分进行控制的调节器作为最早实用化的控制器已有70多年历史,现在仍然是应用最广泛的工业控制器。PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。
与传统的连续PID相比,数字PID更为优越。因为计算机程序的灵活性,数字PID很容易克服连续PID控制中存在的问题,经修正而得到更完善的数字PID算法。
5.1.1 比例(P)控制
比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时,在比例控制器中系统输出存在稳态误差。控制器的输出信号Uo与输入信号ΔUi即偏差的大小成正比,即
(公式5.1)
5.1.2 积分(I)控制
在积分控制器中,控制器的输出信号Uo与输入信号ΔUi对时间的积分成正比,即
(公式5.2)
积分控制中,只要输入信号ΔUi存在,控制器的输出信号Uo就不断积累,系统的输出量逐渐趋向期望值,直至输入偏差信号ΔUi=0,系统进入稳态为止。无静差控制是积分控制的最大优点。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。因此,比例积分的控制器,可以使系统在进入稳态后无稳态误差。
5.1.3微分(D)控制
微分控制器针对被调量的变化率进行调节,可以调节被调量的变化趋势,及时避免出现大的偏差。在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,即:
(公式5.3)
这样,具有比例微分的控制器,就能够提前抑制误差的控制作用等于零,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例积分微分控制器能改善系统在调节过程中的动态特性。
比例(Kp)
输出
控制对象
输入
积分(Kp/TI*S)
微分(Kp*TD*S)
图5-1 实现PID控制的计算机控制系统
5.2 车模直立检测与控制
由于本次设计的智能车要求车模使用两个轮子直立行走,且两轮间有连轴杆连接,因而车模只可能在一个维度内沿着轮子滚动的方向前倾或者后倾,而不会在另外一个维度上出现不稳定。所以只需有效的测量出车模的倾角和角速度,通过控制车轮的前后移动来消除车模的倾角就可以使车模保持稳定的直立状态了。具体控制方案的理论计算分析详见参考文献1。
5.2.1 卡尔曼滤波
在车模运行过程中,车模的倾斜角度与角速度分别由加速度传感器和陀螺仪来检测。由于加速度计在工作中存在噪声,而陀螺仪存在温度漂移,这使得加速度计和陀螺仪的测量值在某种程度上都存在着一定的误差,为消除两个传感器自身的误差,获取准确的角度和角速度值,本智能车设计采用卡尔曼滤波器对测量值进行滤波处理,得到角度值和角速度值。
卡尔曼滤波器由一系列递归数学公式描述。它们提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波器应用广泛且功能强大:它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。
5.2.2 车模直立控制(PD调节器)
直立控制采用PD控制。积分参数I虽然能消除余差,但也会使系统震荡,所以不采用积分。PD控制可以使系统快速准确的稳定,因此采用PD控制。比例控制用到的角度和微分控制用到的角速度均为卡尔曼滤波后的所得值。
比例控制偏差来源于角度偏差,角度是用加速度计值和水平陀螺仪值通过卡尔曼滤波得来,微分控制偏差来源于水平陀螺仪值,当车模前后晃动时,时水平陀螺仪输出电压,为晃动时的角速度,即所需的微分值。当车模前倾时,通过控制时车模向前加速,使车模倾角较小,由于陀螺仪和加速度计的零点测定偏有差和陀螺仪有严重的温飘,使得车模并不能稳定的直立在某一点,而是向一个方向加速运动,这一点,将在下面的速度控制中解决。直立控制算法框图如图5-2-1所示。
图5-2 直立PD控制算法流程图
5.2.3 车模直立控制程序
void Angle_PID_ctrl(void)
{
Angle_new = QingJiao- Start_angle;
Angle_rate = Gyro_Data;
Angle_new += Angle_old;
Angle_new /= 2;
Angle_err_current = Angle_new;
Angle_Ctrl_out = Angle_err_current*Angle_P+ Angle_rate*Angle_D;
Angle_PWM = Angle_Ctrl_out;
/////////////////////////角度保护/////////////////////////////////////////////
if((Angle_err_current>30 || Angle_err_current<-50)&& (stand_flag == 2))
{
count++;
}
if((count>0)&&(Protect_flag==1))
{
PWMDTY01 = 0;
PWMDTY23 = 0;
PWMDTY45 = 0;
PWMDTY67 = 0;
LCD_write_english_string(0,0,"Angle!!");
PORTB_PB0 = 0;
while(1);
}
//////////////////////////////////////////////////////////////////////////
if(Angle_PWM > PWM_MAX)
{
Angle_PWM = PWM_MAX;
}
else
if(Angle_PWM < -PWM_MAX)
{
Angle_PWM = -PWM_MAX;
}
Angle_old = Angle_new;
Angle_err_last = Angle_err_current;
}
5.3 车速检测与调节
5.3.1 车模速度控制(PID调节器)
速度控制采用PID控制,其中,I参数能使车模稳定在给定速度附近,P参数能使车模更快的趋近稳定,D参数可以改善控制品质,提升控制效果。
图5-3 速度PID控制算法流程图
5.3.2 车模速度控制程序
Void Speed_Ctrl(void)//100ms 速度控制函数
{
left_speed = left_pulse_cout;
left_pulse_cout = 0;
right_speed = right_pulse_cout;
right_pulse_cout = 0;
left_speed += right_speed;
left_speed /= 2;
speed_add+=left_speed;
Speed_L_err_cur = SET_V - (float)left_speed;
fI = Speed_L_err_cur*Speed_I;
fP = Speed_L_err_cur*Speed_P;
fD = (Speed_L_err_cur-Speed_L_err_last)*Speed_D;
Speed_CtrlInteral += fI;
Speed_Out_old = Speed_Out_New;
Speed_Out_New = Speed_CtrlInteral+fP+fD;
p_n_flag_old = p_n_flag;
Speed_L_err_last = Speed_L_err_cur;
}
5.4 车模方向控制
5.4.1 车模方向控制(PD调节器)
方向控制采用PD调节,通过CCD采集数据,计算中心点位置,并与给定的中心点位置作比较,对其差值进行PD控制。
图5-4 方向PD控制算法流程图
5.4.2 车模方案控制程序
void Direction_Ctrl(void)//10ms 方向控制函数
{
Direction_Ctrl_Old = Direction_Ctrl_New;
Direc_err_0 = MID[0]-63;
Direction_Ctrl_New = Direc_err_0*Direc_P +(Direc_err_1-Direc_err_1)*Direc_D;
Direc_err_1 = Direc_err_0 ;
}
5.5 特殊路况的处理
在本届光电平衡车组的赛道上,增添了路障和坡道,并将虚线道的背景改成了白色,以增加比赛难度。遇到这种特殊路况,必须加入对应的程序进行处理,才能保证小车能够平稳快速的通过。
5.5.1 路障的处理
路障对智能车的抗干扰力要求比较高,并且对车的速度是一个限制,如果在运动过程中,小车不稳或是直立环的角度恢复力不够,以及车速过高都会导致小车无法顺利通过路障。
我们的处理方案是:CCD检测到路障后减速到一个可通过路障的速度,并以这个速度通过路障,通过路障后再恢复到原速度继续行进。
图5-5-1 路障处理流程图
5.5.2 白色背景的处理
在虚线处使用白背景,会使小车无法检测到无黑色胶带处的边界,致使小车无法计算出路径中心,不能正常前行。
我们的处理方案是:两侧都有边界时正常前行;当仅有一侧有边界时,用边界位置的数据值与赛道路宽的半值进行运算获得路径中心值参与方向控制;当两侧没有边界时,路径中心值沿用上次的数值。
图5-5-2 白色背景处理流程图
5.6 调试工具
前面给出的算法程序存在很多参数,虽然从理论上可以对这些参数进行优化计算。但是由于受到车模模型精度的影响,计算所得到的参数也只能够作为参考值——调试的起始范围。实际优化参数需要通过一定的工程步骤最终确定,这个过程称为参数整定。为了保证调试顺利,需要使用调试工具进行调试。
5.6.1 虚拟示波器
虚拟示波器能够实时显示程序运行采集到的各种数据,通过曲线显示出来,我们可以经过对波形进行分析,确定一些待定参数,判断程序BUG,加快程序调试,确定控制参数的优化数值。
图5-6-1 虚拟示波器
5.6.2 CCD调试工具
为了观察CCD图像,更好的调试CCD的前瞻,我们使用了CCD调试助手。由于,CCD调试助手每显示更新一次至少需要18ms,而在智能车正常运行时没有过长的时间用来发送CCD图像数据。为了能够更好的观测CCD图像的数据,且能实时的发送CCD采集的数据,我们使用了串口调试助手来实现。如图5-6-2和图5-6-3所示为CCD调试助手和串口调试助手的操作界面。
图5-6-2 CCD助手1
图5-6-3 串口调试助手
第六章 主要技术参数
表1 智能车主要技术参数
项目
参数
车体总重量(含电池)(克)
874
车模几何尺寸(毫米)
车长372
车宽163
车高215
电路总功耗(瓦)
10
电容总容量(微法)
1960
传感器种类及个数
陀螺仪 ×1
加速度计×1
编码器 ×2
CCD ×1
新增电机、伺服机个数(个)
0
赛道信息检测精度
赛道信息检测频率(次/秒)
编码器精度(P/r)
157
第七章 总结
春去秋至,我半年的大学时光,我半年的飞思卡尔。
在这半年时光里,虽有艰辛陪伴,但我们还是脚踏实地,一步一步地走了过来。随着智能车制作的深入,我们的收获就越来越多。在这里对这半年的智能车制作过程进行总结。
机械方面,智能车的重心和总重很重要。起先将电池从原位置降到了车轮位置便进行后面的工作了,但当车速到一定速度时,无论参数如何优化,速度总是提不上去。于是我们将电池和其他器件的位置尽量降到最低,同时优化方案,减轻车重,车速便又有了提高。在直立环节部分,我们开始使用的是清华方案中的滤波方法,但在后面提速过程中经常出现陀螺仪温飘导致小车在行进过程中减速甚至停车的现象。为了抑制温飘,我们采用了卡尔曼滤波法代替了原滤波方案。由于温飘得到了有效抑制,小车减速现象也大为改善。在速度环节部分,我们通过效果对比,放弃了增量式PID控制法,采用位置式PID控制法。在处理路障过程中,我们经过各种尝试,最终采用的是单CCD检测的方法。
虽然为我们制作智能车已经半年了,但我们的智能车还有很多可以改善的地方。为了减轻车的重量,在电路板上可以直接焊接128芯片,液晶模块应该选择更小更轻的类型。小车的倾角可以再加大以方便通过障碍。
经过半年的努力,我们学会了很多知识。在此要感谢老师的悉心指导和其他团队的帮助支持。同时感谢清华大学将这项很有意义的科技竞赛引入中国;感谢飞思卡尔公司和主办方为我们提供了一个展示自我的舞台。
参考文献
[1] 卓晴,黄开胜,邵贝贝.学做智能车:挑战“飞思卡尔”杯[M].北京:北京航空航天大学2007.3-5
[2] 张阳.吴晔.腾勤.MC9S12XS单片机原理及嵌入式系统开发[M].北京:电子工业出版社,2011.9
[3] 邵贝贝.单片机嵌入式应用的在线开发方法.清华大学出版社.2004
[4] 孙同景,陈桂友.Freescale 9S12 十六位单片机原理及嵌入式开发技术[M].北京:机械工业出版社,2008.8
[5] 徐士良.常用算法程序集:C 语言描述.清华大学出版社.2004
[6] 张涛.李家启.基于参数自整定模糊PID 控制器的设计与仿真.交通与计算机. 2001 年第19 期
[7] 王毅敏.马丽英等. 一种改进的数字PID 控制算法及其在励磁系统中的应用电网技术[J].1998
附录A 部分源程序代码
附录A 部分源程序代码
#include "main.h"
#define TSL_SI PORTA_PA2 //定义线性传感器的端口 SI
#define TSL_CLK PORTA_PA0 //定义线性传感器的端口 CLK
#define BUSCLOCK64M
#define MID_ANGLE 0
#define PWM_MAX 3099
#define MOTOR_DEADVAL 100
#define FORWARD_MOTOR_DEADVAL MOTOR_DEADVAL
#define BACK_MOTOR_DEA