凌 松,駱敏舟,王善杰
(1.常州大學,常州 213000;2.常州先進制造技術研究所,常州 213000;3.合肥工業(yè)大學,合肥 230022)
基于FPGA的五軸聯動控制器的設計
凌 松1,駱敏舟1,王善杰3
(1.常州大學,常州 213000;2.常州先進制造技術研究所,常州 213000;3.合肥工業(yè)大學,合肥 230022)
在機器人運動控制系統中,要求機器人沿某一指定軌跡運行時,必須將軌跡分割成許多小段,通過求解各個中間點的逆運動學方程,計算出一系列的關節(jié)角度,控制器根據得出的每個時刻的關節(jié)量驅動各軸電機聯動,以保證準確的經過所有中間點。一般伺服電機和步進電機的驅動器采用脈沖加方向的控制模式,脈沖的數量對應運行位置,脈沖頻率對應運行速度,所以多路脈沖的輸出控制,成為多軸聯動的關鍵技術之一。
在文獻[1,2]中,作者主要是利用DSP的PWM模塊來實現多路脈沖的輸出以達到多軸聯動,經過分析得出,采用這種方法,需要占用DSP的內部資源,降低了處理速度,而且輸出的脈沖頻率范圍窄,分辨率不高。
本文以控制5路步進電機為例,采用現場可編程門陣列(FPGA)利用直接數字頻率合成(Direct Distal Frequency Synthesis,DDS)算法實現了的5路脈沖輸出,并設計了SPI接口與DSP芯片通訊。這種方案有效減輕了控制系統中DSP的負擔,而且實現了較高分辨率的脈沖輸出,提升了多軸聯動的效果。
系統主要由三個部分組成,如圖1所示。DSP采用TI公司的TMS320F28335芯片,主要用于空間軌跡的規(guī)劃計算,通過求解逆運動學方程,得出各個軸在不同時刻的位移量,然后再轉換成脈沖的數量和頻率,通過通信口發(fā)送給FPGA處理。FPGA用的是Altera公司的EP2C5T144C8N芯片,通過設計SPI通信模塊,接收DSP的脈沖信息,然后通過脈沖生成模塊完成對5路脈沖數量和頻率的控制。步進電機為三相混合電機,驅動器型號為斯達特的MSa-3H110M,設置為脈沖加方向的控制模式。
圖1 總系統框圖
本文通過對利用DSP的脈沖模塊生成脈沖的方法與采用DDS算法生成脈沖的方法進行了介紹和比較,闡明了后者控制算法的優(yōu)越性。
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算法實現了多路脈沖的發(fā)生功能,同時設計了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的讀取就能得出已發(fā)出的脈沖數量,實現對脈沖數量的控制。
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為輸出寄存器,用于將接收到的數據發(fā)送給脈沖產生模塊處理。SPI模塊接收完一個完整的數據包后,還需要將脈沖數據存入對應的脈沖產生模塊的寄存器中。
通信協議可以自定義,只需將每個軸的脈沖頻率、數量和方向按自定義格式放在SPI總線上發(fā)送即可,FPGA就能根據協議進行數據分析,控制各軸的脈沖輸出。
實驗中利用DSP芯片通過SPI總線發(fā)送5路脈沖的頻率和數量的信息,利用示波器觀察FPGA輸出的波形(如圖6所示)。發(fā)送協議如圖5所示,依次發(fā)送的是從第一個軸到第五個軸的脈沖數量和頻率。
表2 脈沖輸出對照表
圖5 SPI通訊協議
從表2可以觀察出,控制器能夠準確解析通信協議,實際輸出的脈沖與理論要求的值吻合。并且輸出脈沖在1Hz~50KHz范圍內,波形特性良好,可以滿足電機聯動控制的要求,如圖6所示。
圖6 五路聯動步進脈沖信號
本文主要研究了基于FPGA實現多路脈沖的輸出控制,為多軸聯動提供了硬件基礎,可以讓上位機專注于運動控制算法的處理,無需操作底層的脈沖輸出,提升運動控制系統的運行效率,并在實際中得到很好的應用。
[1]許賢澤,喻佳,張立英.步進電機多軸聯動DSP控制系統研究[J].機電產品開發(fā)與創(chuàng)新,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模塊來生成多路脈沖的方法,從產生的脈沖頻率精度,范圍以及控制方式上,闡明該控制方法的優(yōu)勢。最后采用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