关键词不能为空

当前您在: 主页 > 英语 >

实验.DSP直流电机控制实验

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 23:31
tags:

-

2021年2月1日发(作者:comix)


--


姓名


















陈玉枫



自动化




学号







2011/12/


7


专业



实验名称



实验内容



实验目的


和要求



实验设备



实验原理




时间



成绩




直流电机控制实验



通过


C


语言编程控制控制


I/O


管脚产生不同占空比的


PWM


信号,


从而控


制直流电机的转速



1


.学习用


C


语言编制中断程序,控制


F2812 DSP


通用


I/O


管脚产生不同


占空比的


PWM


信号。



2


.学习


F2812DSP


的通用


I/O


管脚的控制方法。



3


.学习直流电机的控制原理和控制方法。



计算机,


ICETEK-F2812-EDU


实验箱(或


ICETEK


仿真器


+ICETEK



F2812-A


系统板


+


相关连线及电源)。



1



TMS320F2812DSP



McBSP


引脚



通过设置



PWM11



PWM5


的工作方式和状态,可以 实现将它们当成通



I/O


引脚使用。



2


.直流电机控制


< br>直流电动机是最早出现的电动机,


也是最早能实现调速的电动机。


近年来,


直流电动机的结构和控制方式都发生了很大的变化。

< br>随着计算机进入控制


领域,


以及新型的电力电子功率元器 件的不断出现,


使采用全控型的开关


功率元件进行脉宽调制


(Puls Width Modulation


,简称

< p>
PWM)


控制方式已成


为绝对主流。


PWM


调压调速原理



直流电动机转速



n


的表达式为:



Φ?


=


Kn U IR



其中,


U


为电枢端电压;


I


为电枢电流;


R


为电枢电路总电阻; Φ为每极


磁通量;


K


为电动机结构参 数。


所以直流电动机的转速控制方法可分为两


类:


对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制


法。


其中励磁控制法在低速时受磁极饱和的限制,


在高速时受换向火花和


换向器结构强度的限制,并且励磁线圈电感较大,动态响应较差,所以这


种控制方法用得很少。现在,大多数应用场合都使用电枢控制法。绝大多


数直流 电机采用开关驱动方式。


开关驱动方式是使半导体功率器件工作在


开关状态,通过脉宽调制


PWM


来控制电动机电枢电压,实现调速。



--


--



上图是利用开关管对直流电动机进行



PWM


调速控制的原理图和输入输


出 电压波形。图中,



当开关管


MOSFET


的栅极输入高 电平时,开关管导通,直流电动机电枢


绕组两端有电压


Us




t1


秒后, 栅极输入变为低电平,开关管截止,电动机电枢两端电压为


0



t2


秒后,栅极输入重


< p>
新变为高电平,开关管的动作重复前面的过程。这样,对应着输入的电平


高 低,直流电动机电



枢绕组两端的电压波形如图中所示。


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


Uo




S S


S


U U


T


t


t t


t U


O


U


= =


α



+


+


=


1


1 2


1


0


式中α为占空比,α


=t1/T


占空比α表示了在一个周期



T


里,开关管导通的时间与周期的比值。α


的变化范围为


0


≤α≤


1


< p>
由此式可知,


当电源电压


Us

< br>不变的情况下,


电枢的端电压的平


均值

< br>Uo


取决于占



空比α的大小 ,


改变α值就可以改变端电压的平均值,


从而达到调速的目


的,这就是


PWM


调速原理。



--


--


PWM


调速方法:





PWM


调速时,占空比α是一个重要参数。以下


3


种方法都可以改变


占空比的值:



(1)


定宽调频法:


这种方法是保持


t1


不变,


只改变


t2



这样使周期


T(


或频率


)


也随之改变。



(2)


调宽调频法:


这种方法是保持


t2


不变,


只改变


t1



这样使周期


T(


或频率


)


也随之改变。



(3)


定频调宽法:这种方法是使周期


T(


或频率


)


保持不变,而改变

< p>
t1



t2



< /p>


前两种方法由于在调速时改变了控制脉冲的周期


(


或频率


)


,当控制脉冲的


频率 与系统的



固有频率接近时,将会引起震荡,因此这两种方法用 得很少。目前,在直


流电动机的控制中,



主要使用定频调宽法




图中



PWM


输入对应


ICETEK



F2812 -A


评估板上


P4


外扩插座第


26



脚的


PWM11




号,


DSP


将在此引脚上给出


PWM


信号用来控 制直流电机的转速;


图中的


DIR


输入对应



ICETEK



F2812-A


评估板上


P1


外扩插座第


6


引脚的


P4


信号,


DSP


将在


此引脚上给出高电



平或低电平来控制直流电机的方向。



DSP


输出的


PWM


信号和转向信号


先经过


2


个与门和



1


个非门再与各个开关管的栅极相连。



控制原理



当电动机要求正转时,


PWM11


给出高电平信号,


该信号分成


3


路:



1



接与门


Y1


的输入端,使与门


Y1


的输出由


PWM


决定,所以开关管


V1


栅极受


PWM


控制;第


2


路直接



与开关管


V4


的栅极相连,


使


V4


导通;



