温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
HDL_FPGA
步进
电机
驱动
控制器
设计
Science and Technology&Innovation科技与创新2023 年 第 04 期5文章编号:2095-6835(2023)04-0005-03基于 HDL/FPGA 的步进电机驱动控制器设计段 简1,张奕婷1,郑晓峰1,陈 磊1,周 颖1,钱 敏1,2(1.苏州城市学院电子信息工程系,江苏 苏州 215104;2.苏州大学电子信息学院电子科学与技术系,江苏 苏州 215006)摘要:步进电机可以把输入的电脉冲信号转换为离散的机械运动,FPGA 被作为核心器件来实现对步进电机的驱动控制。通过使用 Verilog HDL,设计一个步进电机的驱动控制电路;使用 Quartus II 软件,实现对四相步进电机驱动控制程序的编译和仿真验证驱动程序的功能;通过波形仿真对程序进行分析,验证输出波形是否满足控制系统的需要。最终下载测试表明,所设计的控制系统能够完整地实现四相步进电机正转、反转和复位功能。关键词:步进电机;驱动控制器;EDA;Verilog HDL中图分类号:TP311文献标志码:ADOI:10.15913/ki.kjycx.2023.04.002步进电机是一种应用范围广泛的驱动控制装置,其工作原理是将输入的电脉冲信号进行转换,使自身产生相对应的角位移或者线位移1-2。步进电机的角位移量或线位移量与步进电机接收到的脉冲数成正比,即输入的脉冲信号越多,步进电机的角位移或线位移就越多。而步进电机的转速则由输入脉冲的频率控制,输入的电脉冲信号的频率越高,步进电机的转速就越快。步进电机根据结构的不同,主要可以分为 3 种类型,即反应式(VR)、永磁式(PM)和混合式(HS)3。本次设计所采用的步进电机是四相反应式步进电机,其示意图如图 1 所示。图 1四相反应式步进电机与传统设计方法相比,采用基于硬件描述语言/现场可编程门阵列 HDL/FPGA(Hardware DescriptionLanguage,Field Programmable Gate Array)的 EDA(Electronic Design Automation)设计方法设计数字系统有巨大的优越性,且已成为大规模集成电路设计中使用最广泛的一种方法。在控制驱动步进电机时,由于步进电机能直接接收数字量的输入来控制电脉冲,且电路设计比较简单,适宜采用 HDL/FPGA 实现;通过 FPGA 开发工具 Quartus 可以高效地进行编译综合、波形仿真、下载测试,从而能够简化设计、提升效率、实现功能模块化3-4。1步进电机的工作原理和驱动方式如图 1 所示,步进电机主要由 2 部分组成:一个是定子,上面有几组缠绕着线圈的齿;另一部分是可自由转动的转子。定子有 4 相绕组,转子上一共有 6个齿。以电机的四相单四拍的通电模式为例,反应式步进电机的工作原理是利用了物理上的“磁通总是力图使自己通过的路径的磁阻最小”所产生的磁阻转矩,驱动电机发生转动。开始时,只有 B 相绕组通电,由于电流在步进电机中产生一个穿过转子的磁场,而这个磁场将转子磁化,此时距离 B 相最近的齿会被吸引,直到与 B 相绕组对齐。由于图中 0、3 号齿本就与 B相绕组对齐,所以此时转子不发生转动。只有当 C 相绕组通电时,因为距离 C 相绕组最近的 1、4 号齿未与C 相绕组对齐,所以此时在磁场的作用下,C 相绕组会产生一个吸引转矩,吸引距离 C 相绕组最近的 1、4基金项目2020 年教育部产学合作协同育人项目(编号:202002309014);2021 年江苏省大学生创新创业训练计划项目(编号:202113983005Y)VCC科技与创新Science and Technology&Innovation62023 年 第 04 期号齿向 C 相绕组靠近,即在磁场作用下,转子逆时针转动。当转子转动至 1、4 号齿与 C 相绕组对齐时停止。当只有 D 相绕组通电时,因为磁场作用,2、5 号齿被吸引,转子发生转动。以此类推,通过不断切换通电的相,电机就能不停地转动。除了电机每次单相通电的供电方式,即四相单四拍的通电方式之外,电机的四相绕组的供电方式还有四相双四拍和四相单、双八拍的通电方式。四相双四拍的通电方式为:每次有两相相邻绕组接通电源,如 A、B 相绕组通电而 C、D 相绕组不通电。若初始状态如图 1 所示,那么 A、B 相绕组通电时,因为磁场作用产生的转动力矩,会吸引 0、3 号齿与 A、B 相绕组磁极的中间线对齐。当只有 B、C 相绕组通电时,同理 0、3 号齿应该与 B、C 相绕组磁极的中间线对齐。以此类推可得到供电方式为四相双四拍时电机的转动状态。本次设计采用的四相单、双八拍的通电方式为单相通电和双相通电交替进行的模式。这种模式将步进电机转动 1 圈的拍数从 4 拍变为 8 拍,使步进电机每次转动的角度变为四拍状况下的 1/2,即四相单、双八拍的步距角是单四拍或双四拍步距角的 1/2。当控制电机反转时,只需要将四相绕组的通电顺序改为与电机正转时的通电顺序相反即可。步进电机的步距角就是步进电机每转一次时转子转过的角度。步距角的计算公式为:k360mCZ=(1)式(1)中:m 为步进电机径向相对的绕组数,也就是相数;C 为步进电机工作的拍数和相数的比值,即步进电机以单四拍和双四拍的通电模式工作时,C=1,而当步进电机以单八拍和双八拍的通电模式工作时,C=2;Zk为转子的小齿数,本次设计所使用的四相步进电机的转子小齿数为 64。因为步进电机经过一个 1/8 的减速器引出,所以本次设计所使用的四相步进电机实际的步距角是=9 087.08512360。2步进电机驱动控制的实现本次设计采用四相单、双八拍的通电模式来控制四相步进电机的转动,A、B、C、D 这 4 个相的通电与否由 4 路 I/O 信号并行控制,即由 FPGA 的四位 I/O口输出 4 路脉冲信号,分别控制四相步进电机的 4 个相。FPGA 输出的脉冲信号经过功率放大之后,进入步进电机的各相绕组5,由此便实现了由 FPGA 输出的脉冲信号直接控制步进电机的驱动,而不再需要脉冲分配器来对输入的电脉冲信号进行分配。图 2 为四相步进电机与 FPGA 板的连接示意图。图 2四相步进电机在开发板中的接法按照四相单、双八拍的控制方法来驱动四相步进电机进行正转时,电机四相绕组的通电顺序依次为 AABBBCCCDDDA。高电平为接通电源,低电平为不接通电源,容易得到在控制电机正转时,FPGA 四位 I/O 口的值,如表 1 所示。当电机反转时,4 个相的通电顺序与电机正转时的通电顺序相反,即通电相序为 ADADCDCBCBAB,此时FPGA 四位 I/O 口的值应与电机正转时四位 I/O 口输出值的顺序相反。表 1电机正转时 FPGA 四位 I/O 口的值十六进制二进制通电状态1H0001A3H0011AB2H0010B6H0110BC4H0100CCH1100CD8H1000D9H1001DA因为步进电机需要完成正转和反转 2 种工作,所以控制四相步进电机不仅需要能驱动电机转动的电脉冲信号 clk,还需要复位信号 rst 和控制电机正反转的方向信号 dir。步进电机的原理图如图 3 所示。图 3设计原理框图本设计采用 Verilog HDL 的编程方法,在Quartus II 9.1 软件中实现步进电机驱动控制电路的搭建、编译和波形仿真等工作。其中,实现主要功能部分的代码如下:if(clk=1b1)beginStepCounter=StepCounter+31b1;if(StepEnable=1b1)beginInternalStepEnable=StepLockOut)rstdirrstdirScience and Technology&Innovation科技与创新2023 年 第 04 期7beginStepCounter=32b0;if(InternalStepEnable=1b1)beginInternalStepEnable=StepEnable;if(Dir=1b1)beginstate=state+3b001;endif(Dir=1b0)beginstate=state-3b001;endcase(state)3b000:begin StepDrive=4b0001;end3b001:beginStepDrive=4b0011;end3b010:begin StepDrive=4b0010;end3b011:begin StepDrive=4b0110;end3b100:begin StepDrive=4b0100;end3b101:beginStepDrive=4b1100;end3b110:begin StepDrive=4b1000;end3b111:begin StepDrive=4b1001;endendcaseendendend代码主要实现了驱动电机时四位 I/O 口的 8 种输出状态,以及通过方向控制变量 dir 来控制电机的正转和反转。当通过使用条件语句时,state 的值为 000111,分别对输出变量 step_drive 进行赋值。state 的值一共有 8 个,每个值对应着步进电机 4 个相的不同通电状态,当控制方向的变量 dir 为 1 时,电机正转,state的值按照上面代码所展示的从上到下的顺序依次变化;而控制方向的变量 dir 为 0 时,电机反转,state 的值按照从下到上的顺序依次变化。3波形仿真与下载测试利用 Quartus II 9.1 软件对整个步进电机驱动控制器设计 HDL 代码并进行波形仿真。图 4 为电机正转时 FPGA 四路 I/O 口的输出波形及接收到复位信号后的输出波形。其中 clk 为控制电机转动的电脉冲信号;StepEnable 为控制电机是否工作的使能端,在进行波形仿真时,StepEnable 一直处于置 1 状态;rst 为复位信号,置 1 时电机正常运转,置0 时电机复位;dir 为方向信号,当 dir 的值为 1 时,电机正转(逆时针旋转),当 dir 的值为 0 时,电机反转(逆时针旋转)。电机反转时的 FPGA 的四路 I/O 口的输出波形如图 5 所示,FPGA 四路 I/O 口数值为 0001,即步进电机反转时第一个状态为 A 相通电,随后四路 I/O 口输出波形和表 1 所描述的相反。当接收到复位信号时,四路 I/O 口的值变为 0000,然后重新从 0001 开始。即当步进电机接收到复位信号以后,步进电机的 4 个相均不通电,然后重新从 A 相通电的状态开始,步进电机重新开始旋转。图 4电机正转时输出波形及复位后波形图 5电机反转时的输出波形及复位后波形当实现控制步进电机进行正反转状态切换的功能时,FPGA 的四路 I/O 口的输出波形如图 6 所示。当方向信号 dir 的值由 1 变为 0 时,四路 I/O 口的值为 0011,在下一个使电机旋转的电脉冲信号到达后,四位 I/O输出的值变为 0010,即电机由正转变为反转的状态。所以在控制电机在从正转变为反转(或反转变为正转)时,电机保持现有的状态,等下一个控制电机旋转的脉冲信号到来时,电机变为反转状态(正转状态)。通过波形仿真结果,验证了步进电机驱动控制器设计程序的功能,即能够控制电机进行正转、反转、复位及正反转状态的切换。经过下载测试,与仿真结果相符,达到了设计要求。图 6电机正反转切换时的输出波形4结束语本文介绍了使用 Verilog HDL 对步进电机的驱动电路进行描述,利用 Quartus II 软件对 Verilog HDL 设计程序进行逻辑功能的验证,最终通过 FPGA 开发板下载测试,完成了对步进电机驱动控制的实际功能的验证。(下转第 12 页)科技与创新Science and Technology&Innovation122023 年 第 04 期覆冰位置皆存在一定关系,结合上文模拟结果及调查讨论,现得出以下几点结论:随着环境温度逐渐降低,导线覆冰厚度体现为先增后减