第十六届全国大学生智能车竞赛技术报告 | 单车拉力组- 上海海事大学-骑摩托的蒙娜丽莎
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十六届全国大学生智能车竞赛技术报告 | 单车拉力组- 上海海事大学-骑摩托的蒙娜丽莎相关的知识,希望对你有一定的参考价值。
简 介: 本文设计的智能车系统以
STC16F40K128
微控制器为核心控制单元,通过车体前方的电感检测赛道电磁信息,通过编码器检测智能车的实时速度,利用陀螺仪检测小车姿态,使用PID
控制算法调节电机的转速和舵机的打角,实现了对车运动速度、运动方向和车身平衡的闭环控制。为了提高智能车的速度和稳定性,使用上位机、按键、无线通信模块、OLED
模块等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案确实可行。
队伍名称:骑摩托的蒙娜丽莎
参赛队员:岑衎远
王云尧
带队教师:虞旦
王天真
引 言
全国大学生智能汽车竞赛是以“立足培养、重在参与、鼓励探索、追求卓越”为指导思想,鼓励创新的一项科技竞赛活动。竞赛要求在规定的汽车模型平台上,使用STC, Infineon, NXP
系列单片机作为核心控制模块,通过增加道路传感器、电机驱动模块以及编写相应控制程序,制作完成一个能够自主识别道路的模型汽车。参赛队员的目标是模型汽车需要按照规则以最短时间完成单圈赛道。
自从第五届出现磁导组开始到今年第十六届比赛,电磁小车已经过了十多年,从第六届取消了前瞻长度的限制,电磁车速度开始有了质的飞跃,第七届改成直立状态行走以其独特魅力和新的技术挑战让参赛者向往不已;第八届改回四轮行进方式并采用了A车模,小车的速度再次出现大幅提升;到第十届同样是四轮行进并采用了B车模进行双车追逐;到第十一届再次改成直立行走;第十二届采用B车双车追逐的方式表现,并增加了超车的元素,使电磁车的观赏性和技术性更上一层。到如今第十六届比赛,电磁小车增加了新的一员——电单车,作为新组别电单车有了和别的智能车不同的竞赛规则,电单车不仅需要比快还要比慢,同时要求采用全新的K车模,车模作品尺寸不限,但车模上不允许安装额外用于保持车模平衡的惯量轮,如何使小车保持平衡不倒就成了今年电单车的第一个难点,在保持平衡的前提下如何使电单车以最快的速度完成比赛或以最慢的速度完成比赛成了今年电单车的最大看点。
在这份报告中,我们小组通过对小车设计制作整体思路、电路、算法、调试、车辆参数的介绍,详尽地阐述了我们的思想和创意,具体表现在电路的创新设计、算法和赛道路径规划的独特想法,而对单片机具体参数的调试也让我们付出了艰辛的劳动。这份报告凝聚着我们的心血和智慧,是我们共同努力后的成果。
在准备比赛的过程中,我们小组成员涉猎控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科。几个月来的经历,培养了我们电路设计、软件编程、系统调试等多方面的能力,锻炼了我们知识融合、实践动手的能力,最重要的是锻炼了我们的心志。在疫情的冲击下,备赛条件匮乏,面对困难,大家团结一致不退缩,遇到问题解决问题,这些对我们今后的学习、生活以及工作都有着重要的实际意义。
第一章 系统总体设计
本章主要简要地介绍智能车系统总体设计思路,在后面的章节中将整个系统分为机械结构、控制模块、控制算法等三部分对智能车控制系统进行深入的介绍分析。
1.1系统总体方案的设计
根据竞赛规则相关规定,电单车智能车系统可采用竞赛指定K
车模,允许使用电感、红外光电、摄像头传感器、激光传感器等进行赛道和环境检测,车模微控制器使用STC
系列单片机,在Keil
开发环境中进行软件开发。电单车的位置信号由车体前方的电磁传感器采集,经内部AD
进行模数转换后,输入到控制核心,用于赛车的运动控制决策。通过编码器测速模块来检测车速,电机转速控制采用 PID
控制,通过 PWM
控制驱动电路调整电机的转速,完成智能车速度的闭环控制;通过陀螺仪来检测车身姿态,利用陀螺仪获得的车身姿态采取PID
控制舵机打角,完成电单车的平衡控制。此外,还增加了无线通信模块用于观察电单车各种参数便于调试,无线通讯模块仅作为调试工具使用,正式比赛时并未使用。
1.2系统总体方案设计图
▲ 图1.2系统总体方框图
根据以上系统方案设计,电单车共包括六大模块:STC16F40K128
主控模块、传感器模块、电源模块、电机驱动模块、速度检测模块、辅助调试模块。各模块的作用如下:
1. STC16F40K128主控模块:作为整个电单车的“大脑”,将采集电感传感器、编码器、陀螺仪等传感器的信号,根据控制算法做出控制决策,驱动直流电机和伺服电机完成对智能车的控制。
2. 传感器模块:是智能车的“眼睛”,可以通过一定的前瞻性,提前感知前方的赛道信息,为智能车的“大脑”做出决策提供必要的依据和充足的反应时间。
3. 电源模块:为整个系统提供合适而又稳定的电源。
4. 电机驱动模块:驱动直流电机和伺服电机完成智能车的加减速控制和转向控制。
5. 速度检测模块:检测反馈智能车后轮的转速,用于速度的闭环控制。
6. 辅助调试模块:主要用于智能车系统的功能调试、赛车状态监控等方面。
第二章 智能车机械结构
智能车中的控制都是在一定的机械结构基础上实现的,因此在设计整个软件架构和算法之前一定要对整个车模的机械结构有一个感性的认识,然后建立相应的数学模型。从而再针对具体的设计方案来调整赛车的机械结构,并在实际的调试过程中不断的改进和提高。本章将主要介绍智能车车模的机械结构和调整方案。
2.1智能车车体机械建模
此次比赛选用的赛车车模采用K型车模。赛车机械结构不允许对车模有过多的改装。控制采用前轮转向,后轮驱动方案。
我们对机械结构的要求是:简单而高效。我们在不断的尝试后确定了以下的设计方案:
▲ 图2.1 电单车K车器件布局图
- 表2.1.1 K模型车基本参数
- 轴距 195mm
- 总长 450mm
- 总高 272mm
- 总重 650g
2.2智能车后轮减速齿轮机构调整
模型车后轮采用DRV8701
电机驱动,电机轴与后轮轴之间的传动比为 9
。齿轮传动机构对车模的驱动能力有很大的影响。齿轮传动部分安装位置的不恰当,会大大增加电机驱动后轮的负载,会严重影响最终成绩。调整的原则是:两传动齿轮轴保持平行,
齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力,浪费动力;传动部分要轻松、顺畅,不能有迟滞或周期性振动的现象。判断齿轮传动是否良好的依据是,听一下电机带动后轮空转时的声音。声音刺耳响亮,说明齿轮间的配合间隙过大,传动中有撞齿现象;声音闷而且有迟滞,则说明齿轮间的配合间隙过小,或者两齿轮轴不平行,电机负载变大。调整好的齿轮传动噪音很小,并且不会有碰撞类的杂音,后轮减速齿轮机构就基本上调整好了,动力传递十分流畅。
2.3轮胎的保养与使用
本届比赛K车模采用橡胶的有胎纹的橡胶,在使用的过程中主要暴露出的问题有:高速行驶时轮胎抓地力不足;轮胎材料强度不足,长期使用容易磨损。规则中不允许对轮胎进行任何改变轮胎性能的处理,因此在调试过程中,我们尽量选择对称、圆的轮胎;电单车属于户外组别,车胎磨损严重时需要更换车胎。
2.4 编码器的安装
为了提高精度,本车使用了编码器。为了便于安装和减轻重量,我们选择利用原装车模自带的孔位进行编码器的安装,较好的保证了两啮合齿轮轴的平行度及传动的平顺性。同时为了保护编码器,我们在编码器下方安装了一个自行设计的3D
打印件,不仅可以在车模倒地时有效保护编码器,还能用于给车模进行配重调整重心。
▲ 编码器安装
2.5 智能车重心位置的调整
为了达到较远前瞻,必须把电感架到较远的位置,会引起车重心特别靠前,后轮正压力不足导致甩尾。为了使重心后移,我们尝试了很多传感器支架的搭建方式,使得保证结构稳定的前提下尽量减轻重量。同时,我们把电池往后移,达到了预期的效果。
重心的左偏或右偏不仅会导致电单车平衡位置发生变换,也会极大影响其转向能力,常表现为左右转向能力不对称,在调试过程中,发现我们的电单车出现重心偏左的问题,因此在编码器下方安装了一个3D打印件用于配置,解决此问题,达到了预期的效果。
2.6其它机械结构的调整
另外,在模型车的机械结构方面还有很多可以改进的地方,比如说车轮、悬架、底盘、车身高度等。
为了增强电单车的转向能力,对舵机摆臂进行了延长;陀螺仪的安装位置也进行了精心选择,最终选定在最靠近车辆主轴以及车辆旋转中心的电机下方,这样可以减小加速度对姿态角的影响,使获得的姿态更准确。
此外,我们还对车身高度,以及底盘的形状和质量等,都进行了相应的改进和调整,均取得了不错效果。
第三章 硬件系统设计及实现
3.1主控板和驱动板的硬件设计
从最初进行硬件电路设计时我们就既定了系统的设计目标:可靠、高效、简洁,在整个系统设计过程中严格按照规范进行。
可靠性是系统设计的第一要求。我们对电路设计的所有环节都进行了电磁兼容性设计,做好各部分的接地、屏蔽、滤波等工作,将高速数字电路与模拟电路分开,使本系统工作的可靠性达到了设计要求。
高效与实用性是指本系统的各模块能充分完美的实现相应的功能。
简洁是指在满足了可靠、高效的要求后,为了尽量减轻车模的负载,降低模型车的重心位置,应使电路设计尽量简洁,尽量减少元器件使用数量,缩小电路板面积,使电路部分重量轻,易于安装,在设计完原理图后,注重PCB板的布局,优化电路的走线,整齐排列元器件,最终做到电路板的简洁。
3.1.1 电源管理模块
电源模块对于一个控制系统来说极其重要,关系到整个系统是否能够正常工作,因此在设计控制系统时应选好合适的电源模块。竞赛规则规定,比赛使用智能汽车竞赛统一配发的标准车模用7.2V 2000mAh Ni-cd供电或者使用锂电池(配备保护板),我们在实际尝试对比之后选择3000mAh7.4V锂电池供电方案。
为满足需要,本车模上存在3
种供电电压:
1. 智能车使用锂电池供电,充满时电压在7.4
~8.4V
,可直接用于直流电机供电。
2. 舵机使用直流6.2V
,6.2V
电源选用线性稳压芯片ams1117-ADJ.
3. 使用3.3V
为单片机系统,人机交互模块和电磁传感器模块供电,采用线性稳压芯片ams1117-3.3
。
一般来说,线性电源是将输出电压取样然后与参考电压送入比较电压放大器,此电压放大器的输出作为电压调整管的输入,用以控制调整管使其结电压随输入的变化而变化,从而调整其输出电压,技术成熟,制作成本较低,稳定度可以达到要求。
▲ 图3.1 电源管理模块原理图
3.1.2 电机驱动模块
电机驱动电路为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四支 N
沟道功率 MOSFET
管组成,额定工作电流可以轻易达到 100A
以上,大大提高了电动机的工作转矩和转速。该驱动器主要由以下部分组成: PWM
信号输入接口、逻辑换向电路、死区控制电路、电源电路、上桥臂功率 MOSFET
管栅极驱动电压泵升电路、功率 MOSFET
管栅极驱动电路、桥式功率驱动电路、缓冲保护电路等;专用栅极驱动芯片通常具有防同臂导通、硬件死区、欠电压保护等功能,可以提高电路工作的可靠性。
常用的电机驱动有两种方式:
一、集成电机驱动芯片;
二、采用N沟道MOSFET和专用栅极驱动芯片设计;
市面上常见的集成H
桥式电机驱动芯片中,33886
型芯片性能较为出色,该芯片具有完善的过流、欠压、过温保护等功能,内部MOSFET
导通电阻为120
毫欧,具有最大5A
的连续工作电流。使用集成芯片的电路设计简单,可靠性高,但是性能受限。由于比赛电机内阻仅为几毫欧,而集成芯片内部的每个MOSFET
导通电阻在120
毫欧以上,大大增加了电枢回路总电阻,此时直流电动机转速降落较大,驱动电路效率较低,电机性能不能充分发挥。
由于分立的N
沟道MOSFET
具有极低的导通电阻,大大减小了电枢回路总电阻。另外,专门设计的栅极驱动电路可以提高MOSFET
的开关速度,使PWM
控制方式的调制频率可以得到提高,从而减少电枢电流脉动。并且专用栅极驱动芯片通常具有防同臂导通、硬件死区、欠电压保护等功能,可以提高电路工作的可靠性。
1.专用栅极驱动芯片的选择:
TI
公司号称功率半导体领袖,所以我们主要在TI
公司的产品中进行选择。DRV8701
是一款采用4
个外部N
通道MOSFET
的单路H
桥栅极驱动器,主要用于驱动12V
至24V
双向有刷直流电机。
该器件可通过PH /EN
(DRV8701E
)或PWM
(DRV8701P
)接口轻松连接控制器电路。内置的感测放大器能够实现可调节的电流控制。这款栅极驱动器内置有DRV8701
采用9.5VV GS
栅极驱动电压来驱FET FET
。所有外部FET
的栅极驱动电流均可通过IDRIVE
引脚上的单个外部电阻进行配置。
低功耗睡眠模式可将内部电路关断,从而实现极低的静态电流消耗。这种睡眠模式可通过将nSLEEP引脚置为低电平来设定。
该器件内置以下保护功能:欠压锁定,电荷泵故障,过流关断,短路保护,前置驱动器故障以及过热保护。故障情况通过nFAULT
引脚指示。
2.MOSFET的选择:
选择MOSFET
时主要考虑的因素有:耐压、导通内阻和封装。智能汽车电源是额定电压为7.2V
的电池组,由于电机工作时可能处于再生发电状态,所以驱动部分的元件耐压值最好取两倍电源电压值以上,即耐压在16V
以上。而导通内阻则越小越好。封装越大功率越大,即同样导通电阻下通过电流更大,但封装越大栅极电荷越大,会影响导通速度。常用的MOSFET
封装有TO-220
、TO-252
、SO-8
等。于是我们最终选择了TOSHIBA
公司SOP Advance
封装的TPH1R403NL
型N
沟道MOSFET
,VDSS=30
伏、RDS(on)=1.4
毫欧、ID=150
安。
3、驱动电路的原理分析及元件参数确定
▲ 图3.1.2.2电机驱动分析图
这个驱动设计单从信号逻辑上分析比较容易理解,但要深入的理解和更好的应用,就需要对电路做较深入的分析,对一些外围元件的参数确定做理论分析计算。图3.8
中IC
是一个高压驱动芯片,
驱动2
个半桥MOSFET
。Vb,Vs
为高压端供电;Ho
为高压端驱动输出;COM
为低压端驱动供电,Lo
为低压端驱动输出;Vss
为数字电路供电.
此半桥电路的上下桥臂是交替导通的,
每当下桥臂开通,
上桥臂关断时Vs
脚的电位为下桥臂功率管Q2
的饱和导通压降,
基本上接近地电位,
此时Vcc
通过自举二极管D
对自举电容C2
充电使其接近Vcc
电压.
当Q2
关断时Vs
端的电压就会升高,
由于电容两端的电压不能突变,
因此Vb
端的电平接近于Vs
和Vcc
端电压之和,
而Vb
和Vs
之间的电压还是接近Vcc
电压.
当Q2
开通时,C2
作为一个浮动的电压源驱动Q2;
而C2
在Q2
开通其间损失的电荷在下一个周期又会得到补充,
这种自举供电方式就是利用Vs
端的电平在高低电平之间不停地摆动来实现的。由于自举电路无需浮动电源,
因此是最便宜的,如图所示自举电路给一只电容器充电,电容器上的电压基于高端输出晶体管源极电压上下浮动。图2.6
中的D
和C2
是IR2184
在脉宽调制(PWM
)应用时应严格挑选和设计的元器件,
根据一定的规则进行计算分析;
并在电路实验时进行调整,
使电路工作处于最佳状态,
其中D
是一个重要的自举器件,
应能阻断直流干线上的高压,
其承受的电流是栅极电荷与开关频率之积,
为了减少电荷损失,
应选择反向漏电流小的快恢复二极管,
芯片内高压部分的供电都来自图中自举电容C2
上的电荷;
为保证高压部分电路有足够的能量供给应适当选取C2
的大小.
MOSFET
具有相似的门极特性,
开通时需要在极短的时间内向门极提供足够的栅电荷,
在自举电容的充电路径上,
分布电感影响了充电的速率,
下桥臂功率管的最窄导通时间应保证自举电容有足够的电荷以满足栅极所需要的电荷量再加上功率器件稳态导通时漏电流所失去的电荷量.
因此,
从最窄导通时间为最小值考虑,
自举电容应足够小;
综上所述,
在选择自举电容大小时应考虑,
既不能太大影响窄脉冲的驱动性能;
也不能太小影响宽脉冲的驱动要求,
应从功率器件的工作频率、开关速度、门极特性等方面进行选择、估算后调试而定。
该部分原理图如图3.2所示。
▲ 图3.2 电机驱动模块原理图
3.1.3 数模转换模块
由于STC16
的内部AD
比较精确,我们在测试外部AD
后结果显示其结果与内部AD
相差不大,而且方差较内部AD
更大,当然这也有可能是测试方法有问题。内部AD
较外部AD
可以简化电路设计,综合考虑这下我们还是决定使用内部AD
,引出6
路AD
,其中一路作为备用。
▲ 图3.3接线图
3.1.4 单片机及其他电路部分设计
测速模块:编码器可以使电路更加完善,信号更加精确,编码器功耗低,重量轻,抗冲击抗震动,精度高,寿命长,非常实用,在电机上方架编码器,当电机转动时带动编码器转动,由此获取速度信息。
▲ 图3.5 测速模块
-
人机交互模块:在调试过程中,为了实时,便捷的掌握车的运行状态,参数变化,如传感器的状态,舵机的转角等,让我们实时的监测车的状态,从而做出判断,这样很大程度的方便了对车的调试。
-
陀螺仪模块: 选用了
TDK
推出的数字陀螺仪ICM20602
,ICM 20602
是一个6
轴运动跟踪装置,它结合了一个3
轴陀螺仪,3
轴加速度计,封装规格为3
毫米×3
毫米×0.75
毫米(16
引脚LGA
)。它还具有一个1kB
的FIFO
,可以降低串行总线接口上的通信量,并通过允许系统处理器突发读取传感器数据,然后进入低功耗模式来降低功耗。各个模块整体电路以及其余部分电路设计如图3.6
所示。
▲ 图3.6 单片机及其他电路部分
3.2 智能车传感器模块设计
根据竞赛组委会的相关规定,我们选用磁传感器,磁传感器的应用首先在于选型,为了找出适合的磁传感器,我们查阅了许多的产品资料,进行了大量的电感测试,发现只有在10mH
电感中,得到感应电动势曲线是较为规整的正弦波,频率和赛道电源频率一致,为20kHz
,幅值较其他型号的大,且随导线距离变化,规律为近大远小。其他电感得到信号不好,频率幅值变化杂乱,不宜采用。
3.2.1电感传感器的原理
根据电磁学,我们知道在导线中通入变化的电流(如按正弦规律变化的电流),则导线周围会产生变化的磁场,且磁场与电流的变化规律具有一致性。如果在此磁场中置一由线圈组成的电感,则该电感上会产生感应电动势,且该感应电动势的大小和通过线圈回路的磁通量的变化率成正比。由于在导线周围不同位置,磁感应强度的大小和方向不同,所以不同位置上的电感产生的感应电动势也应该是不同。据此,则可以确定电感的大致位置。
3.2.2磁传感器信号处理电路
确定使用电感作为检测导线的传感器,但是其感应信号较微弱,且混有杂波,所以要进行信号处理。要进行以下三个步骤才能得到较为理想的信号:信号的滤波,信号的放大,信号的检波。
1)信号的滤波
比赛选择20kHz
的交变磁场作为路径导航信号,在频谱上可以有效地避开周围其它磁场的干扰,因此信号放大需要进行选频放大,使得20kHz
的信号能够有效的放大,并且去除其它干扰信号的影响。使用 LC
并联谐振电路来实现选频电路(带通电路),如图3.7
所示。
▲ 图3.7 LC并联电路
其中,E是感应线圈中的感应电动势,L是感应线圈的电感值,R0是电感的
内阻,C 是并联谐振电容。电路谐振频率为:
f=1/(2π√(“LC” ))
 
