步进电机定位控制系统方案.docx

上传人:b****6 文档编号:5643704 上传时间:2022-12-30 格式:DOCX 页数:16 大小:250.32KB
下载 相关 举报
步进电机定位控制系统方案.docx_第1页
第1页 / 共16页
步进电机定位控制系统方案.docx_第2页
第2页 / 共16页
步进电机定位控制系统方案.docx_第3页
第3页 / 共16页
步进电机定位控制系统方案.docx_第4页
第4页 / 共16页
步进电机定位控制系统方案.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

步进电机定位控制系统方案.docx

《步进电机定位控制系统方案.docx》由会员分享,可在线阅读,更多相关《步进电机定位控制系统方案.docx(16页珍藏版)》请在冰豆网上搜索。

步进电机定位控制系统方案.docx

步进电机定位控制系统方案

学生学号

课程设计

题目

步进电机定位控制系统设计

学院

信息工程学院

专业

班级

姓名

指导老师

2018~2018

学年

6月

20日

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

题目:

步进电机定位控制系统设计

初始条件:

1.具备电子电路的基础知识及查阅资料和手册的能力;

2.熟悉ISE仿真软件的操作与运用;

3.掌握步进电机的工作原理。

要求完成的主要任务:

1.设计一个基于FPGA的4相步进电机定位控制系统,包括步进电机方向设定

电路模块、步进电机步进移动与定位控制模块和编码输出模块。

2.撰写符合学校要求的课程设计说明书。

时间安排:

1、2018年06月11日,布置课设具体实施计划与课程设计报告格式的要求说明。

2、2018年06月12日至2018年06月17日,设计说明书撰写。

3、2018年06月18日,上交课程设计成果及报告,同时进行答辩。

指导教师签名:

年月日

系主任<或责任教师)签名:

年月日

目录

摘要I

AbstractII

1设计目标及简介1

1.1设计目标1

1.2步进电机简介1

2VHDL语言介绍2

3QuartusⅡ介绍3

4系统组成4

4.1四相步进电机工作原理4

4.2系统组成6

5模块设计7

5.1FPGA模块图及信号说明7

5.2系统模块构成7

5.3各模块间整体共享的电路内部传递信号7

5.4电机方向设定电路模块7

5.5步进电机步进移动与定位控制模块8

5.6编码输出模块9

6程序设计与仿真10

7仿真结果14

8实验总结16

参考文献17

摘要

在分析了步进电机工作原理的基础上,提出了步进电机定位控制系统的模块划分和实现方法。

以步进电机四相四拍工作方式为例,用Verilog编程在Altera公司的FPGA开发系统中实现了各功能模块和显示程序。

在系统仿真的基础上,进行了功能模块的控制实验,实验结果和仿真一致,实现了对步进电机模组的预定控制。

关键词:

步进电机定位控制Verilog硬件描述语言FPGA

Abstract

Onthebasisofanalysingsteppingmotor’soperationalprinciple,weputforwardmodulesdivisionandrealizingmethodofpositioningcontrolsystemwhichusingsteppingmotor.GivinganexamplesuchassteppingmotorswhichworkinFour-phase-four-stepmode,weuseVerilogprogrammingrealizedeveryfoundationalmoduleanddisplayroutineinAltera’sFPGAdevelopmentsystem.Onthebasisofsystemsimulation,weconductacontrollingexperimentaboutfoundationalmodules,theresultsarethesameassimulation’sresults.Wecarriedouttheexpectedcontrolaboutsteppingmotor.

Keyword:

steppingmotorpositioningcontrolVHDLFPGA

1设计目标及简介

1.1设计目标

设计一个基于FPGA的4相步进电机定位控制系统。

1.2步进电机简介

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。

这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。

使得在速度、位置等控制领域用步进电机来控制变的非常的简单。

2VHDL语言介绍

VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。

1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。

VHDL主要用于描述数字系统的结构,行为,功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。

VHDL的程序结构特点是将一项工程设计,或称设计实体<可以是一个元件,一个电路模块或一个系统)分成外部<或称可视部分,及端口)和内部<或称不可视部分),既涉及实体的内部功能和算法完成部分。

在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。

归纳起来,VHDL语言主要具有功能强大,设计方式多样;硬件描述能力强大;具有很强的移植能力;设计描述与器件无关程序易于共享和复用等优点。

