ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:604.61KB ,
资源ID:3655449      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3655449.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(飞思卡尔智能车电磁组技术报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

飞思卡尔智能车电磁组技术报告.docx

1、飞思卡尔智能车电磁组技术报告第六届“飞思卡尔”杯全国大学生智能车竞赛技术报告学 校:队伍名称:参赛队员: 带队教师:关于技术报告和研究论文使用授权的说明 本人完全了解第六届全国大学生“飞思卡尔”杯智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 第一章 引言全国大学生智能汽车竞赛是全国高等教育司委托高等学校自动化专业教学指导分委会主办,旨在培养创新精神、协作精神,提

2、高工程实践能力的科技活动。该竞赛是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创意性比赛。本校积极组队参加第六届“飞思卡尔”杯全国大学生智能汽车竞赛。从 2010 年 底着手准备,历时半年多,经过不断试验设计,最终设计出较为完整的智能赛车。在赛区比赛中获得了较好的综合性能和成绩。在本次比赛中,采用大赛组委会统一提供的竞赛车模,采用飞思卡尔16 位微控制器MC9S12XS128 作为核心控制单元,构思控制方案及系统设计,进行包括机械结构的调整与优化,硬件的设计与组装、软件控制算法的编写与改进等过程(小车上的具体方案模块有传感器信号采集处

3、理、控制算法及执行、动力电机驱动、转向舵机控制等)从而实现小车智能化的识别道路,最终实现智能化竞速。本技术报告主要对小车的整体设计思路,硬件与软件设计与优化,机械结构的安装以及赛车的调试操作等过程作简要的说明。第二章 方案设计2.1总体设计思路赛车是以检测通以20KHz、100mA的导线的电磁场为基础,通过单片机处理采集到的磁感应电压信号,实现对赛车的转向控制,进而识别赛道达到路径寻迹的目的。根据电磁寻迹的设计方案,赛车整体包括以下四大模块:1.单片机控制模块 2.电磁传感器模块 3.电机驱动模块 4.电源管理模块等,除此之外系统还有一些外部设备,例如编码器测速、舵机控制转向、直流电机驱动车体

4、,干簧管起跑线识别等。系统总体结构如图2.1所示。图2.1 系统结构图第三章 机械结构调整与优化3.1机械结构部分机械结构部分工作主要包含传感器的安装、前轮注销倾向的调节、舵机的安装、主控板得连接与固定,干簧管的安装、驱动模块的安装、编码器的安装以及后轮差速的调整等。3.1.1传感器的安装传感器采用的是6个磁场检测电感一致字匀布的布局安装,如图3.1所示。传感器伸出车体一定的距离以获得相应的前瞻性。 图3-1 传感器布局3.1.2 前轮定位的调节对于汽车而言,要保持车辆直线行驶的稳定性,使之转弯自动回正、转向轻便,必须确定车轮定位参数,包括主销后倾、主销内倾、前轮外倾和车轮前束。主销后倾角和车

5、轮前束可以提高车模行驶时的转向回正力。所使用的车模中,车轮和主销是平行的,调成了0度左右,适当的正前束可以提高连续转向的反应能力。主销内倾角给了一个适当的值,会更有利于过弯。3.1.3 舵机的安装考虑到适当增加力臂来提高舵机的灵敏度和为了赛车布局的的紧凑,采取了如图3.2所示的安装方法。 图3.2 舵机安装结构 3.1.4 主控板的连接与固定 采用接插件与焊接结合的方式连接传感器、主控板、编码器、电机驱动电路、电机、赛道起始检测等单元,既考虑可靠性,又兼顾结构调整与安装的便利性。具体安装结构如图3.3所示,图3.3 主控板安装结构3.1.5 赛道起始检测元件及安装采用干簧管作为赛道起始线检测元

6、件,如图3.4,采用两两并联,在实际比赛时,与比赛用的起始线磁铁水平宽度相比,我们的赛车干簧管的安装宽度较大,如此考虑,可以增大检测的范围,好处是可以有效地防止车子临近终点时因跑偏太多而导致不能检测到起跑线不能停车的情况的发生。 图3.4 赛道起始线检测干簧管部位 3.1.6 电机驱动模块的安装 驱动模块采用英飞凌半桥MOS驱动电路BTS7960构成H全桥驱动电路,由于车模电机自身的空载电流很大,导致工作时电流偏大,但赛车实际运行中,快速加减速十分频繁,易导致芯片过热,为提高可靠性,采用了双H全桥并联分流驱动,运行稳定。安装结构如图3.5所示。图3.5 电机驱动电路的安装3.1.7 编码器的安

7、装轴编码器用于电机测速,是电机闭环控制的关键检测反馈元件。采用每转500线的编码器通过齿轮传动安装,固定于赛车尾部。安装部位结构如图图3.6 所示。 图3.6 轴编码器的安装3.1.8 后轮差速的调整车在转弯时后轮的速度会不同,再不打滑的情况下,存在差速。在后轮不打滑的情况下,差速越松,转向效果越好,但是太松的差速会影响驱动力的提供。实际中在赛道上调整到比较平衡的值就可以了。在差速和摩擦轴承中适当加点油保持良好的轮滑,也可以一定程度上改善差速的性能。第四章 电路的设计说明4.1电磁传感器电路的设计电磁传感器是赛车循迹的前提,采用图4.1电路,由谐振回路,放大电路和倍压整流电路三部分组成,电路如

8、下图所示。图4.1电磁传感器电路4.2 主控板的设计主板承担着整部赛车各类电源的提供以及信号采集控制任务,主要由各类电源电路和单片机系统与接口电路组成。我们没有将传感器和传感器电路设置在主板上。否则,将大量消耗狭小的底盘安装空间,使得主板面积过小元件信号线过度密集导致抗干扰性能变差,不利于系统的可靠性,电路图与PCB图分别如图4.2、4.3所示。图4.2主控板电路图图4.3主控板PCB图4.3 电机驱动模块的设计电机驱动电路的功率问题比较重要,驱动的好坏将会影响电机速度的PID调节,本次比赛的B车模电机空载损耗很大,空载电流可达到2安培以上,考虑赛道运行机械负载与加速的加速度负载等,依据常规经

9、验粗略推断,电机电流至少可达十几安培以上,对于低压小型电机,如此的电流损耗是较为惊人的。驱动电路必须能够驱动如此大的电机电流且必须拥有较为完善的过流、超温保护等功能有效防止驱动电路的损坏。比较分立原件和集成芯片的优劣之后我们选择了英飞凌半桥BTS7960构成全桥以实现正反转以及能耗制动。BTS7960电路不需要升压电路,可耐受瞬时45A以上的电流,具备较为完善的保护功能。但在B车的使用过程中它也出现了一些问题:对PWM的频率有要求,过高或过低都会使芯片发烫。频繁的PID调速也会使芯片发烫。以上导致的的芯片发烫会偶然触发其内部的过温保护电路,导致赛车中途停车。为了解决以上问题我们采用并联双H桥的

10、形式,从而保证了赛车的稳定运行。图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 舵机控制经实际调试

11、,舵机采用PD控制方可确保其闭环稳定性。基本原理是通过比较两路A/D采集传感器电压大小,可以得知传感器与赛道通电漆包线中心线之间的位置,通过传感器采集到的赛车与赛道中心线的几何偏移量,利用前后几次偏移量之差进行PD控制。 因为无法保证传感器的绝对线性,故程序中采用线性拟合的办法将用六个电感传感器采集的模拟量拟合成线性关系。具体代码可参见本文附录所附的源程序清单。程序调试中,须反复调试试验,逐渐逼近最佳状态,确定合适的Kp、Kd参数,并在程序中区分不同的赛道状况,动态切换不同的Kp、Kd参数组合,最终实现最佳状态的循迹效果。舵机PD的具体代码可参见本文附录所附的源程序清单。5.3速度控制速度采用

12、PID 控制,PID控制控制直观,技术可靠,对被控对象的模型适应性强。位置式PID算式连续控制系统中的PID控制规律是: 其中是偏差信号为零时的控制作用,是控制量的基准。利用外接矩形法进行数值积分,一阶后向差分进行数值微分,当选定采样周期为T时,可得如下位置式PID的离散差分方程: 计算机控制时,常采用增量式PID算法。计算每周期的PID输出增量,在于前一周期的输出相加,得出最终的PID控制输出。增量式PID算法的每周期的PID输出增量计算算法如下: 每周期的PID输出增量反映了第k和第k1周期输出之间的增量。算式的结果可正可负的。利用增量算式控制执行机构,执行机构每次只增加一个增量,因此执行

13、机构起了一个累加的作用。对于整个系统来说,位置和增量式两种算式并无本质区别,但增量式有不少优点:算式只与最近几次采样值有关,不易引起误差累积;误动作影响小,易于加逻辑保护;增量算法在实际控制中应用得比位置式更为广泛。电机PID的具体代码可参见本文附录所附的源程序清单。第六章 开发工具与调试过程说明使用CodeWarrior Development Studio for HCS12(X) V4.7作为程序编写、编译、下载、调试工具。在调试中,建议使用无线模块进行赛车运行的实时在线电机速度与舵机角度监视。实现了闭环控制参数的完全在线调试验证,极大改进了调试效果,提高了解决问题的效率。第七章 赛车的

14、主要技术参数车 模 重 量1.4kg车模几何尺寸(长/宽/高)460/240/69(mm)总电容量约669.51微法传感器个数电磁传感器6;编码器1;干簧管4电机个数舵机1;电机1芯片个数MC9S12XS1281;电机驱动1;赛道位置检测精度5mm赛道检测频率100次/秒总功率12W第八章 总结在这四个月的赛车设计制作中我们的收获与体会都相当的多,在运用了现有的理论基础之上,再通过课外的拓展,将理论应用于实际,在这过程中充分锻炼了我们的动手能力、项目统筹安排的能力、解决问题的态度与技巧,以及与队友的团结合作等等。在参加赛区比赛赛后,与兄弟学校的赛车的对比,发现了一些不足之处,主要如:赛车的重心

15、偏靠前,导致后轮摩擦力不够,长直道加速后若紧接小弧度弯道,后轮容会打滑漂移;前瞻的的潜力没有充分挖掘,前瞻相对而言偏短;电机驱动电路的散热尚显不足,有待改进;整体结构加工工艺及坚固性有待进一步改进完善。参考文献1 宋文绪,杨帆传感器与检测技术M第1版,北京:高等教育出版社,2004.12卓晴.黄开胜.邵贝贝.学做智能车挑战“飞思卡尔”杯.北京:北京航空航天大学出 版社,2007.3.3李仕伯.马旭.卓晴.基于磁场检测的寻线小车传感器布局研究,清华大学,2009.124竞赛组秘书处.路径检测设计参考方案.2010.15竞赛组秘书处 技术组.20KHz 电源参考设计方案6卓晴.基于磁场检测的寻线小

16、车传感器布局研究J.清华大学.20097杨延玲.载流直导线的电磁场特性分析J.山东师范大学.20078王毅敏.马丽英等. 一种改进的数字PID控制算法及其在励磁系统中的应用电网技术J.19989高金源,夏洁. 计算机控制系统M.清华大学出版社.200710 第五届北京交通大学电磁二队的技术报告.201011 第五届哈尔滨工程大学电磁组极品飞车三号队的技术报告.201012 第五届清华大学三角洲电磁队的技术报告.2010附 录源代码(1)main.c文件代码#define MotorMax 14000#define MotorMin 10#define NMAX 3 /使用3个电感拟合#defi

17、ne ZSPEED 130/100/#define K 10/#define Kp 1;/PID的三个参数/#define Ki 1;/#define Kd 1;#include #include #include #include #include int ad8=0; float a=0,b=0,y1=0,y2=0;unsigned int *p=ad,*pold4=0,*pold5=0,admax=0;int stop=0;int nowspeed=0, setspeed=0;unsigned char LEDflag=1,admaxnum=0;static float ek3=0;/#

18、include PBset.h #include SCI.h#include derivative.h /* derivative-specific definitions */#include abs.h#include delay_1ms.h#include readad.h#include ZXEC.h#include wait.h#include PID.h#include PIT.h/#include Copy of PIT.h#include Busclock80MHz.h#include PWM.h#include Portinit.h#include AD_Init.h#inc

19、lude intmoto.h#include intsteer.h#include IOC.h#include Set_almode.hvoid main(void) /unsigned int a=0,b=0; Set_almode(); Dly_ms(2000); /延时两秒 等AD ZXEC(); /直线拟合 /PORTB_PB1=0; wait(); setspeed=50; EnableInterrupts;for(;) if(ad22|ad32|ad410|ad510)&LEDflag) /ad210|ad310| PORTA_PA1=0;/接驱动板上的IN2;IN1接PWM01

20、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)&(ad210|ad310|ad410|ad510)/ 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); /

