赞
踩
全国大学生智能车竞赛以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,涵盖了机械、模式识别、电子、电气、传感技术、计算机、自动化控制、汽车理论等多方面知识,从一定程度上反映了当代大学生综合运用所学知识和探索创新的精神。同时该赛事是教育部高等教育司委托(
教高司函[2005]201
号文)
,由教育部高等自动化专业教学指导分委员会(
以下简称自动化分教指委)
主办的全国性、多学科交叉、趣味性、创新性赛事,旨在加强大学生实践与团队合作精神,促进高等教育改革。竞赛规则透明,评价客观标准,坚持公开、公平、公正的原则,从而保持了竞赛的健康、普及、持续的发展。
学校积极响应教育部关于加强大学生的实践、合作精神和创新能力的培养的号召,成立智能车队伍参加比赛。我们组队参加第十七届全国大学生智能车电磁组别的比赛,并进行了积极认真的准备。根据本届竞赛规则相关规定,电磁竞速组允许自制车模,于是我们在C
型车的基础上进行了一定符合竞赛规则的改造,包括底盘强化和舵机的更换等等。同时我们采用宏晶科技公司的16
位微控制器(STC16F40K128
)作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动、转向舵机控制以及控制算法软件开发等,完成了智能车工程制作及调试。我们依旧延续了很多学校包括杭州电子科技大学在内所使用的工字谐振电感(10mH
)作为传感器来检测信号,加以合理的传感器布局,经过后续电路处理,完成对电磁信号的检测和采集并以此来控制车子的转向和行驶速度。软件算法部分,我们使用了PID
算法来作为车子的主导控制。为了提高我们的智能车在高速与急转等情况下的动力性能和稳定性能,我们参考学习了前几届队伍的参赛经验,对整车经行了重心与电路等的布局,并对车辆底盘和舵机部分进行了改造。本技术报告主要讲述第十七节杭电四轮电磁一队智能车的制作历程,包括机械和硬件的设计、改装,STC16F40K128
单片机的学习和使用,PID
算法的研究与应用,车模机械参数的讨论和修改等。
鉴于赛道的摩擦力和复杂性以及车模的机械结构和强度、根据自己的调车经验,我们了解到车子重心高低和位置对车子行驶、转弯有很大影响,例如转向灵敏度和赛道加(
减)
速性能等。于是我们决定在不伤害赛道并且确保通过坡道等元素的情况下最大限度降低整车重心。我们提出通过使用垫片抬高前轮转向部分来降低底盘至我们的目标高度,同时设计了与底盘形状相匹配的电路板和电池固定方法,力求进一步降低整车重心。在调试过程中我们发现由于原本的C
型车模底盘是塑料材质,再加上电磁车有较长较重的前瞻部分,在车辆高速行驶过程中,底盘会产生较大的形变,使得车辆晃动影响正常循迹和行驶。为了解决这一问题,考虑到本次竞赛规则允许自制车模,于是我们想到使用硬度高、韧性强且轻便的碳纤维材料制作底盘,我们使用Solid Work 2018
进行底盘的绘制与打孔等设计,并联系厂家进行底盘的制作,在调试过程中发现基本解决了这一问题,达到了我们的预期要求。为了使车辆转弯半径更小,转弯更灵敏,我们还对车模进行缩短处理,比原C
车模短了4cm
左右,底盘实物如下图1.1
所示。
前瞻支架的选取我们尝试过很多方案,最后我们采用强度高、重量轻、可任意制作形状、加工简单、耐撞击的钢管配合轻质碳杆的支架方案,使得车子的转动惯量(
以回转轴过杆的中点并垂直于轴时为例: J=mL2/12
,车子大概为长条形)
达到最小化,从而车子在转弯时更加迅速、灵敏。前瞻支架固定于舵机下部分,并通过碳纤杆拉伸固定于车身中部,形成了三角形结构,利于提高前瞻的稳定性,减小行进过程前瞻摇晃带来的影响。在调试车子过程中我们发现传统的“碳杆+
独立电感”的方案在高速撞击下易碎且不牢固,再经过我们的不断尝试后,最后选定了PCB
一体板的方案,如下图1.2
所示,经过实际检验稳定性与坚固程度大大提升,也更为轻巧。
最后讨论车子的闭环控制问题。我们采用龙邱512
线旋转编码器(ECM41803
—SDZ512
)为测速器,直接用编码器齿轮咬合车模主动轮的方法来获取车子的行驶速度,最后在程序中根据编码器采集回来的信号设计速度控制策略,实现车速的闭环控制。
杭电四轮电磁一队小车主体部分:
鉴于本届比赛不同于去年的电磁越野组,我们更多地参考了其他学校包括本校在内的控制方式。由于传感器感应得到的电压信号只有几十mv
,所以我们采用集成运放把信号进行放大,然后将其检波为直流电平送入单片机AD
口。同时编码器的信号也同步输入,由单片机的输入捕捉通道进行上升沿或者下降沿计数,从而计算得到车子行驶的速度。舵机采用PID
算法进行控制,并且加入连续控制函数进行修正,使前轮的转向更加具有连续性和精确性:
为了避免和电感相互干扰,驱动电机在最佳的驱动频率(15KHZ)
下。
电磁组的信号由LC
并联谐振得到,相比摄像头和光电,信号为模拟信号,故电磁小车的巡线信号相对连续,不存在断点,所以在车模相对于摄像头和光电组更加不容易出现丢线。同时,作为信号采集的谐振电感制作简单,价格低廉。可是在空间中,磁场信号会发生叠加与抑制等,由此得到的混合磁场是三维矢量,其分布有很大的方向性和对称性,又矢量的运算较为复杂,所以在赛道上电磁车容易出现误判,状态也不稳定。鉴于水平变化率和竖直变化率有一定联系和区别,我们将传感器放置为对赛道信号变化敏感的方向以便最快、最灵敏的检测到赛道变化引起的信号变化。这一点可以参考官方的文档:
《电磁小车设计参考》。
本章主要介绍了杭电电磁一队的整体设计思路和大致的布局,以上将会为以下章节的介绍起到铺垫的作用。
为了使模型车在直线行驶时更加稳定,转向轻便,转向后能快速回正,并减少轮胎和转向系零件的磨损等,在转向轮、转向节和前轴之间形成一定的相对安装位置,叫车轮定位。其中包括主销后倾、主销内倾、车轮外倾和前束。接下来主要介绍主销后倾、主销内倾、前轮外倾和前束以及前轮悬挂对车子行驶的影响及调教。
主销在车模的纵向平面内(
汽车的侧面)
有一个向后的倾角y
,即主销线与地面垂直线在车模在纵向平面的夹角,称为“主销后倾角”,如图12
示例所示。车模采用主销后倾的原因是由于汽车在车轮偏转后会产生一回正力矩,纠正车轮偏转。车模的主销倾不可直接调教,在此我们采用预设的主销后倾角,大概3
度左右。调整方法如图2.1
所示,调整方式即为调整横轴上黄色垫片的个数,经多次试验我们将其调整为前2
后2
。
调整主销后倾不当可能出现严重的后果,比如过大会引起转向沉重,舵机偏软,所以不宜采用过大的主销后倾,以免丧失转向的灵活性。
主销在汽车的横向平面内向内倾斜一个β角,即主销轴线与地面在汽车横向断面内的夹角,称为主销内倾角。主销内倾角β也有使车轮自动调整的作用。当转向轮在外力作用下发生偏转时,车轮就会在重力的作用下恢复到原来中间位置。另外,主销内倾还会使主轴线延长线道路面的交点的距离减少,同时转向时路面作用在转向轮的的阻力也减少,从而减少转向时驾驶员施加在转向盘的时,使车运行更轻便,同时也减少了由于路面不平而从转向轮输出到转向盘的力反馈。但主销内倾角不宜过大,否则在转向是车轮绕主销偏转的过程中,轮胎与路面间将产生较大的滑动,从而会增加轮胎与路面间的摩擦力,这也会使转向变得沉重,还将加速轮胎的磨损。调整方法如下图2.2
,通过旋转该结构进行角度调节。
前轮外倾角:
前轮外倾是指前轮安装后,其上端向外倾斜,于是前轮的旋转平面与纵向垂直平面间形成一个夹角,称之为前轮外倾角,其主要作用是使转向轻便,使车轮紧靠轮毂内轴承,以减少外轴承及轮毂螺母的负荷,有利于安全行驶。一般前轮外倾角为1
度左右,但对于有高速、急转向要求的车辆,前轮外倾角可减小甚至为负值。鉴于速度要求,我们没有对其进行调整。
前束是转向灵敏度与稳定性的权衡。前束不可以无限度增大(
向左侧调整)
,太大了的话,直道行驶时车轮与地面发生的就不是滚动摩擦,而是滑动摩擦,轮胎磨损将急剧增大,且会导致阻力加大,降低直道速度。过度减小(
向右侧调整)
,会导致稳定性降低,车辆抖动,难以操控。我们通过调整两端螺丝长度,如图2.3
示例所示。
简单来说,悬挂系统就是指由车身与轮胎间的弹簧组成的整个系统,悬挂强度以及悬挂行程直接决定了车辆面对颠簸路面时的通过性。但是当小车速度较高时,软悬挂也会带来很多问题。由于弹簧刚度小,导致车身摇晃,这在车辆前端较长较重的电磁车模来说,影响尤为明显。当加速行进时,底盘已经加速走了,前半车身部分还在仰头克服惯性;当减速时,底盘部分已经开始制动了,前半车身还在因为惯性而刹车点头,这就导致车辆行驶时出现一颠一颠的情况,不仅影响速度,还导致稳定性减弱。在转弯过程中,较软的悬架会有更多的倾侧和动态迟缓,导致重心偏移大,车身晃动大,更容易失控。考虑到我们的室内赛道是比较平整的,我们决定提高悬挂系统强度,使其在转向、加减速时反应更快,我们通过在车模原有悬挂弹簧下方加入垫片来解决,如图2.4示例所示:
车模在赛道上高速行驶和连续急转弯,整车重心的高低决定了车模的加减速性能、转向性能、行驶稳定性等。鉴于赛道上存在障碍,那么在确保过掉障碍的前提下,我们坚持将整车重心最大限度地降低。为了增加转向的灵敏度,我们将前底盘的高度设定为低于后底盘高度,从而在转弯时能够更加灵敏。我们通过在舵机和底盘连接处加入垫片来降低底盘高度,如图2.5所示:
电磁组磁场信号较为复杂,如果小车的前瞻较近则不利于小车的快速灵活转向:
如果前瞻较远,那么在赛道之间过近的情况下则容易出现判断错误使小车跑出赛道,致使比赛失败。在仔细研读第十七届的电磁组比赛细则之后,我们决定使用PCB
制作一体式传感器作为前瞻。
简单为小车运动建立一个模型。我们不妨将车体的运动看成平动,将车身看成一个质点系。车身本身是一个惯性系,但是由理论力学知识可以知道,以质点的相对速度或以其绝对速度计算质点系对于质心的动量矩,其结果是相等的。即:质点系相对于质心的动量矩等于质点系内各质点现对于质心平移参考系的动量对质心的矩的矢量和。换句话说,就是由于质心在动力学中的特殊性,我们可以将车身转向运动直接看随质点的平移以及绕质点的转动运动合成。因此,在分析转动惯量时我们可以将平移运动去掉,单纯看车身绕质点转动。根据转动惯量的定义:
由(公式 1)可以知道:当前瞻越长时,前瞻部分对应的ri越大,导致转动惯量过大。又根据动量矩的定义以及动量矩公式:
由(
公式3)
可知,当JZ
越大,LZ
也越大:
由(
公式4)
可知,在一定的时间内,LZ
越大,则主动力提供的动量矩随之越大,即舵机输出的力矩也要更大才行。
通过以上的分析以及实际的不断测试,我们最终确立选用PCB
直接作为前瞻。优点在于:
电路简单、架构简单、质量轻、强度大、电磁干扰小。
前置舵机安装直接关系到转向问题。如果舵机调整不到位,将很大程度上限制转向的角度和响应速度。
舵机的安装一般来说分为两种方式:一种是卧式安装,另外一种为立式安装。卧式安装为车模默认安装方式,但这样安装会使左右两边轮子连杆不等长,根据杠杆原理可知舵机对长连杆轮子用的力要大些,因此造成了舵机对左右两边转向响应时间不一样。另外由于卧式安装使连杆与水平面呈现一定角度,从力学知识可以知道在轮子转向获得的力只是舵机施加在连杆上力的一个水平方向上的分力。综合考虑,我们选择了舵机立式安装方式。舵机立式安装能够解决上述卧式安装的缺点,即连杆等长和连杆与水平面夹角小的问题。同时我们自己制作了舵机的连接件,而舵机安装高度则是经过了多次实践后确定。同时为了使舵机提供的力矩更大,转向更灵活,我们使得转向臂与舵机安装效果图如图 2.6所示。
本小车初期采用对射式红外光电传感器加编码盘进行测速。但是经过实验,由于条件限制,编码盘不便于安装,并且安装不稳,小车运行中,很多次出现速度检测失效的情况。经过考虑,我们选用旋转编码器,安装在小车最后。经过实验,这种方案非常稳定,从来没有出现过编码器测速失效的问题。
小车采用软件控制电机差速。合适的差速调整能够提高小车过弯速度,提高弯道性能。差速调整可以通过代码配合速度控制实现。
机械结构部分的设计与调整对小车的行驶过程中的稳定性、转向的灵敏度有着极大的影响,一个优秀合理的机械结构能够大大提升车子行驶速度的上。机械结构的调整复杂、繁琐且需要大量的实践经验、实际试验以及对问题的分析改进,但不可否认的是,机械结构的调整也是必要的。
===========
系统整体结构如图3.1
所示我们将电路分成几个模块——MCU
,电源管理,传感器电路,检波电路,电机驱动电路,调试用的液晶显示和按键电路。其中我们将单片机最小系统板,电源管理,按键,电机驱动集成在主板上,使得整个车身简洁重量较轻。强电流和弱电流分别分布在电路板上的两个角落。数字地与模拟地隔离。上述措施可高速/
低功耗为目以防止电磁干扰,显著的提高电路的稳定性。
我们这次采用竞赛规定范围的STC16F40K128
单片机作为我们的控制芯片。STC16F
系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/
超低价/
标的16
位8051
单片机,在相同的工作频率下,STC16F
系列单片机比传统的8051
约快70
倍。STC16F
系列单片机是STC
生产的单时钟/
机器周期(IT)
的单片机,是宽电压/
高速/
高可靠/
低功耗/
强抗静电/
较强抗干扰的新一代16
位8051
单片机,超级加密。MCU
提供了丰富的数字外设2
组针对三相电机控制能够输出互补/
对称/
带死区控制信号的16
位高级PWM
定时器以及PC
、SPI
、USB
、CAN
、LIN)
接口与模拟外设(超高速12
位ADC
、比较器),可满足广大用户的设计需求。STC16F
系列单片机内核已集成16
位乘除单元,部分型号内扩32
位乘除单元MDU32 (
包含32
位除以32
位和32
位乘以32
位)
和单精度浮点运算器,将STC
的16
位8051
单片机的运算性能一下拉到巅峰,比没有单精度浮点运算器的通用32
位MCU
还要强。因此我们选用了STC16F40K128
单片机并自己设计了该单片机的最小系统板。
最小系统板包括复位电路、3.3V
稳压电路、按键和液晶接口(6P
排针)
,并引出其他需要的IO
(例如下载接口RXD
和TXD
)。而旋转光电编码器接口、舵机接口为了提高单片机最小系统的稳定性,防止380
电机和伺服舵机在大电流下工作时(
例如直到加速或者急转弯减速时)
将电池电压拉低导致最小系统工作出现故障,我们为3.3V
供电增加了不少滤波电容,抗干扰效果良好。
我们在传感器方案上延续了前几届大多数队伍的传感器方案——工字谐振电感。我们熟知的磁传感器是霍尔-磁敏电阻,磁敏二极管,电感,电子罗盘的磁场传感器等。
霍尔检测频率一般不能到达20KHz(
组委会特意选的频段)
因此排除。赛道产生的磁场小于地磁场,因此电子罗盘的磁场传感器也排除。磁敏电阻和磁敏二极管产生信号太小不利于处理。最终敲定工字电感作为传感器。同时电感加上电容形成LC
谐振电路。
根据经验,挑选电感的时候要选择磁芯磁导率大的,电感圈数比较多的,等效内阻小的。综合考虑后选择10mH
的工字电感。根据并联谐振电路的频率,带入频率可以得到电容大小。公式为:
其中L=10mH
,得到C=6.33nF
。后来实验证明该传感器制作是合理的\\\
:
电感、电容的参数误差使得实际的谐振频率大概在20KHz
左右:
由于比赛时信号频率有一定误差,所以我们的传感器的随机误差能增强车子的稳定性能:
后来我们专门制作了 PCB传感器前瞻。将传感器依次固定于相同点,将长直信号导线铺设于水平可滑动的导轨下方正中央。测试时用示波器观察各个传感器在导轨滑动过程中感应电压的幅值大小、左右对称性和谐振频率是否是在 20KHZ左右等性能。通过严格筛选,保证了传感器的一致性,为后来的信号采集奠定良好的匹配性、对称性基础。
在传感器布局上面我们想到的有两种。
第一种,采用一排电感。感应电动势最大的电感是最靠近导线的电感。但是此种方法的采集信息是离散的点,不利于精细的控制,无法做到流畅的过弯。如果增加电感的个数,那么将会使得整车重心靠前,转向负载很大,而且电感如果靠的十分近互感就是一个不得不考虑的问题。
第二种,使用少量的电感,直接使用感应电动势的模拟量的精确数值,精确的计算导线与传感器正中心的距离,具体计算方法依照毕奥-萨伐尔定理。
这种办法使得计算出来的距离是连续的数值,方便控制,而且电感数量少有利于减少车身重量。缺点也是很致命的,车身的振动使得传感器高度发生变化,或者电流的变化使得磁场大小发生变化会使得传感器数值发生突然的变化,而且后级还有运放对信号进行放大。
经过多次实践,采用 PCB整体传感作为最后训练集的来源。
由于电感感应出来的感应电动势比较小而且是差分信号,所以需要放大电路进行调理。放大电路我们也想到四种。
第一种,三极管放大。优点是电路简单,成本低廉。缺点也十分明显,有很严重的零点漂移和温度漂移。当电感几乎没有感应到信号时输出电路就有不小的电压。当温度发生变化时,调试的参数就会发生变化。
第二种,单电源供电运放,在放大电路上加上运放电源一半的偏置,对电感的两端输出信号差分放大。优点失调电压小,度好,目前的工艺下高性能的运放价格也不高。缺点是电路比较复杂,共模抑制比小。
第三种,双电源供电运放,直接对电感信号差分放大。优点是电路简单,失调电压小,线性度好。缺点是共模抑制比小,一般的电荷泵负向电压纹波比较难控制,运放的工作条件很难得到保证。
第四种,双电源仪表放大器,直接放大差分信号。优点是共模抑制比高,线性度高,失调电压小。缺点是负压纹波难控制而且芯片贵。
由于我们采取的方案传感器个数比较少,即使是使用仪表放大器,成本也不会超过预算。因此,为了得到更好的信号,我们采用仪表放大器。如果采用Rail to rail
仪表放大器,就可以用一个比较低的电源电压得到比较大的电压信号。最终我们按照这个思路查找器件选型表,最终选择了仪放。
从仪表放大器出来的信号是类似正弦波的信号。为了将该信号转化成直观的直流电平,我们也从网上参考了三种方法。
第一种,直接对该信号进行高速采样。采样速率在信号频率的20
倍以上。放大器出来的信号时20KHz
,那么采样频率就应该在40KHz
以上才能算出比较准确的值。这样无疑增加了程序上计算的负担,而且也没有电路转换得到的结果的稳定。
第二种,AD637
真有效值转换芯片。参照AD637
的Datasheet
,要得到我们所需要精度的有效值需要100
以上的周期,也就是5ms
。
这种方法虽然结果准确,但是延时是十分严重的,不适合高速情况下使用。还有一个致命的缺陷是成本太高。
第三种,运放检波。这种方法是最稳定,反映最快,效果最好的电路。制作出来的PCB
大小为较小,减轻了车体重量。该电路较为简单,可参考官方的文档《电磁小车设计参考》内的检波电路,在此就不再复述。
按照比赛规则,起跑线是3
个按照一定间隔放置的磁钢(
表面磁场强度3000
到5000
高斯)
以及斑马线组成,而且磁钢的极性是随机放置的。如果使用霍尔方式检测那么极性问题就一定要考虑进去,所以一对霍尔传感器至少是两个。但是如果使用干簧管,极性的问题就不用考虑。干簧管不用供电,将干簧管的一端接地,一端接IO
口,使用单片机的内部上拉电阻,用程序去检测低电平。这样就可以完全利用芯片的内部资源简化电路的设计。我们将干簧管与MCU
模块相连。
另外我们还购买了漫反射激光传感器模块用于斑马线检测。
智能车速度是取得好的成绩的重要条件,由此电机驱动模块的重要性也就不言而喻。对于电机驱动电路,可有多种选择,像专用电机驱动芯片MC33886
、L298N
等,但是以上芯片集成度高,导通内阻大,瞬间电流小,驱动效果差。因此我们选择用H
桥的全桥电路,才能够使得车及时刹住,减速入弯。另外,今年四轮电磁组,电机型号为RN-380
。我们大概测试过启动或者堵转时电流可以达到5A(
适当的驱动频率下)
。开始我们采用英飞凌的集成半桥芯片BTS7960B
构成H
桥来驱动电机,由于速度提升后电机耗电较大,发热严重,同时BTS
的成本也相对比较高。于是我们又开始艰难的尝试新的驱动方案。最终我们找到了4N-MOS
搭的H
桥方案,采用内阻小的4
片NMOS
来搭建的2
个H
桥使得单电机驱动问题彻底解决。
由于今年自制车模,所以我们采用了转速更快,扭力更大的舵机R12s
,工作电压为6V
或者7.4V
。为了在电池低电压是仍能正常供电并且保证舵机正常工作。于是我们在电池7.8V
时给该舵机提供7V
的电压,在电池8.4V
时给该舵机提供7.5V
的电压。早期检测表明该舵机耗电较大,因此我们就没有使用使用比较广泛的LM2576
和LM2596
,而是采用TPS5450
电源管理芯片(
输入级直接是电池电压)
,TPS5450
足够提供舵机的供电,还能有较大电流的裕量。实际测试的过程中也没有出现因为舵机供电的问题导致舵机反映迟钝。所以最终就采用了这种方案。舵机的控制除了需要7.4V
的供电电压还需要一路频率为50Hz
的PWM
控制信号(
不同的占空比会使舵机稳定在不同的角度上)具体如图3.6
所示。
良好的人机交互可以减少调试的时间,能够大大提高调试的效率。显示模块我们采用OLED
屏,在所占空间小,显示非常清晰,而且功耗非常的低,所以与单片机系统使用同一路电源。按键我们为了节省PCB
空间和调试方便使用了一个五向开关和两个独立按键。由于电路较为简单,所以不在此列举。
系统要稳定工作,首先电源要稳定,系统中有多路电源,13V
、7.8V
、7.4V
、±5V
、3.3V
等。13V
为驱动电路中2104
供电,7.8V
电池电压直接接到电机驱动模块,7.4V
为舵机供电,±5V
为单片机、仪表放大器、信号放大电路以及速度传感器供电,3.3V
为核心板、液晶供电。所有供电部分电路都是依照芯片的生产公司提供的经典电路部分设计的。在此各电路的原理图就不再重复引用了。
在我们的使用过程中,STC16F
单片机的内部ADC
经常出现幅值过大、读数不正确等等问题,所以经过摸索和研究,我们最终决定使用外部ADC
电路。通过对芯片手册的阅读,ADC128S102
芯片符合我们的所有要求。原理图如图3.8
所示。
我们将上述模块功能中的电源管理、单片机最小系统板集成在了主板上。主板电路主要有电池接口、驱动板接口、红外接口、干簧管接口、检波电路板排线插座、舵机接口。另外,主板上还集成了包括3.3V
稳压在内的所有电源电路。接口电路板的PCB
设计是要充分考虑与车模机械的配合,通过螺丝孔固定使结构稳定不改变,减少对运行的影响,同时采用高效优质的FPC
排线来完成远距离连接。主板如图3.9
所示:
对于硬件电路部分,一定要用料扎实,稳定第一,抗干扰性能一定要高。单片机电压一定要稳定,防止舵机和电机启动的时候拉低电压导致复位。解决这个问题最实用的办法就是加上储能器件,加上适当大小的电容是必要的。仪表放大器的供电也要减少纹波。供给仪表放大器的电压纹波越大,处理出来的传感器信号越不稳定。车在运行的过程中,电机的强电流干扰时十分巨大的,会严重影响信号检测电路,所以要单独把这部分电路隔离开。
整个电路板的制作过程也要十分严谨。电路要经过好几个步骤。首先手工制作电路板,长时间工作以测试其稳定性。当稳定性达标之后根据原理图重新布线,到工厂生产PCB
,制作出第一批样品。没有问题的样品电路板直接使用,布局不好或者是影响性能的电路板要重新制作,直至纹波、质量、体积、布局都达标才是最终产品。硬件电路是智能车的基础,只有打好基础才能继续软件方面的工作。
===========
软件是智能车的最重要的部分。流程是采集电感的模拟量,判断车身偏离赛道导线的位置,通过算法控制舵机打角,并根据打角幅度控制电机转速。
程序的主体采用顺序结构。为了方便控制,主函数里面的任务是扫屏幕和扫键盘,而所有的核心操作放在定时中断中。如果说画流程图,从宏观上来看是两条线同时执行。如下图 4.1所示:
开机后,对所有硬件进行初始化,完成之后,PIT
定时中断对电感采回来的数值进行分析控制。正式发车起跑后定时的采集感应得到的电压值,第一排的水平放置的传感器数值通过差比和的计算公式来得到导线与车子正中间的偏差(以下简称中心偏差),再通过PID
算法将和采集到的中心偏差计算得出返回值,将计算得到的返回值输入方向环控制中,以此控制舵机,这样就完成了赛道上的基础循迹部分。同时根据赛道元素的不同列出状态机,单片机在查表获得当前车处于哪一种状态,根据状态机的规则给定电机的目标转速和一些特殊设定的舵机打角大小。在获取到目标转速后,通过速度环控制器迅速稳定的控制电机达到目标转速。
路径识别包括对传感器的控制以及接受信号的处理。对传感器的控制就是定时采集电感数值,对采样结果的分析与判断。
我们利用PIT定时中断,中断处理中主要是对AD值进行一个连续序列的转换,并将数值进行存储。对数据的有效性判断比较简单,当传感器采回来的数值低于某一个特定阈值时直接判断为无效信息。
根据牛奥萨伐尔定理可知,如果赛道的电流不发生变化时,电感的感应电压通过后级电路后产生的直流电平正比于sinθ/(h²+l²),其中h为传感器距离导线的竖直距离,1为传感器距离导线的水平距离,θ为工字电感与导线的夹角。代入水平方向放置的四个电感数值就可以得到L和θ的具体数值。
倾斜放置的电感只是感性的估算。我们假象一下,比赛的赛道全部都是直道,那么当车身平行于导线时,第一排电感检测到的数值具有一定对称性,而当赛道前面出现弯道时第一排电感检测到的数值上会有较大的差别,将这个差值按照前面得到的θ进行软件放大得到一个前方赛道的变化率λ。
对于赛道元素的判断,我们经过不断地尝试与改进,最终确定了一套方案,包括通过两个放置在前瞻第二排的两颗与竖直方向夹角为45°的倾斜电感的变化趋势来判断环岛元素,通过干簧管检测车库旁边的磁铁来判断车库,通过红外传感器和电感辅助判断坡道元素以及多个电感联合判断的三叉元素,通过我们的实践发现,车辆对元素的判断和完成,很大程度上取决于车身的状态,如果车子状态稳定性出现了问题,那么对元素的识别判断和元素内的行驶轨迹都会有很大的影响,我们认为,这一次的赛道规则难度重点在于如何让元素的识别更加稳定。再加上多变的车辆状态,赛道陌生的赛场环境等,这些种种因素,更加考验小车程序的稳定性。
关于舵机打角是建立在赛道分析的基础上的。上面得到的L和λ在接下来的控制中起到到关键的作用。我们分析了一下数据然后给出了一个经验公式:PWMDTY PRE=n_L+D_λ。其中参数系数是结合长期的调试结果的来的。其中二次项的系数越大贴黑线就越严格,一次项系数越大前瞻性就越高。但是一次项中的人计算的结果极其不精确,所以如果这一项占得比例太大会导致PWMDTY PRE数值的严重抖动。
速度控制部分是智能车除了舵机控制之外最为核心的内容。一个好的速度控制就是能十分准确的给出目标速度,电机对目标速度响应迅速,系统在干扰下速度依然稳定。
第一步要求有合理的速度决策。我们最终采用的速度决策方法是一个简单的分段两数。将赛道分为直道,小半径弯道,大半径弯道,丢失路线。而且这些速度可以根据赛道的具体情况通过按键在比赛准各时设定,其次差速的决策也是非常重要的,合理的差速能使得过弯更加流畅,速度更快,行驶的姿态也更好。
速度给定了之后执行也大有学问。直接列出速度和占空比的关系是一种十分不稳定的做法。这种做法受电池电量影响严重,而且只能适应某一种摩擦力的赛道。所以我们决定根据编码器反馈回来的数值进行换算。当编码器反馈回来的速度没有达到目标速度,那么正转占空比自加,反之则自滅。只要调节自加和自减的步进就能很好的对速度进行控制。
软件部分是整个控制系统的核心。软件上主要有以下几个难点:
判断采样回来的赛道信息的有效性:
根据传感器信息判断车身状态:
如何使用各种传感器稳定流畅的完成元素的预识别:
对于车模来说,软件控制是核心,而对于软件来说,舵机打角和速度控制都不算是核心,真正的核心应该是舵机打角和速度控制的相互配合!
===========
前面几章一直是在为系统制定方案以及方案的细化。但整个系统的完善主要还是在系统的现场调试。在细分的每个模块中,大部分都涉及有众多参数,对这些参数的确定就需要软硬件联合调试,而这过程就需要一整套开发调试环境和工具。包括程序源代码的编辑以编译环境,参数调节与设定工具。
我们主要的开发环境是Keil uvision5
,版本是5.31
,可从ARM
公司相关网页上下载到,
主要使用的编码语言是C
语言。
在基本程序完成之后还需要在现场对程序进行微调。所以我们自制了按键和OLED液晶模块。上场后我们的操作选手通过观察赛道情况、智能车循迹情况,然后根据观测结果通过按键对程序进行微调,包括:
1) 各种形式赛道的速度参数;
1PI
控制的Kp
和Ki
等参数。此外,我们还用液晶显示各个电感的电压数值,方便临时通过主板上设置的可调电位器对信号采集后放大倍数的调整。当然所有的参数假使都已经有了较为合理的默认数值,这样可以极大的节省参数调整时间;
2PD
控制的Kp
和Kd
等参数。我们将方向环PID
控制的各个参数显示在液晶上,通过主板上设置的按键进行参数大小的增减;
为了测试在各种赛道上最为契合的参数,我们也花费了大量的时间和金钱在绘制跑道、训练参数经验上。虽然过程是曲折和辛苦的,但是看到小车在赛道上飞驰,再苦再累大家也心甘情愿。
赛车在同样的赛道上走过的路都是不一样的,所以大家无论怎么考虑车的状态都是不够完全的,因此需要有一套完备的方案来解决对运行中的车辆进行实时监控。为了解决这个问题,我们组的后勤保障人员为组员准备了一套监控利器:C#
与Matlab
混合编程的上位机。工作原理是使用串口上传小车运行过程中的各种中间变量,然后提供一个Matlab
接口给调试车的队员,队员自由编写Matlab
函数进行一般的绘图或者数组操作,实现高级的行车参数监视和优化,使程序更加完善。
===========
===========
本报告详细介绍了我们为第十七届全国大学生智能汽车大赛而准备的智能车系统方案:传感器制作、PID算法实现前轮舵机打角以及速度控制算法的实现。分析整个车模系统,我们在车模硬件及软件上都有许多改进与创新。系统上主要有以下特色:
1.8
个电感作为传感器,并使用其模拟量来探测赛道,精度更高。并使用红外等多种传感器进行元素的辅助判断,提高了判断的精度。
2. 传感器使用两排,除了计算车身与导线的距离以外,还计算了偏差角度,同时还能够在一定程度上增加一点前瞻。这对于电磁导航的智能车来说是难能可贵的。采用长前瞻设计,能更早的识别即将到来的赛道元素。
3. 主板采用可插拔的接口,方便电路的升级和局部维修,同时也降低了成本,同时 PCB全部用螺丝固定方便拆卸,板间全部用FPC线连接,方便更换且走线简洁。
4. 完全按照自己的需求定制了主板。主板集成度非常高,极大的减轻了重量和减小了体积,方便机械布局。
5. 增加了按键与液晶辅助调试电路。配合队员的临场发挥,增强了小车对赛道的适应能力。
6. 依照自己的需求定制了底盘。自制底盘更加轻便坚固,使整个小车灵活度更高,具有更好的赛道适应能力。
整个程序的控制部分只开启一个定时中断,控制步骤简单,容易调试。
但是横观我们车模的整个设计,我们觉得系统几个方面还有可以改进的地方:
1. 测速传感器虽然使用 512P/r,但是精度还是不够,尤其是对 5ms的反馈周期来说。当设定到一个很低的速度时会有严重的速度震荡:
2. 传感器改进。目前我们使用的传感器由于信号的白噪声,在人工差分的时候无法提高精度,所以有必要在后级电路上加上一级有源带通滤波。
作者:杭电电磁四轮
文章来源:TsinghuaJoking
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区IC比赛技术方案专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。