尚宇峰,柯顯信,盧孔筆
(上海大學(xué) 機(jī)電工程與自動(dòng)化學(xué)院,上海 200072)
在機(jī)器人機(jī)電控制系統(tǒng)中,舵機(jī)控制效果是性能的重要影響因素。舵機(jī)是仿人機(jī)器人常用的輸出執(zhí)行機(jī)構(gòu),是一種伺服電機(jī),可以通過PWM信號(hào)控制舵機(jī)的轉(zhuǎn)動(dòng)角度,并且能在指定角度保持,承受一定的外力矩[1,2]。傳統(tǒng)的PWM信號(hào)的產(chǎn)生是由模擬電路產(chǎn)生的,產(chǎn)生PWM的電路結(jié)構(gòu)復(fù)雜,靈活性差。傳統(tǒng)實(shí)現(xiàn)PWM控制系統(tǒng)的核心控制芯片仍然是采用單片機(jī),利用單片機(jī)內(nèi)部的定時(shí)器來產(chǎn)生不同的占空比,從而控制PWM信號(hào)的輸出。但是利用定時(shí)器的方法控制精度低,在一些精度要求較高的場合實(shí)現(xiàn)的效果就會(huì)不理想,并且單片機(jī)系統(tǒng)的抗干擾能力差。FPGA與MCU相對(duì)比,F(xiàn)PGA的優(yōu)勢(shì)主要有速度快、系統(tǒng)資源豐富、應(yīng)用靈活等[3~5]。本文設(shè)計(jì)了一種基于FPGA的SOPC實(shí)現(xiàn)多路舵機(jī)的控制系統(tǒng),以實(shí)現(xiàn)4路PWM信號(hào)為例,可以根據(jù)不同的場合增加或減少PWM模塊,實(shí)現(xiàn)多路舵機(jī)的位置控制,通過軟件編程設(shè)計(jì),可以改變舵機(jī)的運(yùn)動(dòng)速度,通過LabVIEW中的VISA控件實(shí)現(xiàn)了PC機(jī)與FPGA的串口通信,該系統(tǒng)操作簡單,靈活可靠。
整個(gè)控制系統(tǒng)由應(yīng)用層、系統(tǒng)控制層、任務(wù)界面規(guī)劃層組成,如圖1所示。通過計(jì)算機(jī)發(fā)出指令到FPGA,由FPGA驅(qū)動(dòng)舵機(jī),完成機(jī)器人表情的實(shí)現(xiàn)。系統(tǒng)控制層主要包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。
圖1 控制系統(tǒng)
首先在SolidWorks環(huán)境下完成仿人機(jī)器人頭部機(jī)構(gòu)模型的建立,如圖2(a)所示。面部的各個(gè)機(jī)構(gòu)(眼、眼臉、下顎等)都是由舵機(jī)控制,控制幾個(gè)舵機(jī)同時(shí)運(yùn)動(dòng)到一定的位置,就能使機(jī)器人實(shí)現(xiàn)一些基本表情。舵機(jī)分為數(shù)碼舵機(jī)和模擬舵機(jī),數(shù)碼舵機(jī)的優(yōu)越性高于模擬舵機(jī),價(jià)格也相對(duì)高點(diǎn)。驅(qū)動(dòng)舵機(jī)的導(dǎo)線有三根,兩根電源線和一根控制線,如圖2(b)所示,這是一種數(shù)碼舵機(jī),中間紅色的線與電源的正極相連,褐色的線與電源的負(fù)極相連,黃色的是控制信號(hào)線。舵機(jī)是一種伺服電機(jī),舵機(jī)的控制信號(hào)為周期是20ms的脈寬調(diào)制(PWM)信號(hào),其中脈沖寬度從0.5ms~2.5ms,相對(duì)應(yīng)舵盤的位置為0o~180o,呈線性變化。給定脈沖,就能控制舵機(jī)到達(dá)指定的位置。
圖2 機(jī)器人頭部機(jī)構(gòu)與舵機(jī)
硬件設(shè)計(jì)依據(jù)SOPC的設(shè)計(jì),以IP核為基礎(chǔ),在機(jī)器人的控制系統(tǒng)設(shè)計(jì)中,重復(fù)使用已有的設(shè)計(jì)模塊,縮短了設(shè)計(jì)周期,提高整個(gè)系統(tǒng)的性能[6]。設(shè)計(jì)中采用的是Altera公司的Cyclone IV EP4CE15F17C8N核心板,此核心板集成了FPGA芯片、FLASH、SDRAM、EPCS、JTAG等基本芯片,提供了多達(dá)160個(gè)I/O口。首先利用SOPC Builder進(jìn)行硬件配置,添加一些基本模塊以及串口通信模塊,把PWM產(chǎn)生模塊定義為自定義模塊后加入系統(tǒng),配置如圖4所示。系統(tǒng)中的所有外設(shè)都掛載到Avalon總線上,以便用戶設(shè)計(jì)。編譯后產(chǎn)生相應(yīng)的軟核,如圖3所示,將配置文件下載到開發(fā)板上,然后再將舵機(jī)連接到輸出PWM口開發(fā)板的引腳上[7,8]。
圖3 SOPC Builder中的硬件配置
軟件的編寫是在Nios II環(huán)境下完成的,Nios核是Altera公司開發(fā)的非第三方微處理器IP軟核,它只占芯片內(nèi)部很少的一部分邏輯單元,成本很低,采用Avalon總線結(jié)構(gòu)通信接口,根據(jù)需要構(gòu)成各種不同的系統(tǒng)[9]。軟件設(shè)計(jì)的主要任務(wù)是實(shí)現(xiàn)PWM信號(hào)的不同的占空比,并且能通過串口從上位機(jī)接收到數(shù)據(jù)后將數(shù)據(jù)傳到下位機(jī),實(shí)現(xiàn)與計(jì)算機(jī)的通信功能。
舵機(jī)的速度變化對(duì)機(jī)器人表情的實(shí)現(xiàn)起到至關(guān)重用的作用,控制舵機(jī)速度有兩種方法。一是改變舵機(jī)的內(nèi)部結(jié)構(gòu),這種方法在機(jī)器人表情的實(shí)現(xiàn)過程中是不實(shí)際的;另一種方法就是通過軟件程序的編寫來實(shí)現(xiàn),即把需要轉(zhuǎn)過的角度θ分成n等份,在舵機(jī)每次轉(zhuǎn)過θ/n角度后添加一定的延時(shí),這個(gè)延時(shí)人的肉眼無法察覺,這樣就能改變舵機(jī)轉(zhuǎn)動(dòng)的速度,實(shí)現(xiàn)機(jī)器人不同表情之間的自然變化。程序流程如圖5所示。
圖4 軟核
圖5 程序流程圖
有時(shí)考慮到特殊的情況,也需要舵機(jī)的轉(zhuǎn)速能按照一定的特定規(guī)律進(jìn)行運(yùn)動(dòng),如按照正弦的規(guī)律運(yùn)動(dòng),在這樣的情況下,也是要通過軟件設(shè)計(jì)來完成的。按正弦曲線的速度來運(yùn)動(dòng),可以算出每個(gè)時(shí)間間隔應(yīng)該走過的角度,然后在程序中對(duì)應(yīng)實(shí)現(xiàn)就可以了。
對(duì)系統(tǒng)硬件進(jìn)行仿真,設(shè)置clk 50MHz,PWM信號(hào)周期為20ms,4路信號(hào)的占空比分別設(shè)為2.5%、7.5%、10%和12.5%,得到的仿真結(jié)果如圖6所示,符合預(yù)期功能設(shè)計(jì)。
圖6 四路PWM信號(hào)
通過示波器對(duì)FPGA開發(fā)板的占空比為10%的輸出口進(jìn)行測(cè)試,波形如圖7所示,波形與仿真結(jié)果相同,連接上舵機(jī),能使得舵機(jī)轉(zhuǎn)到指定的角度。采用角度插值的方法,實(shí)現(xiàn)舵機(jī)的速度調(diào)節(jié)。
圖7 實(shí)驗(yàn)波形
LabVIEW通過VISA與串行接口儀器通信。VISA是應(yīng)用于儀器編程的標(biāo)準(zhǔn)I/O應(yīng)用程序接口,它本身并不具有儀器編程能力,而是為用戶提供了一套獨(dú)立的可方便調(diào)用的標(biāo)準(zhǔn)I/O底層函數(shù)[10,11]。VISA串口通信函數(shù)調(diào)用的順序依次是VISA配置串口、VISA寫入、VISA讀取和VISA關(guān)閉[12]。為了使機(jī)器人產(chǎn)生不同的表情,添加了條件結(jié)構(gòu)語句,每種條件語句在FPGA中都有程序與之對(duì)應(yīng),都會(huì)使FPGA驅(qū)動(dòng)相應(yīng)的舵機(jī),本文只嵌套了4次,用來實(shí)現(xiàn)4種表情,如果需要實(shí)現(xiàn)更多的表情,只需要增加條件語句即可,程序框圖和通信界面分別如圖8和圖9所示。通信界面的設(shè)計(jì)使得操作簡單易懂,根據(jù)要求設(shè)置串口的參數(shù),單擊不同的按鈕就能控制相應(yīng)的舵機(jī),使得機(jī)器人實(shí)現(xiàn)不同的表情。
圖8 程序框圖
圖9 通信界面圖
本文提出一種基于LabVIEW和FPGA的串口通信舵機(jī)控制系統(tǒng),通過LabVIEW中的VISA控件實(shí)現(xiàn)了PC機(jī)與FPGA的串口通信,該系統(tǒng)化可以根據(jù)實(shí)際情況靈活的增加PWM模塊,系統(tǒng)設(shè)計(jì)方便靈活,可靠性高,通過對(duì)設(shè)計(jì)系統(tǒng)的仿真與實(shí)驗(yàn)測(cè)試,能夠產(chǎn)生PWM信號(hào),通過軟件編程可以方便的改變PWM的占空比,控制舵機(jī)到達(dá)指定的位置,同時(shí)采用角度插值與時(shí)間延遲的方法,可以實(shí)現(xiàn)舵機(jī)速度的調(diào)節(jié),如果算出每個(gè)時(shí)間間隔應(yīng)該走過的角度,還能使舵機(jī)實(shí)現(xiàn)如正弦等特殊曲線的運(yùn)動(dòng)。最終在舵機(jī)上進(jìn)行了驗(yàn)證,舵機(jī)可以工作平穩(wěn)無顫振,從而達(dá)到了比單片機(jī)控制更好的效果,為以后仿人機(jī)器人表情的實(shí)現(xiàn)提供了重要的依據(jù),使用FPGA作為控制板,有利于以后的研究人員對(duì)仿人機(jī)器人視覺和語音等方面做更深入的研究,完善機(jī)器人與人之間的多方面交互功能。
[1]方慶山,林春方.一種基于AT89C2051的多路舵機(jī)控制方案設(shè)計(jì)[J].微特電機(jī),2009,37(7):56-58.
[2]趙慧,張婷婷一種基于FPGA的舵機(jī)伺服系統(tǒng)設(shè)計(jì)[J].機(jī)床與液壓2010,38(6):59-61.
[3]E.Koutroulis,A.Dollas and K.Kalaitzakis,High frequency pulse width modulation implementation using FPGA and CPLD ICs[J].Journal of Systems Architecture,2006,52(6):332-344.
[4]A.M.Omar,N.A.Rahim,and S.Mekhilef,Three-Phase Synchronous PWM for Flyback Converter With Power-Factor Correction Using FPGA ASIC Design[J].IEEE Transactions on Industrial Electronics,2004,51(1).
[5]A.Arbit,D.Pritzker,A.Kuperman,and R.Rabinovici,A DSP controlled PWM Generator using Field Programmable Gate Array[J].Proc.23.rd IEEE Convention of Electrical and Electronics Engineers,2004,1:325-328.
[6]YU Hongjuan,PAN Song.FPGA technology application and development [J].Hangzhou University of Electronic Science and Technology Journal,2006,26(3):17-20.
[7]馬瑞.Nios II的那些事兒[M].黑金動(dòng)力社區(qū),2012.
[8]王剛.基于FPGA的SOPC嵌入式系統(tǒng)設(shè)計(jì)與典型實(shí)例[M].北京:電子工業(yè)出版社出版社,2008.
[9]LIAN Yichun,CAO Xiang,WU Haitao.System on programmable chip based on FPGA [J].Zhaoqing College Journal,2006,27(5):18-22.
[10]崔牧凡.基于LabVIEW和FPGA的串口通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2012,32(S2):82-84.
[11]呂向鋒,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].國外電子測(cè)量技術(shù),2009,28(12):27-30.
[12]董智強(qiáng),徐世榮,余雅敏.基于VISA的串口通信程序設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2008(6):1069-1072.