基于FPGA的多用途步进电机控制芯片的设计.doc
文本预览下载声明
基于FPGA的多用途步进电机控制芯片的设计
A Solution of Stepper Motor Control Chip Based on FPGA
北华大学电气信息工程学院 董胜 张文军 朱浩天
【摘 要】 介绍了一种基于FPGA的多功能步进电机控制芯片的可综合方案,该方案可方便地构成对四相步进电机转速及方向的控制系统。外接一些控制及驱动元器件,只需给定使能、时钟、转向以及工作模式信号,就可使系统工作。该方案采用模块化设计,可扩展性好,为步进电机的控制设计及应用提供了一种新的思路和实现方法。
关键词:FPGA核心器件,Verilog-HDL,四相步进电机,L298N,光耦
【Abstract】
Introduces a kind of comprehensive solution for multifunctional stepper motor control chip based on FPGA, the solution can be easily constitute the four phase stepper motor’s speed and the direction of the control system. Some external control and drive components, just given the energy, clock signal, steering and the working mode, can make the system work. The scheme adopts the modular design, good scalability, provides a new train of thought and implementation method for design and application of the stepper motor control.
Keywords:FPGA device Verilog-HDL Four phase stepper motor
1 引 言
步进电机是一种将数字信号转换为角位移或线性位移的控制驱动装置。它的速度和控制脉冲严格同步,响应速度极快,有较高的重复定位精度,大量应用在精密控制的场合。常用的步进电机控制系统,采用微机控制,用软件实现其步进脉冲的产生。这种方法程序量大,占用CPU时间较多,限制了步进电机速度的进一步提高,而且软件方式的抗干扰性能较差,在EMI较严重的场合其可靠性不如纯硬件电路。在硬件中,环形分配器逻辑关系复杂,用传统的分立元件实现,电路规模大,连接线复杂,灵活性差,功耗较大,其系统可靠性也不尽人意。
在传统的系统设计流程中,通常采用MCS-51单片机作为整个系统的主控制器,MCS-51单片机实现整个系统外设的管理和控制功能。但是从工程设计角度看,51单片机的I/O端口数量较少资源有限,而且单片机程序执行具有顺序性,因此51单片机只能通过外接端口扩展芯片,并采用分时操作的方式来实现对整个外设的控制和管理。相对于51单片机而言,FPGA器件具有硬件速度快、I/O端口数目更多、并行处理能力更强的优点,能够利用丰富的可编程资源针对不同的外设构造相应的逻辑电路,从而实现对外设接口的管理及控制。
2 芯片设计思想概述
2. 1 总体架构
整个芯片采用模块化设计方式,实现“手动”控制电机的“运转/停止”;当电机处于“运转”状态时,可“动态调节”电机的转速和方向;当步进电机每次接受到一组脉冲信号,便旋转一个角度。
2. 2 各部分功能分析
时钟分频控制部分:该部分实际上是用按键Keys和EN输入控制FPGA输出频率从而实现电机转速快慢的。
驱动逻辑控制部分:该部分包括模式选择,复位控制,方向控制。
3 各模块的设计
根据各部分的功能,将全系统分为时钟分频控制模块、驱动逻辑控制模块和顶层模块三部分。
各模块关系如图1所示。
3. 1 时钟分频控制电路的设计
通过按键Keys和EN输入控制FPGA输出频率多少从而实现电机转速快慢的目的。根据步进电机时钟频率的要求,尤其是空载时的启动频率很低大约为300HZ左右,而该FPGA系统板的时钟为28MHZ,所以在系统上电时的频率就应该在300HZ左右,修改下面的N,M和temp2参数就可以设定系统上电时的输出频率
在该模块中,包含两个进程,分别将时钟信号上升沿以及按键上升沿设置为触发的敏感事件。当EN=1,按动Keys加快电机转速;当EN=0,按动Keys减缓电机转速。每个Verilog 模块以module开头, 以endmodule 结束。下面给出时钟分频控制模块源程序:
module FreDi
显示全部