收藏 分享(赏)

基于FPGA的步进电机的PWM控制__细分驱动的实现.doc

上传人:dcjskn 文档编号:4321124 上传时间:2018-12-23 格式:DOC 页数:21 大小:532.50KB
下载 相关 举报
基于FPGA的步进电机的PWM控制__细分驱动的实现.doc_第1页
第1页 / 共21页
基于FPGA的步进电机的PWM控制__细分驱动的实现.doc_第2页
第2页 / 共21页
基于FPGA的步进电机的PWM控制__细分驱动的实现.doc_第3页
第3页 / 共21页
基于FPGA的步进电机的PWM控制__细分驱动的实现.doc_第4页
第4页 / 共21页
基于FPGA的步进电机的PWM控制__细分驱动的实现.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、山东大学威 海 分 校课 程 设 计 报 告设计题目: _基于 FPGA 的步进电机的 PWM 控制_ 细分驱动的实现_姓 名_秦正运_ _ _ _学 号 20059002029 院 系_ _信息工程学院 _ 专 业_ 电子信息科学与技术 年 级_05_ _2009 年 5 月 3 日目 录目 录 .2摘 要 .3关 键 词 3Abstract 3Keywords 3一、引言 4二、步进电机细分驱动的基本原理 4三、Quartus II 概述 5四、课题设计 6(一)总体设计 .6(二)细分电流的实现 .6(三)细分驱动性能的改善 .6(四)程序设计 .7六、仿真与测试结果分析 .10七、结论

2、 .12参考文献 .13注 释 14附 录 15谢 辞 21摘 要在对步进电机细分驱动原理进行分析研究的基础上,提出一种基于FPGA 控制的步进电机细分驱动器。利用 FPGA 中的嵌入式 EAB 构成 LPM-ROM,存放步进电机各相细分电流所需的 PWM 控制波形数据表,并通过 FPGA设计的数字比较器,同时产生多路 PWM 电流波形,实现对步进电机转角进行均匀细分控制。实验证明,所研制的步进电机驱动器不仅体积小,简化了系统的设计,减少了延迟,改善了低频特性,有良好的适应性和自保护能力,提高了驱动器的稳定性和可靠性。关 键 词步进电机;细分驱动;脉宽调制;FPGAAbstractIn thi

3、s paper, a divided driving circuit for stepping motor controlled by FPGA is put forward, based on the analysis of the principle of stepping motor divided driving. Using embedded EAB in FPGA to compose LPM-ROM, store PWM control wave form data which stepping motor each phase subdivided driving curren

4、t is neededThe magnitude comparator designed with FPGA generates several PWM current waveform synchronously, to realize the step angles even division control for threephase stepping motor.Experimments have proved that the developed subdivision driver is not only smaller,sampler in system, can shorte

5、n the delay time,improve the stability in low frequency ,but has good self-adaptation and self-protection ability,and its stability and relibility are higher.Keywordsstepping motor; divided driving;PWM; FPGA一、引言步进电机是把脉冲信号转换成角位移或直线位移的执行元件,是一种输出与输入数字脉冲相对应的增量驱动元件。具有定位精度高、惯性小、无积累误差、启动性能好、易于控制、价格低廉及与计算机接

6、口方便等优点,被广泛应用于数控系统中。但由于脉冲的不连续性又使步进电机的运行存在许多的不足之处,如低频震荡,噪声大,分辨率不高及驱动系统的可靠性差等,严重制约了其应用范围。步进电机的细分控制有效的解决了这一问题,步进电机细分驱动技术可以减小步进电机的步距角,提高电机运行的平稳性,增加控制的灵活性等。但是传统的步进电机驱动大多数采用的是用单片机作为控制芯片,外加分立的数字逻辑电路和模拟电路构成。受单片机工作频率的限制,细分数不是很高,因此控制器的精度较低,控制性能不是很理想。近年来随着可编程逻辑器件的飞速发展,似的可编程逻辑器件功能越来越强大从而促使高集成化高精度的驱动器的出现。本系统是以 FP

7、GA 为核心的控制器件,将驱动逻辑功能模块和控制器成功地集成在 FPGA 上。利用 FPGA 中的嵌入式 EAB 可以构成存放电机各相电流所需的控制波形表,再利用数字比较器同步产生多路 FPGA 电流波形,对多相步进电机进行控制。若改变控制波形表的数据、增加计数器和比较器的位数,提高计数精度,就可以提高 PWM 波形的细分精度,进而对步进电机的步进转角进行任意级细分,实现转角的精确控制。二、步进电机细分驱动的基本原理步进电机的驱动是靠给步进电机的各相励磁绕组轮流通以电流,实现步进电机内部磁场合成方向的变化来使步进电机转动的。设矢量 Ta、Tb、Tc、Td 为步进电机A、B、C、D 四项励磁绕组

