步进电机1071306112.docx
《步进电机1071306112.docx》由会员分享,可在线阅读,更多相关《步进电机1071306112.docx(15页珍藏版)》请在冰豆网上搜索。
步进电机1071306112
淮阴工学院
《DSP技术与应用》课程设计报告
题目:
步进电机
系(院):
计算机工程系
专业:
计算机科学与技术(嵌入式软件方向)
班级:
计算机1073班
学号:
1071306112
姓名:
瞿四清
指导教师:
马岱常波
学年学期:
2009~2010学年第2学期
2010年6月18日
设计任务书
课题
名称
步进电机实验
设计
目的
1.掌握DSP的控制方法;
2.了解步进电机工作原理;
3.学习资料的收集与整理,学会撰写课程设计报告。
实验
环境
1.微型电子计算机(PC);
2.安装Windows2000以上操作系统,CSS等开发工具。
任务
要求
1.按照课题设计任务和要求,对设计系统进行验证调试或仿真;观察程序运行和仿真结果,判断其正确性。
2.利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;
3.在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;
4.结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确。
工作进度计划
序号
起止日期
工作内容
1
2010.6.7~2010.6.8
在预设计的基础上,进一步查阅资料,完善设计方案.
2
2010.6.8~2010.6.9
设计总体方案,编写代码,上机调试,实验仿真验证。
3
2010.6.9~2010.6.11
测试程序,完善功能,撰写设计报告。
4
2010.6.11~2010.6.12
参加答辩,根据教师反馈意见,修改、完善设计报告。
指导教师(签字):
年月日
摘要:
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
本文主要介绍运用CCS5000Simulator实现步进电机的控制。
关键字:
步进电机,控制
目录
一实验目的--------------------------------------------------------1
1.1熟悉步进电机的工作原理--------------------------------------------------------------------------1
1.2了解步进电机的控制方法-----------------------------------------------------------------1
二实验原理-------------------------------------------------------------------------------------1
2.1步进电机----------------------------------------------------------------------------------------------1
2.2步进电机种类及区别--------------------------------------------------------------------------------1
2.3控制系统的硬件组成------------------------------------------------------2
2.4步进电机的工作原理------------------------------------------------------2
2.4.1步进电机的方向控制---------------------------------------------------2
2.1.2步进电机的转向-------------------------------------------------------2
2.4.3步进电机的速度-------------------------------------------------------3
三步进电机的驱动和控制电路-----------------------------------------------3
3.1步进电机的功率驱动电路--------------------------------------------------3
3.2步进电机控制电路--------------------------------------------------------4
四步进电机的DSP控制方法-------------------------------------------------5
五程序设计及其流程图------------------------------------------------------6
六.实验现象------------------------------------------------------------------6
七总结----------------------------------------------------------------------7
八参考文献-----------------------------------------------------------------8
九附录----------------------------------------------------------------------9
一实验目的:
1.1熟悉步进电机的工作原理;
1.2了解步进电机的控制方法。
二实验原理:
2.1步进电机:
步进电机是一种将电脉冲转化为角位移的执行机构。
通俗一点讲:
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
可用来控制机器人手臂以及车轮等部件,工作可靠,控制容易。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达调速的目的。
因此在需要准确定位或调速控制时均可考虑使用步进电机。
电机铁芯扭槽叠扣冲压控制系统是为实现模具加工智能化控制要求,为企业设计的实用性产品,其要求是对高速冲床附加一智能模具控制器,该控制器在不影响冲床原有的运行及控制的基础上,采集相关的输入信号,并实现对所冲模具的有效控制。
本文设计的控制器要求扭槽模具每冲一片后移动一个步距到达另一个特定位置,再冲另一片,连续冲出的铁芯片,经叠压后,形成所要求的扭槽形状。
控制系统强调铁芯加工过程中的角度位移控制,希望具有足够高精度的步距角,并且运行稳定性好。
控制系统选用了两相混合型步进电机作为位置控制机构,通过FPGA的控制,将输入的脉冲信号线性地转换为位移量,从而控制电机铁芯的扭槽。
传统步进电机控制电路的实现多用单片机或专用接口芯片,此类方法存在单片机易受电机干扰,专用接口芯片使用灵活性差等缺点。
本文提出的利用FPGA实现步进电机控制的方案,具有修改方便、使用灵活、可靠性高、可移植性强等优点。
2.2步进电机种类及区别:
步进电机分三种:
永磁式(PM),反应式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
在欧美等发达国家80年代已被淘汰。
混合式步进是指混合了永磁式和反应式的优点。
它又分为两相四相和五相:
两相步进09.12.20一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛。
2.3控制系统的硬件组成
步进电机控制的最大特点是开环控制,不需要反馈信号。
因为步进电机的运动不产生旋转量的误差累积。
由FPGA实现的步进电机控制系统结构如图1所示。
控制系统中的核心芯片是FPGA,如虚线所示。
它由两大功能模块组成:
a.速度控制模块,核心是锁相环PLL宏模块电路,它在不同速度控制信号作用下,可将经时钟分频器分频后的系统时钟改变为不同的PWM信号,将此信号作为速度控制模块的变频时钟,可达到改变步进电机速度的目的;b.方向控制模块,核心是脉冲分配电路,在每一个变频时钟周期内,脉冲分配器可在不同的方向控制信号下产生不同方向的步进时序脉冲,从而控制步进电机顺2步进电机及其驱动器的选用步进电机可以用数字信号直接控制,随着数字控制系统的发展,步进电机的应用也越来越广泛。
步进电机需配置一个专用的电源供电,电源的作用是让电动机的控制绕组按照特定的顺序通电,即受输入的电脉冲控制而动作,这个专用电源称为驱动电源(或驱动电路)。
步进电机及其驱动电源是一个互相联系的整体,步进电机的运行性能是由电动机和驱动电源两者配合所形成的综合效果。
2.4步进电机的工作原理
2.4.1换相顺序
步进电机的通电换相顺序是严格按照步进电机的工作方式进行的。
通常把通电换相这一过程称为“脉冲分配”。
例如,四相步进电机的单四拍工作方式,其各相通电的顺序为A-B-C-D,通电控制脉冲必须严格地按照这一顺序分别控制A、B、C、D相的通电和断电。
2.4.2步进电机的转向
根据步进电机的工作原理,如果按给定的工作方式正序通电换相,则步进电机正转;如果按方序通电换相,则步进电机反转。
例如四相步进电机工作在单四拍方式,通电换相的正序是A-B-C-D,电机就正转;如果按反序A-D-C-B,电机就反转。
如果四相步进电机工作在双四拍方式,通电换相的正序是AB-BC-CD-DA,电机就正转;如果按反序DA-CD-BC-BA,电机就反转。
2.4.3步进电机的速度
如果给步进电机发一个控制脉冲,它就转一个步距角,再发一个脉冲,它会再转一个步距角。
两个脉冲的间隔时间越短,步进电机就转得越快。
因此,脉冲的频率ƒ决定了步进电机的转速,在可控制的速度范围内,步进电机的转速和脉冲的频率成正比。
步进电机的每分转速可由下式计算:
其中
是脉冲频率,
是转子齿数,
是拍数。
当步进电机的工作方式确定之后,调整脉冲的频率,就可以对步进电机进行调整。
三步进电机的驱动和控制电路:
3.1步进电机的功率驱动电路
步进电机是一种数字元件,易于与数字电路接口,但一般数字电路的信号能量远远不足以驱动步进电机。
因此,必须有一个与之匹配的驱动电路来驱动步进电机。
CI-53002步进电机模块包含四相步进电机与功率驱动电路。
功率驱动电路(FT5754)内含四组达林顿晶体管当作电子开关,分别来控制步进电机四组线圈A、B、/A、/B的通电与否,这样就构成了步进电机的功率驱动电路。
图2步进电机的功率驱动电路
3.2步进电机控制电路:
实现步进电机通电换相控制也就是脉冲分配的方法有两种:
软件法和硬件法,这里只介绍设计中采用的软件法。
软件法是完全用软件的方式,按照给定的通电换相顺序,通过DSP的PWM输出口向驱动电路发出控制脉冲。
实验电路图2所示就是用软件法控制四相步进电机的硬件接口图。
分别用DSP的PWM1~PWM4,向四相步进电机各相传送控制信号。
图3步进电机的控制电路
四步进电机的DSP控制方法:
TDS2407EA是一块以TMS320LF2407ADSP为核心的DSP评估板,通过扩展口的PWM波,可以很方便的对步进电机进行控制。
步进电机的驱动电路是根据控制信号工作的。
在步进电机的DSP控制中,控制信号是由DSP产生的。
以最简单的四相单四拍为例,四相单四拍工作方式通电换相的正序为A-B-C-D,共有4个通电状态。
利用TMS320LF2407ADSP的EVA事件管理器,设计定时器T1的周期值为步进脉冲的周期,即T1PR=1/ƒ。
当周期中断时,在中断处理子程序中,通过修改比较方式控制寄存器ACTRA中的相应位为“强制高”或“强制低”的方法,来控制某相通断电,实现换相。
修改ACTRA的具体方法是:
“强制高”代表通电;“强制低”代表断电,则可用4个控制字来对应这4个通电状态。
这4个控制字见表1。
表1四相四拍工作方式的控制字
通电状态
ACTRA寄存器的值(各位相)
控制字
7,6(D)
5,4(C)
3,2(B)
1,0(A)
A
00
00
00
11
0003H
B
00
00
11
00
000CH
C
00
11
00
00
0030H
D
11
00
00
00
00C0H
在T1周期中断处理子程序中,通过查表的方法根据当前状态和转向查得控制字,将这个控制字送入比较方式控制寄存器,就可以实现换相。
每送一个控制字,就完成一“拍”,步进电机就转过一个步距角。
依次完成4次换相,步进电机就会正向转动一个齿距角。
如果按照控制字的反序查表,就会实现步进电机的反转。
五程序设计及其流程图:
六实验现象:
图6运转模式功能仿真
图7正反转控制功能仿真
总结
在这次步进电机实验中遇到到很大的困难,主要原因是平时的知识掌握的不够,通过查阅很多资料和类似的论文,才做成的。
以前都没有做过步进电机实验设计,一开始都不知道如何下手,在马岱老师对几个实例的讲解,让我有了一定的了解。
在设计过程中,马岱所传授给我们的设计理念和思想起了很重要的作用。
由于时间的仓促,经验的少,知识的局限,设计有一定的不足。
步进电机实验对于我计算机专业的学生电子电路基础比较差,在设计中表现出来了,但是也表明了我要加倍的努力去学习电子电路方面的基础知识。
光靠这次的设计对能力提高不了多少,而是要记住这次设计经验,来更好地做好下次的设计,也就是说积累经验,这对将来走上社会有很重要的作用。
参考文献
[1]刘和平.DSP原理及电机控制应用.北京:
北京航空航天大学出版社,2006.10
[2]唐介.电机与拖动.高等教育出版社,2003.7
[3]王海生.微型计算机控制技术.北京:
清华大学出版社,2007.4
附件程序源代码
1.主程序main.c
#include"LF2407REGS.h"
#include"IO.h"
#defineperiod0x8000
unsignedchartable[4]={0x0003,0x000c,0x0030,0x00c0};
volatileunsignedintkey=0;
volatileunsignedintcount=0;
volatileunsignedinti=0;
volatileunsignedintspeed=1;
volatileunsignedintnLed=0;
voidinitsys()//系统初始化
{
asm("setcINTM");//禁止所有中断
asm("setcSXM");//抑制符号位扩展
asm("clrcOVM");//累加器结果正常溢出
asm("clrcCNF");//B0被配置为数据存储空间
*SCSR1=0x83fe;//2倍频,30MHz
*EVAIMRA=*EVAIMRA|0x0080;
*EVAIFRA=0xffff;
*WDCR=0x0e8;//不能使用看门狗
*IMR=0x0002;//打开中断2
*IFR=0xFFFF;//清除所有的中断标志,写1清0
*WSGR=0x0000;//禁止所有等待状态
}
voidPWMinit()
{
*MCRA=0;
*MCRA=*MCRA|0x03c0;//IOPA6(PWM1),IOPA7(PWM2),IOPB0(PWM3),
//IOPB1(PWM4)配置为基本功能方式
*ACTRA=0xAAAA;
*PBDATDIR=0xfff8;
*DBTCONA=0x0000;//不使能死区控制
*CMPR1=period/2;
*CMPR2=period/2;
*T1PER=period;//设置定时器1的周期寄存器
*COMCONA=0x8200;//使能比较操作
*GPTCONA=0x0001;
*T1CON=0x0E00;//定时器1为连续增计数模式
*T1CNT=0;//定时器1计数清零
}
voidmain(void)
{
initsys();//系统初始化
OUTMAC(_LED,nLed);//I/O输出端口初始化
PWMinit();//PWM初始化
asm("clrcINTM");//打开中断
*T1CON=*T1CON|0x40;//启动定时器1
while
(1);
}
voidinterruptnothing(void)
{
return;
}
voidinterruptT1PER_ISR(void)
{
if(*PIVR==0x0027)
{
INMAC(_DIP,key);//读入开关数值
speed=(key&7)+1;
if(key>7)//正转
{
i++;
if(i>(4*speed-1))i=0;
}
ese//反转
{
i--;
if(i>250)i=4*speed-1;
}
count=i/speed;//确定转速
*ACTRA=table[count];//输出脉冲
nLed=15/speed;//15为定时器T1在1s中的中断次数
nLed&=0x000f;//LED显示脉冲频率
OUTMAC(_LED,count);
}
*EVAIFRA=*EVAIFRA|0x0080;//清中断标志并返回
}
2.头文件IO.h
#define_DIP0008h
#define_LED000ch
#defineSTR(x)#x
#defineOUTMAC(address,data)
asm("LDPK_"STR(data));
asm("OUT_"STR(data)","STR(address))
#defineINMAC(address,data)
asm("LDPK_"STR(data));
asm("IN_"STR(data)","STR(address))
3.中断向量表文件vectors.asm
.title"vectors.asm"
.ref_c_int0
.ref_nothing
.ref_T1PER_ISR
.sect".vectors"
reset:
B_c_int0;00
int1:
B_nothing;02
int2:
B_T1PER_ISR;04
int3:
B_nothing;06
int4:
B_nothing;08
int5:
B_nothing;0A
int6:
B_nothing;0C
.end
4.命令文件mycmd.cmd
-c/*ROM自动初始化模型*/
-mmain.map/*创建映射文件*/
/*即主程序的文件名.map*/
-omain.out/*输出文件名*/
-lrts2xx.lib/*运行支持库*/
-stack40
/*特殊内存Memory的配置*/
MEMORY
{
/*规定程序存储器*/
PAGE0:
VECTS:
origin=0000h,length=0040h/*程序复位*/
PVECS:
origin=0040h,length=0080h/*外围模块中断向量*/
PROG:
origin=2000h,length=7F40h/*在片Flash*/
/*规定数据存储器*/
PAGE1:
BAREA:
origin=0200h,length=0200h/*B0和B1块*/
B2:
origin=0060h,length=0020h/*B2块*/
SARAM:
origin=0800h,length=0800h/*SARAM块*/
EXT:
origin=8000h,length=8000h/*外部存储器*/
}
SECTIONS
{
.vectors:
{}>VECTSPAGE0/*中断向量表*/
.pvecs:
{}>PVECSPAGE0/*外围中断向量表*/
.text:
{}>PROGPAGE0/*可执行代码和浮点变量*/
.cinit:
{}>PROGPAGE0/*已初始化的全局变量和静态变量*/
.switch:
{}>PROGPAGE0/*大型的switch语句的跳转表*/
.const:
{}>BAREAPAGE1/*已初始化的字符串常量、*/
/*全局变量和静态变量*/
.bss:
{}>SARAMPAGE1/*未初始化的全局变量和静态变量*/
.stack:
{}>SARAMPAGE1/*定义软件堆栈*/
.sysmem:
{}>SARAMPAGE1/**/
}
指导教师评语
学号
1071306112
姓名
瞿四清
班级
计算机1073
选题
名称
步进电机
序号
评价内容
权重(%)
得分
1
考勤记录、学习态度、工作作风与表现。
5
2
自学情况:
上网检索机时数、文献阅读情况(笔记)。
10
3
论文选题是否先进,是否具有前沿性或前瞻性。
5
4
成果验收:
是否完成设计任务;能否运行、可操作性如何等。
20
5
报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。
30
6
文献引用是否合理、充分、真实。
5
7
答辩情况:
自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。
25
合计
指导教师(签章):
年月日