温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
哈尔滨工业大学威海
工大威海九队
哈尔滨工业大学
威海
第十届“飞思卡尔”杯全国大学生
智能汽车竞赛
技 术 报 告
学 校: 哈尔滨工业大学(威海)
队伍名称: 工大威海九队
参赛队员: 季晨鹏
陈汉诚
徐鹏飞
刘震
带队教师: 麻志滨 刘芳
关于技术报告和研究论文使用授权的说明
本人完全了解第十届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:
带队教师签名:
日 期:
目 录
第一章 引言 1
第二章 智能车整体方案设计 2
第三章 车模机械结构调整 4
3.1 对前轮的调整 4
3.1.1 主销后倾 4
3.1.2 主销内倾 4
3.1.3 前轮外倾 4
3.1.4 前轮前束 5
3.2 电磁支架的安装 5
3.3 对底盘的调整 6
3.4 对重心的调整 6
3.5 对舵机的调整 7
第四章 硬件平台设计 9
4.1电源模块 9
4.2主板电路 11
4.3传感器模块 12
4.3.1 检测原理 12
4.3.2 传感器布局 13
4.4 电机驱动模块 14
4.5 舵机驱动模块 14
4.6 速度检测模块和终点检测模块 15
第五章 软件算法设计 - 17 -
5.1底层初始化 - 17 -
5.2传感器采集处理 - 17 -
5.3寻线行驶算法 - 17 -
5.3.1 定位算法 - 17 -
5.3.2基于位置式PID的方向控制 - 18 -
5.3.3基于位置式PID的速度控制 - 19 -
第六章 开发工具、制作、安装、调试过程说明 20
6.1 开发工具 20
6.2 调试过程 20
6.2.1 上位机系统 20
6.2.2 控制算法的参数整定 21
6.3 整车机械方面的调整 22
第七章 模型车参数说明 - 23 -
7.1 智能车外形参数 - 23 -
7.2 电路部分参数 - 23 -
7.3 传感器个数以及种类 - 23 -
7.4 除了车模原有的驱动电机、舵机之外伺服电机数量 - 23 -
7.5赛道信息检测频率 - 23 -
第八章 总结与提高 24
参考文献 25
附录A 源程序代码 I
第一章 引言
全国大学生智能汽车竞赛是教育部为了加强大学生实践、创新能力和团队精神的培养而设立的。该竞赛与己举办的全国数学建模、电子设计、机械设计、结构设计等4大专业竞赛不同,是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛。
在本次比赛中,本组使用大赛组委会统一提供的竞赛车模,双车选用A型车模作为前车,B型车模作为后车,都采用飞思卡尔32 位微控制器MK60DN512ZVLQ10作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法及执行、动力电机驱动、转向舵机控制等,同时不断尝试并确定了双车通信的方式,最终实现一套能够自主识别路线,并且可以实时输出车体状态的智能车控制硬件系统。
在制作小车的过程中,我们对小车的整体构架进行了深入的研究,分别在机械机构、硬件和软件上都进行过更进,硬件上主要是考虑并实践各种传感器的布局,改进驱动电路,软件上先后进行了几次大改,小车的寻线方式从最先的电感值归一化后的差比和运算到最终方案的确定。控制算法上,从PID到Bang-Bang,再到模糊PID都进行了一些研究。
技术报告以智能小车的设计为主线,包括小车机械结构设计、软硬件设计,以及控制算法研究等,共分为七章。其中,第一章为引言部分;第二章主要介绍了小车的总体方案的选取;第三章对小车的机械结构进行了详细的介绍;第四章主要介绍了电路的设计;第五章描述了小车的软件设计和相关算法;第六章中叙述了小车的调试工具;第七章是对我们小车的制作过程的总结和展望。
1
第二章 智能车整体方案设计
第二章 智能车整体方案设计
本智能车系统以飞思卡尔公司的MK60DN512ZVLQ10为核心,基于6组6.8nF电容和10mH工字电感并联组成传感器的路径识别,由运算放大检波模块、电源模块、电机驱动模块、舵机控制模块、速度采集模块、拨码开关和按键等组成的调试模块、oled显示屏模块、蜂鸣器模块、无线串口模块、MCU模块、干簧管终点检测模块等组成,如图2.1所示。在双车配合上采用一个光电管安装在后车,防止两车相撞的情况发生。整个智能车系统工作电压由+3.3V、+5V、-5V、+6V、7.2V组成,其中7.2V用于电机模块,6V用于舵机模块、5V给车速传感器、-5V和+5V给仪表运算放大器、+3.3V给MCU等。为了在线控制参数的调整方便,我们采用按键、拨码开光和无线串口配合使用的方式,使用oled屏和led作为小车上的参数显示,并且用上位机在PC端接收传感器采集到的数据来进行曲线拟合、分析,使得整个参数调制过程变得简单轻松。
电源模块
MK60DN512ZVLQ10
电机驱动模块
舵机驱动模块
电磁传感器
测速模块
无线串口模块
按键、拨码开关等
oled显示屏、蜂鸣器等
干簧管终点检测
图2.1 智能车总体结构框图
图2.2 智能车总体效果图
3
第三章 车模机械结构调整
第三章 车模机械结构调整
要使赛车跑出好成绩,赛车的机械结构是至关重要的。机械结构的调整是一个需要通盘考虑的问题,赛车的机械性能对小车行驶性能有很大的影响。安装时需要考虑的要点是:
(1)符合组委会规定的赛车的尺寸要求
(2)安装的可靠性
(3)安装的轻便性
(4)要使传感器有合适长度的前瞻
(5)车体各部分重量的分配。质心问题,保证赛车转弯、加速性能。
3.1 对前轮的调整
根据汽车理论,对前轮的调整主要包括主销后倾,主销内倾,前轮外倾,前轮前束几个方面。
3.1.1 主销后倾
主销后倾就是使小车的主销轴向后倾斜一个角度,类似于自行车的前叉。主销后倾可以提高小车的行驶稳定性。因为由于主销后倾,在前轮偏转时会产生一个回正力矩,使小车保持向前行驶的状态,车速越大回正力矩越大,但这个力矩同时会使转向变的沉重。
根据汽车动力理论将主销后倾角设为3度,使车轮具有自动回正的功能。
3.1.2 主销内倾
主销内倾就是使汽车的销上端向内倾斜一个角度。主销内倾角也有使车轮自动回正的作用 。
3.1.3 前轮外倾
前轮外倾就是使汽车的前轮呈外“八”字型的往内张开。前轮外倾角一方面可以在汽车重载时减少装载间隙,可以减少锁紧螺帽的载荷。(如图3.1)
图3.1 前轮的调整
3.1.4 前轮前束
前轮前束就是使两前轮的前端距离小于后端距离。前轮前束是为了补偿前轮外倾带来的不良后果,因为前轮外倾会使车轮地面上出现连滚带滑的现象。
经我们的探索,发现主销后倾对小车的行驶稳定性有很大的提高,所以我们将主销后倾角设为3度。而主销内倾,前轮外倾,前轮前束则要根据赛道的具体情况而作出具体的调整,由于赛道未知因此主销内倾角,前轮外倾角和前轮前束角都保持为0度。
通过对前轮的不断调节,我们总结出前轮对智能车的加速以及是否拐内圈都有一定的影响。
3.2 电磁支架的安装
电磁支架的安装不仅要考虑到要有足够的长度、质量要轻,同时更重要的是支架的稳定性,还有在调试过程中免不了各种碰撞,所以碳纤维杆要方便更换。因此我们用碳纤维杆作为支架的材料,用三通和热熔胶配合作为连接支架的材料,考虑了三角形的稳定结构,对支架的方案进行了多次尝试和比较,最终确定了较为稳定的支架布局。(见图3.2)
图3.2 电磁支架安装图
3.3 对底盘的调整
底盘越低,车辆的重心越低,后轮抓地力越好,前轮转向越敏感,所以我们使用垫片将两辆车的重心放到较低的位置。考虑到在整个赛道中并无崎岖路面,我们拆除了两辆小车的减震系统并用PCB加固了小车的底板,使得控制电路板能低放置,减低小车中心和小车行驶过程中的晃动。
3.4 对重心的调整
除了赛车的纵向重心外,赛车重心的前后位置对赛车的行驶性能也有很大的影响。
将重心前移会加大前轮对地摩擦,可以一定程度上减少侧滑,增加转向。但是由于电磁支架本身就会使车的重心较为靠前,所以安装完支架之后A车模的重心位置比我们期望的还要靠前。整个车身上占重量较大的并且位置也比较便于调整的是电池,所以我们对电池的位置做了精心的调整,将原有车模的电池底座去除,改用轻质的魔术贴,用热熔胶固定在车的底盘上,这样使车的重心进一步降低,并调整电池的位置使得赛车的重心大概位于赛车的中间稍微偏前一点的位置。(如图3.3)对于B车模由于它所用的电机质量较重,电磁支架对重心的影响并不明显,所以对于B车模我们只是将舵机由立式改为卧式,这样可以进一步降低重心。
图3.3 电池和电路板的位置
重心的调整,使赛车后轮的抓地力和前轮转向力之间有了一个很好的均衡。
3.5 对舵机的调整
1)A型车模的舵机我们采用立式的安装方法(见图3.4)。传统的平躺式舵机安装方式,不仅使横拉杆地面有一定夹角而且左右横拉杠的长度不同。这使得舵机输出的力变小(因为只有舵机使出的力的水平分力才是使前轮转向的有效分力)且MCU中舵机左右转的参数也将不同。通过我们的竖直安装方式有效的解决了这两大问题。
图3.4 A车舵机安装示意图
(2)B型车模的舵机我们采用卧式的安装方法(见图3.5)。由于B车模原有的安装方式舵机位于车体的中心位置,不利于电路板的安装和重心的调整。为方便电路板的安装和降低重心,我们最终选择卧式安装的方案。
图3.5 B车舵机安装示意图
对舵机的改动后提高了舵机的响应速度,MCU中有关舵机的参数左右对称,小车的过弯性也有有很大的提高。
III
第四章 硬件平台设计
第四章 硬件平台设计
智能车的硬件平台主要由以下模块构成:
(1) 电源与电源监控模块
(2) 中央控制电路
(3) 电磁传感器模块
(4) 电机驱动模块
(5) 舵机驱动模块
(6) 终点检测模块
(7) 速度检测模块
(8) 拨码开关、按键、oled等调试模块
4.1电源模块
智能车系统采用配发的标准的车模用的7.2V 2000mAh Ni-cd蓄电池进行供电,但各个模块所需要的电压不同,因此需要进行电压调节。电源系统的好坏直接关系到整个系统的稳定性。
本系统电源包括:7.2V为电机供电,使用LM2941稳压成6V后给舵机供电,一路UCC383(5V)为编码器等供电,一路TPS7350(5V)和一路ICL7660(-5V)给仪表运算放大器供电,一路B0512(12V)作为电机驱动模块的驱动电压,另外用一片TPS7333(3.3V)为单片机和OLED等供电。
电池(7.2V)
舵机
测速等
MCU、OLED
电机
机
TPS7350(5V)
UCC383(5V)
LM2941(6V)
电磁传感器
TPS7333(3.3V)
B0512(12V)
ICL7660(-5V)
MOS驱动
图4.1 电源分配图
UCC383是TI公司生产的三端线性稳压芯片,最大输出电流能达到3A,并且外围电路较简单,只需在输入输出端加入滤波电容即可。另外在输出端和地端加入LED灯来指示输出电压是否正常。(如图4.2)
图4.2 UCC383原理图
B0512是一款5V升12V的电源隔离芯片,用在MOS管驱动芯片IR2104上。对于12V的电源,并不需要提供很大的输出电流,所以我们选择这款电源隔离芯片,电路相比其他类型的升压电路要简单许多,同时也能满足需求。(如图4.3)
图4.3 B0512原理图
其余电源部分都是属于较常用到的芯片类型,其中LM2941是一款输出电压可调的芯片,通过调整外围电路中的几个电阻阻值可以得到不同的输出电压,我们用电位器代替其中一个电阻,这样就可以达到调整输出电压的目的,以便在后面的调试过程中可以调整输出电压使舵机获得更快地响应速度。(如图4.4)TPS7333和TPS7350都是TI公司生产的低压差线性稳压,输出电压经过我们测试纹波很小,输出比较稳定,适合给MCU和仪表运算放大器供电,输出最大电流500mA也满足系统需要。(如图4.5)由于我们用的仪表运算放大器INA129需要负电源供电,所以我们用了ICL7660来提供负压。(如图4.5)
图4.4 LM2941原理图
图4.5 传感器电源原理图
为了防止因电池接反导致烧坏电路板的情况发生,我们将电池原带的田宫头换成了T型接口,同时也减少了接触不良的情况发生。同时也在电路板设计上做了考虑,在电池电源输入端反向并联了二极管,这样在接反的时候会起到保护的作用。(如图4.6)
图4.6 电源保护部分
4.2主板电路
主板电路是我们整个电路的核心,在主板上我们集成了电源模块,无线串口模块,传感器接口,拨码开关、电机驱动等,同时对最小系统板采用可插拔设计使其能直接插到母板上。最小系统板是整个主板的核心,主要完成信号的处理、传感器的控制以及舵机和电机的控制等,我们采用龙邱科技出品单片机最小系统板,最小系统包括了MK60DN512ZVLQ10单片机系统的必要组成部分,包括时钟电路、锁相环滤波电路、A/D转换器滤波电路、调试用的LED/键盘电路、电源以及各I/O接口和J-Link接口等。其扩展功能有,舵机控制电路的接口、测速电路接口、干簧管接口及无线串口等。由于我们组两辆车所选的车模是不一样的,所以我们在同一张原理图的基础上绘制了两套PCB,在定位孔、元件布局和走线宽度等方面做了调整。同时在调试过程中也发现了PCB主板存在的问题,经过我们的努力也得到了很好的解决。
图4.7 主板PCB图A车
图4.8主板PCB图B车
4.3传感器模块
4.3.1 检测原理
电磁组赛道上铺设有一条通有100mA、20kHz的交流电的导线,用于电磁组赛车的路经检测。我们使用较为常用的方案,用10mH的工字电感来产生感应电动势,考虑到单独电感感应出的电动势很小,本设计使用电感和电容谐振放大感应电动势。由于使用的是10mH的电感,导线中电流频率为20kHz, 因此使用6.3nF的电容得到的电压将会比较大。市售较常见的电容容值与6.3nF最接近的是6.8nF,所以我们最后选用6.8nF的电容和10mH的工字电感作为电磁组的传感器。
此时得到的信号还不能够送入单片机来进行处理,还需经过放大、检波等信号调理电路,最后得到接近直流的信号再送入单片机。这里我们组选择的使用运算放大器搭成的放大电路,并且选择性能更为出色、抗干扰能力更好的仪表运算放大器INA129。INA129是TI公司生产的一款仪表运算放大器,它需要正、负双电源供电,外围电路相对普通的运放芯片也较为简单,并且放大倍数调节也非常方便,只需改变其中一个电阻的阻值即可。检波电路则使用二极管检波,电路也较为简单,在实际应用中也得到了比较好的效果。
图4.9 放大检波电路原理图
图4.10 放大检波部分PCB实物图
4.3.2 传感器布局
我们使用6个电感,将它们放在车最前端前瞻支架的不同位置上,两个工字电感垂直平行于导线放置,用于弯道的检测,可以获得较大的前瞻;另外四个垂直于导线一字排开,用于锁定导线的位置,并且将最两边的电感摆成八字形,使赛车有更好的弯道表现。将所有电感焊接在一块长25cm宽1.2cm的洞洞板上,固定在支架上面,较为轻便。(如图4.11)
图4.11 传感器安装示意图
4.4 电机驱动模块
电机驱动我们使用MOS管搭成的H桥驱动,它的优点是效率高、反应速度快、电流大并且成本较低。在先后尝试了BTS7970、MC33886等集成的驱动芯片以及MOS管等方案后,并且考虑到B车电机在堵转时的电流非常大,我们最终选择MOS管H桥方案。(如图4.12)
图4.12 MOS电机驱动原理图
4.5 舵机驱动模块
比赛规定的舵机型号为A车S3010,B车为SD5。舵机属于位置伺服电机,控制信号是单片机产生的PWM信号。舵机自身硬件特性决定:在给定电压一定时,空载和带载时的角速度ω分别保持恒值,而线速度v=ω*R,正比于转臂的长度R。当舵机所需转动幅度一定时,长转臂要比短转臂转动的角度小,即响应更快,我们把舵机的左右横拉杆长度相等,且与地面平行。
智能车在行驶过程中,舵机的响应时间决定着系统的稳定性及快速性。为了减小舵机的时滞现象,充分利用舵机的转矩余量,本系统采用了以下三种方法:
(1) 提高舵机工作电压,使其工作在额定电压之上(6.0V),从而减小舵机的响应时间;
(2) 将舵机转臂加长,充分利用转矩余量;
(3) 将舵机的PWM控制周期放大,从而细化PWM控制量,使转臂变化更加灵活、均匀。
4.6 速度检测模块和终点检测模块
车速检测模块我们采用欧姆龙速度传感器,其旋转一周将产生固定个数的脉冲信号,用MCU中脉冲累加计数器来捕捉这些脉冲,并在一个定时中断中,定时读取总的脉冲数,以此作为小车的实际速度。该速度直接作为PID控制器参数。
图4.13 欧姆龙速度传感器
赛道在起点和重点位置放置了六块永磁铁,小车要求通过检测这里的磁场来停车。我们使用干簧管的方案,并且为了提高检测的准确性,将两个干簧管并联后放在车的左右两端。(如图4.14)
图4.14 干簧管的安装
4.7按键、拨码开关、显示以及无线串口模块
通过无线串口我们将传感器采集到的数值、欧姆龙测出的脉冲数也即小车速度等信息发回上位机程序;同时可以将PID参数,理想速度等信息直接发给小车。
另外对于参数的调整还可以用车上面的按键,配合OLED显示屏显示各种参数以及传感器的采集值,使调试过程更加方便快捷;同时为了应对在正式比赛时的赛道状况,我们设置了几套不同的速度参数,通过拨码开关来切换不同的档位,并且配合使用LED显示不同档位的状态,防止比赛过程中发生拨错档位的情况发生。小车在赛道上会出现丢线等情况,为了能够及时得到这样的信息,我们加了蜂鸣器。(如图4.15)
图4.15 调试模块电路图
第五章 软件算法设计
第五章 软件算法设计
控制程序是人的思想在车模体现,程序要体系化,模块化,稳定化,目标是将硬件电路和机械性能发挥到最大,让车模用最快的速度完成比赛。
5.1底层初始化
针对要使用的模块进行选择性初始化,本车模初始化的底层模块有:系统时钟模块、串口模块、定时器模块、GPIO端口、模数转换模块、FTM模块等。
5.2传感器采集处理
编写函数AD_DEAL (),其功能为采集AD,并对AD值进行滤波,归一化等操作。
由于系统中存在噪声或干扰,进行算法滤波抑制和防止干扰是一项重要措施。在这里选择“去最值加权递推平均滤波法”。定义一个循环队列,把连续取N个采样值入队,假设队列的长度为N,每次采样到一个新数据放入队尾,队满后对首数据出队原队首位置成为队尾并入队(即始终保持队列中的N个数据为最新)。越接近现时刻的数据,权取得越大。先去除队列中的最大值和最小值,然后把队列中其他的(N-2)个数据进行加权平均运算,就可获得新的滤波结果。特点是给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越差。优点是适合采样周期较短的系统,改变权重即可调整灵敏度。
5.3寻线行驶算法
5.3.1 定位算法
图4.11所示传感器的寻线原理:某一时刻,采集四个横电感的感应电动势,找出一个感应电动势最大的电感(计为M),导线必然会离这个电感最近。然后读出该电感相邻左右两个电感的值(分别计为L和R)。会有以下三种情况:
当L值大于R值,说明导线在L和M之间;
当L值小于R值,说明导线在R和M之间;
当L值约等于R值,说明导线在M正上。
对于特殊情况,如M在最左或最后,可将相邻的L或R与归一化时采集的最大值相比较,判断出导线的相对位置。
以上这种通过找感应电动势最大的电感M和相邻电感L和R在确定电感和导线的相对位置的方法,是一种初步的定位方法。这里再次深化讨论,先设立一个阈值T,分两种情况:
当|L值-R值|<T,即L值约等于R值,说明导线在M正上,得出确切位置;
当|L值-R值|>T,说明导线在M和L或者M和R之间。
判断出出导线的相对位置后,对于不同位置,结合竖电感分类计算偏差。
5.3.2基于位置式PID的方向控制
PID控制是工程实际中应用最为广泛的调节器控制方法。问世至今70多年来,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。其控制系统如下图所示:
图5.1 PID控制系统原理图
离散系统的数字量PID算法的公式为:
从系统的稳定性﹑响应速度﹑超调量等各方面来考虑,,,的参数值和系统性能的关系如下:
①越大,系统的响应速度越快,调节精度越高,但是容易产生超调,超过一定范围会导致系统振荡加剧甚至不稳定。
②越大,系统的静态误差消除越快,但是容易在初期产生积分饱和现象,从而引起响应过程的较大超调。
③的作用是在回应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预测。但是会使响应过程提前制动,从而延长调节时间。
要通过掌握 的特点,作用以及不断的实验,选择合适的参数,利用好各种PID改进方法,以期达到良好的控制效果。
在我们的小车中,采用了PD控制。同时,让P与偏差成一定关系变化,可达到小偏差时系统稳定的作用。
5.3.3基于位置式PID的速度控制
对位置式加以变换,可以得到PID算法的另一种实现形式(增量式):
在实际代码实现时,处理成
Speed_nowIncpid += SPEED_P * (nowError- LastError)
+ SPEED_I * nowError
+ SPEED_D* (nowError-2* LastError+ PrevError)
在速度控制中,将设定速度与舵机控制量相关系。
第六章 开发工具、制作、安装、调试过程说明
第六章 开发工具、制作、安装、调试过程说明
6.1 开发工具
程序的开发是在IAR下进行的,包括源程序的编写、编译和链接,并最终生成可执行文件。
IAR Embedded Workbench(简称EW)的C/C++交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。EW对不同的微处理器提供一样直观用户界面。EW今天已经支持35种以上的8位/16位32位ARM的微处理器结构。
EW包括:嵌入式C/C++优化编译器,汇编器,连接定位器,库管理员,编辑器,项目管理器和C-SPY调试器中。使用IAR的编译器最优化最紧凑的代码,节省硬件资源,最大限度地降低产品成本,提高产品竞争力
6.2 调试过程
6.2.1 上位机系统
要分析车模在赛道行驶的实时情况,必须采集小车在行驶过程中各个功能模块的实时数据,我们采用的是用无线串口发送数据至上位机,然后用上位机分析并保存数据。
1)硬件方面
我们使用433MHZ无线串口模块,直接与K60的串口模块相连,配置简单,使用方便,体积小巧。
图6.1 433MHZ无线串口模块
2)软件方面:
用C#编写一个上位机接收程序(见图6.2),车模在赛道跑时,数据利用无线串口发送至上位机处理。
图6.2 上位机程序界面
同时上位机保存数据,可用Matlab读取数据,模拟算法进行相关算法验证。
6.2.2 控制算法的参数整定
运用 PID 控制的关键是调整三个比例系数,即参数整定。PID 整定的方法有两类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。由于智能车整个系统是机电高耦合的分布参数系统,并且要考虑赛道具体环境,要建立精确的智能车运动控制数学模型有一定难度,而且对车身机械结构经常进行不断修正,模型参数变化较频繁,可操作性不强;二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单,采用了这种方法。
1) 方向控制算法的参数整定
方向控制采用位置式PID控制。由于小车循黑线本质上是一个随动系统,积分项在弯道累积的偏差错误地加在直道的跟踪上,造成在进入直道时转向不够准确,跑直道时虽然能跟踪黑线,但是转向调整往往超调,导致车身在直道上左右震荡,这种震荡严重影响了车的整体表现。
将积分项系数Ki设为0,发现车能在直线高速行驶时仍能保持车身非常稳定,没有震荡,所以没有必要使用 Ki 参数。该控制方案调整为PD控制。Kp和Kd参数由工程整定得出,经过多次试验,得到若干组稳定快速的参数。
2) 速度控制算法的参数整定
速度控制采用增量式PID控制,同样采用上一小节的工程整定法。经多次试验得出合适参数。车模行驶直道和弯道加减速反映迅速,整体速度良好。
6.3 整车机械方面的调整
车模的机械也是很重要的一方面,针对电磁组车模,必须有几个特别需要关注的地方:
1)传感器支架必须结实耐撞,震动尽量小。震动会导致传感器得到感应电动势“抖动”,导致车模会在赛道上“颤抖”。
2)重心尽可能低,并且分布均匀。把车模地盘降低,车上装配的器件也尽可能的放低,转弯效果会比较好。分布均匀可以防止车模在赛道甩动。
第七章 模型车参数说明
7.1 智能车外形参数
A车模:车长:65cm 车宽:25cm 车高:21cm 车重:约1065g(全重)
B车模:车长:65cm 车宽:25cm 车高:21cm 车重:约1280g(全重)
7.2 电路部分参数
我们的小车采用一块比赛标准7.2V电池供电,容量约1800μF。当模型车运行时,功耗约为20~30W 。
7.3 传感器个数以及种类
A车模共使用6个10mH的电感,编码器1个,干簧管4个;
B车模共使用6个10mH的电感,编码器1个,干簧管4个,光电管1个。
7.4 除了车模原有的驱动电机、舵机之外伺服电机数量
除了车模原有的驱动电机、舵机之外没有使用伺服电机。
7.5赛道信息检测频率
赛道信息检测频率是5MS。
第八章 总结与提高
从上一届比赛结束,我们组就开始着手准备这一届的比赛。由于我们组的队员之前都有过第九届比赛的经历,所以对于电磁组赛车的制作上手比较快。但是今年比赛较往年有很大的区别,由以前的单车改成了双车,在一定程度上增大了竞赛的难度,但是在趣味性上有了很大的提升,对我们来说也是很大的挑战。对于两车之间的联系,我们尝试过超声波、编码器计数等很多方案,最终还是受到去年路障解决方案的启发,用了光电管来实现的。在策略上,我们始终把车的稳定性放在第一位,在此基础上来提高车速、优化路径,并且能在省赛决赛中顺利完成比赛,实现了我们校区国赛零的突破。
小车的设计、制作和调试过程中,我们也是遇到了很多问题,虽然进入到了全国总决赛,但是还是存在很多缺点。比如对于支架的方案,稳定性方面还是存在一些问题等等。电磁组别区别于另外两个组别,它是靠识别电磁信号来识别道路的,车跑起来容易但是提速很困难,而且赛场上的变数也很多,所以一定要提高赛车的稳定性和适应性,并且机械要做的精致,硬件电路要稳定,这是小车能够驰骋在赛场上的基础。
在这几个月的备战过程中,各方面都得到了学校和学院的大力支持,在此特别感谢一直支持和关注智能车比赛的学校和学院领导以及各位指导老师、指导学长,同时也感谢比赛组委会能组织这样一项有意义的比赛。同时,在这里也祝愿飞思卡尔全国大学生智能车竞赛越办越好。
参考文献
[1]卓晴,黄开胜,邵贝贝,“学做智能车”,北京航空航天大学出版社,2007年3月
[2] 邓兆祥,褚志刚等,“汽车前轮定位参数优化设计”,重庆大学机械传动国家重点实验室
[3]黄开胜 李立国 刘旺 郝杰“基于光电传感和路径记忆的车辆导航系统”, 清华大学 汽车安全与节能国家重点实验室
[4]周斌 李立国 黄开胜 “智能车光电传感器布局对路径识别的影响研究”,电子产品世界,2006(15):160-166
[5]黄开胜 金华民 蒋荻南 “韩国智能模型车技术方案分析”,电子产品世界, 2006(5):150-152
[6] 张昊飏,马旭,卓晴,基于电磁场检测的寻线智能车设计.北京:清华大学
附录A 源程序代码
附录A 源程序代码
void main(void) //主函数
{
DisableInterrupts;
Init_all(); //初始化
AD_getone_flash_read(ADgetonefinal); //读取flash中最值
EnableInterrupts;
/**************归一化************/
if(H8)
{
getone_flag=1;
while(H8);
DisableInterrupts;
AD_getone_flash_write(ADgetone,ADgetonefinal);
EnableInterrupts;
getone_flag=0;
}
parameter_get();
Car_RUN();
while(1)
{
}
}
void Init_all(void) //系统初始化
{
DelayInit();
LED_Init();
KEY_Init();
DIP_Init();
BEE_Init();
OLED_Init();
Serial_Init();
FLASH_Init();
Servo_Init(); // 舵机初始化
Encoder_Init(); //编码器初始化
Motor_Init(); //电机初始化
AD_Init();
PIT0_Init();
PIT1_Init();
Final_Init();
Priority_Init(); //中断优先级
}
void PIT0_ISR(void) //定时器中断
{
timer_1ms++;
if(timer_1ms%5==1)
{
AD_DEAL(ADvalue);
Direction_Control(); //方向控制
//标志位更新
//变量更新
//变量数组更新
OLED_display_update_array(0,(int16_t*)ADvalue->ad_value_getone,6,1);
}
if(timer_1ms%20==2)
{
}
if(timer_1ms%20==3)
{
Speed_Control(); //速度控制
//标志位更新
//变量更新
}
/* 闪烁小灯 */
if(timer_1ms%500==4)
{
GPIO_ToggleBit(GPIOA,17);
}
if(timer_1ms%1000==1)
{
timer_1s++;
}
if(timer_1s>10000)
{
timer_1s=0;
}
if(timer_1ms>100000)
{
timer_1ms=0;
}
}
void Direction_Control(void) //方向控制
{
AD_DEAL(ADvalue); //完成AD采集,滤波,归一
Get_iError(ADvalue->ad_value_getone,&Direction_iError); //计算偏差
PID_DEAL(&Direction_iError,&Direction_SEVcontrol,&Direction_SEVduty); //PID计算,控制舵机
}
void AD_DEAL(AD_value *ADvalue) //AD值处理
{
Get_ADvalue(ADvalue->ad_value_first); //采集AD值
ADvalue_filter(ADvalue->ad_value_first,ADvalue->ad_value_filter); //AD值滤波
AD_getone_deal(ADvalue->ad_value_filter,ADvalue->ad_value_getone,ADgetonefinal); //AD值归一化
}
void ADvalue_filter_aver(uint16_t *input_address,uint16_t *out_address) //AD滤波
{
uint8_t j=0,max=0,min=0;
uint16_t max_temp=0,min_temp=0;
uint16_t sum_temp=0;
ADvalue_filter_aver_parameter[ADvalue_nums]=0;
for(j=0;j<ADvalue_nums;j++)
{
ADvalue_filter_aver_parameter[ADvalue_nums]+=ADvalue_filter_aver_parameter[j];
}
for(j=1;j<ADvalue_nums;j++)
{
if((input_address[j])>(input_add