8、分别通电时产生的磁场矢量;Tab、Tbc、Tcd、Tda 为步进电机中 AB,BC,CD,DA 两相同时通电产生的合成磁场矢量。当步进电机的 A、B、C、D 四相轮流通电时,步进电机内部磁场从 TATBTCTD,即磁场产生了旋转。一般的,当步进电机的内部磁场变化一周时,电机的转子转过一个齿距,即改变一次通电状态,转子转过一个步距角。该步距角的计算公式为:其中: 代表接入绕组的线路状态数,m 代表电动机的相数,Z x 代表转子齿数。由此可见,步进电机一旦制造出来,其相数与转子齿数将为定值,要想减小步距角,以达到细分的目的,用户能改变的只有 。在无细分的步进电机驱动系统中,通过各相绕组的电流幅值是

9、不变化的,仅在各相通电状态变化时, 值才相应地变化。如对于四相步进电机来说,单四拍或双四拍运行时, = l ;当电机以四相八拍运行时,=2,实现了步距角的二细分。由于各相绕组的电流是个开关量,即绕组中的电流只有零和某一额定值两种状态,相应的各相绕组产生的磁场也是个开关量,只能通过各相电流的通电组合来改变步距角。所以要想增大,必须使绕组中的电流按阶梯上升和下降,即在零与最大相电流之间有多个稳定的中间电流状态,相应的磁场矢量幅值也存在多个中间状态,这样,相邻两相或多相的合成磁场的方向也将有多个稳定的中间状态。图 1 所示为四相步进电机八细分时各相电流波XbmZ360Xbm360C 相 B 相 A

10、相 相D 相 形,各相电流均以最大电流值的 1/4 上升和下降。与单四拍方式相比, 值从 2 增加到8,步距角 b 为单四拍运行方式时的 1/8。所以步进电机细分驱动的关键在于控制电机各相励磁绕组中的电流大小及其稳定性。图 1 三相步进电机八细分各相电流状态图改变步进电机相电流通常采用电流矢量恒幅均匀旋转的细分方法来实现,即同时改变两相电流 iA 和 iB 的大小,使电流合成矢量等幅均匀旋转。iA 和 iB 的变化曲线可描述为:iA = ImcosxiB = Imsinx三相步进电机八细分时的各相电流是以 1/4 的步距上升或下降的,在两相稳定的中间状态,原来一步所转过的角度将由八步完成,实现

11、了步距角的八细分。三、Quartus II 概述Quartus II 是 Altera 公司的综合性 PLD 开发软件,支持原理图、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整 PLD设计流程。Quartus II 可以在 XP、Linux 以及 Unix 上使用,除了可以使用 Tcl 脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II 支持 Altera 的

12、IP 核,包含了 LPM/MegaFunction 宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方 EDA 工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放 EDA 工具。此外,Quartus II 通过和 DSP Builder 工具与 Matlab/Simulink 相结合,可以方便地实现各种 DSP 应用系统;支持 Altera 的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为 Altera 的上一代 PLD 设计软件,由于其出色的易用性而得到了

13、广泛的应用。目前 Altera 已经停止了对 Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera 在 Quartus II 中包含了许多诸如 SignalTap II、Chip Editor 和 RTL Viewer 的设计辅助工具,集成了 SOPC 和HardCopy 设计流程,并且继承了 Maxplus II 友好的图形界面及简便的使用方法。四、课题设计(一)总体设计从图 1 中可以看出,一般情况下总有二相绕组同时通电。一相电流逐渐增大,另一相逐渐减小。对应于一个步距角,电流可以变化 N 个台阶,也就是电机位置可以细分为

14、N 个小角度,这就是电机的一个步距角被 N 细分的工作原理。也可以说,步距角的细分就是电机绕组电流的细分,从而可驱动步进电机平滑运行。 图 2 为步进电机细分驱动系统结构图。步距细分电路是由 PWM 计数器、ROM 地址发生器、PWM 波形存储器、比较器、功放电路所组成。其中,PWM 计数器在时钟脉冲作用下递增计数,产生阶梯形上升的周期性锯齿波,同时加载到三相步进电机各相数字比较器的一端;波形 ROM 输出的数据 q86、q53、q20分别加载到比较器的另一端。当 PWM 计数器的计数值小于波形 ROM 输出数值时,比较器输出高电平;而当大于波形 ROM 输出值时,比较器输出低电平。由此可输出

