资源描述
学 号_ 1109111015
毕 业 设 计
课程名称 基于飞思卡尔k60芯片控制下的智能汽车
学生姓名 皇甫 趁心
院 部 电气工程学院
专业班级 11自动化
指导教师 臧 大 进
2015年5月
摘要
智能汽车技术是一种在无人干预的情况下自动跟踪预定轨迹,最终实现自动驾驶的高新技术。智能车辆系统的基本功能是,利用各类传感器感知环境信息,做出控制决策,使得车辆按照期望路线行驶或到达期望目标点。智能汽车的设计涉及计算机科学、传感器检测、多元信息融合、信息通讯、人工智能与模式识别以及自动控制等多个领域的交叉技术。
从第五届的电磁组开始到第九届比赛,电磁小车已经在智能车的赛道上奔驰了5年,从第六届取消了前瞻长度的限制,电磁车速度开始有了质的飞跃,第七届改成直立状态行走后,虽然对速度有一定的影响,但也以其独特魅力和新的技术挑战让参赛者向往不已,第八届改回四轮行进方式并采用了A车模,小车的速度再次出现大幅提升,第九届电磁组小车依然从采用四轮行进,不过组委会为电磁组添加了直角道,增加了电磁组的难度。
本文中,我们小组通过对小车设计制作整体思路、电路、算法、调试、车辆四轮定位等的介绍,详尽地阐述了我们的创意和思路,具体表现为软件的升级改进,硬件电路的删减改进以及车辆机械参数的调配,特别是对算法的改进,我们花了不少的心血,从之前的对算法的似懂非懂,到后来对程序的大打删改,我们不知道出现过多少错误,也不知道遇到多少挫折,最终写出了一套属于我们自己适合我们自己小车的程序算法。
从参赛前的校内选拔到比赛的结束,我们程方如意对遇到了很多的困难和挫折,从刚开始的浮夸到后来的急躁再到最终我们心爱的小车成功的跑起来,我们查阅了很多的相关资料,涉猎控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科,通过这次比赛,我们对我们的专业知识有了更深的认识,学到了我们从书上学习不到的知识,我们学会了团结,学会了注意细节,只有团结,抓住每一个细节,才能把事情做成功!在这次比赛中我们受到了许多人的帮助,其中最要感谢的是我们的指导老师臧大进老师,感谢您在整个比赛中对我们的指导和帮助,其次还有帮助我们的学长,以及各位同仁、网友,没有你们我们也走不到今天,再次也一一感谢!最后我要特别感谢我的两位队友,是他们把我带上了飞思卡尔智能汽车这条道路,并一路支持和帮助我一起解决各类问题,正是我们三个团结一致,精诚合作才有了我们最后的成功!谢谢你们。
目 录
摘要 - 1 -
第一章 方案设计 - 4 -
1.1系统总体方案的设计 - 4 -
1.2系统总体方案设计图 - 7 -
第二章 智能车机械结构调整与优化 - 8 -
2.1智能车车体机械建模 - 8 -
2.2智能车前轮定位的调整 - 9 -
2.2.1前轮前束 - 9 -
2.2.2主销后倾角 - 11 -
2.2.3主销内倾角 - 11 -
2.2.4车轮外倾角 - 11 -
2.3智能车转向机构调整优化 - 12 -
2.4智能车后轮减速齿轮机构调整 - 13 -
2.5 编码器的安装 - 14 -
2.6 智能车重心位置的调整 - 14 -
2.7其它机械结构的调整 - 14 -
第三章 电路设计说明 - 16 -
3.1 主控板和驱动板的硬件设计 - 16 -
3.1.1 电源管理模块 - 16 -
3.1.2 电机驱动模块 - 18 -
3.1.3 数模信号转换 - 19 -
3.1.4 单片机及其他电路部分设计 - 19 -
3.2 智能车传感器模块设计 - 22 -
3.2.1电感传感器的原理 - 22 -
3.2.2磁传感器信号处理电路 - 22 -
3.2.3传感器的布局原理及改进 - 25 -
第四章 智能车控制软件设计说明 - 28 -
4.1底层初始化 - 28 -
4.2传感器采集处理算法 - 29 -
4.3寻线行驶算法实现 - 30 -
4.3.1定位算法 - 30 -
4.3.2基于位置式PID的方向控制 - 32 -
4.3.3基于增量式PID的速度控制 - 34 -
4.3弯道策略分析 - 34 -
4.4弯道策略制定 - 36 -
第五章 开发工具、制作、安装、调试过程说明 - 39 -
5.1 开发工具 - 39 -
5.2 调试过程 - 39 -
5.2.1 上位机系统 - 39 -
5.2.2 控制算法的参数整定 - 41 -
5.3 整车机械方面的调整 - 42 -
第六章 模型车的主要技术参数说明 - 43 -
结论 - 44 -
参考文献 - 45 -
第一章 方案设计
本章主要简要地介绍智能车系统总体设计思路,在后面的章节中将整个系统分为机械结构、控制模块、控制算法等三部分对智能车控制系统进行深入的介绍分析。
1.1系统总体方案的设计
根据第九届飞思卡尔组委会公布的竞赛规则及相关规定,智能车系统采用大赛组委会统一提供的C型车模,控制器我们则选择了组委会允许下的32位微控制器k60作为核心控制器,在IAR开发环境中进行软件开发。赛车的位置信号由车体前方固定在前瞻上的六路电磁传感器采集,经内部AD进行模数转换后,加以处理后输入到控制核心,作为处理智能车运动控制的核心信息。通过欧普龙(500线)编码器(两个)测速模块来检测车速,并采用K60 的输入捕捉功能进行脉冲计数计算速度及差速控制;电机转速控制采用 PID 控制,通过 PWM 控制驱动电路调整电机的转速,完成智能车速度的闭环控制。
图1.1.1 电磁车整体布局
我们使用红树伟业的 BLK-MD-BC04-B蓝牙模块与上位机通讯,发送小车运行的各项参数,从而对小车进行调试。
图1.1.2蓝牙模块
产品特征:
1、电源电压3.3V,未配对时电流约2-10mA,配对后约20mA,绝对禁止接反电源!
2、接口电平3.3V,可以直接连接各种单片机(51,AVR,PIC,ARM,MSP430等),5V单片机也可直接连接,无需MAX232也不能经过MAX232!
3、led引脚指示蓝牙连接状态,输出脉冲表示没有蓝牙连接,输出高表示蓝牙已连接并打开了端口
状态指示LED:PIO(1)
用于指示蓝牙模块所处状态,LED灯闪烁方式与蓝牙模块状态对应见下表:
4、模块与电脑接,接MAX3232芯片后接到电脑的串口
5、空旷地有效距离15米左右,但不对此距离的连接质量做保证
6、配对以后当全双工串口使用,无需了解任何蓝牙协议,但仅支持8位数据位、1位停止位、无奇偶校验的通信格式,这也是最常用的通信格式,不支持其他格式。
7、在未建立蓝牙连接时支持通过AT指令设置波特率、名称、配对密码,设置的参数掉电保存。蓝牙连接以后自动切换到透传模式
8、体积小巧(2.7cm*1.3cm),工厂贴片生产,保证贴片质量。
9、该链接为从机,从机能与各种带蓝牙功能的电脑、蓝牙主机、大部分带蓝牙的手机、PDA、PSP等智能终端配对,从机之间不能配对
主从模式设置:
硬件设置:
主模式:1、将PI0(4)—软/硬件主从设置口:置低(或悬空)为硬件设置主从模式
2、将PIO(5)—硬件主从设置口:置3.3V高电平
从模式:1、将PI0(4)——软/硬件主从设置口:置低(或悬空)为硬件设置主从模式
2、将PIO(5)——硬件主从设置口:置地(或悬空)
软件设置:
主模式:1、将PI0(4)——软/硬件主从设置口:置3.3V高电平
2、打开超级终端或其他串口调试工具设置波特率9600,数据位8位,停止位1位,无校验位,无流控制。
3、串口发送字符“AT+ ROLE1 \r\n”,成功返回“+ROLE=1\r\n OK\r\n”,其中\r\n为回车换行
从模式:1、将PI0(4)——软/硬件主从设置口:置3.3V高电平
2、打开超级终端或其他串口调试工具设置波特率9600,数据位8位,停止位1位,无校验位,无流控制。
3、串口发送字符“AT+ ROLE0 \r\n”,成功返回“+ROLE=0\r\n OK\r\n”,其中\r\n为回车换行
为简便实用,我们采用了硬件设置方案。
1.2系统总体方案设计图
K60微控制器
欧普龙编码器
直流电机
电机驱动模块
舵机转向控制
蓝牙莫款
六路电感传感器
上位机
干簧管
键盘,拨档开关
运放模块
图1.2系统总体方框图
根据以上系统方案设计,赛车共包括七大模块:四轮定位、K60主控模块、传感器模块、电源模块、电机驱动模块、速度检测模块、蓝牙调试模块。各模块的作用如下:
四轮定位,从机械方面提高智能车的性能指标不容忽视。
K60主控模块,作为整个智能车的“大脑”,将采集10mh电感传感器放大信号、欧普龙编码器脉冲信号等,根据所编写控制算法做出控制决策,驱动直流电机和伺服电机运行从而完成对智能车的控制。
电感传感器模块,是智能车的“眼睛”,可以通过一定的前瞻性,提前感知前方的赛道信息,为智能车的“大脑”做出决策提供必要的依据和充足的反应时间。
电源模块,为整个电路系统提供稳定电源。
电机驱动模块,驱动直流电机和伺服电机完成智能车的加减速控制和转向控制。
速度检测模块,检测反馈智能车后轮的转速,用于速度的闭环控制。
蓝牙调试模块主要用于智能车系统的功能调试、赛车状态监控等方面。
第二章 智能车机械结构调整与优化
智能车系统任何的控制都是在一定的机械结构基础上实现的,因此在设计整个软件架构和算法之前一定要对整个车模的机械结构有一个感性的认识,然后建立相应的数学模型。从而再针对具体的设计方案来调整赛车的机械结构,并在实际的调试过程中不断的改进和提高。本章将主要介绍智能车车模的机械结构和调整方案。
2.1智能车车体机械建模
此次比赛选用的赛车车模采用A型车模。赛车机械结构只使用竞赛提供车模的底盘部分及转向和驱动部分。控制采用前轮转向,后轮驱动方案。
我们对机械结构的要求是:简单而高效。我们在不断的尝试后确定了以下的设计方案:
图2.1 智能车器件布局图
2.2智能车前轮定位的调整
现代汽车在正常行驶过程中,为了使汽车直线行驶稳定,转向轻便,转向后能自动回正,减少轮胎和转向系零件的磨损等,在转向轮、转向节和前轴之间须形成一定的相对安装位置,叫车轮定位,其主要的参数有:主销后倾、主销内倾、车轮外倾和前束。智能车竞赛模型车的四项参数都可以调整,但是由于模型车加工和制造精度的问题,在通用的规律中还存在着一些偶然性。
2.2.1前轮前束
为什么要有前束?
1.首先,为了使司机握的方向盘能够自动保持在中央,不乱转,减轻司机的疲劳,就要使主轴后倾。这就如同自行车的前叉子后倾一样,可以使双手轻松。
2.但是,主轴后倾之后,前轮会有高速的小摆动,使车身不稳。为了克服前轮的小摆动,就要失主销外倾,速度越慢,道路越不平,则需要主销外倾的角度越大,如四轮拖拉机。由于两个前轮外倾的方向相反,互相抵消了前轮的小摆动,车身更加平稳了。
3.但是,随之而来的是:由于主销外倾,前轮也是外倾的,这样前轮就有一个向外拐的趋势,也就是左侧的前轮向左拐,右侧的前轮向右拐,前轮又被安装在车上,拐不了,因此造成轮胎的严重磨损。前束就是为了解决这个磨损问题的,将两侧的轮子向内侧撇一个角度,正好抵消主销外倾造成的轮胎跑偏,使轮胎可以沿直线前进,这样就没有干磨的现象了,从而达到了降低轮胎磨损的目的。
这就是前束的来历,它最初是从减轻司机的劳动强度入手的,一环一环演变而来的。主轴后倾----主销外倾----前束,一环扣一环。
当车辆使用很长时间后,用户发现方向转向沉重、发抖、跑偏、不正、不归位或者轮胎单边磨损,波状磨损,块状磨损,偏磨等不正常磨损,以及用户驾驶时,车感漂浮、颠簸、摇摆等现象出现时,就应该考虑检查一下车轮定位值,看看是否偏差太多,及时进行修理。
前轮定位包括主销后倾角、主销内倾角、前轮外倾角和前轮前束四个内容。后轮定位包括车轮外倾角和逐个后轮前束。这样前轮定位和后轮定位总起来说叫车轮定位,也就是常说的四轮定位。车轮定位的作用是使汽车保持稳定的直线行驶和转向轻便,并减少汽车在行驶中轮胎和转向机件的磨损。
主销后倾角:
从侧面看车轮,转向主销(车轮转向时的旋转中心)向后倾倒,称为主销后倾角。设置主销后倾角后,主销中心线的接地点与车轮中心的地面投影点之间产生距离(称作主销纵倾移距,与自行车的前轮叉梁向后倾斜的原理相同),使车轮的接地点位于转向主销延长线的后端,车轮就靠行驶中的滚动阻力被向后拉,使车轮的方向自然朝向行驶方向。设定很大的主销后倾角可提高直线行驶性能,同时主销纵倾移距也增大。主销纵倾移距过大,会使转向盘沉重,而且由于路面干扰而加剧车轮的前后颠簸。
主销内倾角:
从车前后方向看轮胎时,主销轴向车身内侧倾斜,该角度称为主销内倾角。当车轮以主销为中心回转时,车轮的最低点将陷入路面以下,但实际上车轮下边缘不可能陷入路面以下,而是将转向车轮连同整个汽车前部向上抬起一个相应的高度,这样汽车本身的重力有使转向车轮回复到原来中间位置的效应,因而方向盘复位容易。
此外,主销内倾角还使得主销轴线与路面交点到车轮中心平面与地面交线的距离减小,从而减小转向时驾驶员加在方向盘上的力,使转向操纵轻便,同时也可减少从转向轮传到方向盘上的冲击力。但主销内倾角也不宜过大,否则加速了轮胎的磨损。
前轮外倾:
从前后方向看车轮时,轮胎并非垂直安装,而是稍微倾倒呈现“八”字形张开,称为负外倾,而朝反方向张开时称正外倾。使用斜线轮胎的鼎盛时期,由于使轮胎倾斜触地便于方向盘的操作,所以外倾角设得比较大。现在汽车一般将外倾角设定得很小,接近垂直。汽车装用扁平子午线轮胎不断普及,由于子午线轮胎的特性(轮胎花纹刚性大,外胎面宽),若设定大外倾角会使轮胎磨偏,降低轮胎摩擦力。还由于助力转向机构的不断使用,也使外倾角不断缩小。尽管如此,设定少许的外倾角可对车轴上的车轮轴承施加适当的横推力。
前轮前束:
脚尖向内,所谓“内八字脚”的意思,指的是左右前轮分别向内。采用这种结构目的是修正上述前轮外倾角引起的车轮向外侧转动。如前所述,由于有外倾,方向盘操作变得容易。另一方面,由于车轮倾斜,左右前轮分别向外侧转动,为了修正这个问题,如果左右两轮带有向内的角度,则正负为零,左右两轮可保持直线行进,减少轮胎磨损。
所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线的夹角。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。像内八字那样前端小后端大的称为“前束”,反之则称为“后束”或“负前束”。
在模型车中,前轮前束是通过调整伺服电机带动的左右横拉杆实现的。主销在垂直方向的位置确定后,改变左右横拉杆的长度即可以改变前轮前束的大小。在实际的调整过程中,我们发现较小的前束,约束02mm可以减小转向阻力,使模型车转向更为轻便,但实际效果不是十分明显。
虽然模型车的主销后倾角、主销内倾角、车轮外倾角和前束等均可以调整,但是由于车模加工和制造精度的问题,在通用的规律中还存在着不少的偶然性,一切是实际调整的效果为准。
2.2.2主销后倾角
主销后倾角是指在纵向平面内主销轴线与地面垂直线之间的夹角。它在车辆转弯时会产生与车轮偏转方向相反的回正力矩,使车轮自动恢复到原来的中间位置上。所以,主销后倾角越大,车速越高,前轮自动回正的能力就越强,但是过大的回正力矩会使车辆转向沉重。通常主销后倾角值设定在1°到3°。
模型车通过增减黄色垫片的数量来改变主销后倾角的,由于竞赛所用的转向舵机力矩不大,过大的主销后倾角会使转向变得沉重,转弯反应迟滞,所以设置为0°,以便增加其转向的灵活性。
2.2.3主销内倾角
主销内倾角是指在横向平面内主销轴线与地面垂直线之间的夹角,它的作用也是使前轮自动回正。角度越大前轮自动回正的作用就越强,但转向时也就越费力,轮胎磨损增大;反之,角度越小前轮自动回正的作用就越弱。通常汽车的主销内倾角不大于8°。
对于模型车,通过调整前桥的螺杆的长度可以改变主销内倾角的大小,由于过大的内倾角也会增大转向阻力,增加轮胎磨损,所以在调整时可以近似调整为0°3°左右,不宜太大。
主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时主销后倾的回正作用大,低速时主销内倾的回正作用大。
2.2.4车轮外倾角
前轮外倾角是指通过车轮中心的汽车横向平面与车轮平面的交线与地面垂线之间的夹角,对汽车的转向性能有直接影响,它的作用是提高前轮的转向安全性和转向操纵的轻便性。在汽车的横向平面内,轮胎呈“八”字型时称为“负外倾”,而呈现“V”字形张开时称为正外倾。如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。所以事先将车轮校偏一个正外倾角度,一般这个角度约在1°左右,以减少承载轴承负荷,增加零件使用寿命,提高汽车的安全性能。
模型车提供了专门的外倾角调整配件,近似调节其外倾角。由于竞赛中模型主要用于竞速,所以要求尽量减轻重量,其底盘和前桥上承受的载荷不大,所以外倾角调整为0°即可,并且要与前轮前束匹配。
2.3智能车转向机构调整优化
理想的转向模型,是指在轮胎不打滑时,忽略左右两侧轮胎由于受力不均产生的变形,忽略轮胎受重力影响下的变形时车辆的的转向建模。在这种理想的模型下,车体的转向半径可以计算得到。
图2.2 智能车转向示意图
如图2.2,假设智能车系统为理想的转向模型,且其重心位于其几何中心。车轮满足转向原理,左右轮的轴线与后轮轴线这三条直线必然交于一点。
转向机构在车辆运行过程中有着非常重要的作用。合适的前桥和转向机构可以保证在车辆直线行驶过程中不会跑偏,能保证车辆行驶的方向稳定性;而在车辆转向时,合适的转向机构可以使车辆自行回到直线行驶状态,具有好的回正性。正是由于这些原因,转向系统优化设计成为智能车设计中机械结构部分的重点,直接关系到赛车能否顺利地完成比赛。在实际操作中,我们通过理论计算的方案进行优化,然后做出实际结构以验证理论数据,并在实际调试过程中不断改进。
在模型车制做过程中,赛车的转向是通过舵机带动左右横拉杆来实现的。转向舵机的转动速度和功率是一定,要想加快转向机构响应的速度,唯一的办法就是优化舵机的安装位置和其力矩延长杆的长度。由于功率是速度与力矩乘积的函数,过分追求速度,必然要损失力矩,力矩太小也会造成转向迟钝,因此设计时就要综合考虑转向机构响应速度与舵机力矩之间的关系,通过优化得到一个最佳的转向效果。经过最后的实际的参数设计计算,最后得出一套可以稳定、高效工作的参数及机构。
如图2.3,我们最终设计的这套转向拉杆,我们综合考虑了速度与扭矩间的关系,并根据模型车底盘的具体结构,简化了安装方式,实现了预期目标。
图2.3 转向拉杆图
2.4智能车后轮减速齿轮机构调整
模型车后轮采用RS-380SH 双电机驱动,电机轴与后轮轴之间的传动比为 18:76(电机轴齿轮齿数为18,后轴传动齿数为76)。齿轮传动机构对车模的驱动能力有很大的影响。齿轮传动部分安装位置的不恰当,会大大增加电机驱动后轮的负载,会严重影响最终成绩。调整的原则是:两传动齿轮轴尽量保持平行, 齿轮间的配合间隙要合适,过松容易打坏齿轮,造成不必要的麻烦,过紧又会增加传动阻力,影响速度及增大功耗;传动部分要轻松、顺畅,不能有迟滞或周期性振动的现象。判断齿轮传动是否良好的依据是,听一下电机带动后轮空转时的声音。声音刺耳响亮,说明齿轮间的配合间隙过大,传动中有撞齿现象;声音闷而且有迟滞,则说明齿轮间的配合间隙过小,或者两齿轮轴不平行,电机负载变大。调整好的齿轮传动噪音很小,并且不会有明显碰撞类的杂音,后轮减速齿轮机构就基本上调整好了,动力传递十分流畅。
2.5 编码器的安装
为了提高精度,本车使用了日本欧普龙公司生产的欧普龙500线编码器。使用红树伟业公司生产的编码器支架很好的固定了两个编码器。
图2.4 编码器安装
2.6 智能车重心位置的调整
为了达到较远前瞻,必须把电感架到较远的位置,会引起车重心特别靠前,后轮正压力不足导致甩尾。为了使重心后移,我们尝试了很多传感器支架的搭建方式,使得保证结构稳定的前提下尽量减轻重量。同时,我们把舵机和电池均往后移,达到了预期的效果。
2.7其它机械结构的调整
另外,在模型车的机械结构方面还有很多可以改进的地方,比如说车轮、悬架、底盘、车身高度等。
模型车在高速的条件下(2.3m/s3.5m/s),由于快速变化的加减速过程,使得模型车的轮胎与轮辋之间很容易发生相对位移,可能导致在加速时会损失部分驱动力。在实验中调试表明,赛车在高速下每跑完一圈,轮胎与轮辋之间通常会产生几个厘米的相对位移,严重影响了赛车的加速过程。为了解决这个问题,我们在实际调试过程中对车轮进行了粘胎处理,可以有效地防止由于轮胎与轮辋错位而引起的驱动力损失的情况。
此外,我们还对车身高度,以及底盘的形状和质量等,都进行了相应的改进和调整,均取得了不错效果。
第三章 电路设计说明
3.1 主控板和驱动板的硬件设计
3.1.1 电源管理模块
为满足需要,本车模上存在4种供电电压:
1)智能车使用镍镉充电电池,充满时电压在7.2~8.2V。直接用于电机供电。
2)欧普龙编码器及蓝牙(也可3.3V)使用5V供电,5V电源选用型稳压芯片LM2940CT-5.0直插封装芯片,。
3)使用3.3V为单片机以及运算放大器供电,采用线性稳压芯片AMS1117-3.3芯片,输入端接5V的LM2940CT-5.0芯片输出端。
4)电机驱动模块使用直流12V,使用一款5-12V 升压电源模块。
5)舵机驱动我们则创造性的采用了二极管直接降压的手段,效果很好。
该部分电路如图3.1所示。
图3.1 .1电源管理模块原理图
3.1.2第一次电路板
3.1.3第二次电路板
3.1.4成型焊接电路板(参赛)
3.1.2 电机驱动模块
电机驱动电路为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四支 N 沟道功率 MOSFET 管组成,额定工作电流可以轻易达到 100A 以上,大大提高了电动机的工作转矩和转速。该驱动器主要由以下部分组成: PWM信号输入接口、逻辑换向电路、死区控制电路、电源电路、上桥臂功率 MOSFET 管栅极驱动电压泵升电路、功率 MOSFET 管栅极驱动电路、桥式功率驱动电路、缓冲保护电路等。
该部分原理图如图3.2所示。
图3.2 电机驱动模块原理图
3.1.3 数模信号转换
K60的内部有各种精度的AD接口,而且使用方便,所以我们则直接使用k60内部AD,从而也简化了部分电路。我们使用了六路传感器,从而引出三个LMV358双运放六个AD接口。其接线方法如图3.3所示。
图3.3接线图
3.1.4 单片机及其他电路部分设计
核心控制单元:K60(主频128MHz,FlashRom512KB,具备SPI,SCI,IIC等常用接口),根据需要引出适量的管脚。如图3.4所示。
图3.4 单片机
测速:在电机侧方通过编码器支架固定欧普龙编码器,当电机转动时带动编码器转动,从而产生矩形波,再由单片机输入捕捉周期记录脉冲数据此获取速度信息。用欧普龙编码器(500线)测速要比光电编码盘精度高很多。测速模块供给主板的信号要经过整波,使用上拉电阻提高其峰值电压,再使用三态门将波形整为矩形波(具体使用相见欧普龙编码器使用说明)。测试模块实物如图3.5所示。
图3.5.2码盘
图3.5.2 测速模块
人机交互:拨档开关用于输入参数,设定车速,策略调整,用蓝牙模块小车状态便于调试。
该部分整体电路如图3.6所示。
图3.6 拨码开关
3.2 智能车传感器模块设计
根据飞思卡尔组委会的出台的相关规定,我们查阅相关资料看,向前辈请教,最终选择了10mH的工字电感作为我们道路识别的电磁传感器,这种电感得到感应电动势曲线是较为规整的正弦波,频率和赛道电源频率一致,为20kHz,幅值较其他型号的大,且随导线距离变化,规律为近大远小。
3.2.1电感传感器的原理
根据电磁学里的相关原理,我们知道在导线中通入变化的电流(如按正弦规律变化的电流),则导线周围会产生变化的磁场,且磁场与电流的变化规律具有一致性。如果在此磁场中置一由线圈组成的电感,则该电感上会产生感应电动势,且该感应电动势的大小和通过线圈回路的磁通量的变化率成正比。由于在导线周围不同位置,磁感应强度的大小和方向不同,所以不同位置上的电感产生的感应电动势也应该是不同。据此,则可以确定电感的大致位置。
3.2.2磁传感器信号处理电路
确定使用电感作为检测导线的传感器,但是其感应信号较微弱,且混有杂波,所以要进行信号处理。要进行以下三个步骤才能得到较为理想的信号:信号的滤波,信号的放大,信号的检波。
1)信号的滤波
比赛选择20kHz的交变磁场作为路径导航信号,在频谱上可以有效地避开周围其它磁场的干扰,因此信号放大需要进行选频放大,使得20kHz 的信号能够有效的放大,并且去除其它干扰信号的影响。使用 LC并联谐振电路来实现选频电路(带通电路),如图2.9所示。
图3.7 LC并联电路
其中,E是感应线圈中的感应电动势,L是感应线圈的电感值,R0是电感的内阻,C 是并联谐振电容。电路谐振频率为:
(2.1)
已知感应电动势的频率=20kHz,感应线圈电感为L=10mH,可以计算出谐振电容的容量为C=6.33×10-9 F 。通常在市场上可以购买到的标称电容与上述容值最为接近的电容为 6.8nF,所以在实际电路中选用 6.8nF的电容作为谐振电容。
2)信号的放大
由第一步处理后的电压波形已经是较为规整的20kHz正弦波,但是幅值较小,随着距离衰减很快,不利于电压采样,所以要进行放大,官方给出的如下参考方案即用三极管进行放大,但是用三极管放大有一个不可避免的缺点就是温漂较大,而且在实际应用中静电现象严重。
图3.8 共射三极管放大电路
因此我们放弃三极管放大的方案,而是采用集成运放进行信号的放大处理,集成运放较三极管优势是准确受温度影响很小,可靠性高。集成运放放大电路有同相比例运算电路和反相比例运算电路,我们在实际中使用反相比例运算电路。由于运放使用单电源供电,因此在同相端加vcc/2的基准电位,基准电位由电阻分压得到。
3)信号的检波
测量放大后的感应电动势的幅值E可以有多种方法。 最简单的方法就是使用二极管检波电路将交变的电压信号检波形成直流信号,然后再通过单片机的AD采集获得正比于感应电压幅值的数值。
我们采用的为竞赛组委会给出的第一种方案即使用两个二极管进行倍压检波。倍压检波电路可以获得正比于交流电压信号峰峰值的直流信号。为了能够获得更大的动态范围, 倍压检波电路中的二极管推荐使用肖特基二极管或者锗二极管。由于这类二极管的开启电压一般在0.1~0.3V左右,小于普通的硅二极管(0.7V),可以增加输出信号的动态范围和增加整体电路的灵敏度。这里选用常见的的肖特基二极管1N5817。
最终方案确定如下
图3.10最终方案
3.2.3传感器的布局原理及改进
对于直导线,当装有小车的中轴线对称的两个线圈的小车沿其直线行驶,即两个线圈的位置关于导线对称时,则两个线圈中感应出来的电动势大小应相同、且方向亦相同。若小车偏离直导线,即两个线圈关于导线不对称时,则通过两个线圈的磁通量是不一样的。这时,距离导线较近的线圈中感应出的电动势应大于距离导线较远的那个线圈中的。根据这两个不对称的信号的差值,即可调整小车的方向,引导其沿直线行驶。
对于弧形导线,即路径的转弯处,由于弧线两侧的磁力线密度不同,则当载有线圈的小车行驶至此处时,两边的线圈感应出的电动势是不同的。具体的就是,弧线内侧线圈的感应电动势大于弧线外侧线圈的,据此信号可以引导小车拐弯。
另外,当小车驶离导线偏远致使两个线圈处于导线的一侧时,两个线圈中感应电动势也是不平衡的。距离导线较近的线圈中感应出的电动势大于距离导线较远的线圈。由此,可以引导小车重新回到导线上。
由于磁感线的闭合性和方向性,通过两线圈的磁通量的变化方向具有一致
性,即产生的感应电动势方向相同,所以由以上分析,比较两个线圈中产生的感应电动势大小即可判断小车相对于导线的位置,进而做出调整,引导小车大致循线行驶。
采用双水平线圈检测方案,在边缘情况下,其单调性发生变化,这样存在一个定位不清的区域(如图3.11箭头所指)。同一个差值,会对应多个位置,不利于定位。另外,受单个线圈感应电动势的最大距离限制,两个线圈的检测广度很有限。
图3.11 双线圈差值法有定位不清区域
现提出一种优化方案:5个垂直放置的电感按“一”字排布,每个电感相距约为5cm(见图3.12),这样覆盖赛道范围约为25cm。三个“一”字排布的电感可以大大提高检测密度和广度,向前有两个电感,最可以提高前瞻,改善小车入弯状态和路径,两个45°的电感,可以改善入弯和出弯的姿态。
图3.12工字电感布局
第四章 智能车控制软件设计说明
控制程序是比赛过程中的重点,一辆小车的能否跑起来主要看硬件是否稳定,一辆小车的跑的快慢,成绩好坏则很大程度上决定于控制算法。控制程序是人的思想在车模体现,程序要体系化,模块化,稳定化,目标是将硬件电路和机械性能发挥到最大,让车模用最快的速度完成比赛。
4.1底层初始化
编写初始化函数void All_Init(void)
void All_Init(void)
{
uart_init (UART0,9600);
pit_init_ms(PIT0,1);
pit_init_ms(PIT1,9);
adc_init(ADC1,SE4a);//电感1输入,硬件接口E0
adc_init(ADC1,SE5a);//电感2输入,硬件接口E1
adc_init(ADC1,SE6a);//电感3输入,硬件接口E2
adc_init(ADC1,SE7a);//电感4输入,硬件接口E3
adc_init(ADC0,SE17);//电感1输入,硬件接口PTE24
adc_init(ADC0,SE18);//电感2输入,硬件接口PTE25
gpio_init (PORTD, 8, GPI,1);
gpio_init (PORTD, 9, GPI,1);
gpio_init (PORTD, 10, GPI,1);
//exti_init(PORTB, 3, falling_up);
gpio_init (PORTD, 11, GPI,0);
gpio_init (PORTD, 12, GPI,0);
gpio_init (PORTD, 13, GPI,0);
gpio_init (PORTD, 14, GPI,0);
gpio_init (PORTD, 15, GPI,0);
exti_init(PORTB,3,falling_up);
FTM_PWM_init(FTM0,CH4,50, 0);//舵机控制PWM波输出,硬件接口C2
FTM_PWM_init(FTM1,CH0,15000, 0); //电机PWM波控制输出,硬件接口C3
FTM_PWM_init(FTM1,CH1,15000, 0);//FTM_PRECISON为10000u
FTM_PWM_init(FTM2,CH0,15000, 0); //电机PWM波控制输出,硬件接口A1
FTM_PWM_init(FTM2,CH1,15000, 0);
DMA_count_Init(DMA_CH0, PTA19, 65535, DMA_rising);
//DMA_count_Init(DMA_CH1, PTC5, 65535, DMA_rising);
//lptmr_counter_init(LPT0_ALT1,65535,2, LPT_Rising);//LPT 测速硬件接口c5 PTA19
}
4.2传感器采集处理算法
编写采集滤波函数void Get_Average(void) ,其功能是AD口多次采集某个通道(对应某个电感)的电压值,然后求其平均值,从而达到滤波的作用,然后说返回给函数。
多次采集求平均值的原因是由于系统中存在噪声或干扰,进行算法滤波抑制和防止干扰是必要的措施。在这里选择“加权递推平均滤波法”。定义一个循环队列,把连续取N个采样值入队,假设队列的长度为N,每次采样到一个新数据放入队尾,队满后对首数据出队原队首位置成为队尾并入队(即始终保持队列中的N个数据为最新)。越接近现时刻的数据,权取得越大。把队列中的N个数据进行加权平均运算,就可获得新的滤波结果。特点是给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越差。优点是适合采样周期较短的系统,改变权重即可调整灵敏度。
该滤波器采集某一通道数据N次,然后进行滤波计算,流程图如图4.1所示:
新采集6个通道数据各一次
更新队列,数据入队
继续采集
将形成的队列进行加权计算平均值,越早的数据权重越小,越新的数据权重越大
得出新的平均值
图4.1 加权递推平均滤波流程图
4.3寻线行驶算法实现
4.3.1定位算法
图3.12所示传感器的寻线原理:某一时刻,采五个“一”字排布的电感的感应电动势,找出一个感应电动势最大的电感(计为M),导线必然会离这个电感最近。然后读出该电感相邻左右两个电感的值(分别计为L和R)。会有以下三种情况:
当L值大于R值,说明导线在L和M之间;
当L值小于R值,说明导线在R和M之间;
当L值约等于R值,说明导线在M正上。
对于特殊情况,如M在最左或最后,缺相邻的L或R,可直接将导线位置定位于M,且由M值大小得出远离程度。该情况说明传感器偏离赛道很严重。
以上这种通过找感应电动势最大的电感M和相邻电感L和R在确定电感和导线的相对位置的方法,是一种初步的定位方法。这里再次深化讨论,先设立一个阈值T,分两种情况:
当|L值-R值|<T,即L值约等于R值,说明导线在M正上,得出确切位置;
当|L值-R值|>T,说明导线
展开阅读全文