




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武汉理工大学FPGA原理及应用课程设计FPGA原理及应用课设任务书学生姓名: 专业班级: 指导教师: 陈适 工作单位: 信息工程学院 题目: 步进电机定位控制系统设计初始条件:1. 具备电子电路的基础知识及查阅资料和手册的能力;2. 熟悉ISE 仿真软件的操作与运用;3. 掌握步进电机的工作原理。要求完成的主要任务:1.设计一个基于FPGA 的4 相步进电机定位控制系统,包括步进电机方向设定 电路模块、步进电机步进移动与定位控制模块和编码输出模块。2.撰写符合学校要求的课程设计说明书。时间安排:1、2014年6月3日,布置课设具体实施计划与课程设计报告格式的要求说明。2、2014年6月4日至2
2、014 年6月16日,设计说明书撰写。3、2014年6月18日,上交课程设计成果及报告,同时进行答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目 录摘 要2ABSTRACT41 绪论51.1选题背景51.2 国内外研究现状51.3 发展趋势62 系统组成及原理描述82.1 4相步进电机的8个方向和电流以及电压信号的关系92.2 FPGA模块图和输入、输出信号说明93 模块设计113.1 各模块间整体共享的电路内部传递信号113.2电机方向设定电路模块113.3 步进电机步进移动与定位控制模块123.4 编码输出模块124 程序设计与仿真144.1根据步进电机定位控制器的
3、系统组成框图可以定义输入和输出端口:144.2中间变量初始化定义如下:144.3 步进电机定位控制器顶层电路的VHDL 程序代码:144.4 仿真结果175 总结20参考文献21附录22- 1 -摘 要 步进电机具有响应速度快、定位精度高、无积累误差、驱动电路及控制方法简单等优点;FPGA芯片具有控制精度高而且稳定可靠高,解决了传统定制电路的不足,克服了原有可编程器件门路数有限的缺点,因而步进电机和FPGA芯片在工业控制领域获得了广泛的应用。 本文详细叙述了基于FPGA芯片来实现驱动步进电机的定位控制系统设计的过程,设计中心思想是以FPGA芯片来实现驱动步进电机的脉冲分配,加上必要的数字模拟辅
4、助电路,形成一个四相八步的步进电机定位控制系统。在软件平台Quarter 7.2上通过硬件描述VHDL语言来对步进电机的功能进行建模和电路描述,并建立好它的设计顶文件,完成逻辑编译,逻辑综合,和实时仿真测试,得到准确的仿真波形图。使用Cyclone系列的可编程逻辑控制器FPGA作为硬件平台,把软件平台上适配好的文件通过编程器向FPGA下载,进行最后的硬件测试,查找错误,改进设计。关键字: 步进电机、FPGA、定位控制ABSTRACT Step motor has the response speed, high positioning accuracy, no accumulated erro
5、r, drive circuit and control method is simple, etc;The FPGA chip with high control precision and high stable and reliable, to solve the deficiency of the traditional custom circuit, overcome the original programmable device access number limited shortcomings, thus stepping motor and the FPGA chip ob
6、tained widespread application in the field of industrial control. Is described in this paper, based on the FPGA chip to realize the drive stepper motor position control system design process, the design idea is based on the FPGA chip to realize the drive stepper motor pulse distribution, combined wi
7、th necessary auxiliary circuit digital simulation, forming a four phase eight step stepper motor positioning control system.In software platform Quarter 7.2 through hardware description on the VHDL language to modeling the function of the step motor and the circuit description, and establish good it
8、s design file, compile logic, logic synthesis, and real-time simulation test, the exact simulation waveform figure.Using Cyclone series FPGA programmable logic controller as a hardware platform, software platform on the adaptation to good download files through a programmer to FPGA, the hardware tes
9、t, find the error and improve the design.Key words: step motor, the FPGA, positioning control1 绪论1.1选题背景 本设计的主题是步进电机定位控制系统,设计任务和要求如下:设计一个基于FPGA的4相步进电机定位控制系统。步进电机已成为出直流电机和交流电机以外的第三类电动机。传统电动机作为机电能量转换装置,在人类的生活和生产进入电气化过程中起着关键的作用。可是在人类社会进入电气化时代的今天,传统电动机已不能满足工业自动化和办公自动化等各种运动控制系统的要求。发展了一系列新的具有控制功能的电动机系统,其中
10、较有自己特点,且应用十分广泛的就是步进电机。步进电机的发展与计算机工业密切相关。自从步进电机在计算机外围设备上取代小型直流电动机以后,使其设备的性能提高,很快的促进了步进电机的发展。另一方面,微型计算机和数字控制技术的发展,又将作为数控系统执行部件的步进电机推广应用到其他领域,如电加工机床、小功率机械加工机床、测量仪器、光学和医疗仪器以及包装机械等 。步进电机是一种使用非常广泛且易于精确控制的执行元件,随着微电子技术的发展,其控制方法多种多样。基于FPGA 技术对步进电机的转速进行精确控制,满足了现代工业对步进电机的高要求。1.2 国内外研究现状步进电机最早是在1920年由英国人所开发。195
11、0年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机细分驱动技术是70年代中期发展起来的一种可以显著改善步进电机综合使用
12、性能的驱动控制技术。1975年美国学者T.R. Fredriksen首次在美国增量运动控制系统及器件年会上提出了步进电机步距角细分的控制方法。 在其后的二十多年里,步进电机细分驱动技术得到了很大的发展,从本质上讲是对步进电机的励磁绕组中电流的控制,使步进电机内部的合成磁场为均匀的圆形旋转磁场,从而实现步进电机步距角的细分。 要想实现步距角均匀细分控制,必须合理控制电机绕组中的电流,使步进电机内部合成磁场的幅值恒定,每个进给脉冲所引起的合成磁场的角度变化要均匀。1.3 发展趋势传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。步进电机作为一种控制用的特种电机,利用
13、其没有积累误差(精度为100%)的特点,适合应用于各种开环控制。今日,步进电机已广泛的运用在需要高定位精度、高分解能、高响应性等灵活控制性高的机械系统中了。FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。EDA技术代表了当今电子设计技术的最新发展方向,它彻底改变了数字系统的设计方法和实现手段。随着硬件描述语言VHDL的普及以及CPLDFPGA器件的广泛应用,
14、它必将在硬件设计领域发挥更为重要的作用。基于FPGA 技术对步进电机的转速进行精确控制,具有可移植性能优越、可靠性强等优点,具有广泛的应用前景。2 系统组成及原理描述 步进电机定位控制器的系统组成如图2-1所示:图2-1系统组成 步进电机是利用数字信号控制的电机装置,步进电机每次接收到一组脉冲数字信号,便旋转一个角度,称为步进角。不同规格的步进电机的步进角不同,与电机内部的线圈数量有关。线圈中的供应电流决定线圈所产生的磁场方向。 图2-2 四相步进电机线圈磁场方向图 4相步进电机有两组线圈 A和 B,如图2-2所示,A、B两组垂直摆放线圈的电流方向的排列组合,最多可以产生8种磁场方向,分别是0
15、º、45º、90º、135º、180º、225º、270º、315º。2.1 4相步进电机的8个方向和电流以及电压信号的关系表2-1电流以及电压信号的关系 由表2-1可知,假设电动机转子刻度在0º的位置,想让其转180º,可以使端口信号依次按0001à0011à0010à0110à0100变化。但是否有更快的方法,是否一定要经过4个信号过程呢?其实有更快更省电的方式让电动机从0º到达180º的位置。这就是所谓激磁方式的不同。四相电动机可
16、以分为以下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所示的激磁顺序是逆时针
17、方向的,若要让电动机顺时针旋转,只要提供给转子的激磁信号序列相反即可。对于其他具有更多相位的步进电机,如基于PWM原理细分步进电机,其控制的原理是相同的,只要找出所需的端口信号顺序,就可以自由进行实现无级控制。表2-2不同的激磁法时四相步进电机端口输入信号表(逆时针方向)磁场方向 0º 45º 90º 135º 180º 225º 270º 315º端口信号B´A´BA000100110010011001001100100010011-相激磁 2-相激磁 1-2-相激磁 2.2 FPGA模块图和
18、输入、输出信号说明reset:系统内部复位信号, 1时有效;dir :步进电机正反转的方向控制开关,0:逆时针,1:顺时针;clk :由FPGA内部提供的4MHz的时钟信号;ini :赋初值的使能开关,0时有效;manner:激磁方式的选择开关(两位), 00:自动检测角度输入, 决定激磁方式01:1-相激磁;10:2-相激磁;11:1-2-相激磁;angle: 步进角的倍数设定输入键;baba : 将内部计数器的count3 downto 0的数值编码输出。 图2-1 系统模块符号图3 模块设计 系统主要由步进电机方向设定电路模块、步进电机步进移动与定位控制模块和编码输出模块构成。 前两个模
19、块完成电机旋转方向设定,激磁方式设定和定位角度的换算等工作,后一 个模块用于对换算后的角度量编码输出。3.1 各模块间整体共享的电路内部传递信号count:内部电路计数累加器,用来产生输出所需对应的状态;cntinc:设定累加器所需的累加/减计数值;sntini:设定累加器所需的计数初值;angledncount:设定步进角所需处理的次数;Angledncntdec:设定步进角所需累减计数值;3.2电机方向设定电路模块 该模块设定了步进电机的旋转方向以及电机在任一方向上所需的初值与累加/减值。 该模块VHDL程序见附录步进电机定位控制系统STEP_MOTOR.VHD中STEP_MOTOR_DI
20、RECTION:BLOCK。 模块输出的各个初值以及累加/减值的设定真值表如下表:表3-1各个初值以及累加/减值的设定真值表1(dir=0)mannercntinicntincangledncntdec00angle=2n+1时1angle=2n 时 0220102210-12211011 dir为0时,步进电机工作于逆时针旋转模式,累加值为正数。 manner 选择激磁方式 00、01、10、11分别对应默认激磁方式、1-相激磁方式、2-相激磁方式和1-2-相激磁方式。表3-2各个初值以及累加/减值的设定真值表2(dir=1)mannercntinicntincangledncntdec00
21、angle=2n+1时1angle=2n 时 0-22010-2210-1-22110-11dir为1时,步进电机工作于顺时针旋转模式,累加值为负数。 manner 选择激磁方式 00、01、10、11分别对应默认激磁方式、1-相激磁方式、2-相激磁方式和1-2-相激磁方式。3.3 步进电机步进移动与定位控制模块 该模块的主要功能是利用赋初值ini将数值传到该模块中并配合输入的clk作为同步控制信号,进行步进电机的步进移动与定位控制。 该模块VHDL程序见附录步进电机定位控制系统STEP_MOTOR.VHD文件STEP_MOVING。 步进电机定位功能通过一个减法器实现:在每个cl
22、k脉冲上升缘,设定步进角倍数angledncount 减去不同激磁方式下设定的累减记数值angledncntdec,判断差值小于设定的累减记数时,步进电机旋转到预定角度停止输出驱动端口信号,实现步进电机的定位功能。 驱动端口信号利用累加器实现。 假设resel=1,则将count 和angleDnCount 设置成0。 假设reset=O,clk 为上升沿触发且ini=0 时,就将设定的初值(cntini与angle)赋给count 和angleDnCount 两个信号端,也就(count<=O+cntini)与(angleDnCount<=angle)。 假设reset=O,cl
23、k 为上升沿触发且ini=1 时,则将count 与cntini 相加,再将结果存为count。然后判断angleDnCount 的值是否大于angleDnCntDec。如果大于,则用angleDnCount 减angleDnCntDec,将结果存为angleDnCount;否则,将angleDnCount 设为0(因为此时angleDnCount 的值小于angleDnCntDec,表示电机已经到达设定位置,故不需要继续转动了)。 BaBA3O是将count 与angleDnCount 产生的数值经过编码后输出到四相步进电机的端口的。3.4 编码输出模块该模块的功能是将count与angle
24、dncount产生的数值经过编码,并通过baba3downto0输出到步进电机。四相步进电机端口信号由计数器编码而来,详细的编码方式列于表3-3表3-3 四相步进电机端口信号输出编码计数器现值count01234567端口B´A´BA编码baba3.000010011001001100100110010001001磁场方向0º45º90º135º180º225º270º315º4 程序设计与仿真4.1根据步进电机定位控制器的系统组成框图可以定义输入和输出端口:entity step_motor
25、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 downto 0; -步进角的倍数设定输入 baBA: out STD_LOGIC_VECTOR (3 downto 0); -步进电机状态输出end step_motor;4.2中间变量初始化定义如下
26、: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; -设定累加器所需的计数初值signal angleDnCount: INTEGER range 255 downto 0; -计算已经转过的步进角signal angleDnC
27、ntDec: INTEGER range 2 downto 1;-设定步进角所需累减计数值4.3 步进电机定位控制器顶层电路的VHDL 程序代码:在下面的程序中只考虑逆时针操作模式即(dir=0)。(1)步进电机方向设定电路模块beginstep motor direction:block- -步进电机方向设定电路模块beginprocess(dir,manner,angle)begin- -if ini=1thencc< =conv integer(manner);if dir=0then- -逆时针方向旋转case cc iswhen 1= > - -一相激励count<
28、 =0;cntini< =0;cntinc< =2;angleDnCntDec< =2; - -"10"when 2= > - -二相激励count< =7;cntini< = -1;cntinc< =2;angleDnCntDec< =2; - -"10"when 3= > - -一-二相激励count< =0;cntini< =0;cntinc< =1;angleDnCntDec< =1; - -"01"when others= > - -mann
29、er="00"autodetectif(angle rem 2)=1 then- -二相激励count< =7;cntini< = -1;cntinc< =2;angleDnCntDec< =2; - -"10"else- -一相激励count< =0;cntini< =0;cntinc< =2;angleDnCntDec< =2; - -"10"end if; - -angleend case; - -mannerend process;(2) 步进电机步进移动与定位控制模块step
30、motor moving:block- -步进电机步进移动与定位控制模块counting reset:process(reset,ini,angle,clk)beginif reset=1thencount< =0;angleDnCount< =0;elsif clkevent and clk=1thenif ini=0thencount< =0+cntini;angleDnCount< =angle;elsecount< =count+cntinc;if angleDnCount>angleDnCntDec thenangleDnCount< =an
31、gleDnCount-angleDnCntDec;elseangleDnCount< =0;end if;end if;end if;end process;(3)编码输出模块table mapping:block- -编码输出模块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 els
32、e"0100"when count=4 else"1100"when count=5 else"1000"when count=6 else"1001"when count> =7;end stepmotor arch;4.4 仿真结果程序运行后的状态如下图所示,表明程序运行成功,无错误,可进一步进行系统仿真。图4-1程序运行状态 源程序中,逆时针操作模式(dir=0),则累加值为正数,顺时针操作模式(dir=1),则累加值为负数。不失一般性,下面给出逆时针操作模式的计数规则和仿真输出(ini=0赋初值,in
33、i=1时开始记数):(1) 如果manner=01电路使用1-相激磁法,则count的初始值为000(cntini<=0),每次加2(cntinc<=2);angledncntdec每次减2(angledncntdec<=2)。图4-2方向设定电路模块仿真输出(1-相激磁法)(2) 如果manner=10电路使用2-相激磁法,则count的初始值为111(cntini<=-1),每次加2(cntinc<=2);angledncntdec每次减2(angledncntdec<=2)。图4-3方向设定电路模块仿真输出(2-相激磁法)(3) 如果manner=00
34、,进行自动判断,若angle步进角为偶数(角度设定可以被90整除),使用1-相激磁法,count的初始值000(cntini<=0),每次加2(cntinc<=2);否则使用2-相激磁法,count的初始值为111(cntini<=-1),每次加2(cntinc<=2 )。图4-4 方向设定电路模块仿真输出(自动判断)系统仿真整体结果如下图所示,图4-5系统仿真整体结果系统仿真局部结果如下图所示,图4-6 系统仿真局部结果分析angle连线信号的波形可以发现,angle的计数值总是向下递减2,故angledncntdec的值为2。当angledncount的值为1时,表
35、示angledncount的值已经小于angledncntdec,此时angle被设为0,即电动机已到达设定位置,故不需要再继续转动了(因为无论count的数值是多少,输出baba的状态永远维持0000)。编码输出模块,该模块的主要功能是将count与angledncount产生的数值经过编码,并通过baba3.0输出到步进电机,四相步进电机端口信号由计数器编码而来,详细的编码方式列于表4-1。表4-1 四相步进电机端口信号输出编码计数器现值count01234567端口B´A´BA编码baba3.000010011001001100100110010001001磁场方向0
36、º45º90º135º180º225º270º315º5 总结 步进电机作为一种数字伺服执行元件,具有结构简单,运行可靠,控制方便,控制性能好等优点,但现实中步进电机的控制比较复杂。这里设计的步进电机控制器方法简单,支持四相步进电机的三种励磁方式、正反转运行,这种基于FPGA的设计方法,可以加速同类型产品的开发速度,节约投资。并且可以根据步进电机的不同,改变分层模块的VHDL程序的参数,实现不同型号步进电机的控制,在实际应用中有利于步进电机的广泛应用。 在本次课程设计中,我们遇到了许多问题,而正是在解决一个个问题的
37、过程中,我们对VHDL 语言的理解和认识也不断加深。这个课程设计也让我们懂得,理论知识真的很重要,而实践能够加深对理论知识的理解,将理论和实践结合起来,才能设计出优秀的作品。参考文献1汪厚新.采用FPGA 的步进电机控制系统研究.西南交通大学硕士论文,2006(6):1102 王宝忠等.基于FPGA 的新型步进电机驱动系统J.微计算机息,2009(25):2122143黄智伟,王彦.FPGA 系统设计与实践M.北京:电子工业出版社,2007(6):1112.4王紫婷.基于FPGA 控制的步进电机驱动设计J.电子测量技术,2008(6):184187附录步进电机定位控制系统VHDL程序libra
38、ry 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_VECTOR (1 downto 0); -激磁方式的选择开关 angle: in INTE
39、GER 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 : integer range 0 to 3;signal cntIni: INTEGER ra
40、nge -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<=conv_integer(manner); if dir='0' then case cc is when 1 => - 1-相激励 -count<
41、;=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<=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; -manner else - if dir=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度北京市有毒有害物品仓储服务合同范本
- 小区车库代购合同范本
- 单位建食堂合同范本
- 基于研究方法与关键技术的学术探讨
- 2025租房合同范例模板
- 《2025项目中介合同》
- 2025商业房产买卖合同示范文本
- 2025茶叶代理合同范例范本
- 语言与未来知到课后答案智慧树章节测试答案2025年春青岛工学院
- 2025建筑材料采购的合同范本
- 2025年山东省东营市广饶县一中中考一模英语试题(原卷版+解析版)
- 浙江省宁波市镇海中学2024-2025学年高考二模英语试题试卷含解析
- 高校班干部培训
- 房 产 税教学课件
- 2025年晋中职业技术学院单招职业适应性测试题库参考答案
- 【语言文字运用】考点45 逻辑推断(新增考点)(解析版)
- 2025年江苏苏北四市高三一模高考地理试卷试题(含答案详解)
- 《石油化工金属管道工程施工质量验收规范2023版》
- 浙江钱江生物化学股份有限公司招聘笔试冲刺题2025
- 智能制造能力成熟度模型(-CMMM-)介绍及评估方法分享
- 《静脉输液治疗》课件
评论
0/150
提交评论