步进式电机.docx
- 文档编号:26705745
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:24
- 大小:144.22KB
步进式电机.docx
《步进式电机.docx》由会员分享,可在线阅读,更多相关《步进式电机.docx(24页珍藏版)》请在冰豆网上搜索。
步进式电机
《FPGA原理及应用课设》任务书
学生姓名:
专业班级:
指导教师:
陈适工作单位:
信息工程学院
题目:
步进电机定位控制系统设计
初始条件:
1.具备电子电路的基础知识及查阅资料和手册的能力;
2.熟悉ISE仿真软件的操作与运用;
3.掌握步进电机的工作原理。
要求完成的主要任务:
1.设计一个基于FPGA的4相步进电机定位控制系统,包括步进电机方向设定
电路模块、步进电机步进移动与定位控制模块和编码输出模块。
2.撰写符合学校要求的课程设计说明书。
时间安排:
1、2014年6月3日,布置课设具体实施计划与课程设计报告格式的要求说
明。
2、2014年6月4日至2014年6月16日,设计说明书撰写。
3、2014年6月18日,上交课程设计成果及报告,同时进行答辩。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要2
ABSTRACT4
1绪论5
1.1选题背景5
1.2国内外研究现状5
1.3发展趋势6
2系统组成及原理描述8
2.14相步进电机的8个方向和电流以及电压信号的关系9
2.2FPGA模块图和输入、输出信号说明9
3模块设计11
3.1各模块间整体共享的电路内部传递信号11
3.2电机方向设定电路模块11
3.3步进电机步进移动与定位控制模块12
3.4编码输出模块12
4程序设计与仿真14
4.1根据步进电机定位控制器的系统组成框图可以定义输入和输出端口:
14
4.2中间变量初始化定义如下:
14
4.3步进电机定位控制器顶层电路的VHDL程序代码:
14
4.4仿真结果17
5总结20
参考文献21
附录22
摘要
步进电机具有响应速度快、定位精度高、无积累误差、驱动电路及控制方法简单等优点;FPGA芯片具有控制精度高而且稳定可靠高,解决了传统定制电路的不足,克服了原有可编程器件门路数有限的缺点,因而步进电机和FPGA芯片在工业控制领域获得了广泛的应用。
本文详细叙述了基于FPGA芯片来实现驱动步进电机的定位控制系统设计的过程,设计中心思想是以FPGA芯片来实现驱动步进电机的脉冲分配,加上必要的数字模拟辅助电路,形成一个四相八步的步进电机定位控制系统。
在软件平台Quarterп7.2上通过硬件描述VHDL语言来对步进电机的功能进行建模和电路描述,并建立好它的设计顶文件,完成逻辑编译,逻辑综合,和实时仿真测试,得到准确的仿真波形图。
使用Cycloneп系列的可编程逻辑控制器FPGA作为硬件平台,把软件平台上适配好的文件通过编程器向FPGA下载,进行最后的硬件测试,查找错误,改进设计。
关键字:
步进电机、FPGA、定位控制
ABSTRACT
Stepmotorhastheresponsespeed,highpositioningaccuracy,noaccumulatederror,drivecircuitandcontrolmethodissimple,etc;TheFPGAchipwithhighcontrolprecisionandhighstableandreliable,tosolvethedeficiencyofthetraditionalcustomcircuit,overcometheoriginalprogrammabledeviceaccessnumberlimitedshortcomings,thussteppingmotorandtheFPGAchipobtainedwidespreadapplicationinthefieldofindustrialcontrol.
Isdescribedinthispaper,basedontheFPGAchiptorealizethedrivesteppermotorpositioncontrolsystemdesignprocess,thedesignideaisbasedontheFPGAchiptorealizethedrivesteppermotorpulsedistribution,combinedwithnecessaryauxiliarycircuitdigitalsimulation,formingafourphaseeightstepsteppermotorpositioningcontrolsystem.InsoftwareplatformQuarterп7.2throughhardwaredescriptionontheVHDLlanguagetomodelingthefunctionofthestepmotorandthecircuitdescription,andestablishgooditsdesignfile,compilelogic,logicsynthesis,andreal-timesimulationtest,theexactsimulationwaveformfigure.UsingCycloneпseriesFPGAprogrammablelogiccontrollerasahardwareplatform,softwareplatformontheadaptationtogooddownloadfilesthroughaprogrammertoFPGA,thehardwaretest,findtheerrorandimprovethedesign.
Keywords:
stepmotor,theFPGA,positioningcontrol
1绪论
1.1选题背景
本设计的主题是步进电机定位控制系统,设计任务和要求如下:
设计一个基于FPGA的4相步进电机定位控制系统。
步进电机已成为出直流电机和交流电机以外的第三类电动机。
传统电动机作为机电能量转换装置,在人类的生活和生产进入电气化过程中起着关键的作用。
可是在人类社会进入电气化时代的今天,传统电动机已不能满足工业自动化和办公自动化等各种运动控制系统的要求。
发展了一系列新的具有控制功能的电动机系统,其中较有自己特点,且应用十分广泛的就是步进电机。
步进电机的发展与计算机工业密切相关。
自从步进电机在计算机外围设备上取代小型直流电动机以后,使其设备的性能提高,很快的促进了步进电机的发展。
另一方面,微型计算机和数字控制技术的发展,又将作为数控系统执行部件的步进电机推广应用到其他领域,如电加工机床、小功率机械加工机床、测量仪器、光学和医疗仪器以及包装机械等。
步进电机是一种使用非常广泛且易于精确控制的执行元件,随着微电子技术的发展,其控制方法多种多样。
基于FPGA技术对步进电机的转速进行精确控制,满足了现代工业对步进电机的高要求。
1.2国内外研究现状
步进电机最早是在1920年由英国人所开发。
1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。
以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。
在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机细分驱动技术是70年代中期发展起来的一种可以显著改善步进电机综合使用性能的驱动控制技术。
1975年美国学者T.R.Fredriksen首次在美国增量运动控制系统及器件年会上提出了步进电机步距角细分的控制方法。
在其后的二十多年里,步进电机细分驱动技术得到了很大的发展,从本质上讲是对步进电机的励磁绕组中电流的控制,使步进电机内部的合成磁场为均匀的圆形旋转磁场,从而实现步进电机步距角的细分。
要想实现步距角均匀细分控制,必须合理控制电机绕组中的电流,使步进电机内部合成磁场的幅值恒定,每个进给脉冲所引起的合成磁场的角度变化要均匀。
1.3发展趋势
传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。
步进电机作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,适合应用于各种开环控制。
今日,步进电机已广泛的运用在需要高定位精度、高分解能、高响应性等灵活控制性高的机械系统中了。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
EDA技术代表了当今电子设计技术的最新发展方向,它彻底改变了数字系统的设计方法和实现手段。
随着硬件描述语言VHDL的普及以及CPLD~FPGA器件的广泛应用,它必将在硬件设计领域发挥更为重要的作用。
基于FPGA技术对步进电机的转速进行精确控制,具有可移植性能优越、可靠性强等优点,具有广泛的应用前景。
2系统组成及原理描述
步进电机定位控制器的系统组成如图2-1所示:
图2-1系统组成
步进电机是利用数字信号控制的电机装置,步进电机每次接收到一组脉冲数字信号,便旋转一个角度,称为步进角。
不同规格的步进电机的步进角不同,与电机内部的线圈数量有关。
线圈中的供应电流决定线圈所产生的磁场方向。
图2-2四相步进电机线圈磁场方向图
4相步进电机有两组线圈A和B,如图2-2所示,A、B两组垂直摆放线圈的电流方向的排列组合,最多可以产生8种磁场方向,分别是0º、45º、90º、135º、180º、225º、270º、315º。
2.14相步进电机的8个方向和电流以及电压信号的关系
表2-1电流以及电压信号的关系
由表2-1可知,假设电动机转子刻度在0º的位置,想让其转180º,可以使端口信号依次按00010011001001100100变化。
但是否有更快的方法,是否一定要经过4个信号过程呢?
其实有更快更省电的方式让电动机从0º到达180º的位置。
这就是所谓激磁方式的不同。
四相电动机可以分为以下3种激磁方式:
(1)1-相激磁法:
当目标角度是90º的整数倍时,采用这种方法。
例如要从0º转到270º,只要让端口信号的顺序为0000,0001,0010,0100,1000即可。
(2)2-相激磁法:
当目标角度是45º,135º,225º,315º时,可采用这种方法。
例如要从0º转到225º,只要让端口信号的顺序为0000,0011,0110,1100即可。
(3)1-2相混合激磁法:
即完全按照表2-1所列的信号顺序。
3种不同的激磁法所用到的端口信号整理列于表6-9。
表6-9所示的激磁顺序是逆时针方向的,若要让电动机顺时针旋转,只要提供给转子的激磁信号序列相反即可。
对于其他具有更多相位的步进电机,如基于PWM原理细分步进电机,其控制的原理是相同的,只要找出所需的端口信号顺序,就可以自由进行实现无级控制。
表2-2不同的激磁法时四相步进电机端口输入信号表(逆时针方向)
磁场方向
0º
45º
90º
135º
180º
225º
270º
315º
端口信号
B´A´BA
0001
0011
0010
0110
0100
1100
1000
1001
1-相激磁
√
√
√
√
2-相激磁
√
√
√
√
1-2-相激磁
√
√
√
√
√
√
√
√
2.2FPGA模块图和输入、输出信号说明
reset:
系统内部复位信号,’1’时有效;
dir:
步进电机正反转的方向控制开关,0:
逆时针,1:
顺时针;
clk:
由FPGA内部提供的4MHz的时钟信号;
ini:
赋初值的使能开关,‘0’时有效;
manner:
激磁方式的选择开关(两位),00:
自动检测角度输入,
决定激磁方式01:
1-相激磁;10:
2-相激磁;11:
1-2-相激磁;
angle:
步进角的倍数设定输入键;
baba:
将内部计数器的count[3downto0]的数值编码输出。
图2-1系统模块符号图
3模块设计
系统主要由步进电机方向设定电路模块、步进电机步进移动与定位控制模块和编码输出模块构成。
前两个模块完成电机旋转方向设定,激磁方式设定和定位角度的换算等工作,后一个模块用于对换算后的角度量编码输出。
3.1各模块间整体共享的电路内部传递信号
count:
内部电路计数累加器,用来产生输出所需对应的状态;
cntinc:
设定累加器所需的累加/减计数值;
sntini:
设定累加器所需的计数初值;
angledncount:
设定步进角所需处理的次数;
Angledncntdec:
设定步进角所需累减计数值;
3.2电机方向设定电路模块
该模块设定了步进电机的旋转方向以及电机在任一方向上所需的初值与累加/减值。
该模块VHDL程序见附录步进电机定位控制系统STEP_MOTOR.VHD中STEP_MOTOR_DIRECTION:
BLOCK。
模块输出的各个初值以及累加/减值的设定真值表如下表:
表3-1各个初值以及累加/减值的设定真值表1(dir=0)
manner
cntini
cntinc
angledncntdec
00
angle=2n+1时–1
angle=2n时0
2
2
01
0
2
2
10
-1
2
2
11
0
1
1
dir为0时,步进电机工作于逆时针旋转模式,累加值为正数。
manner选择激磁方式00、01、10、11分别对应默认激磁方式、1-相激磁方式、2-相激磁方式和1-2-相激磁方式。
表3-2各个初值以及累加/减值的设定真值表2(dir=1)
manner
cntini
cntinc
angledncntdec
00
angle=2n+1时–1
angle=2n时0
-2
2
01
0
-2
2
10
-1
-2
2
11
0
-1
1
dir为1时,步进电机工作于顺时针旋转模式,累加值为负数。
manner选择激磁方式00、01、10、11分别对应默认激磁方式、1-相激磁方式、2-相激磁方式和1-2-相激磁方式。
3.3步进电机步进移动与定位控制模块
该模块的主要功能是利用赋初值ini将数值传到该模块中并配合输入的clk作为同步控制信号,进行步进电机的步进移动与定位控制。
该模块VHDL程序见附录步进电机定位控制系统STEP_MOTOR.VHD文件STEP_MOVING。
步进电机定位功能通过一个减法器实现:
在每个clk脉冲上升缘,设定步进角倍数angledncount减去不同激磁方式下设定的累减记数值angledncntdec,判断差值小于设定的累减记数时,步进电机旋转到预定角度停止输出驱动端口信号,实现步进电机的定位功能。
驱动端口信号利用累加器实现。
假设resel=1,则将count和angleDnCount设置成0。
假设reset=O,clk为上升沿触发且ini=0时,就将设定的初值(cntini
与angle)赋给count和angleDn—Count两个信号端,也就(count<=O+cntini)
与(an—gleDnCount<=angle)。
假设reset=O,clk为上升沿触发且ini=1时,则将count与cntini相
加,再将结果存为count。
然后判断angleDnCount的值是否大于angleDnCntDec。
如果大于,则用angleDnCount减angleDnCntDec,将结果存为angleDnCount;否则,将angleDnCount设为0(因为此时angleDnCount的值小于angleDnCntDec,表示电机已经到达设定位置,故不需要继续转动了)。
BaBA[3..O]是将count与angleDnCount产生的数值经过编码后输出到四相步进电机的端口的。
3.4编码输出模块
该模块的功能是将count与angledncount产生的数值经过编码,并通过baba[3downto0]输出到步进电机。
四相步进电机端口信号由计数器编码而来,详细的编码方式列于表3-3
表3-3四相步进电机端口信号输出编码
计数器现值
count
0
1
2
3
4
5
6
7
端口B´A´BA编码
baba[3..0]
0001
0011
0010
0110
0100
1100
1000
1001
磁场方向
0º
45º
90º
135º
180º
225º
270º
315º
4程序设计与仿真
4.1根据步进电机定位控制器的系统组成框图可以定义输入和输出端口:
entitystep_motoris
port(reset:
inSTD_LOGIC;--系统复位信号
dir:
inSTD_LOGIC;--方向控制信号
clk:
inSTD_LOGIC;--系统时钟信号
ini:
inSTD_LOGIC;--初始化使能信号
manner:
inSTD_LOGIC_VECTOR(1downto0);--激磁方式的选择开关
angle:
inINTEGERrange255downto0;--步进角的倍数设定输入
baBA:
outSTD_LOGIC_VECTOR(3downto0));--步进电机状态输出
endstep_motor;
4.2中间变量初始化定义如下:
architecturestepmotor_archofstep_motoris
signalcount:
INTEGERrange0to7;--计数器
signalcntInc:
INTEGERrange-2to2;--设定累加器所需的累(加/减)计
数值
signalcc:
integerrange0to3;
signalcntIni:
INTEGERrange-1to0;--设定累加器所需的计数初值
signalangleDnCount:
INTEGERrange255downto0;--计算已经转过的步
进角
signalangleDnCntDec:
INTEGERrange2downto1;--设定步进角所需累减计数值
4.3步进电机定位控制器顶层电路的VHDL程序代码:
在下面的程序中只考虑逆时针操作模式即(dir=0)。
(1)步进电机方向设定电路模块
begin
stepmotordirection:
block--步进电机方向设定电路模块
begin
process(dir,manner,angle)
begin
--ifini=′1′then
cc<=convinteger(manner);
ifdir=′0′then--逆时针方向旋转
caseccis
when1=>--一相激励
count<=0; cntini<=0; cntinc<=2;
angleDnCntDec<=2;--"10";
when2=>--二相激励
count<=7; cntini<=-1; cntinc<=2;
angleDnCntDec<=2;--"10";
when3=>--一-二相激励
count<=0; cntini<=0; cntinc<=1;
angleDnCntDec<=1;--"01";
whenothers=>--manner="00"autodetect
if(anglerem2)=1then--二相激励
count<=7; cntini<=-1; cntinc<=2;
angleDnCntDec<=2;--"10";
else--一相激励
count<=0; cntini<=0; cntinc<=2;
angleDnCntDec<=2;--"10";
endif;--angle
endcase;--manner
endprocess;
(2)步进电机步进移动与定位控制模块
stepmotormoving:
block
--步进电机步进移动与定位控制模块
countingreset:
process(reset,ini,angle,clk)
begin
ifreset=′1′then
count<=0; angleDnCount<=0;
elsifclk′eventandclk=′1′then
ifini=′0′then
count<=0+cntini; angleDnCount<=angle;
else
count<=count+cntinc;
ifangleDnCount>angleDnCntDecthen
angleDnCount<=angleDnCount-angleDnCntDec;
else
angleDnCount<=0;
endif;
endif;
endif;
endprocess;
(3)编码输出模块
tablemapping:
block--编码输出模块
baBA<="0000"whenangleDnCount=0else
"0001"whencount=0else
"0011"whencount=1else
"0010"whencount=2else
"0110"whencount=3else
"0100"whencount=4else
"1100"whencount=5else
"1000"whencount=6else
"1001";whencount>=7;
endstepmotorarch;
4.4仿真结果
程序运行后的状态如下图所示,表明程序运行成功,无错误,可进一步进行系统仿真。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机