电磁组 中山大学电磁组2队技术报告.docx
- 文档编号:23199873
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:100
- 大小:1.74MB
电磁组 中山大学电磁组2队技术报告.docx
《电磁组 中山大学电磁组2队技术报告.docx》由会员分享,可在线阅读,更多相关《电磁组 中山大学电磁组2队技术报告.docx(100页珍藏版)》请在冰豆网上搜索。
电磁组中山大学电磁组2队技术报告
第七届“飞思卡尔”杯全国大学生
智能汽车竞赛
技术报告
学校:
中山大学
队伍名称:
电磁2队
参赛队员:
李小锟
黄志杰
誉洪生
带队教师:
成慧
钱宁
关于技术报告和研究论文使用授权的说明
本人完全了解第七届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:
参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:
带队教师签名:
日期:
摘要
本论文中设计的智能车系统采用飞思卡尔公司的kinetisK60作为控制核心,以IRF3205和IRF4905为电机驱动模块,通过编码器获得电机速度信息。
使用由电感及放大电路组成的传感器获取赛道信息;在智能车控制方面,基于位置式及增量式的PID控制算法在高速行驶赛车的路径优化和速度控制上有着不错的效果。
为了提高车的速度和稳定性,我们使用VC、无线通讯模块、等多种调试工具。
结果表明,本系统可靠有效。
关键词:
kinetisK60,IRT3205,IRF4905,PID
Abstract
WedesignthesmartcarsystembasedonthecontrolofkinetisK60inthispaper.WechooseIRF3205andIRF4905tobethemotordrive,andencodertofeedbackthespeedofthemotor.Weuseelectricalinductancetogettheinformationofthetrack.Duringthecontrolofthesmartcar,thepositionalPIDandIncreasingPIDperformgoodonpathoptimizationandspeedcontrolinhighspeedingpattern.Inordertoimprovethespeedandthestabilityofthesmartcar,weusekindsofmethods,suchasVC,wirelessmodule.Itturnedoutthatthesystemisreliableandeffective.
Keyword:
kinetisK60,IRT3205,IRF4905,PID
第一章引言
全国大学生智能汽车比赛是经全国高等教育司研究,委托高等学校自动化专业教学指导分委会主办的,旨在培养创新精神、协作精神,提高工程实践能力的大学生科技创新活动。
本次大赛中,使用竞赛秘书处统一指定的C车竞赛车模套件,采用飞思卡尔半导体公司的32位微控制器kinetisK60作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动以及控制算法软件开发等。
制作一个能够自主识别路线的两轮自平衡智能车,让车模以两个后轮驱动在专门设计的跑道上自动识别道路行驶。
本技术报告主要对小车的整体设计思路,硬件与软件的设计及实现,机械结构的安装及优化以及赛车的调试的过程作简要的说明。
第二章系统总体设计
2.1系统概述
系统概述图如图2.1所示
图2.1系统概述
2.1.1任务分解
两轮赛车通过检测自身倾斜角度以及倾斜角速度的大小,通过单片机处理采集得到的角度、角速度信号,实现对赛车自身平衡以及前进的控制,再以检测通过以20KHZ、100mA的导线的电磁场为基础,通过单片机处理采集到得磁感应电压信号,实现对赛车的转向控制,进而识别赛道达到路径讯迹的目的。
车模的运行可以分为三个过程:
直立、前进、转弯。
但是暂时找不到其他方法可以不依赖电机而可以控制任意一个过程,所以只能由控制车模两个电机旋转方向及速度实现对车模的控制,因此将车模运动控制任务分解成以下三个基本任务:
(1)控制车模直立:
通过控制两个电机正反向运动保持车模直立状态;
(2)控制车模速度:
通过控制两个电机转速速度实现车模行进控制;
(3)
控制车模转向:
通过控制两个电机之间的转动差速实现车模转向控制。
2.1.2直立控制分析
如图2.1.2所示,车身可看作是一个倒立摆,要想通过控制使得倒立摆能够像单摆一样,稳定在垂直位置,只有两个办法:
一个是改变重力的方向;另一个是增加额外的受力,使得恢复力与位移方向相反才行。
但显然能够做的只有第二种方式。
控制倒立摆底部车轮,使得它作加速运动。
这样站在小车上(非惯性系)看倒立摆,它就会受到额外的力(惯性力),该力与车轮的加速度方向相反,大小成正比。
这样倒立摆所受到的回复力为
(2-1)
式中,假设控制车轮加速度与偏角成正比,比例为k1。
显然,如果k1>g,(是重力加速度)那么回复图2.1.2
力的方向便于位移方向相反了。
此外,为了使得倒
立摆能够尽快地在垂直位置稳定下来,还需要增加阻尼力,与偏角的速度成正比,方向相反。
因此式(2-1)可变为
(2-2)
所以车模车轮加速度的控制算法为
所以我们需要测量小车的角度θ和角速度θ’即可控制直立。
2.1.3速度控制分析
车模电机的转速与施加在其上的电压成正比。
通过传统的PID反馈控制,便可以精确控制电机的运行速度,从而控制车模的运行速度。
不过前提是保持车身平衡。
2.1.4转弯控制分析
利用电磁线偏差检测信号分别与车模速度控制信号进行加和减,左右轮差动控制电压,使得车模左右轮运行角速度不一致进而控制车模方向。
2.2车模倾角检测
通过加速度计检测回来的数据与重力加速度比较,可以得到车身倾角,再对此信号进行微分便可以获得倾角加速度。
但在实际车模运行过程中,由于车模本身的运动所产生的加速度会产生很大的干扰信号叠加在上述测量信号上,使得输出信号无法准确反映车模的倾角,尽管平滑滤波可以把波动滤掉,但是也会无法准确反映车模倾角变化,所以需要在加上一个陀螺仪检测角速度。
2.3整车布局
小车整体布局如图2.3所示
1)机械结构方面:
1电路板紧贴车身,电池放在车身后轮子稍上,降低重心;
2采用高强度、低质量的碳素杆作为电磁传感器支架;
3简化支架,单杆伸出,粘上一个横放的轻杆作为电感的支撑;
4电磁传感器引出电感,装在支架上,其他部分装在车身后面,可以尽量减轻支架的质量,使得重心尽量靠近车轮;
5陀螺仪和加速度计模块装在车身中间,保持水平,使得检测回来的数据更加精确,并且使得左右转弯差异变小;
6剪短不必要的连线,减轻车重。
2)在硬件方面:
力求电路构成简单,稳定性高;传感器的安装可靠,外界对系统电路的干扰小。
硬件主要设计思路如下:
主电路板外形贴合车身的边沿,安装时尽量贴近车底盘,降低重心;电路板布线尽量采用单回路布线,并且将数字地与模拟地分离,并且在容易引入干扰的器件旁加入旁路电容;将容易产生静电干扰的部分,接入电路板的模拟地中。
3)在软件方面:
力求控制算法适合C车的特性,精确完成转向控制和速度,并具有较高的稳定性。
采用K60作为控制核心,通过电感采集赛道信息,从而对电机进行控制;通过编码器反馈速度信息,实现对速度的控制。
图2.3整车布局
2.4结构框图
根据两轮平衡小车设计方案,小车系统包括
1)角速度检测;
2)角加速度检测;
3)路径检测;
4)串口通信;
5)速度检测;
6)电机驱动。
这几大模块按照设计组合在一起构成了一个完整的平衡小车控制系统具体系统的框架如图1.3所示。
图2.4整体框架
第三章系统机械结构设计与实现
3.1车模
图3.1c车车模结构
车模型号:
N286
电机:
RN260-CN38-18130
3.2车模车身简化及固定
我们采用赛制规定的C车车模进行改装,将没有用的前轮及其支撑部件去掉,又将后轮悬挂缓冲支架去掉,从而简化车模,可以有更多空位安装需要的东西以及减轻车重。
原来的车模后轮支架与底盘之间采用了活动连接方式,但为了保证车模直立的稳定性,需要这个车身变成刚体结构。
所以我们用热熔胶在后轮支架与底盘之间的缝隙处进行粘接。
但在跑的时候车身不稳,故改用废电路板将其固死,为防螺丝松掉,又用AB胶将缝隙粘死。
整车如图3.2所示。
图3.2简化加固后的车模
3.3陀螺仪及加速度计固定结构设计
陀螺仪安装主要分为直立陀螺仪的安装及转向陀螺仪的安装。
直立陀螺仪的安装共有三种选择:
安装在顶部,正中和底部。
经实际测试,陀螺仪安装在高处,容易受到微小抖动的干扰,影响到车身倾角的检测,而底部需要放电池及电路板等重物,因此我们选择了一个比较正中的位置进行安装。
如图3.3.1所示。
而转向陀螺仪对高度并不是很敏感,因此取一个左右适中的位置即可。
如图3.3.2所示。
图3.3.1直立陀螺仪安装图3.3.2转向陀螺仪安装
3.4路径传感器固定结构设计
为了车身的稳定,车的重心越靠近车轮越好,所以我们采用了轻质量但高强度的碳素杆做成支架,并且只把电感引出去水平的套在支架前段,作为探路所用。
如图3.4所示。
图3.4电磁传感器支架
3.5编码器的安装设计
飞思卡尔c车车模具有双电机,为了达到更精准的控速,我们选择在两个电机分别安装编码器用来测速。
在尽量保持车身重量较轻的前提下,我们应选用安装方便,较为轻便的编码器。
由于光电码盘的精度不高,并且体积较大,不适用于c车的使用。
我们使用了制作轻巧的300线的编码器,编码器可方便的安装在车轮上部,与马达齿轮相互咬合,来达到精确的测速。
编码器的安装如图3.5所示。
图3.5编码器安装
3.6主动轮松紧程度的调整
在实际调试过程中,我们发现主动轮的松紧程度影响比较大,并且轮轴的有无影响也比较大。
主动轮过松,会造成轮子与地盘支架之间有间隙,轮子会左右移动,对转弯性能影响较大,而轮子过紧则会造成轮子转动受阻,增加电机的负荷,不利于小车的速度及转弯控制。
而去掉轮轴,则会造成轮子晃动,两个轮子不在同一直线,转弯不稳定。
最终我们保持轮轴,并调整轮子的松紧度至轮子可自由转动且不会左右松动。
第四章硬件系统的设计与实现
4.1硬件设计总体方案
智能车的硬件系统,主要包括控制电路,电源管理电路,电机驱动电路以及外围传感器构成,实现了信息采集与控制实现等功能。
系统采用的主芯片是龙丘公司制作的MK60DN512VLL10P100管脚的核心板KinetisK60芯片,内已封装了包括看门狗等一系列外围电路。
4.2系统电路的设计与实现
4.2.1电源管理电路
小车系统中有多个检测模块和驱动模块,需要不同的电源电压,所以电源管理部分要分部完成对各个模块的供电。
系统存在着功率电路与数字电路,为了更好的隔离干扰,使系统的稳定性更高,所以在电源设计方面要考虑分隔开数字地与模拟地。
当小车驱动电机在运动过程中,会在一定程度上拉低电池的电压。
为了提高系统的性能,我们采用低压降的稳压芯片LM2940LM2940具有高转换效率,低静态电流等优点,适合本系统工作特点。
因为K60需要3.3V供电,因此用LM1117-3.3搭了3.3V稳压电路。
另外,电磁检测电路我们采用了稳压芯片7806,产生6V供电。
本系统中,采用一路LM2940为无线模块等供电,一路7806为电磁检测模块供电,一路LM1117进行供电为单片机供电。
6V供电如图4.2.2.1所示,5V供电如图4.2.2.2所示,3.3V供电如图4.2.2.3所示。
图4.2.2.16V供电
图4.2.2.25V供电
图4.2.2.33.3V供电
4.2.2电机驱动电路
今年C车车模我们采用了传统的用Mos管搭成的H桥全桥驱动,全桥驱动可以输出两路PWM,并且允许通过较大电流,驱动能力强,稳定性好,如图4.2.3.1所示。
图4.2.3.1电机驱动
由于Mos管比较多,因此在电路板上排布比较密集,如图4.2.3.2所示。
图4.2.3.2电路板上电机驱动排布
4.2.3计数器电路
K60芯片只有一路低功耗脉冲累加通道,不能满足C车电路两路测速需求.如果不想占用资源而实现硬件计数,则需要用到DMA功能,通过读取DMA的循环计数器即可获得编码器脉冲值,从而用作速度计算,所以不需要特别的计数器,只需接个上拉电阻即可,如图4.2.4所示。
图4.2.4计数器电路
4.2.4平衡传感器电路
我们采用的陀螺仪跟加速度计是集成模块,陀螺仪电路分别如图4.2.5.1所示,加速度计电路如图4.2.5.2所示。
图4.2.5.1陀螺仪电路
图4.2.5.2加速度计电路
4.2.5路径检测电路
路径检测分三个部分,谐振、放大、整流三个部分结合成一个电磁检测电路。
具体电路如图4.2.6所示。
图3.2.6路径检测电路
4.3防静电处理
由于KT板的特性,当智能小车在上面摩擦过后,会在赛道表面累积大量的静电。
当小车在赛道上行驶的过程中,静电放电会对电路板的稳定性产生一定的干扰,严重时,引起单片机的复位和死机等问题。
在空调室内的赛道,空气更加干燥,静电现象尤为严重。
为了更好地排除外界静电对智能车系统的干扰,我们采取了以下措施:
1)因为小车底盘较低,底盘部分裸露的螺母会成为静电的释放源。
我们采用绝缘胶布粘贴小车底盘,初步隔离静电
2)在电路设计上,通过使布线更加讲究合理,并且在电源和易受干扰的地方加入旁路电容,进一步减少静电的干扰。
对地覆铜,对引入的干扰能更好的吸收。
3)此时若依旧存在较大的静电干扰,那就要将小车上静电最强烈的地方接入电路板的地中,更好的吸收引入的干扰。
在实际测试中,我们检测到编码器的支架和外壳部分产生的静电干扰最为严重,我们将其与电路板的模拟地线相连,有显著的改善
第五章软件系统的设计与实现
5.1主程序
5.1.1程序流程
5.1.2PWM输出
包括两个子程序:
第一个程序:
vcon
voidvcon(doublepwm)
{
uint32dPWM;
dPWM=(uint32)pwm;
if(dPWM<-9999)
{
dPWM=-9999;
}
if(dPWM>9999)
{
dPWM=9999;
}
if(dPWM<0)
{
//电机1
ftm0_pwm_change_duty(6,(uint32)(-dPWM));//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(4,0);//控制占空比,占空比为00~10000
//电机2
ftm0_pwm_change_duty(5,(uint32)(-dPWM));//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(7,0);//控制占空比,占空比为00~10000
}
Else
{
//电机1
ftm0_pwm_change_duty(6,0);//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(4,(uint32)(dPWM));//控制占空比,占空比为00~10000
//电机2
ftm0_pwm_change_duty(5,0);//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(7,(uint32)(dPWM));//控制占空比,占空比为00~10000
}
}
第二个程序:
vcon_2motor
voidvcon_2motor(doubleLpwm,doubleRpwm)
{
doubleRdPWM,LdPWM;
RdPWM=Rpwm*10;
LdPWM=Lpwm*10;
//右边电机PWM限制
if(RdPWM<-9999)
{
RdPWM=-9999;
}
if(RdPWM>9999)
{
RdPWM=9999;
}
//左边电机PWM限制
if(LdPWM<-9999)
{
LdPWM=-9999;
}
if(LdPWM>9999)
{
LdPWM=9999;
}
//右边电机PWM输出
if(RdPWM<0)
{//右电机
ftm0_pwm_change_duty(7,(uint32)(-RdPWM));//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(5,0);//控制占空比,占空比为00~10000
}
Else
{
ftm0_pwm_change_duty(7,0);//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(5,(uint32)(RdPWM));//控制占空比,占空比为00~10000
}
//左边电机PWM输出
if(LdPWM<0)
{//左电机
//电机1
ftm0_pwm_change_duty(6,(uint32)(-LdPWM));//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(4,0);//控制占空比,占空比为00~10000
}
Else
{
//电机1
ftm0_pwm_change_duty(6,0);//控制占空比,占空比为00~10000
ftm0_pwm_change_duty(4,(uint32)(LdPWM));//控制占空比,占空比为00~10000
}
}
5.1.3直立控制
因为暂时找不到别的方法来平衡小车,所以只能靠两个电机来维持小车的平衡。
根据陀螺仪以及加速度计返回来的数据进行积分,得到车身的角度和角速度,并根据积分数据,利用PD控制,5ms控制一下直立,使得车身得以保持平衡,作为速度控制的基础。
5.1.4速度控制
小车的平衡是优先考虑的要素,所以为了不影响小车的平衡,我们不能频繁的改变速度,因此我们100ms才控制一次速度,并且使用增量式PID控制,即将需要的PWM分成20份,每5毫秒加一次,直至加完进行下一次速度控制。
5.1.5转弯控制
车模方向控制是通过比较车模两个电感检波电压进行的,,每5ms检查一次,然后采用比例算法,计算两个电感电压差除以两个电感电压之和所得到的数值在-1.0至1.0之间的比例,在乘以一个比例系数。
5.2卡尔曼滤波
卡尔曼滤波是一种高效率的递归滤波器,它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。
加速度计采样回来的数据会因为微小震动而产生毛刺,从而产生误差,因此用卡尔曼滤波结合陀螺仪输出的角加速度,把产生的误差降到最小。
程序如下。
voidKalman_Filter(doubleangle_m,doublegyro_m)//gyro_m:
gyro_measure
{
angle[0]+=(gyro_m-q_bias)*dt;//先验估计
Pdot[0]=Q_angle-P[0][1]-P[1][0];//Pk-'先验估计误差协方差的微分
Pdot[1]=-P[1][1];
Pdot[2]=-P[1][1];
Pdot[3]=Q_gyro;
P[0][0]+=Pdot[0]*dt;//Pk-先验估计误差协方差微分的积分=先验估计误差协方差
P[0][1]+=Pdot[1]*dt;
P[1][0]+=Pdot[2]*dt;
P[1][1]+=Pdot[3]*dt;
angle_err=angle_m-angle[0];//zk-先验估计
PCt_0=C_0*P[0][0];
PCt_1=C_0*P[1][0];
E=R_angle+C_0*PCt_0;
K_0=PCt_0/E;//Kk
K_1=PCt_1/E;
t_0=PCt_0;
t_1=C_0*P[0][1];
P[0][0]-=K_0*t_0;//后验估计误差协方差
P[0][1]-=K_0*t_1;
P[1][0]-=K_1*t_0;
P[1][1]-=K_1*t_1;
angle[0]+=K_0*angle_err;//后验估计
q_bias+=K_1*angle_err;//后验估计
angle_dot[0]=gyro_m-q_bias;//输出值(后验估计)的微分=角速度
}
5.3启动方式
直立小车的启动与四轮车的启动有所不同,四轮车本身就具有相当高的稳定性,只需设置定时开车程序即可.而直立小车启动需要确保静止没问题,然后再启动.在调试过程中,我们发现主要有两种开车方式:
第一种是小车直立后手推启动式,第二种是小车直立后受触发启动式.
对于第一种方法,小车被推动后,倾角和速度都会发生变化,我们可以通过检测小车的倾角或者速度,设置一个阀值,触发小车启动控速程序,进而实现小车的启动.这种方法的优点是,小车的启动速度快,若起跑线后是一条长直道,更可大大提高小车的整体成绩.而缺点是,推的力度不同导致小车的稳定性不同,很有可能每圈跑出来的成绩不一样.
对于第二种方法,小车直立后,通过轻触小车上面的行程开关,使得小车自己启动.这种方法的优点是,小车每次开头跑的情况基本一样,稳定性较好.缺点是,小车的启动速度略逊于第一种.
综合考虑,我们认为小车的稳定性比较重要,所遇采取第二种启动方式.第二种启动法式所用到的行程开关如图5.3所示:
图5.3行程开关
第六章开发工具与系统调试
6.1开发工具
使用了CodeWarriorDevelopmentStudioforMicrocontrollerv10.1集成开发环境。
图6.1.1是软件的安装界面,图6.1.2是烧录程序的界面。
图6.1.1安装界面
图6.1.2烧录界面
6.2无线通信模块
在调试过程中,为了能够实时获取智能车在运动过程中的一些参数,以及避免智能车在尝试各种算法时冲出赛道而发生意外,我们使用了无线通信模块传输数据。
为此,我们设计了智能车监控软件和遥控器。
车载无线模块如图6.2.1所示,能够实时收发数据。
图6.2.2为我们设计的遥控器,用于控制智能车的启停,保护智能车。
监控软件如图6.2.3所示,可以收集智能车的实时速度和位置偏差等数据,我们能够更加直观方便地观察智能车的状态,方便调试。
图6.2.1车载无线模块图6.2.2遥控器
图6.2.3监控界面
第七章车辆参数
车辆参数如表7.1所示
表7.1车辆参数
车模质量
约900克
车模几何尺寸
长×宽×高:
35cm×17cm×28cm
传感器个数
电磁传感器1对,陀螺仪2个,加速度计1个,编码器2个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电磁组 中山大学电磁组2队技术报告 电磁 中山大学 技术 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)