步进电机PWM控制程序设计论文_第1页
步进电机PWM控制程序设计论文_第2页
步进电机PWM控制程序设计论文_第3页
步进电机PWM控制程序设计论文_第4页
步进电机PWM控制程序设计论文_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

沈阳工程学院课程设计设计题目:步进电机PWM控制程序设计1.设计主要内容及要求;1〕研究步进电机PWM控制及利用DSP实现的方法。2〕编写步进电机控制程序。3〕调试程序,观察结果。2.对设计论文撰写内容、格式、字数的要求;〔1〕.课程设计论文是表达和总结课程设计成果的载体,一般不应少于3000字。〔2〕.学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各局部内容要求可参照《沈阳工程学院毕业设计〔论文〕撰写标准》执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。〔3〕.论文要求打印,打印时按《沈阳工程学院毕业设计〔论文〕撰写标准》的要求进行打印。〔4〕.课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。3.时间进度安排;顺序阶段日期计划完成内容备注17月2日教师讲解题目,学生查阅相关资料27月3日确定步进电机控制算法以及程序流程37月4日编写程序47月5日调试程序57月6日撰写论文,程序验收沈阳工程学院步进电机PWM控制课程设计成绩评定表指导教师评审意见评价内容具体要求权重评分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整标准。0.55432指导教师评审成绩〔加权分合计乘以12〕分加权分合计指导教师签名:年月日评阅教师评审意见评价内容具体要求权重评分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整标准。0.35432评阅教师评审成绩〔加权分合计乘以8〕分加权分合计评阅教师签名:年月日课程设计总评成绩分引言目前各种控制系统、通信系统、网络系统、仪器仪表等都以微处理器为核心。几十年来,随着大规模集成电路技术的不断开展,微处理器的性能越来越高、体积越来越小、系列越来越多。微处理器从过去单纯的中央处理单元,开展到将众多外围设备集成到片内形成单片机,由过去的8位机,开展到16位、32位机。由于大规模集成电路技术的突破,DSP控制器的价格已和普通单片机接近,但其性能远远超过了普通单片机。DSP控制器由DSP〔DigitalSignalProcessor,数字信号处理器〕开展而来,其突出特点就是采用多组总线技术实现并行机构,有独立的加法器和乘法器,有灵活的寻址方式,从而可以非常快速地实现复杂算法。而此次是步进电机PWM控制程序设计,采用全步四相四拍控制方式,用四个控制接口为四个引脚,按一定的频率循环置高电平即可使步进电机转动。而用户可以通过修改定时器1的周期以及PWM的比拟功能调整电机运行方向与状态。目录课程设计任务书II引言V1设计任务描述71.1设计题目71.2设计目的71.3设计要求71.4发挥局部72设计思路83设计方框图94各局部程序设计104.1实验程序功能与结构说明104.2头文件104.3初始化114.3.1DSP28_EV.c:包含了事件管理器初始化。114.3.2DSP28_PieCtrl.c:PIE中断初始化。124.3.3DSP28_SysCtrl.c:系统初始化。134.3.42812.gel:系统初始化144.3.5DSP28_PieVect.c:PIE中断矢量表初始化。144.4实验主程序系统的初始化及使能144.5定时器1的设置与PWM的比拟功能和比拟方式控制154.6PWM控制设置与中断165工作过程分析185.1.步进电机的驱动:185.2.步进电机的驱动接口:196设计程序20小结22致谢23参考文献241设计任务描述1.1设计题目步进电机PWM控制程序设计1.2设计目的〔1〕掌握LaunchCodeComposerStudio使用方法。〔2〕掌握直流电机PWM控制原理。〔3〕学会用C语言编写程序。1.3设计要求〔1〕研究直流电机PWM控制及利用DSP实现的方法。〔2〕编写直流电机控制程序。〔3〕调试程序,观察结果。1.4发挥局部自由发挥2设计思路步进电机采用全步四相四拍的控制方式,其接口为EVA的PWM1,PWM2,PWM3,PWM4引脚。它们分别为步进电机四相的控制端。按照一定频率循环置高电平即可使步进电机转动。用定时器设置周期中断,作为PWM的频率,比拟存放器里边设置两组数,作为PWM的脉宽。当定时器中断次数到达某个值时,可以改变比拟存放器中的值,从而改变PWM的脉宽,即改变上下电平的占空比,进而改变电动机的转速。令此程序循环进行下去就能实现电动速度的连续变化。可以通过修改定时器1的周期以及PWM的比拟功能调整电机运行方向与状态,3设计方框图CSL初始化CSL初始化设定时钟频率EV初始化设定时钟频率EV初始化定时器中断使能定时器中断使能比拟存放器比拟存放器PWMPWM电机转动电机转动4各局部程序设计4.1实验程序功能与结构说明1.stepmotor.c:实验主程序,包含了系统初始化,步进电机控制,机调速等;2.DSP28_EV.c:包含了事件管理器初始化。3.DSP28_DefaultIsr.c:包含了异步串口接收中断效劳程序。4.DSP28_GlobalVariableDefs.c:各个外设备全局变量定义。5.DSP28_PieCtrl.c:PIE中断初始化。6.DSP28_PieVect.c:PIE中断矢量表初始化。7.DSP28_SysCtrl.c:系统初始化。8.2812d:声明了系统的存储器配置与程序各段的连接关系。9.2812.gel:系统初始化10.*.h:各个源文件的头文件11.rts2800.l:库函数文件4.2头文件#include"DSP281x_Device.h"//DSP281x头文件DSP281x头文件包括很多子文件:#include"DSP281x_SysCtrl.h"//SystemControl/PowerModes#include"DSP281x_DevEmu.h"//DeviceEmulationRegisters#include"DSP281x_Xintf.h"//ExternalInterfaceRegisters#include"DSP281x_CpuTimers.h"//32-bitCPUTimers#include"DSP281x_PieCtrl.h"//PIEControlRegisters#include"DSP281x_PieVect.h"//PIEVectorTable#include"DSP281x_Spi.h"//SPIRegisters#include"DSP281x_Sci.h"//SCIRegisters#include"DSP281x_Mcbsp.h"//McBSPRegisters#include"DSP281x_ECan.h"//EnhancedeCANRegisters#include"DSP281x_Gpio.h"//GeneralPurposeI/ORegisters#include"DSP281x_Ev.h"//EventManagerRegisters#include"DSP281x_Adc.h"//ADCRegisters#include"DSP281x_XIntrupt.h"//ExternalInterrupts#include"DSP281x_DefaultISR.h"//DefaultISR4.3初始化DSP28_EV.c:包含了事件管理器初始化。voidInitEv(void){//设置GPIO EALLOW;GpioMuxRegs.GPAMUX.all=0x00ff;EDIS;//初始化定时器控制存放器(EVA)EvaRegs.GPTCONA.all=0;//设置定时器1//设置定时器1的周期和比拟;EvaRegs.T1PR=0xffff;//周期//中断使能EvaRegs.EVAIMRA.bit.T1PINT=1;EvaRegs.EVAIFRA.bit.T1PINT=1;//去除计数存放器EvaRegs.T1CNT=0x0000;//设置定时器控制存放器;EvaRegs.T1CON.all=0x1040;//连续递增/递减计数,定时器使能,关闭比拟使能//使能产生PWM1-PWM4的比拟功能EvaRegsPR1=0x0c00;EvaRegsPR2=0x3c00;//比拟方式控制//输出引脚1CMPR1-高有效 输出引脚2CMPR1-低有效 //输出引脚3CMPR2-高有效 输出引脚4CMPR2-低有效 //输出引脚5CMPR3-高有效 输出引脚6CMPR3-低有效 EvaRegs.ACTRA.all=0x0666;EvaRegs.DBTCONA.all=0x0Af8;//x/4,死区开,m=2,p=4,t=0.2usEvaRegs.COMCONA.all=0xA600; } DSP28_PieCtrl.c:PIE中断初始化。voidInitPieCtrl(void){PieCtrl.PIECRTL.bit.ENPIE=0; //去除所有PIE记录 PieCtrl.PIEIER1.all=0; PieCtrl.PIEIER2.all=0; PieCtrl.PIEIER3.all=0; PieCtrl.PIEIER4.all=0; PieCtrl.PIEIER5.all=0; PieCtrl.PIEIER6.all=0; PieCtrl.PIEIER7.all=0; PieCtrl.PIEIER8.all=0; PieCtrl.PIEIER9.all=0; PieCtrl.PIEIER10.all=0; PieCtrl.PIEIER11.all=0; PieCtrl.PIEIER12.all=0; //去除所有PIE记录 PieCtrl.PIEIFR1.all=0; PieCtrl.PIEIFR2.all=0; PieCtrl.PIEIFR3.all=0; PieCtrl.PIEIFR4.all=0; PieCtrl.PIEIFR5.all=0; PieCtrl.PIEIFR6.all=0; PieCtrl.PIEIFR7.all=0; PieCtrl.PIEIFR8.all=0; PieCtrl.PIEIFR9.all=0; PieCtrl.PIEIFR10.all=0; PieCtrl.PIEIFR11.all=0; PieCtrl.PIEIFR12.all=0; //PIE使能: PieCtrl.PIECRTL.bit.ENPIE=1; PieCtrl.PIEACK.all=0xFFFF;} DSP28_SysCtrl.c:系统初始化。voidInitSysCtrl(void){Uint16i;EALLOW;//关闭看门狗SysCtrlRegs.WDCR=0x0068;//初始化PLLSysCtrlRegs.PLLCR=0xA;//等待PLL上锁for(i=0;i<5000;i++){}SysCtrlRegs.HISPCP.all=0x0001;SysCtrlRegs.LOSPCP.all=0x0002; //Peripheralclockenablessetfortheselectedperipherals.SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;EDIS;}voidKickDog(void){EALLOW;SysCtrlRegs.WDKEY=0x0055;SysCtrlRegs.WDKEY=0x00AA;EDIS;}4.3.42812.gel:系统初始化DSP28_PieVect.c:PIE中断矢量表初始化。4.4实验主程序系统的初始化及使能voidmain(void){/*初始化系统*/InitSysCtrl(); /*关中断*/ DINT; IER=0x0000; IFR=0x0000;*p_ceselect=0x6;//翻开ce3空间for(i=0;i<0x100;i++);*p_iodisable=0x1;//IO空间始能 for(i=0;i<0x100;i++); /*初始化PIE控制存放器*/InitPieCtrl(); /*初始化PIE矢量表*/ InitPieVectTable(); /*初始化EV*/ InitEv(); //重新分配中断效劳的中断向量EALLOW;PieVectTable.T1PINT=&eva_timer1_isr; //定时器1计数中断EDIS;//初始化变量EvaTimer1InterruptCount=0;//使能PIE组2中断4--T1PINTPieCtrl.PIEIER2.all=M_INT4;//使能CPU中断IER|=M_INT2;EINT;ERTM; for(;;) { KickDog();}}4.5定时器1的设置与PWM的比拟功能和比拟方式控制//初始化定时器控制存放器(EVA)EvaRegs.GPTCONA.all=0;//设置定时器1//设置定时器1的周期和比拟;EvaRegs.T1PR=0xffff;//周期//中断使能EvaRegs.EVAIMRA.bit.T1PINT=1;EvaRegs.EVAIFRA.bit.T1PINT=1;//去除计数存放器EvaRegs.T1CNT=0x0000;//设置定时器控制存放器;EvaRegs.T1CON.all=0x1040;//连续递增/递减计数,定时器使能,关闭比拟使能//使能产生PWM1-PWM4的比拟功能 EvaRegsPR1=0x0c00; EvaRegsPR2=0x3c00;//比拟方式控制 //输出引脚1CMPR1-高有效 输出引脚2CMPR1-低有效 //输出引脚3CMPR2-高有效 输出引脚4CMPR2-低有效 //输出引脚5CMPR3-高有效 输出引脚6CMPR3-低有效 EvaRegs.ACTRA.all=0x0666; EvaRegs.DBTCONA.all=0x0Af8;//x/4,死区开,m=2,p=4,t=0.2us EvaRegs.COMCONA.all=0xA600;4.6PWM控制设置与中断//EVGP1周期中断interruptvoideva_timer1_isr(void){EvaTimer1InterruptCount++;if((EvaRegsPR1>=0xfff3)||(EvaRegsPR1==0x0011))Direct1=(Direct1==0)?1:0;if((EvaRegsPR2>=0xfff3)||(EvaRegsPR2==0x0011))Direct2=(Direct2==0)?1:0;if(Direct1==1)EvaRegsPR1=EvaRegsPR1+0x500;elseEvaRegsPR1=EvaRegsPR1-0x500;if(Direct2==1)EvaRegsPR2=EvaRegsPR2+0x500;elseEvaRegsPR1=EvaRegsPR2-0x500;//使能中断EvaRegs.EVAIMRA.bit.T1PINT=1;//去除中断标志EvaRegs.EVAIFRA.all=BIT7;//中断应答接收更多的PIE组2的中断PieCtrl.PIEACK.all=PIEACK_GROUP2;}5工作过程分析5.1.步进电机的驱动:图是单极性步进电机翻译/驱动的典型电路,图中的方块为驱动开关。针对SEED-DEC中直流电机系统的动作要求,步进电机驱动电路设计思路如下:1)电机采用15V直流电源供电;2)4路控制信号由SEED-DTK_MBoard提供,信号为CMOS标准电平,通过排线接入并下拉;3)使用达灵顿管TIP31C代替IRL540作为电机驱动开关,基级串接100Ω电阻;4)使用快速二极管1N4007完成保护功能,以免电机换向时烧毁电机;5)使用50Ω限流电阻〔半步运行时电流约为0.2A,小于电机电源额定电流〕;6)电机电源/地之间跨接电容,电机地与数字地之间采用磁珠连接共地;步进电机在这个实验中选择的是M35SP-7N,其步进角为7.5°,是一种单极性的步进电机。它的结构如下列图所示:实际使用时,公共端1与2是短接在一起做为电源输入,一共五个抽头。控制每个绕组的两个抽头来实现对步进电机的控制。步进电机的控制一般分为四相四拍与四相八拍两种方式,其中前者称为全步,后者称为半步。5.2.步进电机的驱动接口:步进电机的控制接口为EVA的PWM1、PWM2、PWM3、PWM4引脚。它们分别为步进电机四相的控制端。按一定的频率循环置高电平即可使可使步进电机转动。引脚与步进电机的线圈对应关系如下列图所示:在步进电机为四相四拍时,其正转顺序为A->B->C->D->A,在控制器中CNTL[3:0]的输出依次为:0x8->0x4->0x2->0x1.其反转的顺序为A->D->C->B->A,在控制器中CNTL[3:0]的输出依次为:0x8->0x1->0x2->0x4。6设计程序#include"DSP28_Device.h"/*定义扩展总线存储器空间页地址存放器地址为0x004020*/volatileunsignedint*p_ceselect=(volatileunsignedint*)0x004020;/*定义交通灯IO口的地址为0x80000*/volatileunsignedint*p_iodisable=(volatileunsignedint*)0x080007;//子函数声明interruptvoideva_timer1_isr(void);//全局中断计数变量intDirect1=0;intDirect2=0;Uint32EvaTimer1InterruptCount;Uint32 i;voidmain(void){ /*初始化系统*/InitSysCtrl(); /*关中断*/DINT;IER=0x0000;IFR=0x0000;*p_ceselect=0x6;//翻开ce3空间for(i=0;i<0x100;i++);*p_iodisable=0x1;//IO空间始能 for(i=0;i<0x100;i++); /*初始化PIE控制存放器*/InitPieCtrl();/*初始化PIE矢量表*/InitPieVectTable(); /*初始化EV*/InitEv();//重新分配中断效劳的中断向量EALLOW;PieVectTable.T1PINT=&eva_timer1_isr; //定时器1计数中断EDIS;//初始化变量EvaTimer1InterruptCount=0;//使能PIE组2中断4--T1PINTPieCtrl.PIEIER2.all=M_INT4;//使能CPU中断IER|=M_INT2;EINT;ERTM;for(;;){KickDog();}} /**********************************************///EVGP1周期中断/**********************************************/interruptvoideva_timer1_isr(void){EvaTimer1InterruptCount++;if((EvaRegsPR1>=0xfff3)||(EvaRegsPR1==0x0011))Direct1=(Direct1==0)?1:0;if((EvaRegsPR2>=0xfff3)||(EvaRegsPR2==0x0011))Direct2=(Direct2==0)?1:0;if(Direct1==1) EvaRegsPR1=EvaRegsPR1+0x500;else EvaRegsPR1=EvaRegsPR1-0x500;if(Direct2==1) EvaRegsPR2=EvaRegsPR2+0x500;else EvaRegsPR2=EvaRegsPR2-0x500;//使能中断EvaRegs.EVAIMRA.bit.T1PINT=1;//去除中断标志EvaRegs.EVAIFRA.all=BIT7;//中断应答接收更多的PIE组2的中断PieCtrl.PIEACK.all=PIEACK_GROUP2;}小结这一周的课设很快的就结束了。这次课设让我过了非常充实的

温馨提示

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

评论

0/150

提交评论