DSP第五次实验

  • 格式:doc
  • 大小:83.79 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.实验目的

1.掌握DSP 控制直流电机的方法。

2.进一步熟悉用C 语言编制中断程序的流程和方法。

3.掌握LF2407 DSP 的通用I/O 管脚产生不同占空比的PWM 信息方法。

4.掌握LF2407 DSP 的通用I/O 管脚的控制方法。

二.实验主要仪器设备

计算机, 试验箱

三.实验原理

1.TMS320LF2407DSP 的通用I/O 引脚。

1)TMS320LF2407DSP 有40个通用I/O 引脚。

2)大部分的I/0引脚是基本功能和一般I/O 的复用引脚,控制此引脚到底什么功能,可

用两类控制寄存器来控制。

a ,I/O 复用控制寄存器(MCRx ):用来选择I/O 引脚的片内外设功能还是通用I/O 功

能.

b ,数据方向控制寄存器(PxDATDIR ):用来控制双向I/O 引脚的数据和数据传送方向。

2.直流电机控制。

使用全控制的开关功率元件进行脉宽调制的控制方式对直流电机进行调速。

1)PWM 调压调速的原理

直流电动机转速n 的表达式:n=

K -U IR u-电枢端电压,I-电枢电流,R-电枢电路总电阻,Φ-每极磁通量,K-电动机结构参数

2)PWM 调压原理图。

Ui Uo Us GND Ui

D1 D2 t t 0

电动机的电枢绕组两端的电压平均值u 。为

u 。=)1(0

1211s s s U U T

t t t u t α==++ 由式1可以得出PWM 调速方法:(α-占空比,通过改变α大小,从而改变u 。值达到控制n )

1) 定宽调频法:t1不变,t2变,周期T 随之改变。

2) 调宽调频法:t1变,t2不变,周期T 随之改变。

3) 定频调宽法:t1,t2都变,周期T 不变。

选择第三种方法的原因,若频率改变,当控制其频率与系统的固有频率近时,将会引起震荡。

3.ICETEK-CTR 直流电机模块

ICETEK-CTR 即显示-控制模块上直流电机部分的原理图。

PWM-DSP 26号引脚的IOPE5的信号, DIR-DSP 的29号引脚的IOPF4信号。

控制原理:

电动机正转时:IOPF4=1,V4通,V3关,V2关,V1的导通由IOPE5控制。

电动机的反转:IOPF4=0,V2通,V1关,V4关,V3的导通由IOPE5控制。

4.实验程序分析

程序中采用定时器中断产生固定频率的PWM 波,100次中断为一个周期,在每个中断根据当前占空比判断应输入波形的高低电平。主程序用轮询式读入键盘输入,得到转速和方向控制的命令。

PWM AND DIR AND Us

1)主程序框图:

注:在改变电动机方向时为减少电压和电流的波动采用先减速后反转的控制顺序。源程序框图如下所示:

2)定时器中断服务程序框图。

源程序如下:

#include “2407c.h”

#include”scancode.h”

#define T46Us 0x0800

ioport unsigned int port8000 ioport unsigned int port8001 ioport unsigned int port8002 ioport unsigned int int port8007

void Delay(unsigned int nTime);

char ConvertScanToChar(unsigned char cScanCode ); void interrupt gptime(void);

void gp_init(void);

ioport unsigned int port8001;

unsigned int uWork,nCount,uN,uN1,nCount1=0,nDir; main()

{

char cKey,cOldKey;

unsigned int nScanCode;

unsigned int uWork1,nSpeed;

asm(“setc INTM”);

port8000=0;

port8000=0x80;

port8007=0;

port8007=0x40;

uWork1=port8002;

port8000=1;

uN=40; nCount=nCount1=0;nDir=0;cKey=cOldKey=0;

*WDCR=0x6f;

*WDKEY=0x5555;

*WDKEY=0xaaaa;

*SCSR1=0x81fe;

uWork=(*MCRC);

uWork&=0x0efdf;

(*MCRC)=uWork;

gp_init();

*IMR=0x2;

*IFR=0xffff;

nCount=0;

uWork=(*WSGR);

uWork&=0x0fe3f;

(*WSGR)=uWork;

uWork=(*PFDATDIR);

uWork|=0x1000;

uWork&=0xffef;

(*PFDATAIR)=uWork;

asm(“clrc INTM”);

Delay(128);

*T1PR=T46uS;

nSpeed=T46uS;

for( ; ;)

{if(nCount>16)

{nCount=0;

nScanCode=port8001;

port8000=0;

nScanCode&=0x0ff;

port8001=1;

if(nScanCode!=0)

{if(nScanCode= =SCANCODE_Enter) break;

else

{cKey=ConverScanToChar( nScanCode); if(cKey!=0&&cOldkey!=cKey) {cOldKey=cKey;

switch(cKey)

{case”0”:uN=100;break;

case”1”:uN=90;break;

case”2”:uN=70;break;

case”3”:uN=50;break;

case”4”:uN=30;break;

case”5”:uN=10;break;

case’+’:

uN1=uN;

uN=60;

Delay(128);

uWork1=(*PFDATAIR);

uWork1|=0x0010;

(*PFDATAIR)=uWork1;

*TIPR=nSpeed;

nDir=0;

Delay(128);

uN=uN1;

break;

case’-’:

uN1= uN;

uN=60;

Delay(128);

uWork1=(*PFDATAIR);

uWork1&=0xffef;

(*PFDATDIR)=uWork1;

Delay(128);

*TIPR=nSpeed;

nDir=1;

Delay(128);

uN=uN1;

break;}

}

}

}

}

}

相关主题