《步进电机定位控制系统设计(共23页).docx》由会员分享,可在线阅读,更多相关《步进电机定位控制系统设计(共23页).docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上学生学号 课程设计题目步进电机定位控制系统设计学 院信息工程学院专业班级姓名指导老师20132014学年6月20日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题目:步进电机定位控制系统设计初始条件:1. 具备电子电路的基础知识及查阅资料和手册的能力;2. 熟悉ISE 仿真软件的操作与运用;3. 掌握步进电机的工作原理。要求完成的主要任务:1. 设计一个基于FPGA 的4 相步进电机定位控制系统,包括步进电机方向设定电路模块、步进电机步进移动与定位控制模块和编码输出模块。2.撰写符合学校要求的课程设计说明书。时间安排:1、2014 年06月11日,布置
2、课设具体实施计划与课程设计报告格式的要求说明。2、2014 年06月12日 至2014年06月17日,设计说明书撰写。3、2014年06月18日,上交课程设计成果及报告,同时进行答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录专心-专注-专业摘要在分析了步进电机工作原理的基础上,提出了步进电机定位控制系统的模块划分和实现方法。以步进电机四相四拍工作方式为例,用Verilog编程在Altera公司的FPGA开发系统中实现了各功能模块和显示程序。在系统仿真的基础上,进行了功能模块的控制实验,实验结果和仿真一致,实现了对步进电机模组的预定控制。关键词:步进电机 定位控制 V
3、erilog硬件描述语言 FPGAAbstractOn the basis of analysing stepping motors operational principle,we put forward modules division and realizing method of positioning control system which using stepping motor.Giving an example such as stepping motors which work in Four-phase-four-step mode,we use Verilog prog
4、ramming realized every foundational module and display routine in Alteras FPGA development system.On the basis of system simulation,we conduct a controlling experiment about foundational modules,the results are the same as simulations results.We carried out the expected control about stepping motor.
5、Keyword: stepping motor positioning control VHDL FPGA1 设计目标及简介1.1设计目标设计一个基于FPGA的4相步进电机定位控制系统。1.2 步进电机简介步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。2 VHDL语言介绍VHDL的英文全名是Very-High-Speed
6、 Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可
7、以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有功能强大,设计方式多样;硬件描述能力强大;具有很强的移植能力;设计描述与器件无关程序易于共享和复用等优点。3 Quartus 介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器
8、,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;
9、完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。4 系统组成4.1 四相步进电机工作原理步进电机是利用数字信号控制的电机装置,步进电机每次接收到一组脉冲数字信号,便旋转一个角度,称为步进角。不同规格的步进电机的步进角不同,与电动
10、机内部的线圈数量有关。线圈中的供应电流决定线圈所产生的磁场方向。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个方向和电流以及电压信号的关系该步进电机为一四相步进电
11、机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图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四相绕组轮流供电,则转
12、子会沿着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.1 FPGA模块图及信号说明图5.1 FPG
13、A模块图reset:系统内部复位信号,1时有效;dir:步进电机正反转的方向控制开关,0:逆时针,1:顺时针;clk:由FPGA内部提供的4MHz的时钟信号;ini:赋初值的使能开关,0时有效;manner:激磁方式的选择开关(两位), 00:自动检测角度输入,决定激磁方式01:1-相激磁;10:2.相激磁;11:1-2.相激磁. angle:步进角的倍数设定输入键.baba:将内部计数器的count3 downto 0的数值编码输出5.2 系统模块构成系统主要由步进电机方向设定电路模块、步进电机步进移动与定位控制模块和编码输出模块构成。前两个模块完成电机旋转方向设定,激磁方式设定和定位角度的
14、换算等工作,后一个模块用于对换算后的角度量编码输出。5.3 各模块间整体共享的电路内部传递信号count:内部电路计数累加器,用来产生输出所需对应的状态;cntinc:设定累加器所需的累加/减计数值;sntini:设定累加器所需的计数初值;angledncount:设定步进角所需处理的次数;Angledncntdec:设定步进角所需累减计数值;5.4 电机方向设定电路模块该模块设定了步进电机的旋转方向以及电机在任一方向上所需的初值与累加/减值。dir为0时,步进电机工作于逆时针旋转模式,累加值为正数。manner 选择激磁方式 00、01、10、11分别对应默认激磁方式、1-相激磁方式、2.相
15、激磁方式和1-2.相激磁方式。如表5.1。manner cntini cntinc angledncntdec 00 angle=2n+1时 1angle=2n 时 0 2 2 01 0 2 2 10 -1 2 2 11 0 1 1 表5.1 dir为0时dir为1时,步进电机工作于顺时针旋转模式,累加值为负数。 manner 选择激磁方式 00、01、10、11分别对应默认激磁方式、1-相激磁方式、2.相激磁方式和1-2.相激磁方式。如表5.2。manner cntini cntinc angledncntdec 00 angle=2n+1时 1angle=2n 时 0 -2 2 01 0
16、-2 2 10 -1 -2 2 11 0 -1 1 表5.2 dir为1时5.5 步进电机步进移动与定位控制模块该模块的主要功能是利用赋初值ini将数值传到该模块中并配合输入的clk作为同步控制信号,进行步进电机的步进移动与定位控制。步进电机定位功能通过一个减法器实现:在每个clk脉冲上升缘,设定步进角倍数angledncount 减去不同激磁方式下设定的累减记数值angledncntdec,判断差值小于设定的累减记数时,步进电机旋转到预定角度停止输出驱动端口信号,实现步进电机的定位功能。驱动端口信号利用累加器实现。5.6 编码输出模块该模块的功能是将count与angledncount产生的
17、数值经过编码,并通过baba3downto0输出到步进电机。6 程序设计与仿真library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity step_motor isport (reset:in STD_LOGIC; -系统复位信号 dir: in STD_LOGIC; -方向控制信号 clk: in STD_LOGIC; -系统时钟信号 ini: in STD_LOGIC; -初始化使能信号 manner: in STD_LOGIC_VE
18、CTOR (1 downto 0); -激磁方式的选择开关 angle: in INTEGER range 255 downto 0; -步进角的倍数设定输入 baBA: out STD_LOGIC_VECTOR (3 downto 0); -步进电机状态输出end step_motor;architecture stepmotor_arch of step_motor issignal count: INTEGER range 0 to 7; -计数器 signal cntInc: INTEGER range -2 to 2; -设定累加器所需的累(加/减)计数值signal cc : in
19、teger range 0 to 3;signal cntIni: INTEGER range -1 to 0; -设定累加器所需的计数初值signal angleDnCount: INTEGER range 255 downto 0; -计算已经转过的步进角signal angleDnCntDec: INTEGER range 2 downto 1; begin process(dir, manner, angle)-, ini) begin -if ini=1 then cc - 1-相激励 -count=0; cntIni=0; cntInc=2; angleDnCntDec - 2-相
20、激励 -count=7; cntIni=-1; cntInc=2; angleDnCntDec - 1-2相激励 -count=0; cntIni=0; cntInc=1; angleDnCntDec -manner=00 autodetect if (angle rem 2) =1 then - 2-相激励 -count=7; cntIni=-1; cntInc=2; angleDnCntDec=2;-10; else - 1-相激励 -count=0; cntIni=0; cntInc=2; angleDnCntDec - 1-相激励 -count=0; cntIni=0; cntInc=
21、-2; angleDnCntDec - 2-相激励 -count=7; cntIni=-1; cntInc=-2; angleDnCntDec - 1-2相激励 -count=0; cntIni=0; cntInc=-1; angleDnCntDec -manner=00 autodetect if (angle rem 2) = 1 then - 2-相激励 cntIni=-1; cntInc=-2; angleDnCntDec=2;-10; else - 1-相激励 cntIni=0; cntInc=-2; angleDnCntDec=2;-10; end if; -angle end c
22、ase; -manner end if; - else dir=0 -end if; - ini end process; counting_reset: process(reset,ini, angle, clk) begin if reset=1 then count=0; angleDnCount=0; elsif clkevent and clk=1 then if ini=0 then count=0+cntIni; angleDnCount=angle; else count angleDnCntDec then angleDnCount = angleDnCount-angleD
23、nCntDec; else angleDnCount = 0; end if; end if; end if; end process; baBA =7;end stepmotor_arch;7 仿真结果图7.1 编译结果图7.2 时序仿真部分结果图7.3 时序仿真结果8 实验总结本文所设计的步进电机控制系统实现简单,编程容易,所设计系统实现了对电机模组的预定控制,较好的完成了设计要求。采用Verilog和FPGA设计,能够缩短设计周期,并使设计易于调试、实现。在系统需升级时,仅需对FPGA模块再设计,成本较低。从仿真结果来看,利用FPGA芯片严谨的基于硬件的编程语言和精确的时间控制特点,准确
24、地实现了精确定位功能,并利用直接频率合成理论中的相位累加器的原理同时实现了对步进电机的运行速度的精确控制。实践证明,这种方法定位准确,控制速度精确,是一种行之有效的方案。参考文献1 通信原理 樊昌信 张甫翊 徐炳祥 吴成柯著 国防工业出版社 2009.12 EDA技术使用教程VHDL版 潘松 黄继业编著 科学出版社 2010.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:步进角的倍数设定输入键.成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日