已知感应电动势的频率f=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.9最终方案
3.2.3磁传感器的布局原理及改进
对于直导线,当装有小车的中轴线对称的两个线圈的小车沿其直线行驶,即两个线圈的位置关于导线对称时,则两个线圈中感应出来的电动势大小应相同、且方向亦相同。若小车偏离直导线,即两个线圈关于导线不对称时,则通过两个线圈的磁通量是不一样的。这时,距离导线较近的线圈中感应出的电动势应大于距离导线较远的那个线圈中的。根据这两个不对称的信号的差值,即可调整小车的方向,引导其沿直线行驶。
对于弧形导线,即路径的转弯处,由于弧线两侧的磁力线密度不同,则当载有线圈的小车行驶至此处时,两边的线圈感应出的电动势是不同的。具体的就是,弧线内侧线圈的感应电动势大于弧线外侧线圈的,据此信号可以引导小车拐弯。
另外,当小车驶离导线偏远致使两个线圈处于导线的一侧时,两个线圈中感应电动势也是不平衡的。距离导线较近的线圈中感应出的电动势大于距离导线较远的线圈。由此,可以引导小车重新回到导线上。
由于磁感线的闭合性和方向性,通过两线圈的磁通量的变化方向具有一致性,即产生的感应电动势方向相同,所以由以上分析,比较两个线圈中产生的感应电动势大小即可判断小车相对于导线的位置,进而做出调整,引导小车大致循线行驶。
现提出一种优化方案:横向放置的电感按“一”字排布,可以大大提高检测密度和广度。竖向放置的电感,可以提高前瞻,改善小车入弯状态和路径。我们选择在碳杆的长横杆放置电感,两横两竖如图3.11。
第四章 软件系统设计及实现
控制程序是人的思想在车模体现,程序要体系化,模块化,稳定化,目标是将硬件电路和机械性能发挥到最大,让车模用最快的速度完成比赛。
4.1底层初始化
在void main()中编写初始化函数,初始化用到的模块,如下(子函数略):
void main()
{
DisableGlobalIRQ(); //关闭总中断
board_init(); //初始化寄存器
//此处编写用户代码(例如:外设初始化代码等)
oled_init();
gpio_mode(P7_5,GPO_PP);
P75 = 1;
gpio_mode(P2_5,GPO_PP);
P25 = 1;
gpio_mode(P7_3,GPIO);
pwm_init(PWMB_CH3_P76, 10000, 1000);
pwm_init(PWMA_CH4N_P17, 50, 740);
simiic_init();
icm20602_init_simspi();
adc_init(ADC_P03,ADC_SYSclk_DIV_2);
adc_init(ADC_P02,ADC_SYSclk_DIV_2);
adc_init(ADC_P01,ADC_SYSclk_DIV_2);
adc_init(ADC_P00,ADC_SYSclk_DIV_2);
pit_timer_ms(TIM_0, 10);
pit_timer_ms(TIM_1, 5);
// pit_timer_ms(TIM_3, 5);
ctimer_count_init(CTIM4_P06);
seekfree_wireless_init();
//总中断最后开启
EnableGlobalIRQ(); //开启总中断控有关的初始化
}
4.2传感器采集处理算法
编写采集函数int16 adc_once(ADCN_enum adcn,ADCRES_enum resolution),其功能为控制AD采集某个通道(对应某个电感)的电压值,然后读出该值返回给函数。
由于系统中存在噪声或干扰,进行算法滤波抑制和防止干扰是一项重要措施。在这里选择“平均滤波归一化法”。定义一个循环队列,把连续8次采样的数据进行取平均值,就可获得一次滤波后的结果,再将一次滤波后的结果进行归一化就能得到最终的滤波结果。
该滤波器采集某一通道数据8次,然后进行滤波计算,流程图如图4.1所示:
▲ 图4.1 平均滤波归一化法流程图
4.3平衡算法实现
通过实践研究发现,电单车的平衡不同于以往的直立车,传统的直立车PD控制即可实现,而这远远不能满足电单车的平衡,在实际行驶过程中会发现电单车的平衡角会随着行驶过程而逐渐产生偏移,于是我们在控制中加入了积分项的控制,用于消除平衡角偏移带来的影响,结果达到了预期,电单车实现了平衡。
4.4寻线行驶算法实现
4.4.1定位算法
通过实践研究,发现电感感应中心导线的磁场有如下规律(为了叙述方便,建立如图4.2 所示XYZ 坐标系,且相应方向上的感应电压值为VX,VY,VZ,):
1. 电感轴心平行X 方向时, 电感距离直导线越近,VX越大,反之越小。
2. 电感轴心平行Y 方向时, 电感传感器对弯道具有“前瞻性”,能较远地感应到弯道区,但在直道上,VY较小, 且物理位置对称的传感器其VY不够对称。
3. 电感轴心平行Z 方向时, 从导线上方到跑道边沿,VZ先增大后减小。
通过综合分析,采用布局方式中传感器参数线性度好,能较好反应电感空间位置与直导线距离的布局方案,即电感“一”字型排布。
▲ 图4.2 三维坐标图
对于电单车来说,简单的循迹即可满足,但经过实践验证,简单的差比和不能满足电单车的循迹,特别是转大弯的时候容易丢线,于是我们最终选择了差比和以及电感之和的融合方式进行循迹。
差比和即使用最终滤波后左电感的值减去右电感的值的差除以最终滤波后左电感的值加上右电感的值的和,最终通过pid计算得出方向角。
电感之和方法如下:将最终滤波后的电感值之和最大值取出,用此最大值减去实时的电感值之和,比较左右电感的大小得出方向为左偏还是右偏,通过pid计算得出方向角。
在电单车的循迹过程中,设置一个阈值,在阈值范围内的方向角使用差比和的方式,在阈值范围外的方向角使用电感之和的方式。
4.4.2基于位置式PID的方向控制
PID控制是工程实际中应用最为广泛的调节器控制方法。问世至今70多年来,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
单位反馈的PID控制原理框图如图4.5:
▲ 图4.5 单位反馈的PID控制原理框图
单位反馈e代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量u。
u = k p e + k i ⋅ ∫ − ∞ t e ( τ ) d τ + k d d e ( t ) d t u = k_p e + k_i \\cdot \\int_{ - \\infty }^t {e\\left( \\tau \\right)d\\tau } + k_d {{de\\left( t \\right)} \\over {dt}} u=kpe+ki⋅∫−∞te(τ)dτ+kddtde(t)
其中,Kp、Ki 、Kd分别称为比例系数、积分系数、微分系数。u接着被送到了执行机构,这样就获得了新的输出信号 ,这个新的输出信号被再次送到感应器以发现新的误差信号,这个过程就这样周而复始地进行。
数字控制系统中,PID控制器是通过计算机PID控制算法程序实现的。计算机直接数字控制系统大多数是采样-数据控制系统。进入计算机的连续-时间信号,必须经过采样和整量化后,变成数字量,方能进入计算机的存贮器和寄存器,而在数字计算机中的计算和处理,不论是积分还是微分,只能用数值计算去逼近。
用矩形数值积分代替上式中的积分项,对导数项用后向差分逼近,得到数字PID控制器的基本算式(位置算式):
u n = k p ( e [ n ] + 1 T i ∑ k = 1 n e [ k ] ⋅ T + T D ⋅ e [ n ] − e [ n − 1 ] T ) u_n = k_p \\left( {e\\left[ n \\right] + {1 \\over {T_i }}\\sum\\limits_{k = 1}^n {e\\left[ k \\right] \\cdot T} + T_D \\cdot {{e\\left[ n \\right] - e\\left[ {n - 1} \\right]} \\over T}} \\right) un=kp(e[n]+Ti1k=1∑ne[k]⋅T+TD⋅以上是关于第十六届全国大学生智能车竞赛技术报告 | 单车拉力组- 上海海事大学-骑摩托的蒙娜丽莎的主要内容,如果未能解决你的问题,请参考以下文章
智能车竞赛技术报告 | 单车拉力组 - 沈阳航空航天大学 - 青梅绿茶队