3QuartusⅡ介绍

QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:

可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片<电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。

4系统组成

4.1四相步进电机工作原理

步进电机是利用数字信号控制的电机装置,步进电机每次接收到一组脉冲数字信号,便旋转一个角度,称为步进角。

不同规格的步进电机的步进角不同,与电动机内部的线圈数量有关。

线圈中的供应电流决定线圈所产生的磁场方向。

4相步进电机有两组线圈A和B,如图4.1所示,A、B两组垂直摆放线圈的电流方向的排列组合,最多可以产生8种磁场方向,分别是0º、45º、90º、135º、180º、225º、270º、315º。

 

图4.1四相步进电机

由表4.1可以知,假设电动机转子刻度在0º的位置,想让其转180º,可以使端口信号依次按0001,0011,0010,0110到0100变化。

注意:

四相电动机有1相激磁法、2相激磁法和1-2相混合激磁法3种激磁方式。

不同的激磁方式,端口信号的顺序是不同的。

 

表4.1四相步进电机的8个方向和电流以及电压信号的关系

该步进电机为一四相步进电机,采用单极性直流电源供电。

只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

图4.2是该四相反应式步进电机工作原理示意图。

 

图4.2四相步进电机步进示意图

开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。

当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。

而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。

依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。

单四拍与双四拍的步距角相等,但单四拍的转动力矩小。

八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

 四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A。

 单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图4.3的a、b、c所示。

图4.3a单四拍图4.3b双四拍图4.3c八拍

4.2系统组成

 

图4.4系统组成

5模块设计

5.1FPGA模块图及信号说明

 

图5.1FPGA模块图

reset:

系统内部复位信号,’1’时有效;

dir:

步进电机正反转的方向控制开关,0:

逆时针,1:

顺时针;

clk:

由FPGA内部提供的4MHz的时钟信号;

ini:

赋初值的使能开关,’0’时有效;

manner:

激磁方式的选择开关(两位>,00:

自动检测角度输入,决定激磁方式01:

1-相激磁。

10:

2.相激磁。

11:

1-2.相激磁.

angle:

步进角的倍数设定输入键.

baba:

将内部计数器的count[3downto0]的数值编码输出

5.2系统模块构成

系统主要由步进电机方向设定电路模块、步进电机步进移动与定位控制模块和编码输出模块构成。

前两个模块完成电机旋转方向设定,激磁方式设定和定位角度的换算等工作,后一个模块用于对换算后的角度量编码输出。

5.3各模块间整体共享的电路内部传递信号

count:

内部电路计数累加器,用来产生输出所需对应的状态;

cntinc:

设定累加器所需的累加/减计数值;

sntini:

设定累加器所需的计数初值;

angledncount:

设定步进角所需处理的次数;

Angledncntdec:

设定步进角所需累减计数值;

5.4电机方向设定电路模块

该模块设定了步进电机的旋转方向以及电机在任一方向上所需的初值与累加/减值。

dir为0时,步进电机工作于逆时针旋转模式,累加值为正数。

manner选择激磁方式00、01、10、11分别对应默认激磁方式、1-相激磁方式、2.相激磁方式和1-2.相激磁方式。

如表5.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

表5.1dir为0时

dir为1时,步进电机工作于顺时针旋转模式,累加值为负数。

manner选择激磁方式00、01、10、11分别对应默认激磁方式、1-相激磁方式、2.相激磁方式和1-2.相激磁方式。

如表5.2。

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

表5.2dir为1时

5.5步进电机步进移动与定位控制模块

该模块的主要功能是利用赋初值ini将数值传到该模块中并配合输入的clk作为同步控制信号,进行步进电机的步进移动与定位控制。

步进电机定位功能通过一个减法器实现:

在每个clk脉冲上升缘,设定步进角倍数angledncount减去不同激磁方式下设定的累减记数值angledncntdec,判断差值小于设定的累减记数时,步进电机旋转到预定角度停止输出驱动端口信号,实现步进电机的定位功能。

驱动端口信号利用累加器实现。

5.6编码输出模块

该模块的功能是将count与angledncount产生的数值经过编码,并通过baba[3downto0]输出到步进电机。

6程序设计与仿真

libraryIEEE。

useIEEE.std_logic_1164.all。

useIEEE.std_logic_arith.all。

useIEEE.std_logic_unsigned.all。

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。

architecturestepmotor_archofstep_motoris

signalcount:

INTEGERrange0to7。

--计数器

signalcntInc:

INTEGERrange-2to2。

--设定累加器所需的累<加/减)计数值