21、PWMDTY01=0; PORTA_PA0=0; Dly_ms(1); / Dly_ms(1000); /* Dly_ms(1000); a= ad5*100/51; b= a/100; a= a%100; sprintf(txtbuf,nAD5: %d.%02dV %dn,b,a,ad5); putstr(txtbuf); Dly_ms(1000); a= ad2*100/51; b= a/100; a= a%100; sprintf(txtbuf,nAD2: %d.%02dV %dn,b,a,ad2); putstr(txtbuf); Dly_ms(1000); a= ad3*100/51

22、; b= a/100; a= a%100; sprintf(txtbuf,nAD3: %d.%02dV %dn,b,a,ad3); putstr(txtbuf); Dly_ms(1000); a= ad4*100/51; b= a/100; a= a%100; sprintf(txtbuf,nAD4: %d.%02dV %dn,b,a,ATD0DR4L); putstr(txtbuf); Dly_ms(1000); a= ad5*100/51; b= a/100; a= a%100; sprintf(txtbuf,nAD5: %d.%02dV %dn,b,a,ATD0DR5L); putstr

23、(txtbuf);/* Dly_ms(1000); a= ad6*100/51; b= a/100; a= a%100; sprintf(txtbuf,nAD6: %d.%02dV %dn,b,a,ad6); putstr(txtbuf); Dly_ms(1000); a= ad7*100/51; b= a/100; a= a%100; sprintf(txtbuf,nAD7: %d.%02dV %dn,b,a,ad7); IOCcnt=IOCcnt/500*50/107*206.298/10; sprintf(txtbuf,n motor speed: %f %s%s%sn,IOCcnt,M

24、,/,S); putstr(txtbuf); Dly_ms(1000); sprintf(txtbuf,n PWM23 duty ratio: %f%n,(float)PWMDTY23/PWMPER23*100); putstr(txtbuf); Dly_ms(1000); sprintf(txtbuf,n PWMDTY23: %un,PWMDTY23); putstr(txtbuf); */ /Dly_ms(200); /sprintf(txtbuf,n PWMDTY01:%dn ,PWMDTY01);/,stop , /putstr(txtbuf); Dly_ms(100); sprint

