凌 松,骆敏舟,王善杰
(1.常州大学,常州 213000;2.常州先进制造技术研究所,常州 213000;3.合肥工业大学,合肥 230022)
基于FPGA的五轴联动控制器的设计
凌 松1,骆敏舟1,王善杰3
(1.常州大学,常州 213000;2.常州先进制造技术研究所,常州 213000;3.合肥工业大学,合肥 230022)
在机器人运动控制系统中,要求机器人沿某一指定轨迹运行时,必须将轨迹分割成许多小段,通过求解各个中间点的逆运动学方程,计算出一系列的关节角度,控制器根据得出的每个时刻的关节量驱动各轴电机联动,以保证准确的经过所有中间点。一般伺服电机和步进电机的驱动器采用脉冲加方向的控制模式,脉冲的数量对应运行位置,脉冲频率对应运行速度,所以多路脉冲的输出控制,成为多轴联动的关键技术之一。
在文献[1,2]中,作者主要是利用DSP的PWM模块来实现多路脉冲的输出以达到多轴联动,经过分析得出,采用这种方法,需要占用DSP的内部资源,降低了处理速度,而且输出的脉冲频率范围窄,分辨率不高。
本文以控制5路步进电机为例,采用现场可编程门阵列(FPGA)利用直接数字频率合成(Direct Distal Frequency Synthesis,DDS)算法实现了的5路脉冲输出,并设计了SPI接口与DSP芯片通讯。这种方案有效减轻了控制系统中DSP的负担,而且实现了较高分辨率的脉冲输出,提升了多轴联动的效果。
系统主要由三个部分组成,如图1所示。DSP采用TI公司的TMS320F28335芯片,主要用于空间轨迹的规划计算,通过求解逆运动学方程,得出各个轴在不同时刻的位移量,然后再转换成脉冲的数量和频率,通过通信口发送给FPGA处理。FPGA用的是Altera公司的EP2C5T144C8N芯片,通过设计SPI通信模块,接收DSP的脉冲信息,然后通过脉冲生成模块完成对5路脉冲数量和频率的控制。步进电机为三相混合电机,驱动器型号为斯达特的MSa-3H110M,设置为脉冲加方向的控制模式。
图1 总系统框图
本文通过对利用DSP的脉冲模块生成脉冲的方法与采用DDS算法生成脉冲的方法进行了介绍和比较,阐明了后者控制算法的优越性。
TMS320F28335有多达6路独立的PWM模块,可以同时产生6路独立的PWM。PWM频率是由周期寄存器TBPRD和计数器模式决定的,现将PWM模块工作于增计数模式。每步增加时间由时基时钟TBCLK决定,TBCLK由系统时钟SYSCLKOUT标定,系统时钟SYSCLKOUT设置为150MHz。
由DSP芯片手册,见参考文献[3],可得在增计数模式下PWM频率的计算公式:
其中,SYSCLKOUT=150000000,寄存器HSPCLKDIV设为1,寄存器CLKDIV设为64,整理后得:
由公式(3)可知更改寄存器TBPRD就可以改变PWM频率。
表1给出了生成PWM频率的范围。周期寄存器TBPRD是16位寄存器,能表示的十进制的范围为0-65535,超出这个范围的频率无法产生。并且当忽略小数部分的时候,会影响输出频率的精度。从数据结果可以得出,由PWM模块生成的脉冲频率范围很窄,在当前寄存器配置情况下频率范围在30Hz和500KHz之间,这样就带来了电机调速的局限性,只能在很小的范围内进行调速。
从表1格数据可以看出在35Hz到3000Hz之间PWM的分辨率较高,精度大于1Hz,而在频率相对较高的时候(10KHz以上),分辨率很差,步进频率大于5Hz,在多轴联动的情况下,容易产生某个运动轴运动过快或者过慢,造成机械臂的抖动。
从上述结果可以得出,由DSP芯片生成的PWM脉冲频率范围和分辨率不理想,实际使用范围有限。
采用DDS算法实现了多路脉冲的发生功能,同时设计了SPI通讯接口和通信协议完成对脉冲的控制。
表1 生成频率与周期寄存器值对照表
2.2.1 DDS算法实现
DDS是用于频率合成的一种方法[4],在给定时钟脉冲的驱动下,相位累加器和频率控制控制字进行累加运算,然后将结果作为下一次的输入值,其原理图如图2所示。相位累加器的溢出的频率就是所合成信号的频率,通过改变累加寄存器的计数步长就可以更改输出波形的频率。
图2 DDS原理图
合成信号的频率f和和频率控制字K满足以下函数关系式:
本文中FPGA的输入时钟为50MHz,为了产生步进为1Hz的脉冲频率,现在将累加寄存器N计数最大值设为50M,当K=1时,DDS频率分辨率的1/N。
采用Verilog HDL语言设计程序如下:
上述程序是用于产生单路脉冲的方法,可以看出采用DDS算法生成脉冲的程序编写简单。多路脉冲只需要在单路的基础上复制和稍加修改就能实现。其中,改变data_memory的值就能实现脉冲频率的改变,数值每增加1,相应的脉冲频率就增加1Hz,即脉冲步进为1Hz,能够实现高分辨率的脉冲输出。通过对cnt11的读取就能得出已发出的脉冲数量,实现对脉冲数量的控制。
2.2.2 SPI模块的设计
为了让DSP能够实现对脉冲频率和数量的控制,需要在FPGA上设计通信模块和相关协议。SPI的通信简单,只需4根线就能完成全双工、高速、同步的通讯[5],非常易于在FPGA上实现。SPI总线的的时序如图3所示。
图3 SPI时序图
最终采用Verilog HDL语言编写完成后的SPI模块如图4所示。
图4 SPI模块框图
其中,SCK为SPI时钟;SDI为数据串行输入端口;SDO为数据串行输出端口;CS为片选信号;R/W为读写信号;DATA为输出寄存器,用于将接收到的数据发送给脉冲产生模块处理。SPI模块接收完一个完整的数据包后,还需要将脉冲数据存入对应的脉冲产生模块的寄存器中。
通信协议可以自定义,只需将每个轴的脉冲频率、数量和方向按自定义格式放在SPI总线上发送即可,FPGA就能根据协议进行数据分析,控制各轴的脉冲输出。
实验中利用DSP芯片通过SPI总线发送5路脉冲的频率和数量的信息,利用示波器观察FPGA输出的波形(如图6所示)。发送协议如图5所示,依次发送的是从第一个轴到第五个轴的脉冲数量和频率。
表2 脉冲输出对照表
图5 SPI通讯协议
从表2可以观察出,控制器能够准确解析通信协议,实际输出的脉冲与理论要求的值吻合。并且输出脉冲在1Hz~50KHz范围内,波形特性良好,可以满足电机联动控制的要求,如图6所示。
图6 五路联动步进脉冲信号
本文主要研究了基于FPGA实现多路脉冲的输出控制,为多轴联动提供了硬件基础,可以让上位机专注于运动控制算法的处理,无需操作底层的脉冲输出,提升运动控制系统的运行效率,并在实际中得到很好的应用。
[1]许贤泽,喻佳,张立英.步进电机多轴联动DSP控制系统研究[J].机电产品开发与创新,2005,18(5):110-112.
[2]童勇鑫.基于TMS320F2812的模拟数控系统[J].机械,2008,35(11):68-69.
[3]Texas Instruments.Digital Signal Controller (DSC)[DB/OL].http://www.ti.com.cn/cn/lit/ds/symlink/sm320f28335.pdf.
[4]杨秀增.基于FPGA和DDS的信号源设计[J].电子设计工程,2009,17(11):7-8.
[5]华卓立,姚若河.一种通用SPI总线接口的FPGA设计与实现[J].微计算机信息,2008,24(17):212-213.
The design of 5-axis coordinate controller based on FPGA
LING Song1, LUO Min-zhou2, WANG Shan-jie3
在机器人运动控制系统中,利用脉冲增量法进行多轴联动控制时,需要在运行过程中实时改变
各轴伺服电机的脉冲数量和频率,以保证机械臂能够准确经过期望路径点。本文利用FPGA芯片,采用DDS算法实现了高精度5路脉冲的产生,并且设计了SPI接口和通讯协议与DSP主控芯片通信,完成了5路脉冲的实时控制。文中通过对比直接采用DSP芯片内部PWM模块来生成多路脉冲的方法,从产生的脉冲频率精度,范围以及控制方式上,阐明该控制方法的优势。最后采用Altera公司的EP2C5T144C8N搭建了硬件控制实验平台,实现了对五个步进电机的联动控制。
FPGA,DDS算法;步进电机;多轴联动
凌松(1986 -),男,江苏常州人,硕士,主要研究方向为机器人和嵌入式系统。
TP271
A
1009-0134(2014)06(上)-0138-03
10.3969/j.issn.1009-0134.2014.06(上).39
2014-03-11