全国大学生智能汽车竞赛是一项以“立足培养、重在参与、鼓励探索、追求卓越”为指导思想,面向全国大学生开展的具有探索性的工程实践活动。它以设计制作在特定赛道上能自主行驶且具有优越性能的智能模型汽车这类复杂工程问题为任务,鼓励大学生组成团队,综合运用多学科知识,提出、分析、设计、开发并研究智能汽车的机械结构、电子线路、运动控制和开发与调试工具等问题, 激发大学生从事工程技术开发和科学研究探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神。
作为一名智能车老选手,今年的智能车竞赛是非常艰难的一届,在疫情的影响下还能正常举办实属不易,所以我也非常珍惜此次的比赛机会。在疫情期间就逐步开始了相关工作,由于疫情期间不在学校,没有相应的设备,主要做的是设计结构和电路等工作。9 月份开学后便将这些想法逐步实现,最终完成车模的设计、组装、调试。
本次我参加的组别是直立节能组,该组别是以直立运行为前提,和追求节能和速度为目标,完成特定赛道内各种元素的识别处理。首先机械结构方面我采用自制车模,在实际制作车模的过程中我们并非一味的追求轻量化,而是以提高效率为主要目标,减重为次要目标,因为我认为提高效率才是真正贴合“节能”这一主题,机械结构经过优化调试,最终可以很好的满足本次智能车比赛的需求。硬件方面使用STC8H 的单片机作为主控芯片控制车模运行,通过无线充电的方式获取车模运行过程中所需的电能,通过DC-DC 转换电路来提供车模运行所需的电压。车模的控制部分主要由直立环、速度环和转向环组成,三个环协同完成车模的直立运行。
在正式制作车模之前,我通常会对车模的基本性能指标做一个大概的预期,今年的主要预期目标有两个:
- 实现2.2m/s 的最高速度;
- 能耗达到平均1.6J/m。
最终的整车效果在速度方面并没有达到设计目标,因为要考虑到能耗、轮径等限制,最终只达到2m/s 的速度,但是在能耗方面达到了1.2j/m,实际上充入的电量越多车模的平均能耗会更低。
Play
本文将会对参赛车模的设计思路、制作过程进行一个细致的说明,将会围绕机械结构、硬件电路和控制算法三个大方面来进行讲解。
机械结构的设计是节能车中比较基础的一个环节,但也是最重要的一个环节。我们该如何去设计车模的机械机构呢?本章将会对机械结构做一个具体的讲解。
2.1 车模整体结构
由于是节能组,减重是降低能耗的一个重要方法。所以我的思路是在保持整体强度的情况下尽量减轻车模的重量。除了减重之外,风阻也是我们需要考虑的一个细节,虽然影响不那么明显,但这也是真实存在的一个因素,所以减小迎风面积也是结构设计需要注意的一个方面。其次我们的车模需要直立运行,对此我也参考了之前很多直立组的机械结构,总结一下就是重量集中,重心适中,太高或太低的重心都不利于我们后期的控制。整体机械结构如下图所示。
▲ 图2.1 整体机械结构(主视图)
▲ 图2.2 车模整体结构(侧视图)
2.2 传感器安装
车模上的传感器主要由姿态传感器电磁传感器和光电传感器组成,传感器的安装对于后期车模的稳定性和速度上限也存在很大的影响。
2.2.1 姿态传感器的安装
姿态传感器采用直接焊接在主板背面的安装方式,省去了连接线,这样也降低了故障率,主板预留安装位置可以兼容MPU6050 和ICM-20602 两款传感器。安装位置在下图用红框标出。
▲ 图2.3 姿态传感器安装
2.2.2 电磁传感器的安装
电磁传感器相对于光电类传感器有着更强的抗干扰性能,所以我选择使用电磁传感器来进行循迹。电磁传感器部分采用了一块PCB 板作为载体,五颗电感依次排布,使用3D 打印件和碳素杆和车体进行固定,再通过FPC 软排线和主板进行连接。
电磁传感器的高度和前瞻首先要能够满足正常循迹的需要,即前瞻长短合适,离地高度适中。在适应正常循迹的基础之上还要能够满足对特殊元素的处理,比如坡道和圆环,电感高度太低可能会导致坡道无法正常通过等情况发生。
▲ 图2.4 电感安装图
2.2.3 线性CCD 的安装
线性CCD 在车模上的唯一作用是用来识别斑马线入库,它的安装可能是整个车上最不协调的一个地方。具体原因是因为最早设计车模的时候设想使用电感板上的红外对管作为斑马线的识别,CCD 仅仅作为备选方案,但是由于红外对管实际测试效果并不是十分理想,后期才将斑马线检测换为线性CCD。所以CCD 传感器中间部分被排线遮挡,好在通过算法处理,并不会对最终的斑马线识别造成影响。整个CCD 的安装都是通过3D 打印件与车身进行连接,并且可以灵活调节角度,以此达到更好的适应性。
▲ 图2.5 CCD 的安装
2.3 电路板的安装
对于该车模,与其说是电路板安装到车模上,倒不如说是电路板构成了车模,我们的车身最主要的承重、连接的结构,就是两块电路板构成,上层的主控板和下层的恒功率充电板,两块电路板并没有任何导线相连接,而是通过固定铜柱进行电能的传输。
2.3.1 主控板的安装
主控板是整个车身最重要的一块电路板,也是在调车过程中最常接触的电路板,集成了开关、OLED、下载接口、拨码开关、指示灯等等功能,所以将此电路板放置于最上层无疑是最好的选择,也会更方便后期的调试、下载。
▲ 图2.6 主控板的安装
2.3.2 恒功率板的安装
该电路板除了恒功率的相关电路之外还是整个车模结构的基石,除此之外还肩负了放置储能元件的重任,由于超级电容这种储能元件一般禁不起碰撞,所以将其放置于恒功率板的上方,主控板的下方,不仅会得到更好的保护,还会使车模空间的利用更加合理化。
▲ 图2.7 恒功率板的安装
2.3.3 整流小板的安装
由于设计充电板时并没有最终确定整流方式,并且本着后期升级方便的想法,就将整流板与恒功率充电板分为两块电路板,整流小板也理所当然的就近放置,安装在充电线圈与恒功率板之间。
▲ 图2.8 整流小板的安装
2.4 电机的选择与安装
对于节能电机的选择,通常最常用的方案有直流有刷电机、普通无刷电机和空心杯电机。
有刷直流电机具有结构简单、成本较低和便于控制的优势,但是相对来说工作效率并不是很高,如果选择不合理,通常并不能在节能组的比赛中取得优异的成绩。
普通无刷电机并没有有刷电机的换向器,无刷直流电动机是采用半导体开关器件来实现电子换向的,即用电子开关器件代替传统的接触式换向器和电刷。它具有可靠性高、无换向火花、机械噪声低等优点,而且无刷电机的效率相对于普通有刷直流电机要高上不少。但是控制更加复杂,需要对应的电子调速器,其制作的工作量与难度均大于目前的智能车直流电机驱动。更何况今年需要车模直立,由于水平有限,因此选择放弃此方案。
相比之下空心杯电机似乎更加适合今年的节能,空心杯电动机在结构上突破了传统电机的转子结构形式,采用的是无铁芯转子,也叫空心杯型转子。这种新颖的转子结构彻底消除了由于铁芯形成涡流而造成的电能损耗。同时其重量和转动惯量大幅降低,从而减少了转子自身的机械能损耗。由于转子的结构变化而使电动机的运转特性得到了极大改善,不但具有突出的节能特点,更为重要的是具备了铁芯电动机所无法达到的控制和拖动特性。但是最常见的航模空心杯电机转速太高,并不是非常适合用于车上。对比之下比较合适的电机可能就是德国Faulhaber 和瑞士MAXON 的产品了,但是全新原厂产品价格相对较高,权衡之下选择了二手Faulhaber 电机,虽然有着重量过大(双电机加车轮已经占到车重的一半)、减速比不够完美等缺点,但也基本可以满足使用要求。电机与车身使用3D 打印件进行连接。
▲ 图2.9 电机的安装
2.5 车轮的设计与安装
今年节能组的规则限制自制车轮的直径小于5cm,我选择使用3D 打印来制作车轮,再通过联轴器与车轴进行连接。
▲ 图2.10 3D 建模的车轮
2.6 无线充电线圈的安装
无线充电线圈选择置后放置,一方面可以平衡车身重量,另一方面可以减少充电线圈对于车模启动时的干扰。
▲ 图2.11 充电线圈的安装
节能车硬件的设计最重要的一个原则就是稳定,抗干扰能力强,其次才是高效。所以我队的小车自搭建完成之后,就没有出现过烧毁电源、电机驱动等故障,即使堵转,也不会烧毁硬件,排除了这些后顾之忧,才能让后续的车模调试更加顺利。
3.1 单片机最小系统
十五届全国大学生智能汽车竞赛首次可以使用STC 系列的单片机作为主控芯片, 并且节能组只能使用:STC8G2K64S4-36I-LQFP48 、STC8H8K64S4U-48I-LQFP48 和STC8A8K64S4-28I-LQFP64/48/44。通过芯片手册对比和实际测试,最终选定STC8H8K64S4U-48I-LQFP4 作为参赛车模的主控芯片。
STC8H 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗为目标的8051 单片机,在相同的工作频率下,STC8H系列单片机比传统的8051 约快12 倍(速度快11.2~13.2 倍),依次按顺序执行完全部的111 条指令,STC8H 系列单片机仅需147 个时钟,而传统8051则需要1944 个时钟。STC8H 系列单片机是STC 生产的单时钟/机器周期(1T)的单片机,是宽电压/高速/ 高可靠/低功耗/强抗静电/较强抗干扰的新一代8051 单片机,超级加密。指令代码完全兼容传统8051。
▲ 图3.1 单片机最小系统
下图为车模使用的单片机最小系统,由复位电路和滤波电容组成,晶振使用单片机内部晶振。
3.2 单片机下载电路设计
STC 系列单片机支持串口下载,所以我采用串口对单片机进行下载调试,CH340 作为电平转换芯片实现USB 电平和TTL 电平的转换,使用type-c 接口与电脑连接,只需要一根type-c 数据线即可完成下载调试的功能。
▲ 图3.2 下载电路
3.3 电源管理模块
超级电容作为车模的供能元件,由于其自身特性,所储存的能量和电压有以下关系,J=1/2_C_U*U,所以其电压是不稳定的,而且放电是非线性。因此我们需要DC-DC 模块来得到我们想要的电压。
3.3.1 主控及各种传感器的供电
节能组已经出现好几年了,出现了一个又一个优秀的方案,但是有一款芯片始终备受各参赛队伍的青睐,那就是德州仪器的TPS63070。TPS6307x 是一款具有低静态电流的高效降压-升压转换器,适用于那些输入电压可能高于或低于输出电压的应用。在升压或降压模式下,输出电流可高达2A。此降压-升压转换器基于一个固定频率、脉宽调制(PWM)控制器,此控制器通过使用同步整流来获得最高效率。在低负载电流情况下,此转换器进入省电模式以在宽负载电流范围内保持高效率。转换器可被禁用以大大减少电池消耗。在关断期间,负载从电池上断开。此器件采用2.5mm x 3mm QFN 封装。
▲ 图3.3 主控供电电路
3.3.2 电机驱动的供电
电机驱动的供电电压通常是由选用的电机决定的,最后我们选择使用12V作为电机驱动的供电电压,选用的芯片依旧是德州仪器的,此款芯片早年在充电宝上工作过,也算是经受过实战的考验。TPS61088 采用自适应恒定关断时间峰值电流控制拓扑结构来调节输出电压。在中等到重负载条件下,TPS61088 工作在PWM 模式。在轻负载条件下,该器件可通过MODE 引脚选择下列两种工作模式一种是可提高效率的PFM 模式;另一种是可避免因开关频率较低而引发应用问题的强制PWM 模式。可通过外部电阻在200kHz 至2.2MHz 范围内调节PWM 模式下的开关频率。TPS61088 还实现了可(VQFN) 封装编程的软启动功能和可调节的开关峰值电流限制功能。此外,该器件还提供有13.2V 输出过压保护、逐周期2 应用过流保护和热关断保护。TPS61088 采用20 引 脚4.50mm × 3.50mm VQFN。
▲ 图3.4 电机驱动供电电路
3.4 运放模块
根据大赛规则,赛道铺设有中心电磁引导线。引导线为一条铺设在赛道中心线上, 直径为0.1~1.0mm 的漆包线,其中通有20kHz、100mA 的交变电流。频率范围20k±1kHz,电流范围100±20mA。
所以我们选择10mH 电感配合6.8nf 电容对电磁线进行检测,但是检测出的信号并不能直接给到单片机ADC 口检测,因为首先感应出的电压太小,其次是交变电流。所以我们选用运放芯片LMV358 将信号进行放大,再通过二极管倍压检波得到与磁场强度相对应的直流电压给到单片机ADC 口,实现对赛道的检测。该方案借鉴了竞赛秘书处于2010-1 发布的电磁组竞赛车模路径检测设计参考方案。
▲ 图3.5 运放模块
3.5 编码器方向
由于车模使用的是AB 相编码器,同时STC 单片机没有正交解码功能,所以我决定通过硬件的方式来对编码器旋转方向进行一个判断,实际上就是用到了数字电路中学过的D 触发器,AB 相编码器的两个脉冲信号分别接入D 触发器的时钟CLK 和输入D,此时就可以通过输出Q 的电平高低来判断编码器的正反转。很多带方向输出的编码器也利用了相同的原理。
▲ 图3.6 D 触发器
3.6 电机驱动模块
智能车电机驱动的方案早已经非常成熟,目前智能车比较流行的驱动方案有BTN 和BTS 集成驱动和分立元件搭建的MOS 管全桥驱动,BTN 只需要两块芯片和少许外围即可实现对单个电机的控制,相比之下分立元件搭建的电机驱动更加复杂,但是其强大的输出功率往往让人爱不释手。但是我们要做的是节能啊,以上两种方案的性能绝对可以满足,但是有点大材小用的感觉。所以我决定采用单芯片集成驱动,说到这里就不得不提L298N 和MC33886。L298N 很多做过51 循迹小车的同学估计都认识,一块芯片即可完成我们所有的需求。MC33886在多年前的智能车竞赛中也被广泛应用过。但是我还是觉得这两款芯片的体积太大,所以最终选择了东芝公司的一款集成驱动芯片,虽然其内阻相对较大,但是胜在体积小巧,一块芯片便能满足我们的需求。
▲ 图3.7 电机驱动
3.7 功率检测电路
这里的功率检测并不是恒功率充电中使用的功率检测,而是检测车模运行功率的功率检测。加入这个功能,最初的想法就是为了在后期调试车模时能够发现因为控制不利而导致的功率异常情况,以此来优化控制,降低功耗,并且该功能还可以对堵转等异常情况实现保护。主要电路的构成是由电阻分压的电压检测和电流检测构成,通过单片机ADC 端口对电压和电流进行采集,计算出当前功率,通过无线模块传回上位机进行分析。
▲ 电流检测(左)电压检测(右)
3.8 陀螺仪&加速度计接口
陀螺仪&加速度计模块采用IIC 进行数据的读取,接口如下。
▲ 图3.10 陀螺仪接口
3.9 人机交互电路
为了方便调试,在车模上增加了OLED 液晶、LED 指示灯、按键和拨码开关,可以通过OLED 观察车辆的一些数据,LED 在车模运行时指示某些特殊元素,按键可以用来调参和实现特定功能,拨码开关用于策略调整。
▲ 图3.11 人机交互电路
3.10 无线充电电路
在正式制作无线充电电路之前,曾经以卓老师公布的预赛赛道为基准,心中定下了一个预期的充电时间。不是5s,也不是4s,而是3s。最后做到了吗?嗯,是的,做到了。最后实测2.8s 即可完成对运行预赛赛道一周所需的能量的获取。如果以更加节能的方式去跑,充电时间可以降到2.5s。完成3s 充电,充电电路肯定非常重要,但并不起决定性作用,归根结底是车模运行时需要的能量少,所以充电的时间才会缩短。功率控制部分我使用的方案是卓晴老师公众号推文“如何把大象装进冰箱”中的方案,这算得上一个很优秀的方案。
3.10.1 充电线圈的选择
无线充电接收线圈通常是使用纱包线制作而成的,主要原因是因为电流在高频的情况下电流分布变得不均匀。大部分电流会集中在导体表面附近。这种现象称之为趋肤效应。除了使用纱包线外还可以使用铜箔绕制线圈。这两种方法都尝试过,因为最终整流方案的选择,所以最后还是选用纱包线制作的成品线圈。
▲ 图3.12 充电线圈
3.10.2 整流电路
为了方便后期的升级,所以我将整流电路从恒功率电路中独立出来制作。整流电路也是充电损耗的一个重要环节,做好这部分对于充电效率的提升非常重要,所以在车模还未搭建的时候便着手准备相关的工作。
目前比较常见的整流方案有全桥整流、全波整流、倍压整流等,这三种方案对比来看,全波整流的效率理论是最高的,其次是倍压,最后是全桥。所以我决定全波整流中的二极管用MOS 管进行替代,以此希望能够达到更高的效率。最后还是给做出来了,单独测试整流效果也还不错,虽然相较于二极管全波整流效率并没有明显提升。
▲ 图3.13 全波同步整流
然后尴尬的事情就来了,在与恒功率板进行配合的时候充电器会出现“Wireis Broken”并蜂鸣器报警,具体原因是恒功率充电板在刚上电的时候单片机需要一定的时间才能正常工作,在这一段时间没有PWM 输出会导致整流板相当于空载,引起充电器谐波比例过高导致报警。最终在赛前换成了更加稳定的全桥整流。还好用到了恒功率电路,所以整流板通常工作在十几伏以上的电压,此时二极管的压降造成效率下降就没有那么严重了。
▲ 图3.14 全桥整流
3.10.3 电源模块
恒功率充电电路在进行工作的时候需要给半桥驱动芯片供电的12V,和给单片机供电的5V。12V 由整流后的直流电压通过降压模块得到,5V 电压通过12V降压后得到。12V 的电源芯片选型使用德州仪器的TPS54061DRBR。5V 采用和主控5V 相同的TPS63070(见3.3.1)。
▲ 图3.15 12V 电源
3.10.4 功率检测
使用电阻分压检测电压,AD8217 配合采样电阻检测电流,通过单片机对电压电流进行采样后得到当前功率。
▲ 图3.16 功率检测电路
3.10.5 半桥功率输出电路
通过PWM 控制功率输出:
▲ 图3.17 半桥功率输出电路
3.11 电路板实物展示
下图依次为主控板(正)、主控板(反)、充电板(正)、充电板(反)。
控制程序是智能车的灵魂,在之前的机械篇和电路篇已经完成了对硬件方面的制作,现在需要通过控制程序使其将硬件的水平充分发挥,以此达到更好的成绩。由于节能限制以直立的方式运行,所以对于控制算法的要求也相对较高,首先能够实现稳定的直立运行,其次还要在直立的状态下保持较高的运行速度,而且还不能消耗过多的能耗。这就需要在控制方面注意更多的细节。
4.1 传感器信号处理
4.1.1 电感信号处理
智能车通过电感实现循迹,对于电感信号我们使用ADC 获取信号数值,通过均值滤波之后将其进行归一化处理,然后通过差比和计算出转向偏差,代入转向环实现转向操作。
4.1.2 陀螺仪&加速度计信号处理
车模想要保持直立就必须知道当前的车身角度,单纯的使用陀螺仪或者是加速度计都没有办法准确的活动车身的角度。只用将加速度计与陀螺仪的数据进行结合,才可以做到。常用的方法有互补滤波和卡尔曼滤波。因为备赛时间较短,所以首选较为简单的互补滤波作为姿态解算,且在后期使用的过程中也能够完美的胜任直立要求,所以一直沿用到正式比赛。
陀螺仪动态响应特性良好,但计算姿态时,会产生累积误差。加速度传感器测量姿态没有累积误差,但动态响应较差。因此,它们在频域上特性互补,可以采用互补滤波器融合这两种传感器的数据,提高测量精度和系统的动态性能。
▲ 图4.1 互补滤波器基本结构图
4.2 PID 算法
在工业应用中PID 及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID 算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在我所接触的控制算法当中,PID 控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,简单的不是原始的,简单的也不是落后的,简单到了美的程度。现在虽然已经演变出很多智能的算法,如蚁群,神经网络等,但是在实际应用中还是以串级pid 为主,因为它可靠。
PID 各个参数作用基本介绍:
比例调节(P)作用: 是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用,以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。积分调节(I)作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti 越小,积分作用就越强。反之Ti 大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI 调节器或PID 调节器。
微分调节(D)作用: 微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD 或PID 控制器。
智能车中PID 控制主要使用模糊PID、增量式PID 控制或者位置式PID 控制。
简单地说增量式就是每次PID 计算出来的值是一个增量,最终使用时是用原值加上或减去这个增量,举个例子:例如舵机的控制,舵机有一个中值(就是舵机调中时使用的占空比),控制时就用这个加上或减去PID 后的增量(加上还是减去主要看舵机的摆放,具体试一下就知道了)最为最终的舵机控制量。增量型算法不需要做累加,增量的确定仅与最近几次偏差采样值有关,计算精度对控制量的计算影响较小。
▲ 图4.2 PID 算法的一般形式
4.3 直立环
车模能够保持直立是直立车最基础,也是最重要的一步,直立环调的好不好,对后期的速度环和转向环都有影响。直立环采用PD 控制器,姿态解析后的角度乘以P,陀螺仪输出的角速度直接乘以D。参考了卓老师第七届的《电磁组直立行车参考设计方案》。
▲ 图4.3 角度控制框图
4.4 速度环
速度环用来控制车模运行时的速度,通过编码器采集脉冲计算出当前速度,与预期速度做比较来确定下次输出速度的大小。我采用的方案是单个P,至于为什么没有用I,我只是觉得暂时没有必要。速度环计算出的输出给到直立环的输入,即控制直立时的倾角,以此达到控制速度的目的。
▲ 图4.4 速度控制框图 4.5 转
4.5 转向环
转向环采用PD 控制,通过电感差比和得到的偏差来对转向进行控制,转向环是直接加在输出给电机的PWM 上。
▲ 图4.5 转向环框图
4.6 特殊元素处理
通过上述的算法,已经可以实现车模在赛道上的基本循迹,但是对于特殊元素还需要进行特别的处理才能正常通过,如:车库、圆环、坡道。由于机械结构和控制程序比较合理,坡道在没有进行特殊处理的时候依旧可以正常通过,所以这里只对车库和圆环的处理做一个讲解。
4.6.1 出库处理
由于车模一开始需要放置在车库内,待完成充电后再自行发车,所以当车模完成充电后第一步便是完成出库。出库的处理的第一个方案就是,先固定直行一段距离后再固定转向进入赛道正常循迹。这种方案对于车模放置的位置要求过高,当充电线圈位置变动时还需要再修改代码。使用我使用第二个方案,让其自己判断转向的时机,由于我使用了3 横两竖的电感布局,所以就可以用两个竖直电感判断转向的时机。
▲ 图4.6 出库示意图
4.6.2 环岛处理
环岛元素已经连续三年出现在智能车赛道中了,但是想要完美的完成这个元素还是需要下一些功夫的。首先对环岛元素进行一个分解处理,我将其分成了四个部分。首先是检测到环岛,这时因为电感会检测到两条电磁线,电感值会增大,但是还没有到达两条电磁线重合处,此时的处理是要保证车模平稳进入电磁线重合处。到达电磁线重合处就到了第二个部分,此时将原本两个横电感计算偏差的方式改为两横两竖电感加权计算偏差,此时会因为竖直电感的引入而顺利进环,进环之后到达第三步。将计算偏差的方式改回正常循迹的模式。最后一步就是出环,使用陀螺仪z 轴角速度积分得到角度判断车模是否在圆环运行一周,借助积分后的角度顺利出环。
▲ 图4.7 环岛处理示意图
4.6.3 入库处理
入库的难度是要大于出库的,想要入库,首先就要能够检测到车库,起初设计时预选了3 种检测方案,1.红外对管;2.干簧管;3.CCD。使用红外对管检测斑马线理论上是可行的,距离斑马线7cm 以下有着比较好的检测效果,由于将其集成在电感板上,电感板太低便无法顺利通过坡道,所以将距地高度提高到12cm,此时红外对管已经不能实现斑马线的正确检测了。干簧管可以用来检测磁标识别车库,但是还需要进行倒车操作,太浪费时间。所以最后选择CCD作为车库的识别。
CCD 检测斑马线我写了两套程序,第一个是通过设定阈值对采集回的数据进行二值化处理,再计算黑点的个数,以此判断斑马线。这个方案我也用了一段时间,但是当光线有较大变化的时候,还需要改变阈值,太费时间。所以又想到了第二个方案,通过采集黑白跳变点的个数来判断斑马线,此方案不需要设定阈值,只需要把数组里面的数据进行对比即可,相对来说适应性强于前者。
检测到之后就到了入库处理的环节,由于车模在运行过程中速度比较快,想通过操作转向环来实现入库效果并不理想,所以干脆直接绕过所有控制,直接对最终输出给电机的PWM 进行控制,再利用Z 轴角速度积分判断转的角度,最终实现入库。
▲ 图4.8 赛场上即将入库的瞬间
5.1 程序开发工具
程序开发工具使用Keil uVision5,源程序的编写、编译都是在该软件上完成的。并且还可以使用在线调试功能。
▲ 图5.1 keil5
5.2 硬件开发工具
对于硬件电路的开发,我选择了一款国产EDA 软件——立创EDA,这也是我首次在竞赛中使用该软件。纯中文的操作界面真是非常适合我,并且简单易学,依托立创商城,有非常多的元件封装可以直接使用,大大缩短了开发周期。虽然还有很多地方需要完善,但是目前基本都可以满足我的使用需求,更重要的是因为它是一款国产软件,支持!
▲ 图5.2 立创EDA
5.3 3D 建模工具
车模上使用了非常多的3D 打印件,因此不得不学会一款3D 建模软件来完成这些任务,但是很多专业建模软件学习少则几个星期,多则几年,等学会了比赛早比完了。我就在想有没有一款可以十分钟就能学会的建模软件,结果真让我找到了。Tinkercad 是一款在线进行制图的工具,使用非常简单,只需要对几何图形进行简单的拖拽组合,即可绘制出需要的零件,车模上的所有3D打印件均由该软件绘制。虽然操作简单,但是局限也很大,很多较为复杂的图没有办法绘制,只能暂时应急。想要学好3D 建模,还是需要耐下心来学习专业软件。
▲ 图5.3 Tinkercad
5.4 程序下载工具
使用STC 单片机,当然要使用宏晶科技的下载软件了。除了下载功能外还有串口助手、示范例程等功能。
▲ 图5.4 程序下载软件
5.5 上位机软件
通过上位机软件对车模实时数据进行监测,在调试过程中发挥了巨大的作用。
▲ 图5.5 山外上位机软件
自从报名参加第十五届全国大学生智能汽车竞赛以来,一直在为这项比赛所努力备赛。智能车的魅力始终深深吸引着我,让我无法自拔。在此次的技术报告中,我对本次参赛的方案进行了一个详细的说明,有的想法实现了,有的想法失败了,但是失败的也恰恰是收获的经验。
关于技术报告中的机械结构,我还想再进行一个说明,除了实现车模的基本功能外,我还会追求车模的美观程度,因为在智能车界一直流传着一句话,那就是自古丑车跑不快,第一次听到这个说法我就觉得很有道理,所以在制作车模的过程中,追求美观也成为了我所追求的一个重要目标。车模的美丑不单单是外观的问题,还反映了选手对待车模的态度,对细节的把控,如果车模上热熔胶一大堆,杜邦线满天飞,这种车通常并不容易跑出好的成绩。
硬件部分其实很多队伍都大同小异,毕竟优秀合适的方案就那么多,电源一般都选择德州仪器的TPSxxxxx,电机比较好的无非Faulhaber 和瑞士MAXON。既然大家水平都差不多,就要在细节上下功夫,节能组,玩的就是细节。因为电源芯片效率的天花板就在那,电机效率的天花板也在那,想在单个环节上有较大的提升根本不现实,还是得回归细节,对细节进行反复的打磨,才有可能在赛场上有所优势。
算法方面属于短板,主要控制思路还是用最简单的方法实现较好的效果,滤波算法用互补滤波,循迹用差比和。很多时候能否调校出一辆优秀的车并不在于你是不是使用了多么高大上的算法,而是你是否真的把你会的简单算法使用好了。学会善于观察车模运行过程中的“风吹草动”,再找到引起这些问题的原因,即使用简单的方法,小车依旧可以快乐的飞驰。
经过几个月的准备,最终在11.7 日来到了安徽赛区的赛场,并以满意的成绩结束了我最后一次智能车之旅。贯穿了我整个大学时光的智能车哟,多少个不眠之夜,多少次垂头丧气,又有多少次解决问题之后的喜悦,如今历历在目。别了,智能车。
最后感谢学校为我们提供场地和经费支持,有了这些物质基础,才能让我顺利的完成比赛。也要感谢老师和领导的支持与指导。同时还要感谢竞赛组委会工作人员的辛苦付出,疫情期间,今年能够正常举办真是非常难得,感谢各位为竞赛提供帮助的人。
1.参考文献
[1] 田书林等.电子测量技术.北京.机械工业出版社.2012.
[2] MarkI. Montrose.电磁兼容的印制电路板设计.北京.机械工业出版2012.
[3] 余志生.汽车理论.北京.机械工业出版社.2012.
[4] 童诗白,华成英.模拟电子技术基础[M] .北京: 高等教育出版社,2001.
[5] 安鹏,马伟.S12 单片机模块应用及程序调试[J] .电子产品世界.2006.第211 期.
[6] 阎石.数字电子技术基础[M] .北京: 高等教育出版社,2000.
[7] 谭浩强著.C 程序设计.北京:清华大学出版社,2003.
[8] 尹勇.Protel DXP 电路设计入门与进阶[M] .北京: 科学出版社,2004.
2.电路图
原文链接:TsinghuaJoking
作者:程杰
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。