基于DSP的直流电机控制系统方案文档格式.docx
《基于DSP的直流电机控制系统方案文档格式.docx》由会员分享,可在线阅读,更多相关《基于DSP的直流电机控制系统方案文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
所以直流电动机的转速控制方法可分为两类:
对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制法。
其中励磁控制法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈电感较大,动态响应较差,所以这种控制方法用得很少。
现在,大多数应用场合都使用电枢控制法。
绝大多数直流电机采用开关驱动方式。
开关驱动方式是使半导体功率器件工作在开关状态,通过脉宽调制PWM来控制电动机电枢电压,实现调速。
上图是利用开关管对直流电动机进行PWM调速控制的原理图
和输入输出电压波形。
图中,当开关管MOSFET的栅极输入高电平时,开关管导通,直流电动机电枢绕组两端有电压Us。
t1秒后,栅极输入变为低电平,开关管截止,电动机电枢两端电压0。
t2秒后,栅极输入重新变为高电平,开关管的动作重复前面的过程。
这样,对应着输入的电平高低,直流电动机电枢绕组两端的电压波形如图中所示。
电动机的电枢绕组两端的电压平均值Uo为:
占空比∝表示了在一个周期T里,开关管导通的时问与周期的比值。
∝的变化范围为0《a<
1。
由此式可知,当电源电压Us不变的情况下,电枢的端电压的平均值Uo取决于占空比。
的大小,改变。
值就可以改变端电压的平均值,从而达到调速的目的,这就是PWM调速原理。
PWM调速方法
在PWM调速时,占空比。
是一个重要参数。
以下3种方法都可以改变占空比的值:
(1)定宽调频法:
这种方法是保持t1不变,只改变t2,这样使周期T(或频率)也随之改变。
(2)调宽调频法:
这种方法是保持t2不变,只改变t1,这样使周期T(或频率)也随之改变。
(3)定频调宽法:
这种方法是使周期T(或频率)保持不变,而改变t1和t20
前两种方法由于在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起震荡,因此这两种方法用得很少。
目前,在直流电动机的控制中,主要使用定频调宽法。
ICETEK-CTR直流电机模块:
ICETEK-CTR即显示/控制模块上直流电机部分的原理图见下图。
图中PWM输入对应ICETEK-VC5416-A板上P4外扩插座第26引脚的BFSR1信号,DSP将在此引脚上给出PWM信号用来控制直流电机的转速;
图中的DIR输入对应ICETEK-VC5416-A板上P4外扩插座第29引脚的BCLKXRO信号,DSP将在此引脚上给出高电平或低电平来控制直流电机的方向。
从DSP输出的PWM信号和转向信号先经过2个与门和1个非门再与各个开关管的栅极相连。
二、控制原理
当电动机要求正转时,BCLKXRO给出高电平信号,该信号分成3路:
第1路接与门Y1的输入端,使与门Y1的输出由PWM决定,所以开关管V1栅极受PWM控制;
第2路直接与开关管V4的栅极相连,使V4导通;
第3路经非门F1连接到与门Y2的输入端,使与门Y2输出为0,这样使开关管V3截止;
从非门F1输出的另一路与开关管V2的栅极相连,其低电平信号也使V2截止。
同样,当电动机要求反转时,BCLKXRO给出低电平信号,经过2个与门和1个非门组成的逻辑电路后,使开关管V3受PWM信号控制,V2导通,V1,V4全部截止。
三、设计方案
采用由达林顿管组成的H型PWM电路。
用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高;
H型电路保证了可以简单地实现转速和方向的控制;
电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。
兼于方案三调速特性优良、调整平滑、调速范围广、过载能力大。
第三章硬件设计
一、ICETEKDSP教学实验箱简介
本套DSP系统,为DSP教学和科研提供了一套整体解决方案。
本套系统最大的特点就是模块化设计,既满足了目前教学的需要,又为将来产品的升级换代,做了技术上的考虑。
同时这种模块化的设计可以应用到多个方面,比如:
1.本科的DSP的实验教学;
2.基于DSP应用的课程设计;
3.基于DSP用于图像,语音,网络的毕业设计;
4.基于DSP的研究生嵌入式系统的开发;
1、ICETEKDSP教学实验箱的特点和指标:
由于该套实验系统主要由4部分组成,因此,这里分4部分来介绍该套系统。
实验箱部分:
两个独立的信号发生器,可同时提供两种波形、四路输出;
信号的波形、频率、幅度可调。
频率微调:
在每个频率段范围内进行频率调整。
波形切换:
提供3种波形(方波,三角波,正弦波),可通过拨动开关进行选择。
幅值微调:
0-3.3V平滑调整。
信号接插孔:
4路A/D输入((ADCINO-3),4路D/A输出(DACOUTI-4),每路均提供信号和地。
多种直流电源输出:
+SV(SA),+12V(lA),-12V(O.SA),地。
底板提供插座,可使用插座完成DSP评估板上的A/D信号输入和D/A输出。
测试模块:
提供14个测试点,可以测量PWM输出、AD输入和DA输出波形。
双信号发生器设计,更加贴近DSP的实际应用,许多实际的情况都是需要对两个信号进行相关分析。
通用DSP开发系统部分:
USB2.0接口开发系统,支持C2000/VC33/C5000/C6000的开发应用。
支持CCS。
通用开发系统和DSP控制板分离,有利于将来DSP的升级。
同时,也可以脱离实验箱单独从事科研开发使用。
通用控制模块部分:
显示输出:
液晶显示((LCD):
128X64点阵图形显示屏,可调整显示对比度。
发光二极管显示阵列:
8X8点阵。
发光二极管。
音频输出:
可由DSPI/O脚控制的蜂鸣器;
D/A输出提供音频插座,可直接接插耳机。
键盘:
17键数字键盘(标准PS2接口)。
步进电机:
四相步进电机,步距角5.625,起动频率》300PPS,运行频率》900PPS,可可以接收DSP输出的由DSPI/O端口控制旋转和方向、速度。
直流电机:
空载转速3050转/分,输出功率1.35W,启动力矩21.3N,出的PWM控制信号,实现电机的转速和方向控制。
拨动开关(DIP):
4路,可实现复位和设置DSP应用板参数。
DSP主处理板部分:
支持:
ICETEK-VC5416-A板、ICETEK-VC33-A板、ICETEK-VC5509-A板、ICETEK-VC33-AR板、ICETEK-C6713-A板、ICETEK-LF2407-A板、ICETEK-F2812-A板等。
2、ICETEKDSP教学实验箱的组成
ICETEKDSP教学实验箱主要由以下儿个部分组成:
1.箱盖:
保护实验箱设备;
保存教材、使用手册、实验指导书、各种实验用的连线;
可拆卸在实验中可从箱体上拆下。
2.箱体:
装载实验箱设备;
左侧外壁上有一个标准外接电源线插孔;
通过固定螺丝与实验箱底板连为一体。
3.底板:
固定各模块;
提供电源开关、实验用直流电源插座、A/DD/A输入输出插座、各模块直流供电插座、信号插座、信号源输出插座、测试点;
实现显示控制模块和DSP评估板模块的信号互连。
4.信号源:
两组、四路输出,可使用专门开关启动;
提供切换选择输出方波、三角波和正弦波,另可选择输出频率范围(lOHz-100Hz,100Hz-1KHz,1KHz-lOKHz,lOKHz-20KHz),还可进行频率和幅度(0-3.3V)的微调。
5.仿真器模块:
固定ICETEK仿真器,支持PP型和USB型;
提供PP型仿真器供电+SV电源插座;
仿真器可从底板上拆下单独使用或更换。
6.显示控制模块:
通过信号线连接到底板;
从底板提供的+SV和++12V直流电源插座输入电源;
提供液晶图形显示(128x64像素),发光二极管阵列显示(8x8点),指示灯(12只,分为红、黄、绿三种颜色),四相步进电机,直流电机,键盘(外接PS2接口),蜂鸣器。
显示控制模块可从底板上拆下更换。
7.测试模块:
提供对常用信号的测试点,其中有PWM信号((4路,仅针对DSP系统为ICETEK-F2812-A-USB-EDU的实验箱)、模数转换信号(}4路)、和数模转换信号((4路),另外还包括两个地线(DGND,AGND)o
8.DSP评估板模块:
固定各种DSP评估板;
提供+SV直流电源插座(两个位置);
34Pin信号线插座((4个),用于连接DSP评估板和实验箱底板。
DSP评估板模块可从底板上拆下更换。
3、ICETEK-VC5416-A评估板技术指标
主处理芯片:
TMS320VC5416,运行速度为160M;
低功耗设计;
工作速度可达160MIPS
片内RAM存贮空问128KX16Bit;
扩展的6路12bitA/D接口ADS7864,最大采样速率5OOK;
4路的DAC7625转换,100K/S,12Bit;
UART串行接口,符合RS232标准;
8Mbit扩展FLASH,存储大量固化程序和数据;
设计有用户可以白定义的开关和测试指示灯;
4组标准扩展连接器,为用户进行二次开发提供条件;
具有IEEE1149.1相兼容的逻辑扫描电路,该电路仅用于测试和仿真;
+5V电源输入,内部+3.3V,+1.6V电源管理;
4层板设计工艺,工作稳定可靠;
具有白启动功能设计,可以实现脱机工作;
可以选配多种应用接口板,包括图像板,网络板等;
4、ICETEK-VC5416-A原理图和实物图
ICETEK-VC5416-A评估板接口说明实物图
ICETEK-VC5416-A器件布局图
ICETEK-VC5416-A评估板原理图
5、ICETEKDSP教学实验箱结构图
6、ICETEKDSP教学实验箱使用注意事项
1.拆卸各模块时请务必将实验箱总电源关闭;
2.不使用显示/控制模块时将相关电源开关关闭;
3.220V交流电源线连接须牢靠,勿使发生虚接或接触不良,并保证良好地连接地线;
4.实验箱底板上标称值不同的直流电源不能直接跨接;
5.实验箱底板上直流电源不能直接跨接地线;
6.不要直接连接电源和信号插座;
7.显示/控制模块上的两个电源插座不要连接错误,上边插座为++12V,下面的为+5V;
8.连接不同类型的插座时,请再三确认无误后进行;
9.不要带电拔插各模块;
10.不要带电拔插仿真器和DSP评估板上JTAG插头的连接电缆;
11.如无特殊情况,请勿打开实验箱底板;
12.不要带电拔插键盘插头;
13.如遇实验箱冒烟等异常现象请立即关闭总电源,并查找原因。
7、ICETEKDSP教学实验箱的硬件连接
1.连接电源:
打开实验箱,取出三相电源连接线,将电源线的一端插入实验箱外部左侧箱壁上的电源插孔中。
确认实验箱面板上电源总开关(位于实验箱底板左上角)处于“关”的位置,连接电源线的另一端至220V交流供电插座上,保证稳固连接。
2.使用电源连接线连接各模块电源:
确认实验箱总电源断开。
连接ICETEK-CTR板上边插座到实验箱底板上+12V电源插座;
ICETEK-CTR板下边插座到实验箱底板上+5V电源插座;
如使用PP(并口)型仿真器,则连接仿真器上插座到实验箱底板上+5V电源插座;
连接DSP评估板模块电源插座到实验箱底板上+SV电源插座。
注意各插头要插到底,防止虚接或接触不良。
3.连接DSP评估板信号线:
当需要连接信号源输出到A/D输入插座时,使用信号连接线(如右图)分别连接相应插座。
4.接通电源:
检查实验箱上220V电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使开关位于“开”的位置,电源开关右侧的指示灯亮。
第四章软件设计
一、程序编制
程序中采用定时器中断产生固定频率的PWM波,100次中断为一个周期,在每个中断中根据当前占空比判断应输出波形的高低电平。
主程序用轮询方式读入键盘输入,得到转速和方向控制命令。
在改变电机方向时为减少电压和电流的波动采用先减速再反转的控制顺序。
二、实验程序流程图
1.初始化:
DSP时钟、中断寄存器、定时器ICETEK-CTR、MCBSP初始化
2.键盘检测:
进行键盘检测,断定方向,转速。
3.中断计数模块:
计数器1-99.用于断定键盘输入。
第五章系统调试
一、实验准备
(1)连接实验设备。
(2)连接实验箱附带的键盘的PS2插头到ICETEK-CTR的“键盘接口”P8。
(3)将ICETEK-CTR板的供电电源开关拨动到“开”的位置。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行:
3.启动CodeComposerStudio2.21。
4.打开工程文件:
工程目录:
C:
\ICETEK-VC5416-EDULab\Lab0406-DCMotor\DCMotor.pjt。
浏览DCMotor.c文件的内容,理解各语句作用。
5.编译并下载程序。
6.运行并观察程序运行结果。
开始运行程序后,电机以中等速度转动(占空比=60,转速=2)。
在小键盘上按数字‘1’一‘5’键将分别控制电机从低速到高速转动(转速==1^-5)o
在小键盘上按数字‘0’键将控制电机停止转动。
在小键盘上按‘+’或‘一’键切换电机的转动方向。
如果程序退出或中断时电机不停转动,可以将控制ICETEK-CTR模块的电源开关关闭再开启一次。
有时键盘控制可能不是非常灵敏,这是因为程序采用了轮询方式读键盘输入的结果,可以多按儿次按键。
7.结束程序运行:
在小键盘上按‘Enter’键停止电机转动并退出程序。
8.退出CCS。
二、实验程序
第六章结论分析
通过实验可以发现,直流电机受控改变转速和方向。
附录:
/////////////////////////////////////////////////
//ExampleForICETEK-VC5416-EDU//
//CTRVersion:
V4//
//Filename:
DCMotor.c//
//Project:
DCMotor.pjt//
//Version:
2.00//
//Writeby:
DanielHawk//
//Company:
RealtimedspCo.Ltd.//
////
//AllRightsopened&
noOnus2005.06//
#include"
scancode.h"
#defineTIM*(int*)0x24
#definePRD*(int*)0x25
#defineTCR*(int*)0x26
#defineIMR*(int*)0x0
#defineIFR*(int*)0x1
#definePMST*(int*)0x1d
#defineSPSA0*(unsignedint*)0x38
#defineSPSD0*(unsignedint*)0x39
#defineSPSA1*(unsignedint*)0x48
#defineSPSD1*(unsignedint*)0x49
#defineREGISTERCLKMD(*(unsignedint*)0x58)
#defineT46uS0x0200
//CTR扩展寄存器定义
ioportunsignedintport8000;
ioportunsignedintport8001;
ioportunsignedintport8002;
ioportunsignedintport8003;
ioportunsignedintport8004;
ioportunsignedintport8005;
ioportunsignedintport8007;
#defineCTRGRport8000
#defineCTRLCDCMDRport8001
#defineCTRKEYport8001
#defineCTRCLKEYport8002
#defineCTRLCDCRport8002
#defineCTRLCDLCRport8003
#defineCTRLCDRCRport8004
#defineCTRLAport8005
#defineCTRLRport8007
voidDelay(unsignedintnTime);
voidinterrupttime(void);
charConvertScanToChar(unsignedcharcScanCode);
unsignedintuWork,nCount,uN,nCount1,nDir,nTest;
main()
{
unsignedintnSpeed,nScanCode,uWork1,uN1;
unsignedcharcKey,cOldKey;
nTest=0;
REGISTERCLKMD=0;
CTRGR=0;
CTRGR=0x80;
CTRGR=1;
CTRLR=0;
//关闭东西方向的交通灯
CTRLR=0x40;
//关闭南北方向的交通灯
uWork1=CTRCLKEY;
//清除键盘缓冲区
REGISTERCLKMD=0x1007;
//DSP主频改为两倍PLL时钟=32MHz
uN=30;
nCount=nCount1=0;
nDir=0;
cKey=cOldKey=0;
SPSA1=1;
//setMcBSP1'
sSPCR2
uWork=SPSD1;
uWork&
=0xfffe;
//setXRST=0
SPSD1=uWork;
SPSA1=0x0e;
sPCR1
uWork|=0x2400;
//setXIOEN=1FSXM=1,EnableIO,FSRforoutput
SPSA0=0;
//setMcBSP0'
sSPCR1
uWork=SPSD0;
//setRRST=0
SPSD0=uWork;
SPSA0=0x0e;
uWork|=0x1101;
//setRIOEN=1FSXM=1,EnableIO,CLKRforoutput,setMotor'
sdirectionto1
asm("
ssbxINTM"
);
//关中断,进行关键设置时不许打扰
uWork1=PMST;
PMST=uWork1&
0xff;
IMR=0x8;
TCR=0x411;
TIM=0;
PRD=T46uS;
nSpeed=T46uS;
TCR=0x422;
IFR=0x8;
rsbxINTM"
while
(1)
{
if(nCount>
16)
{
CTRGR=1;
nCount=0;
nScanCode=CTRKEY;
//读扫描码
nScanCode&
=0x0ff;
//低8位
//uWork1=CTRCLKEY;
if(nScanCode!
=0)
{
if(nScanCode==SCANCODE_Enter)break;
else
{
cKey=ConvertScanToChar(nScanCode);
if(cKey!
=0&
&
cOldKey!
=cKey)
{
cOldKey=cKey;
switch(cKey)
{
case'
0'
:
uN=100;
break;
1'
uN=70;
2'
uN=50;
3'
4'
uN=10;
5'
uN=1;
+'
uN1=uN;
uN=60;
//降速
Delay(1024);
SPSA0=0;
uWork1=SPSD0;
uWork1&
SPSD0=uWork1;
SPSA0=0x0e;
uWork1|=0x1101;
//setMotor'
SPSD0=uWork