《DSP的PWM电机控制程序代码分析.pdf》由会员分享,可在线阅读,更多相关《DSP的PWM电机控制程序代码分析.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中南大学DSP 原理及应用课程代码分析报告报告题目:DSP 的 PWM 电机控制程序代码分析学院:信息科学与工程学院专业班级:电气 0804姓名:邓添轶学号:0909082203指导老师:刘建成目录1.基本原理2.数据存储空间(汇编源程序)、头文件和变量声明(C 源程序)分析3.算法分析与流程图4.总结1.基本原理1.每个 240X 器件都包含两个事件管理模块 EVA 和 EVB,每个时间管理器模块包括通用定时器、比较单元、捕获单元,以及正交编码脉冲电路。2.直流电机控制:直流电动机是最早出现的电动机,也是最早能实现调速的电动机。近年来,直流电动机的结构和控制方法都发生了很大的变化。随着计算机
2、进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控型的开关功率元件进行脉宽调制(PWM)控制方式已成为绝对主流。PWM 调压调速原理:直流电动机转速 n 的表达式为:n U IRK其中,U 为电枢端电压;I 为电枢电流;R 为电枢电路总电阻;为每级磁通量;K 为电动机结构参数。所以直流电机的转速控制方法可分为两类:对励磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制法。其中励磁控制法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少。现在,大多数应用场合都使用电枢控制法。绝大多数电流电机采用开关驱
3、动方法。开关驱动方式是使半导体功率器件工作在开关状态,通过脉宽调制PWM 来控制电动机电枢电压,实现调速。具体电路如下图。2.数据存储空间(汇编源程序)、头文件和变量声明(C 源程序)分析在此程序中定义了如下变量(C 源程序)在此程序中定义如下数据空间(汇编程序):由于程序设置使用 CAN 总线传输电机转速数据,故在程序中开辟了 CANIDxL 和 CANIDxH(存储 CAN 总线数据标识符 ID 的单元),CANCTRLx(存储 CAN 总线控制寄存器位单元),CANBXnA/B/C/D(存储总线传输数据单元)。在汇编程序中还将在程序中涉及的变量开辟空间由于在程序中要用到中断,故在汇编程序
4、中定义了中断向量地址表:具体变量和块在存储器中的地址为:*TMS320C24xx COFF LinkerVersion 7.02*OUTPUT FILE NAME:ENTRY POINT SYMBOL:_c_int0address:00008904SECTION ALLOCATION MAPoutputattributes/sectionpageoriginlengthinput sections-.vectors0000080000000000e000080000000000eDefine.obj(.vectors).text000008860000001490000886000000006
5、Define.obj(.text)0000886600000000global.obj(.text)000088660000009eMain.obj(.text).cinit0.data100008904000000270000892b000000500000897b0000002e000089a900000010000089a900000009000089b200000006000089b8000000010000086000000000000008600000000000000860000000000000086000000000000008600000000000000860000000
6、000000086000000000rts2xx.lib:boot.obj(.text):exit.obj(.text):saverest.obj(.text)Main.obj(.cinit)rts2xx.lib:exit.obj(.cinit)-HOLE-fill=0000UNINITIALIZEDDefine.obj(.data)rts2xx.lib:saverest.obj(.data):exit.obj(.data):boot.obj(.data)Main.obj(.data)global.obj(.data).bss10000088000000025UNINITIALIZED0000
7、088000000022rts2xx.lib:exit.obj(.bss)000008a200000000:boot.obj(.bss)000008a200000000global.obj(.bss)000008a200000000rts2xx.lib:saverest.obj(.bss).const.switch.stack.system000008a200000000000008a20000000310000086000000000000008860000000001000008a5000000a0000008a50000000010000086000000000Define.obj(.b
8、ss)Main.obj(.bss)UNINITIALIZEDUNINITIALIZEDUNINITIALIZEDrts2xx.lib:boot.obj(.stack)UNINITIALIZED3.算法分析与流程图六、程序流程图开始系统初始化设置引脚功能设置XPWMPWM初始化开中断循环算法分析:/*Main.c*/*PWM 电机控制程序,正反转,默认设置的工作频率1kHz*/#include global.cvoid SystemInit();void PWM_Init();void KickDog();int numled0=200;unsigned int t0=0;unsigned in
9、t XPWM=0;main()SystemInit();/系统初始化MCRA=MCRA&0 xC0FF;/IOPB0-6 设为 IO 口模式PBDATDIR=0 xFFC2;/所有 LED=0PBDATDIR=PBDATDIR|0 x003D;/所有 LED=1XPWM=2400;/最大值 2500快when xpwm=16002500,顺时针方向旋转,值越大,/*when xpwm=0900,逆时针方向旋转,值越小,转速越转速越快when xpwm=9001600,电机两端电压太低,基本上不足以起转*/PWM_Init();/定时器初始化asm(CLRC INTM);while(1);voi
10、d SystemInit()asm(SETC INTM);/*关闭总中断*/asm(CLRCSXM);/*禁止符号位扩展*/asm(CLRCCNF);/*B0 块映射为 on-chip DARAM*/asm(CLRCOVM);/*累加器结果正常溢出*/SCSR1=0 x83FE;/*系统时钟 CLKOUT=20*2=40M*/*打开 ADC,EVA,EVB,CAN 和 SCI 的时钟,系统时 钟CLKOUT=40M*/WDCR=0 x006F;KickDog();/*禁止看门狗,看门狗时钟 64 分频*/*初始化看门狗*/*清除中断标志*/*打开中断 2*/IFR=0 xFFFF;IMR=0
11、x0002;void PWM_Init()MCRA=MCRA|0 x00C0;EVAIFRA=0 xFFFF;/PA6-PA7为 PWM 口/清除中断标志ACTRA=0 x0006;/PWM1,2 低有效DBTCONA=0 x0530;5*0.4us=2usT1PR=2500;/定时器 1 周期值,定时 0.4us*2500=1ms/使能死区定时器 1,分频 40M/16=2.5M,死区时间CMPR1=XPWM;/比较值void c_int2()/*定时器 1 中断服务程序*/if(PIVR!=0 x27)asm(CLRC INTM);COMCONA=0 xA600;/比较控制寄存器T1CNT
12、=0;EVAIMRA=0 x0080;/定时器 1 周期中断使能T1CON=0 x144E;/增模式,TPS 系数 40M/16=2.5M,T1 使能,return;T1CNT=0;t0+;numled0-;if(numled0=0)numled0=2000;if(PBDATDIR&0 x0001)=0 x0001)PBDATDIR=PBDATDIR&0 xFFFE;elsePBDATDIR=PBDATDIR|0 x0101;EVAIFRA=0 x80;asm(CLRC INTM);void KickDog()/*踢除看门狗*/IOPB0=0;LED 灭/IOPB0=1;LED 亮WDKEY=0 x5555;WDKEY=0 xAAAA;4.总结DSP 是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。在利用DSP 对电机进行 PWM 控制中,相对于模拟信号控制,DSP 具有精确、灵活、抗干扰能力强、可靠性高、体积小、易于大规模集成等优点。并且由于 DSP 具有强大的数据处理能力,对其PWM 控制更能得心应手。