邵阳学院EDA课程设计基于FPGA的步进电机控制系统.docx
《邵阳学院EDA课程设计基于FPGA的步进电机控制系统.docx》由会员分享,可在线阅读,更多相关《邵阳学院EDA课程设计基于FPGA的步进电机控制系统.docx(21页珍藏版)》请在冰点文库上搜索。
邵阳学院EDA课程设计基于FPGA的步进电机控制系统
2022年邵阳学院EDA课程设计--基于FPGA的步进电机控制系统
邵阳学院VHDL课程设计报告
一、设计任务:
2二、步进电机概述:
2三、题目分析与整体构思:
4四、硬件电路设计:
7五、硬件验证:
10六、程序设计:
10七、系统仿真:
15八、感应子式步进电机工作原理:
17九、心得体会:
24
参考文献:
25
-1-
邵阳学院VHDL课程设计报告
一、系统设计要求
步进电机作为一种电脉冲—角位移的转换元件,由于具有价格低廉、易于控、制、无积累误差和计算机接口方面等优点,在机械、仪表、工业控制等领域中获得了广泛的应用。
本设计的具体要求是:
1.设计制作一个步进电机控制电路,可以细分驱动和常规驱动。
2.常规驱动状态转速四档可调并可实现正反转。
二、步进电机概述
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。
现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。
永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度或15度。
反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。
混合式步进电机是指混合了永磁式和反应式的优点。
它又分为两相和五相:
两相步进角一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛,也是本次细分驱动方案所选用的步进电机。
(一)步进电机的一些基本参数:
1.电机固有步距角:
电机固有步距角表示控制系统每发一个步进脉冲信号,电机所转动的角度。
电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°,整步工作时为1.8°),这个步距角可以称之为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。
2.步进电机的相数:
步进电机的相数是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。
电机相数不同,它们的步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°
-2-
邵阳学院VHDL课程设计报告
/0.72°在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。
如果使用细分驱动器,则‘相数’将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。
3.保持转矩(HOLDINGTORQUE):
HOLDINGTORQUE是指步进电机通电但没有转动时,定子锁住转子的力矩。
它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。
由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。
比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。
4.DETENTTORQUE:
DETENTTORQUE是指步进电机没有通电的情况下,定子锁住转子的力矩。
DETENTTORQUE在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENTTORQUE。
(二)步进电机的特征1.高精度的定位:
步进电机最大特征即是能够简单的做到高精度的定位控制。
以5相步进电机为例:
其定位基本单位(分辨率)为0.72°(全步级)/0.36°(半步级),是非常小的;停止定位精度误差皆在±3分(±0.05°)以内,且无累计误差,故可达到高精度的定位控制。
(步进电机的定位精度是取决于电机本身的机械加工精度)2.位置及速度控制:
步进电机在输入脉冲信号时,可以依输入的脉冲数做固定角度的回转进而得到灵活的角度控制(位置控制),并可得到与该脉冲信号周波数(频率)成比例的回转速度。
3.具有定位保持力:
步进电机在停止状态下(无脉波信号输入时),仍具有激磁保持力,故即使不依靠机械式的剎车,也能做到停止位置的保持。
械式的剎车,也能做到停止位置的保持。
4.动作灵敏:
步进电机因为加速性能优越,所以可做到瞬时起动、停止、正反转之快速、频繁的定位动作。
5.开回路控制、不必依赖传感器定位:
步进电机的控制系统构成简单,不需要速度感应器(ENCODER、转速发电机)及位置传感器(SENSOR),就能以输入的脉波做速度及位置的控制。
也因其属开回路控制,故最适合于短距离、高频度、高精度之定位控制的场合下使用。
6.中低速时具备高转矩:
步进电机在中低速时具有较大的转矩,故能够较同级伺服电机提供更大的扭力输出。
-3-
邵阳学院VHDL课程设计报告
7.高信赖性:
使用步进电机装置与使用离合器、减速机及极限开关等其它装置相较,步进电机的故障及误动作少,所以在检查及保养时也较简单容易。
8.小型、高功率:
步进电机体积小、扭力大,尽管于狭窄的空间内,仍可顺利做安装,并提供高转矩输出。
注:
在第八部分中有对感应子式步进电机的详细描述,以供对此有兴趣的同学参考!
三、题目分析与整体构思
步进电机是一种将电脉冲信号转换成相应的角位移(或线位移)的机
电元件,具有结构简单坚固耐用工作可靠的优点因此广泛应用于工业控制领域。
由于脉冲的不连续性又使步进电机运行存在许多不足之处,如低频振荡、噪声大、分辨率不高及驱动系统可靠性差等,严重制约了其应用范围。
步进电机的细分控制有效地解决了这一问题,但是传统的步进电机驱动系统大多数采用的是用单片机作为控制芯片,外加分立的数字逻辑电路和模拟电路构成。
受单片机工作频率的限制,细分数不是很高,因此驱动器的控制精度较低,控制性能不是很理想。
随着高性能数字信号处理器DSP的出现,以DSP为控制核心,以软件方式实现电机控制一度成为研究的热点。
近年来随着可编程逻辑器件的飞速发展,使得可编程逻辑器件功能越来越强大从而促使高集成化高精度驱动器的出现。
因此本文提出了一种基于SOPC片上可编程的全数字化步进电机控制系统,本系统是以FPGA为核心控制器件,将驱动逻辑功能模块和控制器成功地集成在FPGA上实现,充分发挥了硬件逻辑电路对数字信号高速的并行处理能力,可以使步进电机绕组电流细分达到4096,且细分数可以自动调节,极大地提高了控制精度和驱动器的集成度,减小了驱动器体积。
1.步进电机细分驱动原理
步进电机的细分控制本质上是对步进电机励磁绕组中的电流进行控制,在普通驱动方式下,驱动电路只是通过对电动机绕组激磁电流的“开”和“关”,使步进电动机转子以其本身的步距角分步旋转。
步进电动机靠定子、转子磁极间的电磁力来进行工作,当它处于“双拍”状态工作时,其定位位置是正好位于两通电磁极的中间,即依靠两通电磁极电磁吸引力的平衡而获得的。
由此可以推论:
如果能够进一步仔细地控制两磁极电磁吸引力的大小,使转子磁极获得更多种由于两相定子磁极的电磁吸引力差异而形成的平衡定位位置。
步进电机细分驱动方式就是应用了这一原理,在细分驱动时,细分控制器通过控制各相
-4-
邵阳学院VHDL课程设计报告
激磁绕组电流的逐步增大及逐步减小,让转子处于多个磁力平衡状态使电机内部的合成磁场为均匀的圆形旋转磁场,实现步距角变小、电动机的旋转得到细化的目的。
合成的磁场矢量的幅值决定了电机旋转力矩的大小,相邻两个合成磁场矢量的夹角大小决定了该步距角的大小。
对于三相步进电机而言,向A、B、C绕组分别通以相位相差2/3π,而幅值相同的正弦波电流(图3-1),则合成的电流矢量在空间做幅值恒定的旋转运动,其对应的合成磁场矢量也作相应的旋转从而形成旋转力矩(图3-2)。
A、B、C三相瞬时电流值如式
(1)、
(2)、(3)所示。
(1)
(2)
(3)
图3-1步进电机正弦细分三相绕组电流波形图
图3-2旋转力矩图
-5-
邵阳学院VHDL课程设计报告
细分驱动方式下,由于步距角小,步进电机的控制精度明显提高,同时这种驱动方式又有效抑制低速运行中产生的噪声和振荡现象。
图3-3步进电机细分驱动电路结构图
2.控制器总体设计方案
步进电机三相绕组的电流是正弦阶梯电流,通过改变给定电流的每一次变化的阶梯数可以实现可变细分功能。
驱动器的任务就是控制绕组的电流,使之按正弦阶梯波的规律变化。
每给一个步进脉冲,A、B、C三相绕组的电流沿正弦阶梯波前进一步,电机转动一个步距角。
步进电机控制系统框图如图3-4所示。
采用FPGA作为主控制芯片,将控制器与驱动器的数字电路部分集成在一片FPGA上实现。
为了控制绕组电流,在设计中引入电流跟踪型闭环反馈,反馈电流与给定的正弦电流(离散的正弦表)经过改进的比例积分PI调节后进行SPWM调制,输出6路PWM波,来控制驱动电路三个桥臂上的6个IGBT开通关断。
如果忽略死区时间控制每个桥臂的上下半桥的两路PWM波互补即上半桥PWM波为高/低电平时,下半桥PWM波为低/高电平。
系统采用14位宽度200MHz计数器产生PWM载波,载波频率12.2KHz,电流数据全部采用14位精度进行离散化。
200MHz时钟由50MHz时钟经PLL倍频产生。
FPGA输出的PWM波经功率模块放大后,控制步进电机运行。
步进电机运行状态(转速和转向)通过LED指示。
步进电机转速是由查表速度决定的,CP是用来决定查表频率,在细分等级一定的情况下CP速度越高电机转速越快。
如果电机在高细分下高速旋转则CP脉冲频率
-6-
邵阳学院VHDL课程设计报告
就会很高,导致PWM脉宽过小,使功率模块IGBT控制桥臂频繁开关,其结果是开关损耗大为增加,功率模块过热。
而高细分在步进电机高速旋转时其优势并不明显,所以在不影响电机运行精度的情况下,系统根据转速对细分精度在4096、2048、1024、512、256、128、64、32之间自动调节,使电机更加平稳可靠的运行。
图3-4控制系统框图
四、硬件电路设计
以四相反应式步进电机为例,最多只能实现二细分,对于相数较多的步进电机可达到的细分数稍大一些,但也很有限。
因此要使可达到的数很大,就必须能控制步进电机各相励磁绕组中的电流,使其按阶梯上升或下降,即在零到最大电流之间能有多个稳定的中间电流状态,相应的磁场矢量幅值也就存在多个中间状态,这样,相邻两相或多相的全成磁场的方向也将有多个稳定的中间状态。
四相步进电机八细分时的各相电流是以1/4的步距上升或下降的,在两相中间又插入了七个稳定的中间状态,原来一步所转过的角度将由八步完成,实现了步距角的八细分。
由此可见,步进电机的细分驱动的关键在于细分步进电机各相励磁绕组中的电流。
本次设计采用四相步进电机八细分方案。
(1)步进细分的系统构成
-7-
邵阳学院VHDL课程设计报告
rom3addre[4..0]inclockintq[15..0]
PWM波形ROM存储器
图4-1
ParameterValueWIDTH4intel10datab[]dataa[]reult[]BUSMU某图4-2图4-4中的二路选择器模块
本次设计的步进电机系统是由PWM计数器、波形ROM地址计数器、PWM
波形ROM存储器、比较器、功放电路等组成。
其中,PWM计数器在脉宽时钟作用下递增计数,产生阶梯形上升的周期性的锯齿波,同时加载到各数字比较器的一端;PWM波形ROM输出的数据A[3..0]、B[3..0]、C[3..0]、D[3..0]分别加载到各数字比较器的另一端。
当PWM计数器的计数值小于波形ROM输出数值时,比较器输出低电平;当PWM计数器的计数值,比较输出高电平。
由此可输出周期性的PWM波形。
根据图步进电机八细分电流波形的要求,将各个时刻细分电流波形所对应的数值存放于波形ROM中,波形ROM的地址由地址计数器产生。
通过对地址计数器进行控制,可以改变步进电机的旋转方向、转动速度、工作/停止状态。
EPGA产生的PWM信号控制各功率管驱动电路的导通和关断,其中PWM信号随ROM数据而变化,改变输出信号的占空比,达到限流及细分控制,最终使电机绕组呈现阶梯形变化,从而实现步距细分的目的。
输出细分电流信号采用EPGA中LPM_ROM查表法,它是通过在不同地址单元内写入不同的PWM数据,用地址选择来实现不同通电方式下的可变步距细分。
示例电路原理图4-4是根据图3-3设计的,其中S选择是否输出细分控制信号,图4-1、4-2、4-3都是图4-4中的模块图。
-8-
邵阳学院VHDL课程设计报告
(2)细分电流信号的实现
从LPM_ROM输出的数据加在比较器的A端,PWM计数器的计数值加在比较器的B端,当计数值小于ROM数据时,比较器输出底电平;当计数值大于ROM数据时,比较器输出高电平;如果改变ROM中的数据,就可以改变一个计数周期中高低电平的比例。
图4-4中的PWM计数器(CNT8)将整个PWM周期四等份。
图4-4步进电机PWM细分控制电路图
注:
图中的引脚号是本次在CYCLONE的EP1C12Q240C8中所用的引脚接口
(3)细分驱动性能的改善
试验测定显示,在线性电流的驱动下,步进电机转子的微步进是不均匀的,呈现出明显的周期性波动。
磁场的边界条件按齿槽情况呈周期性重复是导致微步距角周期性变化的根本原因。
同时,不可避免的摩擦负载(摩擦力矩是不恒定的,或者说在一定范围内也是不确定的)以及其
-9-
邵阳学院VHDL课程设计报告
它负载力矩的波动导致失调角出现不规则的小变动或小跳跃,也使微步距角曲线在周期性波动上出现不光滑的小锯齿形。
步进电机的电流矩角特性并非线性函数,而是近似于正弦函数。
若使电流按线性规律上升或下降,必然会造成每一细分步的步距角不均匀,从而影响步距精度。
为此在设计中,需要提高LPM_ROM数据精度,将数据提高到十六位,使输出的步进细分电流近似为正弦电流,这样不仅提高了步距精度,而且可以改善低频震荡。
五、硬件验证
LPM_ROM表总长为834=32个字节,地址计数器根据控制脉冲与方向输出LPM_ROM地址,用来选择片内预先写好的数据,将它传送给PWM电路,从而实现不同步距细分数及方向控制。
当细分数为8时,其细分电流波形共有8个台阶,其周期为834=32个控制脉冲。
地址计数器是一个可加/减计数器,u_d为方向控制;clk0为速度控制。
六、程序设计
(1)PWM波计数器模块CNT8的VHDL源程序
LIBRARYIEEE;--8进制计数器USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT8IS
PORT(CLK:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCNT8;
ARCHITECTUREbehavOFCNT8IS
SIGNALCQI:
STD_LOGIC_VECTOR(4DOWNTO0);BEGIN
PROCESS(CLK)BEGIN
IFCLK'EVENTANDCLK='1'THENCQI<=CQI+1;
ENDIF;
ENDPROCESS;
CQ<=CQI(4DOWNTO1);
-10-
邵阳学院VHDL课程设计报告
ENDbehav;
(2)元件DEC2的VHDL源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;ENTITYDec2IS
PORT(CLK:
INSTD_LOGIC;
A:
INSTD_LOGIC_VECTOR(1DOWNTO0);D:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;
ARCHITECTUREoneOFDec2IS
SIGNALCQ:
STD_LOGIC_VECTOR(1DOWNTO0);BEGIN
PROCESS(CQ)BEGIN
CASECQIS
WHEN\WHEN\WHEN\WHEN\WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;PROCESS(CLK)BEGIN
IFCLK'EVENTANDCLK='1'THENCQ<=A;ENDIF;ENDPROCESS;END;
(3)地址计数器模块CNT24的VHDL源程序
LIBRARYIEEE;--24进制计数器USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT24IS
PORT(CLK,EN,U_D:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(4DOWNTO0));ENDCNT24;
ARCHITECTUREbehavOFCNT24IS
-11-
邵阳学院VHDL课程设计报告
SIGNALCQI:
STD_LOGIC_VECTOR(4DOWNTO0);BEGIN
PROCESS(CLK,EN,U_D)BEGIN
IFEN='1'THENCQI<=CQI;
ELSIFCLK'EVENTANDCLK='1'THEN
IFU_D='1'THENCQI<=CQI+1;ELSECQI<=CQI-1;ENDIF;ENDIF;ENDPROCESS;
CQ(4DOWNTO0)<=CQI;ENDbehav;
(4)5位地址线ROM3中的数据:
pwm_1.mif
WIDTH=16;DEPTH=32;
ADDRESS_RADI某=HE某;DATA_RADI某+HE某;CONTENTBEGIN
0:
F000;1:
G600;3:
FC00;4:
FF00;5:
CF00;6:
9F00;7:
6F00;
8:
0F00;9:
0F60;a:
0F90;b:
0FC0;c:
0FF0;d:
0CF0;e:
0AF0;f:
06F0;10:
00F0;11:
00F6;12:
00F9;13:
00FC;14:
00FF;15:
00CF;16:
009F;17:
006F;
18:
000F;19:
600F;1a:
900F;1b:
C00F;1c:
F00F;1d:
F00C;1e:
F009;1f:
F006;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYSTEP_MOTORIS
PORT(F,P,D:
INSTD_LOGIC:
='0';
SPEED:
INSTD_LOGIC_VECTOR(1DOWNTO0);COIL:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDSTEP_MOTOR;
ARCHITECTUREBEHAVIOROFSTEP_MOTORIS
SIGNALIND_COIL:
STD_LOGIC_VECTOR(3DOWNTO0):
=\
-12-
邵阳学院VHDL课程设计报告
SIGNALCLK_SCAN:
STD_LOGIC;
SIGNALPHASE,DIRECTEON:
STD_LOGIC;
SIGNALT:
STD_LOGIC_VECTOR(3DOWNTO0);SIGNALCOMP:
INTEGERRANGE0TO2500;SIGNALOSC:
STD_LOGIC;BEGIN
COIL<=T;
PROCESS(F,OSC)
VARIABLEDELAY:
INTEGERRANGE0TO50;BEGIN
IF(F'EVENTANDF='1')THENIFDELAY>=50THEN
DELAY:
=0;
OSC<=NOTOSC;
ELSEDELAY:
=DELAY+1;ENDIF;ENDIF;
IF(OSC'EVENTANDOSC='1')THENCASESPEEDIS
WHEN\COMP<=COMP+1;ELSECOMP<=COMP;ENDIF;
WHEN\COMP<=COMP-1;ELSECOMP<=COMP;ENDIF;
WHENOTHERS=>IFCOMP<2THENCOMP<=2;
ELSECOMP<=COMP;ENDIF;ENDCASE;ENDIF;
ENDPROCESS;PROCESS
VARIABLED_FF:
INTEGERRANGE0TO2500;BEGIN
WAITUNTILF='1';IFD_FF>=COMPTHEN
D_FF:
=0;CLK_SCAN<=NOTCLK_SCAN;
-13-
邵阳学院VHDL课程设计报告
ELSE
D_FF:
=D_FF+1;ENDIF;ENDPROCESS;PROCESS(F)
VARIABLEB:
STD_LOGIC;BEGIN
IF(F'EVENTANDF='1')THENB:
=(PAND(DANDP));IFB='1'THEN
PHASE<=NOTPHASE;
B:
='0';
ELSEP='0'THENPHASE<=PHASE;
B:
='1';
ENDIF;ENDIF;
ENDPROCESS;PROCESS(F)
VARIABLEB:
STD_LOGIC;BEGIN
IF(F'EVENTANDF='1')THENB:
=(DAND(BANDD));IFB='1'THEN
DIRECTION<=NOTDIRECTION;
B:
='0';
ELSIFD='0'THEN
DIRECTION<=DIRECTION;
B:
='1';
ENDIF;ENDIF;ENDPROCESS;MOTOR:
PROCESS;BEGIN
IF(CLK_SCAN'EVENTANDCLK_SCAN='1')THENWAITUNTILCLK_SCAN='0';CASEPHASEISWHEN'1'=>
IFDIRECTION='0'THEN
-14-
邵阳学院VHDL课程设计报告
IF((IND_COIL=\IND_COIL<=\ELSE
IND_COIL<=(IND_COIL(2DOWNTO0)&IND_COIL(3));ENDIF;ELSE
IF((IND_COIL=\IND_COIL<=\ELSE
IND_COIL<=(IND_COIL(0)&IND_COIL(3DOWNTO1));ENDIF;ENDIF;
WHENOTHERS=>IND_COIL<=IND_COIL;ENDCASE;
T<=NOTIND_COIL;ENDPROCESSMOTOR;ENDBEHAVIOR;
七、系统仿真
系统仿真后的结果分别如图6-1、图6-2、图6-3、图6-4所示。
图6-1PWM波读数器CNT8仿真图
-15-
邵阳学院VHDL课程设计报告
图6-2
(1)地址读数器CNT24的仿真图(U_D放置于高电平)
图6-2
(2)地址读数器CNT24的仿真图(U_D放置于低电平)
图6-3DEC2的仿真图
-16-
邵阳学院VHDL课程设计报告
图6-4步进电机PWM的仿真波形图
八、感应子式步进电机工作原理
本次实验绝大部分都是在康芯公司GW48系系列EDA实验开发系统上验
证的,对步进电机的了解不是很多,为了能够开拓视野,加深对步进电机了解,特在此加入了对感应子式步进电机的详细描述,以供参考。
(一)反应式步进电机原理
由于反应式步进电机工作原理比较简单。
下面先叙述三相反应式步进电机原理。
1.结构:
电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。
0、1/3て、