DSP直流电机Word格式.docx
- 文档编号:18804245
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:20
- 大小:2.66MB
DSP直流电机Word格式.docx
《DSP直流电机Word格式.docx》由会员分享,可在线阅读,更多相关《DSP直流电机Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
器件上集成了多种先进的外设,具有灵活、可靠的控制和通信模块,完全可以采用单芯片实现电机控制系统的控制和通信功能,使得电机控制系统简单化、模块化,为电机及其他运动控制领域应用的实现提供了良好的平台。
本文设计和实现了基于TI公司TMS320F2812DSP芯片的无刷直流电机控制系统,整个系统结构紧凑,功能完善。
1.课题要求
本文主要研究基于DSP的直流电机控制系统,通过控制算法和调速方法的分析,利用电机调速、DSP芯片控制、上位机通信等的基本原理及相关知识,实现对电机的速度控制。
可以实现以下功能:
1.能够完成电机启动、停止;
2.能够完成正、反转;
3.在完成以上功能的基础上实现电机的加速与减速。
2.硬件设计
2.1系统硬件设计
系统的硬件框图如图1所示,可以看出基本上包括一个以TMS320F2812DSP为核心的DSP控制板,一块配套的功率驱动板和一台无刷直流电机。
本系统设计控制的无刷直流电机采用霍尔元件作为位置反馈机制,从反馈的脉冲信号中获得位置信息和转速情况。
控制核心DSP根据采集到的实际转速,修正控制转速,实现系统对电机转速的闭环控制。
此外,系统从电机的驱动器件IGBT处获得电流信息。
通过综合这三个信息,使得整个电机调速系统安全、稳定、可靠地工作。
图1系统硬件框图
2.2部分硬件设计
整个系统由控制、驱动、显示及电源四部分组成,结构框图如下图所示:
2.2.1控制部分硬件设计
控制板部分以TMS320F2812为核心,加上一部分外围电路及接口构成。
实现的主要功能是控制指令的接收和执行,速度信号的接收和计算处理,电流采样信号接收和转换,速度闭环和电流闭环控制算法的执行等。
对电机的控制主要使用F2812片上的两个电机控制专用外设——EVA和EVB。
利用通用定时器T1配合PWM发生器来产生驱动功率器件所需的六路PWM信号,通过GPIO接口将三路电机霍尔传感器信号输入捕获单元,从而获取三个转子的位置,进而控制电机的换相和进行电机转速的计算。
两个12位AD模块对相电流信号Iphase和输入的速度调节电压信号Vref进行转换和存储,分别作为电流环的反馈信号和速度环的参考信号。
通过片上的通用输入输出接口(GPIO),实现与功率驱动部分的连接,输出启动停止信号,正反转信号,紧急制动信号等,同时接收输入的保护信号,故障信号等。
通过片上的SCI模块实现与计算机的通信,接收上位机的控制指令。
控制部分硬件结构如图2所示。
图2控制板电路框图
2.2.2功率驱动部分硬件设计
功率驱动部分的硬件电路,主要由前置驱动芯片和六个功率MOSEFET管组成,实现对控制部分传送过来的换相信息的处理和PWM信号的隔离放大,控制功率MOSFET管的导通和关断,以此来控制电机的工作状态和速度。
除此之外,还有电源电路,电流检测电路,过流保护和紧急制动电路等辅助电路,以及与电机和控制板的接口电路。
前置驱动芯片采用的是IR公司的MOSFET驱动芯片IR2131,具有集成度高、可靠性好、速度快、过流欠压保护、调试方便等特点。
IR2131内部设计有过流、过压及欠压保护。
功率驱动电路采用24V供电,驱动电路与电机的连接采用三相全桥方式,电机工作在三相六状态模式下。
以任一时刻电机只有两相导通的方式来控制换流元件。
PWM调制的方式是软斩波方式,即导通时下桥臂功率管始终保持开状态,上桥臂功率管的开关由PWM信号决定。
功率开关管采用HITACHI公司的集成功率开关器件6AM15,其内部集成3个N型MOSFET管和P型MOSFET管,构成三相全桥功率开关电路。
与采用六个分立MOSFET管相比,有利于提高集成度,减少电路板面积,增加可靠性。
每个MOSFET管自带超快恢复二极管,在MOSFET管关闭期间起反向续流作用。
功率驱动部分电路框图如图3所示。
图3功率主回路电路框图
3.系统控制策略及软件设计
系统软件设计思想是通过不断采集电机转速,与给出的速度指令相比较后,利用PID算法,同时综合滤波算法,不断修正速度误差,直到采集到的电机转速与系统给定的转速相同,程序就认为系统已经入锁了。
系统控制时始终监视电机电流和位置反馈,一旦出现异常,就启动相应的报警机制,并让电机停止转动。
3.1系统控制策略
由直流电机的数学模型可知,其转速基本上跟电压成正比,转矩基本上和相电流成正比。
为了达到控制精度和动态性能,本系统选用了转速、电流双闭坏调速系统。
电流环采用PI调节器,速度环采用遇限削弱积分的积分分离PI控制算法。
它具有良好的起动和抗干扰性能,可以满足本系统的需要。
在此控制方案中,霍尔传感器的信号加到TMS320F2812的捕获单元端。
将捕获端设置为I/O口,然后采集捕获单元的电位情况。
根据捕获单元的电位情况可以判断电机处于那个区间。
根据两次捕获的时间可以计算出电机运行速度。
此速度作为速度参考值的反馈量,然后经过速度PI调节后可以得到参考电流Iref。
另外通过电流检测电路可以得到相电流Iphase信号,此信号通过A/D转换后作为参考电流Iref的反馈量,经过电流PI调节后,得到的输出量调节输出的PWM信号的占空比,用此PWM信号接到驱动端.这样可以根据电机运行的情况而调节MOSFET管的导通时间达到控制电机转速的目的。
3.2软件设计
本实验采用Ccs3.3软件,及串口调试软件,通过串口调试工具向f2818发送串口数据,来控制f2812中的程序,来实现电机的速度调控。
程序流程图如下:
3.2.1数字PID模块:
改模块实现数字PID算法,对转速误差和电流误差进行调节计算,控制PWM信号的占空比。
通过占空比的改变来调节电动机的转速。
程序如下:
temp=(Sci_VarRx[j-1]&
0x0f);
temp1=EvaRegs.T1PR/16;
pwm=temp1*(16-temp);
EvaRegs.T1CMPR=pwm;
startmotor();
3.2.2PWM波的产生
TMS320F2812的事件管理器模块有两个,即EVA和EVB。
每个管理器包括通用定时器(GP)、比较器、PWM单元、捕获单元以及正交编码脉冲电路(QEP)。
EVA和EVB在功能上完全相同,只是在模块的外部接口和信号有所不同。
PWM波形发生模块:
主要是通过设置DSP内部事件管理器模块的PWM波形发生器,将通用定时器T1设置成连续升序计数模式,对应20kHz的PWM频率,计数周期设成50μs。
然后根据电流环输出的占空比对三个全比较单元的比较寄存器值进行刷新。
同时,通过查表法,获得当前换相指针所对应的ACTR(全比较动作控制寄存器)值,并送到ACTR寄存器,完成对PWM1~PWM6引脚状态的定义,
设计程序见附录。
4.实验步骤及结果分析
4.1实验步骤
1.打开ccs,并将f2812与pc机连接,通过Debug—connect将ccs与f2812连接,在左下角显示已连接状态。
2.程序下载:
通过Project-open打开程序,并编译,然后通过file-loadprogram下载.out文件即可运行。
3.检测串口:
将sci程序打开,选择Sci_VarRx接收数组放到watch-window,打开串口调试工具,并自动发送01数据,观察Sci_VarRx值的变化,显示如下,则说明程序与串口连接正常:
4.2实验结果
1.正转及变速
通过串口发送15、1A、1F,观察电机的转速及方向,并通过示波器观察电机下端的波形图。
波形图如下:
15
1A
1F
1.反转及变速
通过串口发送25、2A、2F,观察电机的转速及方向,并通过示波器观察电机上端的波形图,与正转波形相同。
25
2A
2F
结果分析:
由正反转波形图可以得出,当占空比越小时,电机的转速越快,因此可以通过改变占空比的大小来调节电机转速。
虽然系统调试过程中出现了一些误差,并存在一些干扰现象,但这些都是在所难免的。
经过最后的总体调试之后,本系统基本完成了课题研究的内容,达到了预期的目标,实现了电机正反转,加速,减速,停止等功能。
5.结论
对无刷直流电机调速系统的研究,涉及到电机、电力电子、自动化、计算机控制和数字信号处理等多门学科,由于其应用的广泛性因此对它的研究有一定的理论意义和实用价值。
本电机调速系统经实际测试,控制精度高、运行稳定可靠,带载时的控制精度也在75转偏差内,与理论值接近,实际调试时进行过载及超速等实验,系统反应灵敏,控制过程安全可靠。
由于整个电机控制所需的各种功能都是由DSP来实现的,因此,大幅度地减小了目标系统的体积,减少了外部元器件的个数,使得整个系统结构更加简单,功能更强,可靠性更高。
本系统使用了功能强大的DSP(TMS320F2812)芯片,系统扩展空间大,可根据实际应用需要进行扩展。
附录:
1.主程序设计
#include"
DSP28_Device.h"
#include"
comm.h"
mcbsp.h"
gui_string.h"
motor.h"
#defineDATATYPE0/*0代表edit菜单;
1代表选项菜单*/
unsignedinti,j;
unsignedintsend_flag;
/***************************************************/
unsignedintSend_Flag;
voidInitEvA(void);
voiddelay(unsignedintm);
Uint16Speed,OldSpeed=0;
Uint16count=0,CountAverage;
unsignedintdir=1;
//电机转动方向
unsignedintstart=0;
//电机启动停止标志
unsignedintsetflag=0;
//表示是否进行速度设定
unsignedintsdxsjs=0;
//速度到pwm的初始值
unsignedintpwm;
//pwm的占空比
unsignedintSci_VarRx[100];
/*******************************************************/
unsignedintEdit_result,temp,temp1;
unsignedinti,k,j=0;
//定义变量及数组
/************************************************/
voidmain(void)
{/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER=0x0000;
IFR=0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE矢量表*/
InitPieVectTable();
/*初始化PWM*/
InitEvA();
/*GPIO*/
InitSci();
for(k=0;
k<
100;
k++)
{
Sci_VarRx[k]=0;
}
EINT;
//EnableGlobalinterruptINTM
ERTM;
//EnableGlobalrealtimeinterruptDBGM
stopmotor();
//调用电机停止子程序
//以下为电机控制设计程序部分:
while
(1)
{
if(SciaRx_Ready()==1)
{
Sci_VarRx[j]=SciaRegs.SCIRXBUF.all;
Send_Flag=1;
j++;
if(((Sci_VarRx[j-1])&
0x10)==0x10)//接收到xxx1xxxx
{
EvaRegs.T1CMPR=0x1d4c;
//比较
EvaRegs.T2CMPR=0xffff;
//T1低于T2电压
//电机正转
temp=(Sci_VarRx[j-1]&
//改变占空比
//调用转动子程序
}
elseif(((Sci_VarRx[j-1])&
0x20)==0x20)//接收到xx1xxxxx
EvaRegs.T1CMPR=0xffff;
EvaRegs.T2CMPR=0x1d4c;
//T1低于T2电压
//电机反转
temp1=EvaRegs.T2PR/16;
EvaRegs.T2CMPR=pwm;
}
else
stopmotor();
}
}
/**************************************/
//延时程序
voiddelay(unsignedintm)
{
unsignedinti,j;
for(i=0;
i<
m;
i++)
for(j=0;
j<
1500;
j++)
{}
2.转动、停止子程序
Voidstartmotor(void)
EALLOW;
EvaRegs.T1CON.all=0x1042;
EvaRegs.T2CON.all=0x1042;
EDIS;
voidstopmotor(void)
EALLOW;
EvaRegs.T1CON.all=0x1040;
EvaRegs.T2CON.all=0x1040;
EDIS;
3.产生PWM波子程序:
voidxnitgpio()
EALLOW;
GpioMuxRegs.GPEMUX.bit.XINT2_ADCSOC_GPIOE1=1;
GpioMuxRegs.GPEQUAL.BIT.QUALPRD=0x0ff;
XIntruptRegs.XINT2CR.bit.ENABLE=1;
XIntruptRegs.XINT2CR.bit.POLARITY=0;
voidInitEvA(void)
//设置GPIO
GpioMuxRegs.GPAMUX.all=0x00ff;
//初始化定时器控制寄存器(EVA)
EvaRegs.GPTCONA.all=0;
//设置定时器1
//设置定时器1的周期和比较;
EvaRegs.T1PR=0xffff;
//10khz;
//周期
EvaRegs.T1CMPR=0x1d4c;
//中断使能
EvaRegs.EVAIMRA.bit.T1PINT=1;
EvaRegs.EVAIFRA.bit.T1PINT=1;
//清除计数寄存器
EvaRegs.T1CNT=0x0000;
//设置定时器控制寄存器
//连续递增/递减计数,定时器使能,比较使能
//设置定时器2
//设置定时器2的周期和比较;
EvaRegs.T2PR=0xffff;
//0x0fff;
EvaRegs.T2CMPR=0x000;
EvaRegs.T2CNT=0x0000;
EvaRegs.T2CON.all=0x1040;
EvaRegs.EVAIMRB.bit.T2PINT=1;
//定时器2周期中断允许
EvaRegs.EVAIFRB.bit.T2PINT=1;
//清除标志
//设置T1PWM和T2PWM
//比较逻辑驱动T1/T2PWM
EvaRegs.GPTCONA.bit.TCOMPOE=1;
//定时器1比较其极性设置为低电平有效
EvaRegs.GPTCONA.bit.T1PIN=1;
//定时器2比较其极性设置为低电平有效
EvaRegs.GPTCONA.bit.T2PIN=1;
}
参考文献
【1】陈滨,吴忠.无刷直流机DSP控制系统与PC机串行通信的Matlab实现.微计算机信息,2005,21(07):
95-117.
【2】张琛.直流无刷电动机原理及应用北京:
机械工业出版社,1996
【3】张卫宁.TMS320C28x系统DSP的CPU与外设(下)
【M】.北京:
清华大学出版社,2005
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 直流电机