15、周期性的 PWM 波形。根据图 1 步进电机八细分电流波形的要求,将各个时刻细分电流波形所对应的数值存放于波形 ROM 中,波形 ROM 的地址由地址计数器产生,地址计数器有 3 个控制端,可用于改变步进电机的旋转方向、转动速度、工作/停止状态。FPGA 以产生的 PWM 信号控制驱动电路的导通和关断。PWM 信号随 ROM 数据而变化,改变 ROM 中的数据就可以改变输出信号的占空比,实现限流及细分控制,最终使电机绕组电流呈现阶梯形变化,从而达到步距细分的目的。图 2 步进电机细分驱动系统结构图 (二)细分电流的实现从 LPM_ROM 输出的数据加在比较器的 A 端,PWM 计数器的计数值加

16、在比较器的 B 端,当计数值小于 ROM 数据时,比较器输出低电平;当计数值大于 ROM 数据时,比较器输出高电平。如果改变 ROM 中的数据,就可以改变一个技术周期中高低电平的比例。(三)细分驱动性能的改善在线性电流的驱动下,步进电机的微步进是不均匀的,呈现出明显的周期性波动。磁场的边界条件按齿槽情况呈周期性重复是导致微步距周期性变化的原因。同时,不可避免的摩擦负载(摩擦力矩是不恒定的,或者说在一定范围内也是不确定的)以及其他负载力矩的波动导致失调角出现不规则的小变动或小跳跃,也使微步距角曲线在周期性波动上出现不光滑的小锯齿形。方向控制 使能 地址产生时钟 脉宽控制 数 字 比 较 器 B

17、B 相 绕 组 C 相绕组 D 相绕组 功 放 功 放 功 放 数 字 比 较 器 C数 字 比 较 器 D PWM 计 数 器 地 址 计 数 器 PWM 波形 ROM OUTY30 Vcc 数 字 比 较 器 A 功 放 A 相 绕 组步进电机的电流矩角特性并非线性函数,而是近似于正弦函数。若电流呈线性上升或者下降,必然会造成每一细分步的步距角不均匀,从而影响步距精度。为此,要在设计中提高 LPM_ROM 的数据精度,将数据提高到 16 位,使输出的步进细分电流近似为正弦电流,这样不仅提高了步距精度,而且可以改善低频震荡。(四)程序设计图 3 为步进电机 PWM 控制电路。CNT8 是十六

18、进制计数器,构成 PWM 计数器,将整个PWM 周期分成 4 等份,产生阶梯形上升的周期性锯齿波,同时加载到四相步进电机各相数字比较器的一端;CNT32 是三十二进制计数器构成 ROM 地址发生器,计数器的 u_d 为方向控制,EN 为使能控制,clk_d 为速度控制,可以通过 u_d、EN 和 clk_d 控制步进电机的旋转方向、工作/停止和旋转速度;s 为模式选择控制,可以选择正常运转模式或者是细分驱动模式。ROM 是宽度为 16 位,深度为 32 位的存储器,存放了各个时刻细分电流波形所对应的数值;CMP 为数字比较器,用于 ROM 输出的数据和 PWM 计数器计数值的比较。输出细分电流

19、信号采用 FPGA 中 ROM 查表法,它是通过在不同地址单元内写入不同的 PWM 数据,用地址选择来实现不同通电方式下的可变步距细分。从 ROM 输出的数据加在比较器的“a”端,PWM 计数器的计数值加在比较器的“b”端,当计数值小于 ROM 数据时,比较器输出高电平;当计数值大于 ROM 数据时,比较器则输出低电平。如果改变ROM 中的数据,就可以改变一个计数周期中高低电平的比例。图 3 步进电机 PWM 控制电路下面具体来阐述一下各个元件的设计:图 5 为十六进制计数器的 RTL 图,通过不断输出十六进制数与 ROM 中的数据作比较。计数器的 VHDL 语言程序见附录 2.图 4 十六进

20、制计数器图 6 为三十二进制计数器 RTL 图,可以输出五位二进制的地址,以便可以查询 ROM 表。程序见附录 3。图 5 三十二进制计数器图六为四个比较器的 RTL 图,当计数值小于 ROM 数据时,比较器输出高电平;当计数值大于 ROM 数据时,比较器则输出低电平。比较器的输出为步进的四相输入端提供 PWM 波形,从而达到 PWM 控制。程序见附录 4图 6 比较器图 7 为多路选择器,利用 s 端可以选择控制步进电机的运转方式,s=0 时,步进电机为PWM 控制,s=1 是步进电机的普通运转方式。程序见附录 5.图 7 多路选择器图 9 的功能是从三十二进制计数器的输出端引入数据并把它转

