基于FPGA的异步电机课程设计_第1页
基于FPGA的异步电机课程设计_第2页
基于FPGA的异步电机课程设计_第3页
基于FPGA的异步电机课程设计_第4页
基于FPGA的异步电机课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生学号 课程设计题目步进电机定位控制系统设计学 院专业班级姓名指导老师20142015学年1月7日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位 题目:步进电机定位控制系统设计初始条件:1. 熟悉QuartusII 软件的操作与运用;2. 掌握步进电机的工作原理。要求完成的主要任务:1. 设计一个基于FPGA 的4 相步进电机定位控制系统,包括步进电机方向设定电路模块、步进电机步进移动与定位控制模块和编码输出模块。2.撰写符合学校要求的课程设计说明书时间安排:1、 年 月 日,布置课设具体实施计划与课程设计报告格式的要求说明。2、 年 月 日至 年 月 日,设计说明书撰写。3、

2、年 月 日,上交课程设计成果及报告,同时进行答辩。 指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要IAbstractII1 设计目标及简介11.1设计目标11.2 步进电机简介12 VHDL语言介绍23 Quartus 介绍34 系统组成44.1 四相步进电机工作原理44.2 系统组成55 模块设计55.1 FPGA模块图及信号说明55.2 系统模块构成65.3 各模块间整体共享的电路内部传递信号65.4 电机方向设定电路模块65.5 步进电机步进移动与定位控制模块75.6 编码输出模块76 程序设计与仿真87 仿真结果128 实验总结149参考文献15武汉理工大学F

3、PGA原理及应用课程设计报告摘要在分析了步进电机工作原理的基础上,提出了步进电机定位控制系统的模块划分和实现方法。以步进电机四相四拍工作方式为例,用Verilog编程在Altera公司的FPGA开发系统中实现了各功能模块和显示程序。在系统仿真的基础上,进行了功能模块的控制实验,实验结果和仿真一致,实现了对步进电机模组的预定控制。关键词:步进电机 定位控制 Verilog硬件描述语言 FPGAAbstractOn the basis of analysing stepping motors operational principle,we put forward modules division

4、 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 programming realized every foundational module and display routine in Alteras FPGA development system.On the basis of system

5、 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.Keyword: stepping motor positioning control VHDL FPGA151 设计目标及简介1.1设计目标设计一个基于FPGA的4相步进电机定位控制系统。系统主要由步进电机方向设定电路模块、步进电机步进移

6、动与定位控制模块和编码输出模块构成。前两个模块完成电机旋转方向设定,激磁方式设定和定位角度的换算等工作,后一个模块用于对换算后的角度量编码输出。1.2 步进电机简介步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件,具有价格低廉、易于控制、无累积差错和与计算机接口方便等诸多优点,在机械、仪表、工业控制等领域中获得了广泛的应用。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。

7、2 VHDL语言介绍VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。

8、在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有功能强大,设计方式多样;硬件描述能力强大;具有很强的移植能力;设计描述与器件无关程序易于共享和复用等优点。3 Quartus 介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Descripti

9、on Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添

10、加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。4 系统组成4.1 四相步进电机工作原理步进电机是利用数字信号控制的电机装置,步进电机每次接收到一组脉冲数字信

11、号,便旋转一个角度,称为步进角。不同规格的步进电机的步进角不同,与电动机内部的线圈数量有关。线圈中的供应电流决定线圈所产生的磁场方向。4相步进电机有两组线圈 A和 B,如图4.1所示,A、B两组垂直摆放线圈的电流方向的排列组合,A线圈如果提供A点低电位而A点高电位,电流由A螺旋向上流到A,形成向上的磁场方向;同理,提供B点低电位而B点高电位,电流由B螺旋流到B,形成向左的磁场方向。A和B这两组线圈形成的总磁场方向即为左上方。如果将电动机的转子置于线圈所产生的磁场中,便会受到磁场的作用而产生与磁场方向一致的力,转子便开始转动,直到转子的磁场方向与线圈的磁场方向一致为止。最多可以产生8种磁场方向,

12、分别是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个方向和电流以及电压信号的关系1-相激磁法:当目标角度是90的整数倍时,采用这种方法。例如要从0转到270,只要让端口

13、信号的顺序为0000,0001,0010,0100,1000即可。2-相激磁法:当目标角度是45而非90的整数倍时,可采用这种方法。例如要从0转到225,只要让端口信号的顺序为0000,0011,0110,1100即可。1-2-相混合激磁法:按照表中所列的信号顺序。该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。4.2 系统组成图4.2 系统组成5 模块设计5.1 FPGA模块图及信号说明图5.1 FPGA模块图reset:系统内部复位信号,1时有效;dir:步进电机正反转的方向控制开关,0:逆时针,1:顺时针;clk:由F

