DSP的PWM电机控制程序代码分析.docx

上传人:b****5 文档编号:6594150 上传时间:2023-01-08 格式:DOCX 页数:11 大小:130.26KB
下载 相关 举报
DSP的PWM电机控制程序代码分析.docx_第1页
第1页 / 共11页
DSP的PWM电机控制程序代码分析.docx_第2页
第2页 / 共11页
DSP的PWM电机控制程序代码分析.docx_第3页
第3页 / 共11页
DSP的PWM电机控制程序代码分析.docx_第4页
第4页 / 共11页
DSP的PWM电机控制程序代码分析.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

DSP的PWM电机控制程序代码分析.docx

《DSP的PWM电机控制程序代码分析.docx》由会员分享,可在线阅读,更多相关《DSP的PWM电机控制程序代码分析.docx(11页珍藏版)》请在冰豆网上搜索。

DSP的PWM电机控制程序代码分析.docx

DSP的PWM电机控制程序代码分析

中南大学

DSF原理及应用课程代码分析报告

报告题目:

DSP的PWM电机控制程序代码分析学院:

专业班级:

姓名:

学号:

0909082203

指导老师:

刘建成

1.基本原理

2.

、头文件和变量

数据存储空间(汇编源程序)声明(C源程序)分析

3.算法分析与流程图

4.总结

1.基本原理

1.每个240X器件都包含两个事件管理模块EVA和EVB,每个时间管理器模块包括通用定时器、比较单元、捕获单元,以及正交编码脉冲电路。

2.直流电机控制:

直流电动机是最早出现的电动机,也是最早能实现调速的电动机。

近年来,直流电动机的结构和控制方法都发生了很大的变化。

随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控型的开关功率元件进行脉宽调制(PWM)控制方式已成为绝对主流。

PWM调压调速原理:

其中,U为电枢端电压;I为电枢电流;R为电枢电路总电阻;为每级磁

通量;K为电动机结构参数。

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

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

其中励磁控制法在低速时受磁极饱和的限制,在高速时受换向火花和换向器结构强度的限制,并且励磁线圈电感较大,动

态响应较差,所以这种控制方法用得很少。

现在,大多数应用场合都使用电枢控制法。

绝大多数电流电机采用开关驱动方法。

开关驱动方式是使半导体功率器件工作在开关状态,通过脉宽调制PWM来控制电动机电枢电压,实现调速。

具体电路如下图。

up超1

6C1A

Lr:

DDU1D

MOTE

 

2.数据存储空间(汇编源程序)、头文件和变量

声明(C源程序)分析

在此程序中定义了如下变量(C源程序)

/^global.c*7

externuksiifledint$丹1佩训2問冊卩吋冋卿;

externunsignedintWDCB^IDKEV:

externURsijntdint[MRrIFI,PIIRirVS0t;

externunsizedintMCRA.HCRI.MCHC.PflDAIBl^PBDATDIH.rCMnil.KMnitPFDnOIH;

externunsignedint眦TRLMDCTRL?

川WONU邮EL刑邮FL叫邮WQ3附血Qh;

externunsizedintAlirOSEIJSRRESULT^RESULTI.RfSLLTS,RESULTSRESULT?

;

externunsigretiint耶HO®HTGR£RN删期帼乩冊顺R2MMGR1疋RHE恥⑷隔端

externunsizedint帥NCFM肪旧朋胆札倔肚酣脚血吐州肚;

PKternunsignedintCAHIDmjCnHtDSL^DNCTRLOfCANEMOfl.CAffiXBB^ANBXOCjCANBXOO;

PKterflunsignedintGAKIEIH.CRHIDlL.CAIETHLI.CANeXIR^RW^B^ftNBKIC^ANBMD;

externunsignedintCAHID2HICAHID2L,CAHCTRL2ICAH6X2AJCAHei!

2STCAHDX2CICANBX2D;

PKternunsignedint聽帕03儿蚀川蚀問1£即直理用欄%1:

噸监盼血11瞄眄蚀丽鹉片

externunsignedint即NID4H#RHM札.CRHCTRL*』朋BKUbCR蔺胡盼皿冊汕C,C側册呱;

externunsignedint渤ID5H#ANI瓯,MNCTRL几朋哪井問删唧,他删丸,朋册曲;

externunsigredint離ICCR靑tICTU,SUHE細釘SC】UIW0dl:

I(;TL2』mRXST.SCIRXENI.SCJRXBUF.SCHXIUF,SC1FRI;

蹴PMunsignediltSHCDHAJICNTJIPHJICON.T^CNT.IZPRJ^CDH.EUAlMRflJUAlMRBJUAIFHftJUAIFRB;

»ternunHqn凶int即TMNEJMNTJ斜PRJ3PRJ剜HQIONA/济陆MT饲陆柑IPIH,口时删上朋IFRA;

在此程序中定义如下数据空间(汇编程序)

:

ine.asn

c_inrnR_fi_tnti*c_int?

IMR,IFR~

SCSftllBSCSR2,jKJHnCR,KIH12CR

WDIDHTRpUDKE¥,_WDCR

憎M,」離朋.„MCHCa_PmTDIR._PB&ftWlR,_PCDftTDlRi_PEDflTDIRwjPFmi?

IRflDCTRL!

_ftDCTHL2tJlflXCOHU#_CHSELSEQ1t_CHSELSEQ2P_CHSELSEQ3._CHSELSEQ>iAIIVn^SFq^SRP_RES1IIIlp.RFSUL11fr_RFSlJLT?

」FSIULTR^RFSUIT9

CHIVDER,CAMER^CAIWcEllp[:

HHICR,CAWER2?

_CDNH:

CR1,_CAHESRf_CANESRCfiNCLC,UfiHlFH.UAHIHH.JJmMLRMNHaJUAHLAMliL

由于程序设置使用CAN总线传输电机转速数据,故在程序中开辟了CANIDxL和CANIDxH存

储CAN总线数据标识符ID的单元),CANCTRLx存储CAN总线控制寄存器位单元),CANBXnA/B/C/D(存储总线传输数据单元)。

在汇编程序中还将在程序中涉及的变量开辟空间

由于在程序中要用到中断,故在汇编程序中定义了中断向量地址表:

;建寺中断向量表

".vectors

.sect

RSVECT

B

cinto

INTI

B

PHANTOM

IHT2

B

cint2

IHT3

B

PHANTOM

INTH

B

PHANTOM

INTS

B

PHANT0H

INT6

B

PHANTON

;中断子向量入口定义

-text

PHrtHTOH:

KICK_DCGRET

.end

具体变量和块在存储器中的地址为:

******************************************************************************

TMS320C24xxCOFFLinkerVersion7.02

******************************************************************************

OUTPUTFILENAME:

ENTRYPOINTSYMBOL:

"_c_intO"address:

00008904

SECTIONALLOCATIONMAP

 

output

section

page

origin

length

attributes/

inputsections

 

 

.vectors0000080000000000e

 

00008000

0000000e

Define.obj(.vectors)

.text

00008860

00000149

00008860

00000006

Define.obj(.text)

00008866

00000000

global.obj(.text)

00008866

0000009e

Main.obj(.text)

00008904

00000027

rts2xx.lib:

boot.obj(.text)

0000892b

00000050

:

exit.obj(.text)

0000897b

0000002e

:

saverest.obj(.text)

.cinit

0000089a9

00000010

000089a9

00000009

Main.obj(.cinit)

000089b2

00000006

rts2xx.lib:

exit.obj(.cinit)

000089b8

00000001

--HOLE--[fill=0000]

.data

100000860

00000000

UNINITIALIZED

00000860

00000000

Define.obj(.data)

00000860

00000000

rts2xx.lib:

saverest.obj(.data)

00000860

00000000

:

exit.obj(.data)

00000860

00000000

:

boot.obj(.data)

00000860

00000000

Main.obj(.data)

00000860

00000000

global.obj(.data)

.bss

1

00000880

00000025

UNINITIALIZED

00000880

00000022

rts2xx.lib:

exit.obj(.bss)

000008a2

00000000

:

boot.obj(.bss)

000008a2

00000000

global.obj(.bss)

000008a2

00000000

rts2xx.lib:

saverest.obj(.bss)

000008a2

00000000

Define.obj(.bss)

000008a2

00000003

Main.obj(.bss)

.const

1

00000860

00000000

UNINITIALIZED

.switch

0

00008860

00000000

UNINITIALIZED

.stack

1

000008a5

000000a0

UNINITIALIZED

000008a5

00000000

rts2xx.lib:

boot.obj(.stack)

.system

1

00000860

00000000

UNINITIALIZED

3.算法分析与流程图

六、程序流程图

算法分析:

/*Main.c*/

/*PWM电机控制程序,正反转,默认设置的工作频率1kHz*/

#include"global.c"

voidSystemlnit();

voidPWM_lnit();

voidKickDog();

intnumled0=200;

unsignedintt0=0;

unsignedintXPWM=0;

main()

{

SystemInit();//系统初始化

//IOPB0-6设为IO口模式

//所有LED=0

//所有LED=1

MCRA=MCRA&0xC0FF;

PBDATDIR=0xFFC2;

PBDATDIR=PBDATDIR|0x003D;

XPWM=2400;//最大值2500

/*whenxpwm=0~900,逆时针方向旋转,值越小,转速越快

whenxpwm=1600~2500,顺时针方向旋转,值越大,转速越快

whenxpwm=900~1600,电机两端电压太低,基本上不足以起转*/

asm("CLRCINTM");

while

(1);

}

voidSystemInit()

{

asm("SETCINTM");/*关闭总中断*/

asm("CLRCSXM");/*禁止符号位扩展*/

asm("CLRCCNF");

/*B0块映射为on-chipDARAM*/

CLKOUT=40M*/

 

KickDog();

IFR=0xFFFF;

IMR=0x0002;

/*初始化看门狗*/

/*清除中断标志*/

/*打开中断2*/

voidPWM_Init()

MCRA=MCRA|0x00C0;

//PA6-PA7为PWM口

EVAIFRA=0xFFFF;

//清除中断标志

ACTRA=0x0006;

//PWM1,2低有效

DBTCONA=0x0530;

//使能死区定时器1,分频40M/16=2.5M,死区时间

5*0.4us=2us

T1PR=2500;

//定时器1周期值,定时0.4us*2500=1ms

CMPR1=XPWM;

//比较值

COMCONA=0xA600;

//比较控制寄存器

/*定时器1中断服务程序*/

T1CNT=0;

EVAIMRA=0x0080;

//定时器1周期中断使能

T1CON=0x144E;

//增模式,TPS系数40M/16=2.5M,T1使能,

voidc_int2()

{

if(PIVR!

=0x27)

{asm("CLRCINTM");

return;

}

T1CNT=0;

t0++;

numled0--;

if(numled0==0)

{

numled0=2000;

if((PBDATDIR&0x0001)==0x0001)

PBDATDIR=PBDATDIR&0xFFFE;//IOPB0=0;LED

else

PBDATDIR=PBDATDIR|0x0101;//IOPB0=1;LED

}

EVAIFRA=0x80;

asm("CLRCINTM");

}

voidKickDog()/*踢除看门狗*/

{

WDKEY=0x5555;

WDKEY=0xAAAA;

}

4.总结

DSP是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。

在利用

对其

DSP对电机进行PWM控制中,相对于模拟信号控制,DSP具有精确、灵活、抗干扰能力强、可靠性高、体积小、易于大规模集成等优点。

并且由于DSP具有强大的数据处理能力,PWM控制更能得心应手。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1