DSP报告 下载本文

沈 阳 工 程 学 院

课 程 设 计

设计题目:直流电机PWM控制程序设计

系 别 自动控制工程系 班级 测控本081 学生姓名 石覆嘉 学号 2008310127 指导教师 吕勇军 职称 教授 起止日期:2011年7月4日起——至2011年7月8日止

直流电机PWM控制程序设计

沈阳工程学院

课程设计任务书

课程设计题目:

系 别 班级 学生姓名 学号 指导教师 职称 课程设计进行地点:

任 务 下 达 时 间: 2011年 7月4日

起止日期: 2011年7月4日起——至2011年7月8日止

教研室主任 年 月 日批准

直流电机PWM控制程序设计

1.设计主要内容及要求;

II

直流电机PWM控制程序设计 编写直流电机PWM控制程序。

要求:1)研究直流电机PWM控制及利用DSP实现的方法。 2)编写直流电机控制程序。 3)调试程序,观察结果。

2.对设计论文撰写内容、格式、字数的要求;

(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。

(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。

(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。

(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。

3.时间进度安排; 顺序 阶段日期 1 2 3 4 5 计 划 完 成 内 容 备注 7月4日 教师讲解题目,学生查阅相关资料 7月5日 确定直流电机PWM程序流程 7月6日 编写程序 7月7日 调试程序 7月8日 撰写论文,程序验收

沈 阳 工 程 学 院

直流电机PWM控制 课程设计成绩评定表

III

直流电机PWM控制程序设计

系(部): 班级: 学生姓名:

指 导 教 师 评 审 意 见 评价 内容 调研 论证 工作能 力态度 工作量 说明书 的质量 具 体 要 求 能独立查阅文献,收集资料;能制定课程设计方案和日程安排。 工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 按期圆满完成规定的设计任务,工作量饱满,难度适宜。 说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。 权重 0.1 0.2 0.2 5 5 5 评 分 4 4 4 3 3 3 加权分 2 2 2 0.5 5 4 3 2 指导教师评审成绩 (加权分合计乘以12) 指 导 教 师 签 名: 分 加权分合计 年 月 日 评 阅 教 师 评 审 意 见 评价 内容 查阅 文献 工作量 说明书 的质量 具 体 要 求 查阅文献有一定广泛性;有综合归纳资料的能力 工作量饱满,难度适中。 说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。 权重 0.2 0.5 0.3 评 分 加权分 5554443332 2 2 评阅教师评审成绩 (加权分合计乘以8) 评 阅 教 师 签 名: 课 程 设 计 总 评 成 绩

分 加权分合计 年 月 日 分

引 言

IV

直流电机PWM控制程序设计

目前各种控制系统、通信系统、网络系统、仪器仪表等都以微处理器为核心。几十年来,随着大规模集成电路技术的不断发展,微处理器的性能越来越高、体积越来越小、系列越来越多。微处理器从过去单纯的中央处理单元,发展到将众

多外围设备集成到片内形成单片机,由过去的8位机,发展到16位、32位机。 由于大规模集成电路技术的突破,DSP控制器的价格已和普通单片机接近,但其性能远远超过了普通单片机。DSP控制器由DSP(Digital Signal Processor,数字信号处理器)发展而来,其突出特点就是采用多组总线技术实现并行机构,有独立的加法器和乘法器,有灵活的寻址方式,从而可以非常快速地实现复杂算法。

V

直流电机PWM控制程序设计

目 录

课程设计任务书 .................................................... II 直流电机PWM控制程序设计 .......................................... II 引 言 ............................................................ IV 1设计任务描述 ...................................................... 2

1.1设计题目 .................................................... 2 1.2设计目的 .................................................... 2 1.3设计要求 .................................................... 2 1.4发挥部分 .................................................... 2 2 设计思路 ......................................................... 3 3 设计方框图 ....................................................... 4 4 各部分程序设计 ................................................... 5

4.1头文件 ...................................................... 5 4.2 初始化 ...................................................... 5 4.3 使能 ........................................................ 6 4.4定时器T3设置 ............................................... 7 4.5 PWM与PIE设置 .............................................. 8 5工作过程分析 ...................................................... 9 6 设计程序 ........................................................ 10 小 结 ............................................................. 12 致 谢 ............................................................. 13 参考文献 .......................................................... 14

1

直流电机PWM控制程序设计

1设计任务描述

1.1设计题目

直流电机PWM控制程序设计

1.2设计目的

(1)掌握Launch Code Composer Studio使用方法。 (2)掌握直流电机PWM控制原理。 (3)学会用C语言编写程序。

1.3设计要求

(1)研究直流电机PWM控制及利用DSP实现的方法。 (2)编写直流电机控制程序。 (3)调试程序,观察结果。

1.4发挥部分

自由发挥

2

直流电机PWM控制程序设计

2 设计思路

用定时器设置周期中断,作为PWM的频率,比较寄存器里边设置两组数,作为PWM的脉宽。当定时器中断次数达到某个值时,可以改变比较寄存器中的值,从而改变PWM的脉宽,即改变高低电平的占空比,进而改变电动机的转速。令此程序循环进行下去就能实现电动速度的连续变化。

程序的流程为首先进行初始化,并使能定时器中断,通过对程序的不断调用与循环来实现电机转速的连续调节

3

直流电机PWM控制程序设计

3 设计方框图

程序初始化

设定时钟频率 选择复用引脚 禁止看门狗 定时器中断使能 比较寄存器 PWM

外接硬件电路

4

直流电机PWM控制程序设计

4 各部分程序设计

4.1头文件

#include \头文件 DSP281x头文件包括很多子文件:

#include \ #include \ #include \ #include \ #include \ #include \ #include \ #include \ #include \ #include \ #include \General Purpose I/O Registers #include \ #include \ #include \ #include \

4.2 初始化

void gptimer3_init(void); //T3初始化程序 void interrupt gptimer3_isr(void); //T3中断服务程序 void Delay(unsigned int nTime);

#define CTRGR * (int * )0x108000 //试验控制板参数 #define CTRGR * (int * )0x108007

unsigned int nCount;

5

直流电机PWM控制程序设计

unsigned int datacnt,data[2]={0x4E,0x9B};

//1-alpha=0.4;0.8,T3PR=0xC2=194

//data[]中的值为PWM波形中保持低电平的时间, //可通过改变data中的值来改变PWM波形占空比 void main(void) {

InitSysCtrl(); //系统初始化,PLL,时钟频率150MHz, //使能外设时钟,禁止WD EALLOW;

SysCtrlRegs.HISPCP.all=0x0003; //高速时钟的工作频率HSPCLK=25MHz EDIS;

CTRGR=0x80; //初始化ICETEK-CTR实验板,使能电动机,关闭指示灯 CTRGR=0x0; CTRGR=0x80;

CTRGR=0; //关闭实验控制板东西方向的交通灯 CTRGR=0x40; //关闭实验控制板南北方向的交通灯 CTRGR=0xC0;

CTRGR=0x81; //使能电动机 EALLOW;

4.3 使能

InitSysCtrl(); //系统初始化,PLL,时钟频率150MHz, //使能外设时钟,禁止WD CTRGR=0x81; //使能电动机 EvbRegs.COMCONB.all=0xA600; //使能比较输出PWM11

EvbRegs.EVBIMRA.bit.T3PINT=1; //使能定时器3的周期中断 EINT; //开总中断

6

直流电机PWM控制程序设计

4.4定时器T3设置

for(;;){;} //死循环,等待定时器3周期中断的产生 void interrupt gptimer3_isr(void) //T3中断服务程序 { nCount++; if (nCount==1000) {

nCount=1; datacnt++;

if (datacnt==2) datacnt=0; EvbRegs.CMPR6=data[datacnt]; }

EvbRegs.EVBIMRA.bit.T3PINT=1; //使能定时器3的周中断

EvbRegs.EVBIFRA.bit.T3PINT=1; //写1清除定时器1的周中断标志 PieCtrlRegs.PIEACK.all=PIEACK_GROUP4; //清零PIEACK的第4组中断对于对应位(08) }

void gptimer3_init(void) //定时器T3中初始化程序 {

EvbRegs.GPTCONB.all=0x0000; //无事件启动ADC EvbRegs.T3CON.all=0x1742;

//T3连续增计数模式,128分频,使能比较,打开定时器

EvbRegs.T3PR=0xc2; //定时器3周期=(T3PR+1)* 128/25 MHz=1ms //即产生的定频PWM波形的频率位1kHz EvbRegs.T3CNT=0; //定时器计数器初值,从0开始计数 EvbRegs.EVBIMRA.bit.T3PINT=1; //使能定时器3的周期中断

EvbRegs.EVBIFRA.bit.T3PINT=1; //写1清除定时器1的周期中断标志 }

7

直流电机PWM控制程序设计

4.5 PWM与PIE设置

unsigned int datacnt,data[2]={0x4E,0x9B}; //1-alpha=0.4;0.8,T3PR=0xC2=194

//data[]中的值为PWM波形中保持低电平的时间, //可通过改变data中的值来改变PWM波形占空比

GpioMuxRegs.GPAMUX.all=0x0000; //PWM5/GPIOA4设置I/O功能GPIOA4 GpioMuxRegs.GPBMUX.all=0x00FF; //将PWM11/GPIOB4设置为PWM11功能 EDIS;

EvbRegs.ACTRB.all=0x0666; //空间矢量不动作,PWM11高电平有效 EvbRegs.DBTCONB.all=0X0000; //禁止死区

EvbRegs.COMCONB.all=0xA600; //使能比较输出PWM11 EvbRegs.CMPR6=0x4E; //比gptimer3_init(); //T3

较值

中初始化程序

DINT; //关闭总中断,清除中断标志,asm(\INTM\IER=0x0000; //关闭外设中断 IFR=0x0000; //清中断标志

InitPieCtrl(); //初始化PIE控制寄存器

InitPieVectTable(); //初始化PIE中断向量表,DSP281x_PieVect.c. EALLOW;

PieVectTable.T3PINT=&gptimer3_isr; //中断服务程序入口地址放入中断向量表

EDIS; //依次使能各级中断:外设中相应中断位->PIE控制器->CPU PieCtrlRegs.PIEIER4.all=M_INT4;

//GP定时器3使能位PIE第4组第4个,将其使能 IER |= M_INT4;

//PIE第4组对应CPU的可屏蔽中断4(INT4),将其使能(M_INT4=8)

8

直流电机PWM控制程序设计

5工作过程分析

程序中采用定时器T3周期中断产生固定频率的PWM波形,用来控制电动机转速。T3周期中断每发生10000次电动机转速改变一次,在本程序中电机始终为正转。当定时器产生周期中断时进入中断服务子程序gptimer3_isr( )。在gptimer3_isr( )中,判断中断次数,如中断数达到10000次,则改变比较寄存器的值,使得PWM脉宽改变,电机转速发生变化。因此,开始运行程序后,电机先以较慢的转速转动,经过10秒后,电动机转速变快,再经过10秒电动机转速又变慢,依次循环下去。

程序外接电路如图5-1所示,将PWM的输出口与图中的1路相连接,就能实现对直流电动机的控制。

图5-1 直流电机电动控制硬件电路

9

直流电机PWM控制程序设计

6 设计程序

#include \void gptimer3_init(void); void interrupt gptimer3_isr(void); void Delay(unsigned int nTime);

#define CTRGR * (int * )0x108000 #define CTRGR * (int * )0x108007 unsigned int nCount;

unsigned int datacnt,data[2]={0x4E,0x9B}; void main(void) {

InitSysCtrl(); EALLOW;

SysCtrlRegs.HISPCP.all=0x0003; EDIS;

CTRGR=0x80; CTRGR=0x0; CTRGR=0x80;

CTRGR=0; CTRGR=0x40; CTRGR=0xC0;

CTRGR=0x81; EALLOW;

GpioMuxRegs.GPAMUX.all=0x0000; GpioMuxRegs.GPBMUX.all=0x00FF; EDIS;

EvbRegs.ACTRB.all=0x0666; EvbRegs.DBTCONB.all=0X0000; EvbRegs.COMCONB.all=0xA600; EvbRegs.CMPR6=0x4E; gptimer3_init(); DINT; IER=0x0000; IFR=0x0000; InitPieCtrl(); InitPieVectTable(); EALLOW;

PieVectTable.T3PINT=&gptimer3_isr EDIS;

PieCtrlRegs.PIEIER4.all=M_INT4; IER |= M_INT4;

10

直流电机PWM控制程序设计

EINT; GpioDataRegs.GPADAT.bit.GPIOA4 =1; nCount=1; datacnt=0;

for(;;){;} CTRGR=0x0; CTRGR=0x80; CTRGR=0x0; exit(0); }

void interrupt gptimer3_isr(void) {

nCount++;

if (nCount==1000) {

nCount=1; datacnt++;

if (datacnt==2) datacnt=0; EvbRegs.CMPR6=data[datacnt]; }

EvbRegs.EVBIMRA.bit.T3PINT=1; EvbRegs.EVBIFRA.bit.T3PINT=1; PieCtrlRegs.PIEACK.all=PIEACK_GROUP4; }

void gptimer3_init(void) {

EvbRegs.GPTCONB.all=0x0000; EvbRegs.T3CON.all=0x1742

EvbRegs.T3PR=0xc2; EvbRegs.T3CNT=0; EvbRegs.EVBIMRA.bit.T3PINT=1; EvbRegs.EVBIFRA.bit.T3PINT=1; }

11

直流电机PWM控制程序设计

小 结

为期一周的DSP课程设计已经接近尾声了,感觉还是和以前的课程设计一样,过了充实的一周。本次课程设计其实不难,不需要我们实际动手去连接实物。只是通过教材来研究程序,设计程序。可是我们小组也遇到了不小的麻烦,由于实验室电脑上的软件不是很全面,头文件的问题困扰了我们两天的时间。我们不得不依照\找到其中的各种子头文件。经过我们不断的调试程序,终于克服了这一难题。每天我们都很早的去教室,相互帮助尽早完成一个人的成果,然后其他人再接上一个人的机器,没有人霸占机器好久,都互相谦让着,有时候我们都顾不上吃饭,第二天依旧如此。可以说为了这个课程设计,我们都付出了很多很多。即便后来成绩不一,但我们既然努力过,就不会后悔。 DSP这门学科在当今社会扮演着很重要的角色,我们所学的单片机与DSP很相像,但是我们所学的知识还尚且太浅,通过单片机与DSP课程设计我们就能发现单片机与DSP对现在的科学领域起着非常重要的作用,我们必须好好的去学习它们,争取对它们有更多的了解,这对我们今后的事业也有很大的帮助。

我们的课程设计可以说是做一次少一次了,我们都很珍惜每一次机会。我们已经做过不少课程设计了,每做完一次都有不同的收获。课程设计丰富了我们的知识,也锻炼了我们的设计能力。为我们将来的工作生活提供了有力的补给。

12

直流电机PWM控制程序设计

致 谢

这次课程设计对我来说是一件非常有意义的事情。它带给我的,不仅仅是完成一项设计而收获的开心和自豪,更是对我人生态度的培养。通过此次课设,使我们得以将课堂知识运用到实际的实践当中去,理论与实践相结合,才能得真知。这绝对是亘古不变的道理。查阅资料,请教同学,相互讨论,还好有老师和同学,一步一步的修改和讲解让我觉得非常的暖心。可能在以后步入社会以后这种感觉可能不复存在。所以我珍惜现在的每一次的设计。

在这里要非常感谢吕勇军老师。每天都来实验室为同学们解答各种问题,当我们出错误的时候,吕老师都会在身边,所以我们感到非常的安心。这也是一次跟老师更加近距离的学习机会。

在这里还要感谢我同组的同学以及帮助我们的同学。在每天的课程设计中,都有你们的陪伴,在我有困难的时候,你们永远在我的身边。非常谢谢你们对我的帮助。

13

直流电机PWM控制程序设计

参考文献

[1] 万山明.TMS320F281x DSP原理及应用实例[M]. 北京:北京航空航天大学出

版社,2007.

[2] 刘和平.数字信号处理器、结构及应用基础——TMS320F28x[M].北京:机械

工业出版社,2007.

[3] 苏奎峰. TMS320F281x DSP原理与开发.北京:电子工业出版社,2005. [4] 宁改娣.DSP控制器原理及应用[M].北京:科学出版社,2009. [5] 三恒星科技. TMS320F281x DSP原理及应用实例[M].北京:电子工业出版社,

2009.

[6] 张芳兰.TMS320C2xx用户指南[M].北京:电子工业出版社,1999. [7] 百度.www.http://www.32336.cn/

14