飞思卡尔智能车电磁组技术报告文档格式.docx
- 文档编号:16560302
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:37
- 大小:604.61KB
飞思卡尔智能车电磁组技术报告文档格式.docx
《飞思卡尔智能车电磁组技术报告文档格式.docx》由会员分享,可在线阅读,更多相关《飞思卡尔智能车电磁组技术报告文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
主销后倾角和车轮前束可以提高车模行驶时的转向回正力。
所使用的车模中,车轮和主销是平行的,调成了0度左右,适当的正前束可以提高连续转向的反应能力。
主销内倾角给了一个适当的值,会更有利于过弯。
3.1.3舵机的安装
考虑到适当增加力臂来提高舵机的灵敏度和为了赛车布局的的紧凑,采取了如图3.2所示的安装方法。
图3.2舵机安装结构
3.1.4主控板的连接与固定
采用接插件与焊接结合的方式连接传感器、主控板、编码器、电机驱动电路、电机、赛道起始检测等单元,既考虑可靠性,又兼顾结构调整与安装的便利性。
具体安装结构如图3.3所示,
图3.3主控板安装结构
3.1.5赛道起始检测元件及安装
采用干簧管作为赛道起始线检测元件,如图3.4,采用两两并联,在实际比赛时,与比赛用的起始线磁铁水平宽度相比,我们的赛车干簧管的安装宽度较大,如此考虑,可以增大检测的范围,好处是可以有效地防止车子临近终点时因跑偏太多而导致不能检测到起跑线不能停车的情况的发生。
图3.4赛道起始线检测干簧管部位
3.1.6电机驱动模块的安装
驱动模块采用英飞凌半桥MOS驱动电路BTS7960构成H全桥驱动电路,由于车模电机自身的空载电流很大,导致工作时电流偏大,但赛车实际运行中,快速加减速十分频繁,易导致芯片过热,为提高可靠性,采用了双H全桥并联分流驱动,运行稳定。
安装结构如图3.5所示。
图3.5电机驱动电路的安装
3.1.7编码器的安装
轴编码器用于电机测速,是电机闭环控制的关键检测反馈元件。
采用每转500线的编码器通过齿轮传动安装,固定于赛车尾部。
安装部位结构如图图3.6所示。
图3.6轴编码器的安装
3.1.8后轮差速的调整
车在转弯时后轮的速度会不同,再不打滑的情况下,存在差速。
在后轮不打滑的情况下,差速越松,转向效果越好,但是太松的差速会影响驱动力的提供。
实际中在赛道上调整到比较平衡的值就可以了。
在差速和摩擦轴承中适当加点油保持良好的轮滑,也可以一定程度上改善差速的性能。
第四章电路的设计说明
4.1电磁传感器电路的设计
电磁传感器是赛车循迹的前提,采用图4.1电路,由谐振回路,放大电路和倍压整流电路三部分组成,电路如下图所示。
图4.1电磁传感器电路
4.2主控板的设计
主板承担着整部赛车各类电源的提供以及信号采集控制任务,主要由各类电源电路和单片机系统与接口电路组成。
我们没有将传感器和传感器电路设置在主板上。
否则,将大量消耗狭小的底盘安装空间,使得主板面积过小元件信号线过度密集导致抗干扰性能变差,不利于系统的可靠性,电路图与PCB图分别如图4.2、4.3所示。
图4.2主控板电路图
图4.3主控板PCB图
4.3电机驱动模块的设计
电机驱动电路的功率问题比较重要,驱动的好坏将会影响电机速度的PID调节,本次比赛的B车模电机空载损耗很大,空载电流可达到2安培以上,考虑赛道运行机械负载与加速的加速度负载等,依据常规经验粗略推断,电机电流至少可达十几安培以上,对于低压小型电机,如此的电流损耗是较为惊人的。
驱动电路必须能够驱动如此大的电机电流且必须拥有较为完善的过流、超温保护等功能有效防止驱动电路的损坏。
比较分立原件和集成芯片的优劣之后我们选择了英飞凌半桥BTS7960构成全桥以实现正反转以及能耗制动。
BTS7960电路不需要升压电路,可耐受瞬时45A以上的电流,具备较为完善的保护功能。
但在B车的使用过程中它也出现了一些问题:
对PWM的频率有要求,过高或过低都会使芯片发烫。
频繁的PID调速也会使芯片发烫。
以上导致的的芯片发烫会偶然触发其内部的过温保护电路,导致赛车中途停车。
为了解决以上问题我们采用并联双H桥的形式,从而保证了赛车的稳定运行。
图4.4与4.5分别是是电机驱动电路的电路图与PCB图。
图4.4电机驱动板电路图
图4.5电机驱动板PCB图
第五章控制软件的设计说明
5.1程序流程图
整个系统由单片机为主控MCU,对模拟和数字传感器信号进行采集处理,并对输出的PWM分别控制,进行舵机和电机的控制,控制舵机来决定赛车的角度,通过电路驱动来控制电机,决定赛车的速度。
另外使用编码器采集速度值,作为辅助速度控制。
程序整体框架如图5.1所示。
图5.1程序整体框架图
程序中用到的硬件资源有PWM模块、AD模块、脉冲累加器、普通数字I/O口,主程序流程图如下:
图5.1主程序流程图
5.2舵机控制
经实际调试,舵机采用PD控制方可确保其闭环稳定性。
基本原理是通过比较两路A/D采集传感器电压大小,可以得知传感器与赛道通电漆包线中心线之间的位置,通过传感器采集到的赛车与赛道中心线的几何偏移量,利用前后几次偏移量之差进行PD控制。
因为无法保证传感器的绝对线性,故程序中采用线性拟合的办法将用六个电感传感器采集的模拟量拟合成线性关系。
具体代码可参见本文附录所附的源程序清单。
程序调试中,须反复调试试验,逐渐逼近最佳状态,确定合适的Kp、Kd参数,并在程序中区分不同的赛道状况,动态切换不同的Kp、Kd参数组合,最终实现最佳状态的循迹效果。
舵机PD的具体代码可参见本文附录所附的源程序清单。
5.3速度控制
速度采用PID控制,PID控制控制直观,技术可靠,对被控对象的模型适应性强。
位置式PID算式连续控制系统中的PID控制规律是:
其中
是偏差信号为零时的控制作用,是控制量的基准。
利用外接矩形法进行数值积分,一阶后向差分进行数值微分,当选定采样周期为T时,可得如下位置式PID的离散差分方程:
计算机控制时,常采用增量式PID算法。
计算每周期的PID输出增量,在于前一周期的输出相加,得出最终的PID控制输出。
增量式PID算法的每周期的PID输出增量计算算法如下:
每周期的PID输出增量反映了第k和第k-1周期输出之间的增量。
算式的结果可正可负的。
利用增量算式控制执行机构,执行机构每次只增加一个增量,因此执行机构起了一个累加的作用。
对于整个系统来说,位置和增量式两种算式并无本质区别,但增量式有不少优点:
算式只与最近几次采样值有关,不易引起误差累积;
误动作影响小,易于加逻辑保护;
增量算法在实际控制中应用得比位置式更为广泛。
电机PID的具体代码可参见本文附录所附的源程序清单。
第六章开发工具与调试过程说明
使用CodeWarriorDevelopmentStudioforHCS12(X)V4.7作为程序编写、编译、下载、调试工具。
在调试中,建议使用无线模块进行赛车运行的实时在线电机速度与舵机角度监视。
实现了闭环控制参数的完全在线调试验证,极大改进了调试效果,提高了解决问题的效率。
第七章赛车的主要技术参数
车模重量
1.4kg
车模几何尺寸(长/宽/高)
460/240/69(mm)
总电容量
约669.51微法
传感器个数
电磁传感器×
6;
编码器×
1;
干簧管×
4
电机个数
舵机×
电机×
1
芯片个数
MC9S12XS128×
电机驱动×
赛道位置检测精度
5mm
赛道检测频率
100次/秒
总功率
12W
第八章总结
在这四个月的赛车设计制作中我们的收获与体会都相当的多,在运用了现有的理论基础之上,再通过课外的拓展,将理论应用于实际,在这过程中充分锻炼了我们的动手能力、项目统筹安排的能力、解决问题的态度与技巧,以及与队友的团结合作等等。
在参加赛区比赛赛后,与兄弟学校的赛车的对比,发现了一些不足之处,主要如:
赛车的重心偏靠前,导致后轮摩擦力不够,长直道加速后若紧接小弧度弯道,后轮容会打滑漂移;
前瞻的的潜力没有充分挖掘,前瞻相对而言偏短;
电机驱动电路的散热尚显不足,有待改进;
整体结构加工工艺及坚固性有待进一步改进完善。
参考文献
[1]宋文绪,杨帆.传感器与检测技术[M].第1版,北京:
高等教育出版社,2004.1
[2]卓晴.黄开胜.邵贝贝.学做智能车――挑战“飞思卡尔”杯.北京:
北京航空航天大学出版社,2007.3.
[3]李仕伯.马旭.卓晴.《基于磁场检测的寻线小车传感器布局研究》,清华大学,2009.12
[4]竞赛组秘书处.《路径检测设计参考方案》.2010.1
[5]竞赛组秘书处技术组.《20KHz电源参考设计方案》
[6]卓晴.基于磁场检测的寻线小车传感器布局研究[J].清华大学.2009
[7]杨延玲.载流直导线的电磁场特性分析[J].山东师范大学.2007
[8]王毅敏.马丽英等.一种改进的数字PID控制算法及其在励磁系统中的应用电网技术[J].1998
[9]高金源,夏洁.计算机控制系统[M].清华大学出版社.2007
[10]第五届北京交通大学电磁二队的技术报告.2010
[11]第五届哈尔滨工程大学电磁组—极品飞车三号队的技术报告.2010
[12]第五届清华大学三角洲电磁队的技术报告.2010
附录
源代码
(1)main.c文件代码
#defineMotorMax14000
#defineMotorMin10
#defineNMAX3//使用3个电感拟合
#defineZSPEED130//100
//#defineK10
//#defineKp1;
//PID的三个参数
//#defineKi1;
//#defineKd1;
#include<
hidef.h>
stdio.h>
math.h>
MC9S12XS128.h>
stdlib.h>
intad[8]={0};
floata=0,b=0,y1=0,y2=0;
unsignedint*p=ad,*pold4=0,*pold5=0,admax=0;
intstop=0;
intnowspeed=0,setspeed=0;
unsignedcharLEDflag=1,admaxnum=0;
staticfloatek[3]={0};
//#include"
PBset.h"
#include"
SCI.h"
derivative.h"
/*derivative-specificdefinitions*/
abs.h"
delay_1ms.h"
readad.h"
ZXEC.h"
wait.h"
PID.h"
PIT.h"
CopyofPIT.h"
Busclock80MHz.h"
PWM.h"
Portinit.h"
AD_Init.h"
intmoto.h"
intsteer.h"
IOC.h"
Set_almode.h"
voidmain(void)
{
//unsignedinta=0,b=0;
Set_almode();
Dly_ms(2000);
//延时两秒等AD
ZXEC();
//直线拟合
//PORTB_PB1=0;
wait();
setspeed=50;
EnableInterrupts;
for(;
;
)
{
if((ad[2]>
2|ad[3]>
2|ad[4]>
10|ad[5]>
10)&
LEDflag)//ad[2]>
10||ad[3]>
10||
{
PORTA_PA1=0;
//接驱动板上的IN2;
IN1接PWM01
stop=0;
//PWMDTY01=3000;
PORTA_PA0=1;
//INH
}else
{setspeed=0;
//Dly_ms(500);
//count=0;
//while(count==500);
//PORTA_PA0=0;
}
while((stop==1)&
(nowspeed!
=0)&
(ad[2]>
10|ad[3]>
10|ad[4]>
10|ad[5>
10]))//
{
if(nowspeed==0)
{
stop=0;
}
else
{
PWMDTY01=200*nowspeed;
PORTA_PA0=1;
Dly_ms
(1);
PORTA_PA1=1;
Dly_ms(6);
//PORTA_PA0=0;
//Dly_ms
(1);
//PWMDTY01=0;
PORTA_PA0=0;
}
//Dly_ms(1000);
/*
Dly_ms(1000);
a=ad[5]*100/51;
b=a/100;
a=a%100;
sprintf(txtbuf,"
\nAD5:
%d.%02dV%d\n"
b,a,ad[5]);
putstr(txtbuf);
Dly_ms(1000);
a=ad[2]*100/51;
\nAD2:
b,a,ad[2]);
a=ad[3]*100/51;
sprintf(txtbuf,"
\nAD3:
b,a,ad[3]);
a=ad[4]*100/51;
\nAD4:
b,a,ATD0DR4L);
b,a,ATD0DR5L);
/*
a=ad[6]*100/51;
\nAD6:
b,a,ad[6]);
a=ad[7]*100/51;
\nAD7:
b,a,ad[7]);
IOCcnt=IOCcnt/500*50/107*206.298/10;
\nmotorspeed:
%f%s%s%s\n"
IOCcnt,"
M"
"
/"
S"
);
\nPWM23dutyratio:
%f%%\n"
(float)PWMDTY23/PWMPER23*100);
\nPWMDTY23:
%u\n"
PWMDTY23);
*/
//Dly_ms(200);
//sprintf(txtbuf,"
\nPWMDTY01:
%d\n"
PWMDTY01);
//,stop,
//putstr(txtbuf);
Dly_ms(100);
\n%d\n"
nowspeed);
//,stopMotorPWM:
%f,MotorPWM
PORTB_PB0=~PORTB_PB0;
//_FEED_COP();
/*feedsthedog*/
}
}
#pragmaCODE_SEG__NEAR_SEGNON_BANKED
interrupt29voidpll_selfclock(void)
{
CRGFLG_SCMIF=1;
SetBusCLK_80M();
}
(2)SCI.h文件代码
byteu8_RCV_Ch=0;
chartxtbuf[30]="
"
staticvoidSCI_Init(void)
SCI0CR2=0x2c;
//enableReceiveFullInterrupt,RXenable,Txenable
SCI0BDH=0x02;
//busclk8MHz,19200bps,SCI0BDL=0x1a
SCI0BDL=0x08;
//SCI0BDL=busclk/(16*SCI0BDL)
//超频到48M
//----------------------useSCI-----------------------------
voiduart_putchar(charch)
if(ch=='
\n'
)
{
while(!
(SCI0SR1&
0x80));
SCI0DRL=0x0d;
//output'
CR'
return;
//keepwaitingwhennotempty
SCI0DRL=ch;
voidputstr(charch[])
unsignedcharptr=0;
while(ch[ptr]){
uart_putchar((unsignedchar)ch[ptr++]);
unsignedcharuart_getkey(void)
byteres=0;
return(SCI0DRL);
voidinterrupt20SCI0_ISR(void)//串口中断
SCI0CR2_RIE=0;
//此处为串口中断需要处理的事情
uart_putchar(u8_RCV_Ch=uart_getkey());
PORTB_PB1=~PORTB_PB1;
switch(u8_RCV_Ch)
case'
1'
:
putstr("
ok"
u8_RCV_Ch=0xff;
if((PWMDTY01<
14545)&
&
(PWMDTY01>
=0))
PWMDTY01+=50;
if((PWMDTY23<
65535)&
(PWMDTY23>
PWMDTY23+=100;
break;
case'
0'
putstr("
=14545)&
0))
PWMDTY01-=50;
=65535)&
PWMDTY23-=100;
break;
case'
W'
PORTA_PA1=0;
stop=0;
PORTA_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卡尔 智能 电磁 技术 报告