14、PGA内部提供的4MHz的时钟信号;ini:赋初值的使能开关,0时有效;manner:激磁方式的选择开关(两位), 00:自动检测角度输入,决定激磁方式01:1-相激磁;10:2.相激磁;11:1-2.相激磁. angle:步进角的倍数设定输入键.baba:将内部计数器的count3 downto 0的数值编码输出5.2 系统模块构成系统主要由步进电机方向设定电路模块、步进电机步进移动与定位控制模块和编码输出模块构成。前两个模块完成电机旋转方向设定,激磁方式设定和定位角度的换算等工作,后一个模块用于对换算后的角度量编码输出。5.3 各模块间整体共享的电路内部传递信号count:内部电路计数累加

15、器,用来产生输出所需对应的状态;cntinc:设定累加器所需的累加/减计数值;sntini:设定累加器所需的计数初值;angledncount:设定步进角所需处理的次数;Angledncntdec:设定步进角所需累减计数值;5.4 电机方向设定电路模块该模块设定了步进电机的旋转方向以及电机在任一方向上所需的初值与累加/减值。dir为0时,步进电机工作于逆时针旋转模式,累加值为正数。manner 选择激磁方式 00、01、10、11分别对应默认激磁方式、1-相激磁方式、2.相激磁方式和1-2.相激磁方式。如表5.1。manner cntini cntinc angledncntdec 00 an

16、gle=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 -2 2 10 -1 -2 2 11 0 -1 1 表5.2 dir为1时5.5 步进电机步进移动与定位控制模块该模块的主

17、要功能是利用赋初值ini将数值传到该模块中并配合输入的clk作为同步控制信号,进行步进电机的步进移动与定位控制。步进电机定位功能通过一个减法器实现:在每个clk脉冲上升缘,设定步进角倍数angledncount 减去不同激磁方式下设定的累减记数值angledncntdec,判断差值小于设定的累减记数时,步进电机旋转到预定角度停止输出驱动端口信号,实现步进电机的定位功能。驱动端口信号利用累加器实现。5.6 编码输出模块该模块的功能是将count与angledncount产生的数值经过编码,并通过baBA3downto0输出到步进电机。6 程序设计与仿真library IEEE;use IEEE.

18、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_VECTOR (1 downto 0); -激磁方式的选择开关 angle: in INTEGER range 255 dow

19、nto 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 : integer range 0 to 3;signal cntIni: INTEGER range -1 to 0; -设定累

20、加器所需的计数初值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<=conv_integer(manner); if dir='

21、;0' then case cc is when 1 => - 1-相激励 -count<=0; cntIni<=0; cntInc<=2; angleDnCntDec<=2;-"10" when 2 => - 2-相激励 -count<=7; cntIni<=-1; cntInc<=2; angleDnCntDec<=2;-"10" when 3 => - 1-2相激励 -count<=0; cntIni<=0; cntInc<=1; angleDnCntDec

22、<=1;-"01" when 0 => -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<=2;-"10" end if; -angle end case; -m

23、anner else - if dir='1' case cc is when 1 => - 1-相激励 -count<=0; cntIni<=0; cntInc<=-2; angleDnCntDec<=2;-"10" when 2 => - 2-相激励 -count<=7; cntIni<=-1; cntInc<=-2; angleDnCntDec<=2;-"10" when 3 => - 1-2相激励 -count<=0; cntIni<=0; cntInc

24、<=-1; angleDnCntDec<=1;-"01" when 0 => -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 case; -mann

25、er end if; - else dir=0 -end if; - ini end process;-步进电机步进移动与定位控制电路模块该模块的主要功能是利用ini(使能开关),将数值传到该模块中,并配合输入的clk(系统时钟)作为同步控制信号,进行步进机的步进移动与定位控制。 counting_reset: process(reset,ini, angle, clk) begin if reset='1' then count<=0; angleDnCount<=0; elsif clk'event and clk='1' then if

26、 ini='0' then count<=0+cntIni; angleDnCount<=angle; else count <= count+cntInc; if angleDnCount > angleDnCntDec then angleDnCount <= angleDnCount-angleDnCntDec; else angleDnCount <= 0; end if; end if; end if; end process;-编码输出电路模块该模块的功能是将count和angledncount产生的数值经过编码,并利用baBA输出连线信号,将结果输出显示。 baBA <="0000" when angleDnCount=0 else "0001" when count=0 else "0011" when count=1 else "0010" when count=2 else "0110" when count=3 else "0100" when count=4 else "1100" when count=5 else "1000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论