基于FPGA的步进电机多轴控制器设计
步进电机是一种完全数字化的电动执行机构,从原理上说,其角位移与驱动脉冲的个数成正比,在正常情况下,步进电机具有使用简单、运动精确、连续运行无累积误差等特点,因而被广泛应用于各种位置控制系统中。
当前由于仪器内部的机械系统日益复杂,其运动往往是多自由度的,因而通常需要利用多个步进电机的运动合成来实现系统的各种动作。例如,对图1所示的半自动生化分析仪的取样针移位系统,该系统的动作执行就是由两部分组成的:
一是固定基座上的步进电机控制取样横臂进行垂直方向上的升降运动;
二是滑块上的步进电机控制取样横臂进行水平方向上的旋转运动。
这两个运动的合成实现了取样横臂的位置变换。
传统的步进电机多轴控制器是以微控制器(MCU)/微处理器(MPU)/专用集成电路(ASIC)/数字信号处理器(DSP)为核心,再辅以其他外围分立器件构成的。这种结构的步进电机多轴控制器的优点在于其硬件结构清晰,易于复制再现,对于类似的应用只需要修改其应用软件即可。然而对于多数实际应用来说,单纯依靠软件的修改通常不足以使其达到其他应用场合所需的要求,并且当系统升级时,通常需要对整个电路重新进行设计,这样既延长了升级的周期,又增加了升级成本,因而在实际应用中受到了一定的限制。
由于可编程逻辑器件(PLD)技术的飞速发展,使得单一FPGA/CPLD芯片内部可以集成多个分立元件的功能,因此在对传统控制器的改进中,通常使用一个FPGA/CPLD芯片将传统控制器中的数字电路部分集成到一起,从而形成具有处理器-FPGA/CPLD-模拟电路结构形式的控制器。这类控制器比起传统控制器而言,其硬件结构的可扩展性得到了很大的提高。这是因为FPGA/CPLD芯片具有在不改变其引脚定义的情况下可对其内部逻辑关系进行重构的特性,因而对于不同的应用,可以通过改变FPGA/CPLD芯片的内部结构来满足某些特殊的应用需求,从而在一定程度上使得系统的开发升级更为简便,而且成本也更为低廉。因此,这种改进型的多步进电机控制器的应用范围也得到了很大的扩展。
这种结构的控制器也存在着这样的问题:在FPGA外部仍然存在一个处理器。这样不仅增加了控制器的尺寸,而且在升级处理器时,硬件电路需要重新设计,使升级成本仍然相对较高。
近年来,由于IP资源复用理念得到了普遍的认同并成为主要设计方式,MCU、DSP、MPU等嵌入式处理器IP成为了FPGA应用的核心。随着处理器内核以IP的形式嵌入到FPGA中,未来的电路板上可能只有两部分电路:模拟部分(包括电源)以及FPGA芯片和一些大容量存储器。
这一切都表明可编程片上系统(SOPC)正在成为FPGA最重要的发展方向。与传统多轴控制器相比,这种基于SOPC的步进电机多轴控制器具有体积小、集成度高、硬件结构稳定、易于开发升级且成本低廉等特点,尤其适用于仪器仪表内部控制系统的设计。本文所论述的步进电机多轴控制器就是基于SOPC方式的步进电机多轴控制器。
1 基于SOPC的步进电机多轴控制器的硬件结构
基于SOPC的步进电机多轴控制器的结构框图如图2所示。其外部电路的构成包含模拟电路和数字电路两部分。模拟电路包括供电电源及功率驱动。数字电路主要为FPGA芯片及其相关电路。
如图2,基于SOPC的步进电机多轴控制器包含两部分:FPGA芯片及其配置芯片的数字部分和电机控制及位置反馈部分。其中,虚线框内部表示FPGA芯片的内部结构,空心箭头表示FPGA芯片内部的数据连线,实心箭头表示外部连线。
FPGA芯片内部由MPU模块、通讯模块、RAM模块、ROM模块、计数器模块、电机控制模块等构成。当控制器失电时,这些模块信息存储在配置芯片中,等到系统重新上电时,FPGA芯片再从配置芯片中读取其配置信息,重构内部模块结构。MPU模块是整个控制器的核心,它的功能等同于事实的微处理器。它通过通讯模块与外部主机进行数据的交换,并将数据存储在RAM模块中。RAM模块同时还用于暂存MPU模块执行ROM模块所存储的程序段时的某些中间过程值,而MPU则根据ROM模块中程序执行的结果输出相应的控制信号给电机控制模块。
电机控制模块的输出连接到实际的芯片引脚上,以驱动相应的功率驱动电路工作,从而实现步进电机的运转。在闭环控制时,步进电机轴端的编码器模块输出编码信号。该信号经编码器反馈电路进行隔离等处理之后,由FPGA芯片内部的计数器模块进行计数,并将结果传输给MPU模块进行处理,从而形成位置/速度的闭环控制。
图2只表示了单个步进电机闭环控制的结构框图,对于多轴步进电机而言,FPGA芯片只需要增加相应的功率驱动电路及
FPGA步进电机多轴控制 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)