25、f(txtbuf,n %d n,nowspeed);/,stop MotorPWM:%f,MotorPWM putstr(txtbuf); PORTB_PB0=PORTB_PB0; / _FEED_COP(); /* feeds the dog */ #pragma CODE_SEG _NEAR_SEG NON_BANKEDinterrupt 29 void pll_selfclock(void) CRGFLG_SCMIF=1; SetBusCLK_80M(); (2)SCI.h文件代码byte u8_RCV_Ch=0;char txtbuf30=;static void SCI_Init(v

26、oid) SCI0CR2=0x2c; /enable Receive Full Interrupt,RX enable,Tx enable SCI0BDH=0x02; /busclk 8MHz,19200bps,SCI0BDL=0x1a SCI0BDL=0x08; /SCI0BDL=busclk/(16*SCI0BDL) /超频到48M /-use SCI-void uart_putchar(char ch) if (ch = n) while(!(SCI0SR1&0x80) ; SCI0DRL= 0x0d; /outputCR return; while(!(SCI0SR1&0x80) ;

27、/keep waiting when not empty SCI0DRL=ch;void putstr( char ch) unsigned char ptr=0; while(chptr) uart_putchar(unsigned char)chptr+); unsigned char uart_getkey(void) byte res=0; while(!(SCI0SR1&0x80) ; /keep waiting when not empty return (SCI0DRL); #pragma CODE_SEG _NEAR_SEG NON_BANKEDvoid interrupt 2

28、0 SCI0_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=0) PWMDTY01+=50; if(PWMDTY23=0) PWMDTY23+=100; break; case 0: putstr( ok ); u8_RCV_Ch=0xff; if(PWMDTY010) PWMDTY01-=50; if(PWMDTY230) PWMDTY23-=100; break; case W: PORTA_PA1=0;/接驱动板上的IN2;IN1接PWM01 stop=0; PORTA_

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1