重庆工商大学“飞思卡尔杯”智能汽车校内竞赛报告_第1页
重庆工商大学“飞思卡尔杯”智能汽车校内竞赛报告_第2页
重庆工商大学“飞思卡尔杯”智能汽车校内竞赛报告_第3页
重庆工商大学“飞思卡尔杯”智能汽车校内竞赛报告_第4页
重庆工商大学“飞思卡尔杯”智能汽车校内竞赛报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2012重庆工商大学“飞思卡尔杯”智能汽车校内竞赛 重庆工商大学“飞思卡尔杯”智能汽车校内竞赛报告智能车驱动电机控制参赛队员:学院:计信学院 班级:10自动化 学号: 姓名: 电话:日期:2012年11月19日摘要:本文以重庆工商大学“飞思卡尔杯”智能汽车校内竞赛为背景,根据比赛相关要求,提出了基于MC9S12XS128MAA单片机的智能车驱动电机控制系统的设计方案,并阐述了所选单片机的功能和指令系统特点以及所选外围硬件的功能和应用方法。在此基础上通过开发软件Code Warrior编程实现MC9S12XS128MAA单片机对智能车驱动电机控制并实现竞赛要求的相关功能。关键词: 单片机 Code Warrior 控制 智能汽车前言:“飞思卡尔”杯智能车大赛是教育部为了加强大学生实践、创新能力和团队精神的培养而举办的面向全国大学生的智能汽车比赛。而本次重庆工商大学“飞思卡尔杯”智能汽车校内竞赛是立足选拔选手参加教育部举办的第八届“飞思卡尔”杯智能车大赛而举办的。在本次比赛中本文以研究“智能车驱动电机控制”为主题展开,以MC9S12XS128MAA单片机结合H桥电机驱动电路进行驱动电机控制并实现小车电机在单片机上电5s后启动,先高速正向转动5s,然后慢速正向转动3s后停止转动5s,然后反向高速转动5s,再反向慢速转动3s,再高速正向转动5s后制动停止转动的功能。1、飞思卡尔MC9S12XS128MAA单片机的功能特点和指令系统特点(试举一两例)MC9S12XS128MAA单片机是16位单片机,由16位中央处理单元、128KB程序Flash、8KB RAM、8KB数据Flash组成片内存储器。主要功能模块包括:内部存储器、内部PLL锁相环模块、2个异步串口通讯SCI、1个串行外设接口SPI、MSCAN模块、1个8通道脉冲宽度调制模块PWM、输入/输出数字I/O口。例如PWM模块,PWM调制波有8个输出通道,每一个输出通道都可以独立的进行输出。每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。每一个PWM输出通道都能调制出占空比从0100%变化的波形。PWM的主要特点有:a.它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。b.每一个输出通道都有一个精确的计数器。c.每一个通道的PWM输出使能都可以由编程来实现。d.PWM输出波形的翻转控制可以通过编程来实现。e.周期和脉宽可以被双缓冲。当通道关闭或PWM计数器为0时,改变周期和脉宽才起作用。f.8字节或16字节的通道协议。g.有4个时钟源可供选择(A、SA、B、SB)他们提供了一个宽范围的时钟频率。h.通过编程可以实现希望的时钟周期。i.具有遇到紧急情况关闭程序的功能。j.每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。2、开发软件Code Warrior的试用心得在参加重庆工商大学“飞思卡尔杯”智能汽车校内竞赛的过程中,我学习了一款开发软件Code Warrior。通过了解得知CodeWarrior包括了构建平台和应用所必需的所有主要工具 - IDE、编译器、调试器、编辑器、链接器、汇编程序等,是一款功能强大的开发软件。事实也是如此,在这次比赛当中,我用Code Warrior进行编程,调试。充分的感受到了它的强大功能。我个人感觉Code Warrior有这么两个突出的优点:一是Code Warrior可以对很多种芯片进行编程,同时支持多种编程语言。二是Code Warrior能够自动检查代码中明显的错误,以找到并减少明显的错误,然后编译并连接程序以便计算机能够理解并执行我们编写的程序。总之,通过对Code Warrior学习让我初步的了解到了单片机开发的基本过程。3、所选题目的程序流程图和源程序a源程序如下:#include /* common defines and macros */#include /* derivative information */#pragma LINK_INFO DERIVATIVE mc9s12xs128unsigned int flag=0;/* FunctionName: PLL_Init* FunctionDiscription: Clock Initialization* FunctionStatement:BusClock is 48MHz*/void PLL_Init(void) /PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) CLKSEL=0x00; /初始化PLL前先使用外部晶振 PLLCTL_PLLON=1; /开启PLL SYNR=0XC0 | 0X05; REFDV=0X80 | 0X01; POSTDIV=0X00; /fpllclk=fvco _asm(nop); /busclock=PLLCLK/2=48MHz _asm(nop); while(0=CRGFLG_LOCK); /等待PLL稳定 CLKSEL_PLLSEL=1; /fBUS采用根据PLL频率设定/* FunctionName:PIT_Init* FunctionDiscription:PeriodicInterruptTimer Initialization* FunctionStatement:Interrupt Time is 10ms*/void PIT_Init(void) /定时中断初始化函数 0.01s=10ms定时中断设置 PITCFLMT_PITE=0; /定时中断通道关 PITCE_PCE0=1; /使能0通道 PITMTLD0=240-1; /8位定时器初值设定 240分频,在48MHzBusClock下,为0.2MHz。即5us PITLD0=2000-1; /16位定时器初值设定。2000*0.005ms PITINTE_PINTE0=1; /PIT通道0定时中断使能,当计数器递减溢出时,申请中断 PITCFLMT_PITE=1; /定时器通道0使能/* FunctionName:PWM_Init* FunctionDiscription:PulseWidthModulation Initialization* FunctionStatement: PWM3 is assigned to MotorIn1 PWM4 is assigned to MotorIn2*/void PWM_Init(void) /CH3 Motor In1 /CH4 Motor In2 /SB,B for ch2367 /SA,A for ch0145 PWME = 0x00; /PWM禁止 PWMCAE = 0x00; / 左对齐模式 PWMPOL = 0xFF; /正极性脉冲 PWMPRCLK = 0x33; / clockA=clockB=busclock/8=48/8=6MHz PWMSCLA = 0x03; /clockSA=clockA/(2*PWMSCLA)=6/6=1MHz PWMSCLB = 0x03; /clockSB=clockB/(2*PWMSCLB)=6/6=1MHz PWMCLK = 0xFF; /时钟源选择SA,SB PWMPER3=40; /PWM周期=通道时钟周期*PWMPER3=(1/1MHz)s*40=0.04ms 25khz PWMDTY3=0; /占空比=PWMDTY3/PWMPER3= 0 PWMPER4=40; PWMDTY4=0; PWMCNT3 = 0; PWMCNT4 = 0; PWME = 0x18; /输出PWM3和pwm4 /* FunctionName:Main* FunctionDiscription:Main Function*/void main(void) /* put your own code here */ PLL_Init(); PWM_Init(); PIT_Init(); EnableInterrupts; for(;) _FEED_COP(); /* feeds the dog */ /* loop forever */ /* please make sure that you never leave main */* FunctionName:Periodic Interrupt Timer* FunctionDiscription:*FunctionStatement:MotorCotrol Block*/#pragma CODE_SEG _NEAR_SEG NON_BANKED /指示该程序在不分页区void interrupt 66 PIT0(void) flag+; PITTF_PTF0=1; /清中断标志位 /-单片机上电5s后启动-/ if(flag=500) PWME = 0x00; PWMDTY3=0; PWMDTY4=0; /-高速正向转动 5s-/ if(flag=1000) PWMDTY3=40; PWMDTY4=0; PWME = 0x18; /-慢速正向转动 3s-/ if(flag=1300) PWMDTY3=20; PWMDTY4=0; PWME = 0x18; /-停止转动 5s-/ if(flag=1800) PWME = 0x00; PWMDTY3=0; PWMDTY4=0; /-反向高速转动 5s-/ if(flag=2300) PWMDTY3=0; PWMDTY4=40; PWME=0x18; /-反向慢速转动 3s-/ if(flag=2600) PWMDTY3=0; PWMDTY4=20; PWME=0x18; /-高速正向转动 5s-/ if(flag=3100) PWMDTY3=40; PWMDTY4=0; PWME=0x18; if(flag=3200) PWME = 0x00; flag=0; b.程序流程图如下:NY开始初始化PLL设置总线频率初始化PWM设置占空比及输出脉冲频率初始化PIT设置定时中断开放中断等待中断响应flag=3200?进入中断程序判断标志flag+中断标志flag置0中断返回结束4、所选题目的外围硬件的功能及应用方法a.TPS7350功能: TPS7350的主要特点和功能有:输出电压精度高(20),输出噪声低(2a),压差低,在输出为100ma时,最大压差为35mv(tps7350),静态电流小,典型值为340a(与负载电流大小有关),有关闭电源控制端,在关闭电源状态时,耗电仅为0.5a,内部有监视输出电压电路,降到门限电压时,reset端输出低电平复位信号(当输入电压上升时,使输 出电压上升到门限电压时,有200ms的延迟后,输出正常电压),内部有过流限制及过热保护。tps7350各引脚的功能:应用:在本方案中,考虑到飞思卡尔MC9S12XS128MAA单片机正常工作的额定电压为5V,并且为了延长电池的使用寿命同时减小电压波动对单片机工作产生干扰,故选用TPS7350组成一个低压差稳压器(电路图见)对单片机进行供电,以实现单片机正常的工作。 b.BTS7960 功能:BTS7960是应用于电机驱动的大电流半桥集成芯片,它带有一个P沟道的高边MOSFET、一个N沟道的低边MOSFET和一个驱动IC。P沟道高边省去了电荷泵的需求,因而减少了电磁干扰。集成的驱动IC具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和超温、过压、欠压、过流及短路保护功能。其通态电阻典型值为16毫欧,驱动电流可达43A,调节SR引脚外接电阻的大小可以调节MOS管导通和关断时间,具有防磁干扰功能。IS引脚是电流检测输出引脚。INH引脚为使能引脚,IN引脚用于确定哪个MOSFET导通。当IN=1且INH=1时,高边MOSFET导通,输出高电平;当I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论