signalcc:

integerrange0to3。

signalcntIni:

INTEGERrange-1to0。

--设定累加器所需的计数初值

signalangleDnCount:

INTEGERrange255downto0。

--计算已经转过的步进角

signalangleDnCntDec:

INTEGERrange2downto1。

begin

process(dir,manner,angle>--,ini>

begin

--ifini='1'then

cc<=conv_integer(manner>。

ifdir='0'then

caseccis

when1=>--1-相激励

--count<=0。

cntIni<=0。

cntInc<=2。

angleDnCntDec<=2。

--"10"。

when2=>--2-相激励

--count<=7。

cntIni<=-1。

cntInc<=2。

angleDnCntDec<=2。

--"10"。

when3=>--1-2相激励

--count<=0。

cntIni<=0。

cntInc<=1。

angleDnCntDec<=1。

--"01"。

when0=>--manner="00"autodetect

if(anglerem2>=1then--2-相激励

--count<=7。

cntIni<=-1。

cntInc<=2。

angleDnCntDec<=2。

--"10"。

else--1-相激励

--count<=0。

cntIni<=0。

cntInc<=2。

angleDnCntDec<=2。

--"10"。

endif。

--angle

endcase。

--manner

else--ifdir='1'

caseccis

when1=>--1-相激励

--count<=0。

cntIni<=0。

cntInc<=-2。

angleDnCntDec<=2。

--"10"。

when2=>--2-相激励

--count<=7。

cntIni<=-1。

cntInc<=-2。

angleDnCntDec<=2。

--"10"。

when3=>--1-2相激励

--count<=0。

cntIni<=0。

cntInc<=-1。

angleDnCntDec<=1。

--"01"。

when0=>--manner="00"autodetect

if(anglerem2>=1then--2-相激励

cntIni<=-1。

cntInc<=-2。

angleDnCntDec<=2。

--"10"。

else--1-相激励

cntIni<=0。

cntInc<=-2。

angleDnCntDec<=2。

--"10"。

endif。

--angle

endcase。

--manner

endif。

--elsedir=0

--endif。

--ini

endprocess。

counting_reset:

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。

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。

endstepmotor_arch。

7仿真结果

图7.1编译结果

图7.2时序仿真部分结果

图7.3时序仿真结果

8实验总结

本文所设计的步进电机控制系统实现简单,编程容易,所设计系统实现了对电机模组的预定控制,较好的完成了设计要求。

采用Verilog和FPGA设计,能够缩短设计周期,并使设计易于调试、实现。

在系统需升级时,仅需对FPGA模块再设计,成本较低。

从仿真结果来看,利用FPGA芯片严谨的基于硬件的编程语言和精确的时间控制特点,准确地实现了精确定位功能,并利用直接频率合成理论中的相位累加器的原理同时实现了对步进电机的运行速度的精确控制。

实践证明,这种方法定位准确,控制速度精确,是一种行之有效的方案。

参考文献

[1]通信原理樊昌信张甫翊徐炳祥吴成柯著国防工业出版社2009.1

[2]EDA技术使用教程—VHDL版潘松黄继业编著科学出版社2018.6

本科生课程设计成绩评定表

姓名

性别

专业、班级

课程设计题目:

步进电机定位控制系统设计

课程设计答辩或质疑记录:

1、步进电机的拍数是指什么?

答:

拍数指完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数。

以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A。

2、各个输入信号的作用是什么?

答:

reset:

系统内部复位信号,’1’时有效;

dir:

步进电机正反转的方向控制开关,0:

逆时针,1:

顺时针;

clk:

由FPGA内部提供的4MHz的时钟信号;

ini:

赋初值的使能开关,’0’时有效;

manner:

激磁方式的选择开关(两位>,00:

自动检测角度输入,决定激磁方式01:

1-相激磁。

10:

2.相激磁。

11:

1-2.相激磁.

angle:

步进角的倍数设定输入键.

成绩评定依据:

 

最终评定成绩<以优、良、中、及格、不及格评定)

 

指导教师签字:

年月日

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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