3


路经非门


F1


连接到与门


Y2



输入端,使与门



Y2


输出为


0


,这样使开关管


V3


截止;从非门


F1


输出的另一路与开关管


V2


的栅极相连,其



低电平信号也使


V2


截止。



同样,当电动机要求反转时,


PWM5


给出低电平信号,经过


2


个与门和


1


个非门组成的



--


--


逻辑电路后,使开关管


V3



PWM


信号控制,


V2


导通,


V1



V4


全部


截止。



4


.程序编制



程序中采用定时器中断产生固定频率的



PWM


波,在每个中断中根据当


前占 空比判断应



输出波形的高低电平。



主程序用轮询方式读入键盘输入,得到转速和方向控制命令。



在改变电机方向时为减少电压和电流的波动采用先减速再反转的控制顺

< br>序。




1

)对实


通过


C


语言编程改变


pwm


波的占空比,将此


pwm


波从


I/O



< p>



口输出到直流电动机,从而改变其转速,通过 引脚上给出高




< br>理


电平或低电平和逻辑电路来控制直流电机的方向。



及调试:



进行分析,









计思路。



实验设计



2


)列出













初始化



2.


电机使能



3.


键盘实时监测



4.


中断调用



--


--



3


)画出






图。







4


)调试


程序





#include







//


DSP281x


Headerfile


Include File


#include





//


DSP281x


Examples


Include File



// Prototype statements for functions found within this file.


interrupt void cpu_timer0_isr(void);


void Delay(unsigned int nTime);



void Gpio_select(void);


void error(int);


void program_stop();


void Gpio_PortA(void);


void Gpio_PortB(void);


void Gpio_PortF(void);


void Gpio_PortDEG(void);


--


--


char ConvertScanToChar(unsigned char cScanCode);


void RefreshLEDArray();




//


刷新显示



void SetLEDArray(int nNumber);



//


修改显示内容




#define T46uS



0x0d40


#define SCANCODE_0 0x70


#define SCANCODE_1 0x69


#define SCANCODE_2 0x72


#define SCANCODE_3 0x7A


#define SCANCODE_4 0x6B


#define SCANCODE_5 0x73


#define SCANCODE_6 0x74


#define SCANCODE_7 0x6C


#define SCANCODE_8 0x75


#define SCANCODE_9 0x7D


#define SCANCODE_Del 0x49


#define SCANCODE_Enter 0x5A


#define SCANCODE_Plus 0x79


#define SCANCODE_Minus 0x7B


#define SCANCODE_Mult 0x7C


#define SCANCODE_Divid 0x4A


#define SCANCODE_Num 0x77


#define CTRGR *(int *)0x108000


#define CTRLCDCMDR *(int *)0x108001


#define CTRKEY *(int *)0x108001


#define CTRLCDCR *(int *)0x108002


#define CTRCLKEY *(int *)0x108002


#define CTRLCDLCR



*(int *)0x108003


#define CTRLCDRCR *(int *)0x108004


#define CTRLA *(int *)0x108005


#define CTRLR *(int *)0x108007



Uint16 var1 = 0;


Uint16 var2 = 0;


Uint16 var3 = 0;


Uint16 test_count = 0;


Uint16 Test_flag = 0;


Uint16 Test_var



= 0;


Uint16 Test_status[32];



Uint16 PASS_flag = 0;


unsigned int uWork;



int jishu=0;


--


--


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


unsigned int uPort8000;



unsigned int nScreenBuffer[1024];


unsigned char ledbuf[8],ledx[8];


unsigned char ledkey[10][8]=


{



{0x00,0x00,0x7 C,0x82,0x82,0x82,0x7C,0x00},


{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00},


//1



{0x00,0x00,0 x84,0xC2,0xA2,0x92,0x8C,0x00},


//2



{0x00,0x00,0x44,0x92,0x92,0 x92,0x6C,0x00},



{0x00,0x00, 0x30,0x28,0x24,0xFE,0x20,0x00},



{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},



{0x00,0x00,0x7C,0x92,0x92,0 x92,0x64,0x00},



{0x00,0x00, 0x02,0xC2,0x32,0x0A,0x06,0x00},



{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},



{0x00,0x00,0x4C,0x92,0x92,0 x92,0x7C,0x00}


};



void main(void)


{






//int nCount=0;






char cKey,cOldKey;



unsigned int nScanCode,nKeyCode;



unsigned int nSpeed;



// Step 1. Initialize System Control:


// PLL, WatchDog, enable Peripheral Clocks


// This example function is found in the DSP281x_SysCtrl.c file.





InitSysCtrl();



// Step 2. Initalize GPIO:



//


This


example


function


is


found


in


the


DSP281x_Gpio.c


file


and


// illustrates how to set the GPIO to it's default state.


// InitGpio();



// Skipped for this example






// Step 3. Clear all interrupts and initialize PIE vector table:


// Disable CPU interrupts






DINT;



// Initialize the PIE control registers to their default state.


// The default state is all PIE interrupts disabled and flags


--

-


-


-


-


-


-


-


-



本文更新与2021-02-01 23:31,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595818.html

实验.DSP直流电机控制实验的相关文章