21、化成步进电机的普通四相驱动方式。程序见附录 6图 8 计数转换器 PWM 波形 ROM 表是通过 Quartus II 中的宏功能模块定制而成,利用 FPGA 中的嵌入式 EAB 构成 LPM-ROM,存放步进电机各相细分电流所需的 PWM 控制波形数据表。ROM 数据和程序见附录 7 和附录 8.六、仿真与测试结果分析图 9 是四相步进电机 PWM 仿真波形图,图中展示了 FPGA 控制步进电机的情况。ROM输出的 16 位数据 q150,作为步进电机各相电流的参考值,每 4 位二进制(l 位八进制)数值控制一个相,分别用于控制步进电机 A、B、C 三相的工作电流。对于每一相来说,当输出数据

22、为 0 时,该相电流为 0;输出数据为 1 时,脉宽高电平占一个 PWM 周期的 1 / 4; 当输出数据为 2 时,脉宽高电平占一个 PWM 周期的 2/4;当输出数据为 4时,整个 PWM 周期均输出高电平。PWM 输出电流的平均值与旋转角度成正比。图 9 中也给出了步进电机从 A-AB-B-BC-C-CD-D-DA 四相八拍工作过程的仿真波形。首先,步进电机 A 相导通,B、C、D 相截止,q150输出数据为 F000;A 相的数据为 F,其他相的数据为 0。然后逐渐过度到 AB 相导通,q160输出数据为F600-F900-FC00-FF00, B 相的数据逐渐增大,从 1 增大到 4

23、。电机中的磁场经过 4拍,从 A 相转到了 AB 相。再经过 4 拍,从 AB 相转到 B 相;q150输出数据为 CF00-9F00-6F00-0F00, A 相的数据逐渐减小,从 4 变为 0。从 A 到 AB 到 B 共经过了 8 拍,实现了步距角的 8 级细分。此外由于步进电机是电感性负载,对输出的 PWM 电流具有平滑滤波作用,对电机线圈起作用的是 PWM 的平均电流,因此在效果上将图中的细小毛刺电流滤除。图 9 仿真波形 1图 10 是在 clk_d 的频率比较高的情况下的仿真图。和图 9 比较可以看出,clk_d 的频率越大,PWM 波形比较密集,步进电机的转速越高,即 clk_

24、d 是速度控制信号。图 10 仿真波形 2图 11 和图 9 对比,可以看出,当 u_d 为高电平时,ROM 表中输出的数据和图 9 顺序相反,输出的 PWM 波形也和图 9 相反。因此,步进电机的内部磁场从DDCCBCBABADA,电机反转。图 11 仿真波形 3图 12 是在 s 为高电平时的仿真图,当 s=1 时,步进电机为单四拍常规运转方式,内部磁场从 ABBCCDDA。实测结果表明,要是步进电机细分后获得均匀的步进转角,其 PWM 驱动电流应近似于正弦电流,而非线性递增的电流,因此 ROM 文件中的数据进行适当选择,使每一步的电流增加量近似正弦波,并根据实际转角做了适当调整。由于 P

25、WM 的输入时钟频率较高,因此可以获得均匀的平均电流,并且每一步的时间间隔相等,转角近似均匀。七、结论通过利用 FPGA 中嵌入式 EAB 构成的 LPM-ROM 存放电机转角细分电流所需的数据表,由数字比较器同步产生多路 PWM 电流波形,对多相步进电机的转角进行均匀细分,有效地控制步进电机。若提高波形表数据的位数,增加计数器和比较器的位数,就可以提高PWM 波形的细分精度,对步进电机的步进转角进行任意细分,实现步进转角的精确控制。此实现方法比目前单片机加 D/A 的控制方案更加高效。试验证明,此系统功能满足设计要求,控制灵活,集成度高。驱动器在减少体积、降低开发成本的同时,又增加了稳定性和

26、可靠性,具有较好的动态和静态驱动特性,有效地提高步进电机的运行效果。参考文献1 李华德等,交流调速控制系统.北京:电子工业出版社,2003.3:22-272 潘松等,EDA 技术实用教程M.北京: 科学出版社 20053 雷凯等,步进电机细分驱动中绕组电流的修正J.苏州大学学报 2003.1:38-404 杨忠宝,林海波,基于 80C196MC 的步进电机斩波恒流均匀细分电路的实现 J.微计算机信息 2003.7:51-525 袁丽肖,王健等,直接转矩控制系统的自适应模糊控制方法的研究J.微电机 2006.33(9):26-296 翁良科,伊仕.基于 Verilog HDL 描述的多用途步进电

27、机控制芯片的设计J.电子技术应用,20027程浩.三相混合步进电机细分驱动的研制D.浙江:浙江大学.20018李恩光.机电伺服控制技术.东华大学出版社,2003注 释PWM 技术: 脉宽调制(PWM:(Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。简而言之,PWM 是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无

28、(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。PWM 的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑 1 改变为逻辑 0 或将逻辑 0 改变为逻辑 1 时,也才能对数字信号产生影响。 对噪声抵抗能力的增强是 PWM 相对于模拟控制的另外一个优点,而且这也是在某些时候将 PWM 用于通信的主要原因。从模拟信号转向 PWM 可以极大地延长通信距

29、离。在接收端,通过适当的 RC 或 LC 网络可以滤除调制高频方波并将信号还原为模拟形式。附 录附录 1:顶层程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity djxf isport(clk,clk_d,u_d,s,en:in std_logic;y:out std_logic_vector(3 downto 0);end entity djxf;architecture behav of djxf iscomponent cnt8port(clk:in std_logic;cq:

30、out std_logic_vector(3 downto 0);end component;component dec2port(clk: in std_logic;a: in std_logic_vector(1 downto 0);d: out std_logic_vector(3 downto 0);end component;component cnt32port(clk,en,u_d:in std_logic;cq:out std_logic_vector(4 downto 0);end component;component pwm_romPORT(address : IN ST

31、D_LOGIC_VECTOR (4 DOWNTO 0);inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);end component;component cmpport (a,b:in std_logic_vector(3 downto 0);agb:out std_logic);end component;component muxport(a,b: in std_logic_vector(3 downto 0);s: in std_logic;y:out std_logic_vector(3 downto 0);e

32、nd component;signal sgn1:std_logic_vector(3 downto 0);signal sgn2:std_logic_vector(4 downto 0);signal sgn3:std_logic_vector(15 downto 0);signal sgn4,f:std_logic_vector(3 downto 0);beginu1:cnt8 port map(clk=clk,cq=sgn1);u2:cnt32 port map(clk=clk_d,en=en,u_d=u_d,cq=sgn2);u3:pwm_rom port map(inclock=cl

33、k_d,address=sgn2,q=sgn3);cmp1:cmp port map(a=sgn3(15 downto 12),b=sgn1,agb=f(3);cmp2:cmp port map(a=sgn3(11 downto 8),b=sgn1,agb=f(2);cmp3:cmp port map(a=sgn3(7 downto 4),b=sgn1,agb=f(1);cmp4:cmp port map(a=sgn3(3 downto 0),b=sgn1,agb=f(0);u4:dec2 port map(clk=clk,a=sgn2(1 downto 0),d=sgn4);m:mux po

34、rt map(a=f,b=sgn4,s=s,y=y);end architecture behav;附录 2:十六进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt8 isport(clk:in std_logic;cq:out std_logic_vector(3 downto 0);end cnt8;architecture behav of cnt8 issignal cqi:std_logic_vector(4 downto 0);beginprocess(cl

35、k)beginif clkevent and clk=1 then cqib then agb d d d d null;end case;end process;process(clk)beginif clkevent and clk=1 then cq “Cyclone“,width_a = 16,widthad_a = 5,numwords_a = 32,operation_mode = “ROM“,outdata_reg_a = “UNREGISTERED“,address_aclr_a = “NONE“,outdata_aclr_a = “NONE“,width_byteena_a

36、= 1,init_file = “G:/qin/pwm_rom/pwm_rom.mif“,lpm_hint = “ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=ROM“,lpm_type = “altsyncram“)PORT MAP (clock0 = inclock,address_a = address,q_a = sub_wire0);END SYN;谢 辞在这里我要感谢我的指导老师郑亚民老师的悉心指导,通过她的指导我才能很好的完成此设计。郑老师在不同的时间定时给我们的毕业设计做出建设性的意见,使我在此次设计中学习到了更多的知识和技巧,而这一点确是比任何东西都有价值的。同时,我还要感谢其他老师和同学给我的支持和帮助,没有他们的帮助,我是不可能这么顺利的完成设计的。

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

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报