董 勝, 武廣斌, 耿德旭, 王佳南, 王夢龍
(北華大學 a. 電氣信息工程學院; b. 工程訓練中心, 吉林 吉林 132021)
氣動機械手控制實驗系統(tǒng)設計
董 勝a, 武廣斌b, 耿德旭b, 王佳南a, 王夢龍a
(北華大學 a. 電氣信息工程學院; b. 工程訓練中心, 吉林 吉林 132021)
利用TMS320VC5509A和EP2C8Q208設計實現(xiàn)了一個氣動機械手實驗控制系統(tǒng),通過DSP C和FPGA VerilogHDL語言編程取代了體積龐大的PLC控制系統(tǒng),實現(xiàn)了20路電磁換向閥控制。16路10 bit DAC精確控制比例閥電壓從而控制氣動機械手指的動作力度,利用8路10 bit ADC采集指端觸感壓力傳感器壓力信號并且完成波形顯示,提供機械手指的握力反饋信息,提高了機械手的控制精度和控制速度。
TMS320VC5509A; EP2C8Q208; 氣動機械手
工業(yè)機械手是一種在程序指令控制下,模擬人手的抓取、搬運等動作而設計的機電一體化設備[1]。氣動機械手具有操作方便、拆卸簡單,適用于學生教學的特點[2]。近年來研究表明,采用氣動柔性關節(jié)研制的機械手具有較好的綜合柔性,從仿生角度具備了人手的結(jié)構(gòu)和功能特點[3],但是氣動技術本身存在一些難以克服的缺點,所以采用一般的控制方式,很難實現(xiàn)氣動機械手高精度控制[4]。
TMS320VC5509A (DSP)指令周期可達到5 ns,200 MHz的時鐘頻率,3個多通道緩沖串口,采用指令流水線以及片內(nèi)乘法累加器技術[5]適用于信號的高速分析與處理,但是I/O端口數(shù)量有限;EP2C8Q208(FPGA)具有36個M4K存儲塊,總RAM bits達到165 888,可以實現(xiàn)包括:單端口、雙端口存儲器,F(xiàn)IFO等多種存儲器架構(gòu),芯片外圍引腳多達208個,除了時鐘、電源等專用引腳外,仍具有相當豐富的I/O資源[6-7]。本文將DSP和FPGA兩者有機結(jié)合,運用在氣動機械手實驗控制系統(tǒng)的設計中,可以提高控制精度,減小設備體積。
氣動機械手控制系統(tǒng)工作原理是通過電磁閥控制機械手氣動回路,實現(xiàn)機械手指的動作,通過控制比例閥控制氣壓的大小,通過指端的壓力傳感器實時采集手指壓力信息,從而控制手指執(zhí)行動作的力度。指端壓力傳感器采用Honeywell FS系列惠斯頓電橋壓力傳感器FSG015WN[8],通過深圳市捷晟達科技有限公司生產(chǎn)的JSD系列壓力應變橋隔離變送器[9],將壓力信號轉(zhuǎn)換成電壓信號。電磁閥采用SMC公司生產(chǎn)的SYJ系列3通先導式電磁閥,電源電壓直流24 V,功率0.4 W。比例閥采用SMC公司生產(chǎn)的ITV0000系列比例閥ITV0050,電源電壓直流24 V / 0.12 A,輸入控制信號電壓0~5 V。
本文的氣動機械手控制系統(tǒng)設計指標要求如下:① 輸出20路電磁換向閥控制開關量。每路輸出+24 V / >20 mA;② 輸出16通道的比例閥控制電壓。比例閥控制電壓0~3 V,比例閥輸入阻抗10 kΩ,要求控制電壓精度不低于10 mV;③ 8個輸入A/D通道。采集8個壓力傳感器輸出的模擬電信號,每個壓力傳感器輸出電壓經(jīng)過處理后為0~3 V/<10 mA,要求A/D電壓分辨率不低于10 mV。
由于機械手控制關系復雜,實時性要求較高,本文選擇北京精儀達盛科技有限公司生產(chǎn)的以TMS320VC5509A定點數(shù)字信號處理器(DSP)為核心的Techv-5509 DSP開發(fā)板,完成氣動機械手控制系統(tǒng)的信息采集與控制指令的發(fā)出[10]。氣動機械手控制系統(tǒng)硬件結(jié)構(gòu)框圖見圖1。
圖1 氣動機械手控制系統(tǒng)硬件結(jié)構(gòu)框圖
TLV5631是一個8通道,帶有內(nèi)部電壓基準的10 bit數(shù)模轉(zhuǎn)換器,可通過編程選擇基準電壓為1.024 V或者2.048 V,滿量程動態(tài)輸出設定時間可達到1 μs,電壓分辨率可達到2 mV[11],滿足設計要求,本文通過2片TLV5631實現(xiàn)16通道D/A。如圖2所示,利用DSP的MCBSP串口1驅(qū)動2片并聯(lián)的TLV5631的幀同步和串行數(shù)據(jù)收發(fā),利用FPGA的DOUTD3、DOUTD5端口通過VerilogHDL編程實現(xiàn)2個芯片輸出地址區(qū)分,這樣做要比級聯(lián)模式具有更快的控制速度,同時為了防止時鐘輸出相互干擾,通過DSP的XF引腳和FPGA的DOUTD1端口分時關斷2個D/A轉(zhuǎn)換器的時鐘信號。
圖2 TLV5631與DSP接口電路
TLV1570是一個8通道10 bitA/D轉(zhuǎn)換器,采樣速率 1.25 MS/s,可以通過編程選擇內(nèi)部基準電壓為:2.3 V或3.8 V[12],電壓分辨率滿足不低于10 mV要求。
本文利用DSP的MCBSP串口0驅(qū)動1片TLV1570,利用FPGA的DOUTD7端口通過VerilogHDL編程實現(xiàn)芯片的片選地址CS輸出,具體接口電路見圖3。
圖3 TLV1570與DSP的接口電路圖
為了擴展8通道10 bit A/D輸入,16路10 bitD/A輸出,以及20路電磁閥控制輸出,本文采用芯驛電子科技(上海)有限公司生產(chǎn)的以CycloneII 系列EP2C8Q208芯片作為主芯片的FPGA核心板[13],其與DSP接口電路設計見圖4。圖中,DOUTA[7..0]、DOUTB[7..0]、DOUTC[7..0]用于輸出驅(qū)動20路電磁閥的開關量。
DOUTA [7..0]、DOUTB[7..0]、DOUTC[7..0]用于輸出驅(qū)動20路電磁閥,F(xiàn)PGA驅(qū)動電磁閥電路設計如圖5所示。由于具有完全相同的電路結(jié)構(gòu),圖5僅畫出其中一路。
圖4 FPGA芯片與DSP接口電路
圖5 FPGA驅(qū)動20路電磁閥電路
根據(jù)設計要求中的負載負荷計算,本文采用高電壓(50 V)、大電流(單路輸出500 mA)7路輸出的達林頓晶體管陣列ULN2003A控制電磁閥L1[14],1N4148型二極管D1用于反電勢滅弧保護,TLP521-4型4通道光電耦合器U1負責隔離控制部分和執(zhí)行部分[15]。
(1) A/D采集壓力與波形顯示程序設計。
#define A_D_CS_1((*(unsigned int *)(0x040100))|=0x0080)
#define A_D_CS_0((*(unsigned int *)(0x040100))&=0x007F)
#define DA_1_LDAC_1((*(unsigned int *)(0x040100))|=0x0008)
#define DA_1_LDAC_0((*(unsigned int *)(0x040100))&=0x00F7)
#define DA_2_LDAC_1((*(unsigned int *)(0x040100))|=0x0020)
#define DA_2_LDAC_0 ((*(unsigned int *)(0x040100))&=0x00DF)
#define DA_1_SCLK_EN ((*(unsigned int *)(0x040100))|=0x0002)
#define DA_1_SCLK_NO ((*(unsigned int *)(0x040100))&=0x00FD)
static volatile MCBSP_Handle MyMcbsp0;
static volatile ulint writeBuff[TLV1570_BUFF_SIZE];
static MCBSP_Config Tlv1570_Config={ 0x1000, 0x0000, 0x0040, 0x0001, 0x0040, 0x0001, 0x0230, 0x200F, 0x0000, 0x0000, 0x0A08, 0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000, 0x0000,0x0000};
初始化串口程序:
void tlv_1570_init(void)
{ A_D_CS_1;
mcbsp0_init();}
void mcbsp0_init(void)
{ MyMcbsp0=MCBSP_open(MCBSP_PORT0,MCBSP_OPEN_RESET);
MCBSP_config (MyMcbsp0,&Tlv1570_Config); }[16]
void mcbsp0_start(void)
{ MCBSP_start(MyMcbsp0,MCBSP_SRGR_START, 0x1000);
MCBSP_start(MyMcbsp0,MCBSP_SRGR_FRAMESYNC,0x1000);
MCBSP_start(MyMcbsp0,MCBSP_XMIT_START|MCBSP_RCV_START,0x3000);}
void mcbsp0_close(void)
{ MCBSP_close(MyMcbsp0);}
void mcbsp0_write(uint data)
{ A_D_CS_1;
delayUs_SYS(5);
A_D_CS_0;
DXR1_0=data;
while ((SPCR2_0 &0x0002)==0);
delayUs_SYS(10);
A_D_CS_1;}
(2) D/A驅(qū)動比例閥程序。
void da_conv_1( unsigned int valueA,unsigned int valueB,unsigned int valueC,unsigned int valueD, unsigned int valueE,unsigned int valueF,unsigned int valueG,unsigned int valueH)
{ int i=0;
unsigned int da_1_value_tem[8];
DA_2_LDAC_1;
DA_1_SCLK_EN;
asm(" bit(st1, 13) = 0" );
delayUs_SYS(20);
da_1_value_tem[0]=valueA;
da_1_value_tem[1]=valueB;
da_1_value_tem[2]=valueC;
da_1_value_tem[3]=valueD;
da_1_value_tem[4]=valueE;
da_1_value_tem[5]=valueF;
da_1_value_tem[6]=valueG;
da_1_value_tem[7]=valueH;
for (i=0;i<8;i++)
{ da_1_value[i]=da_1_value_tem[i]; }
for(i=0;i<8;i++)
{ mcbsp1_write((i<<12)+ da_1_value_tem[i]);
delayUs_SYS(2); }
DA_1_LDAC_0;
delayUs_SYS(200);
DA_1_LDAC_1;
DA_1_SCLK_NO;}
(3) DSP 驅(qū)動FPGA程序。
#define DS_FPGA_WORDA (*(unsigned int *)(0x040800))
#define DS_FPGA_WORDB (*(unsigned int *)(0x040400))
#define DS_FPGA_WORDC (*(unsigned int *)(0x040200))
#define DS_FPGA_WORDD (*(unsigned int *)(0x040100))
extern unsigned int key_flag;
extern unsigned int read_key();
void fpga_io_out()
{ while(1)
{ DS_FPGA_WORDA=0x0080;
DS_FPGA_WORDB=0x0080;
delayMs_SYS(1500);
delayMs_SYS(1500);
DS_FPGA_WORDA=0x0000;
DS_FPGA_WORDB=0x0000;
delayMs_SYS(1500);
delayMs_SYS(1500);
if(key_flag!=0)
if(read_key() == KEY_CANCEL) break;}}
(1) 頂層設計圖。利用VerilogHDL語句實現(xiàn)的頂層設計見圖6。
圖6 VerilogHDL語句實現(xiàn)的頂層設計
(2) 核心控制模塊的VerilogHDL程序設計。
module gongxun(CLK,DIN,AIN,CE0,ARE,AWE,DOUTA,DOUTB,DOUTC,DOUTD);
input[7:0]DIN;
input[4:0]AIN;
input CLK,CE0,ARE,AWE;
output reg [7:0]DOUTA,DOUTB,DOUTC,DOUTD;
reg[7:0]data_temp=0;
reg[4:0]ain_tem=0;
reg [1:0]curent_state,next_state;
parameter st0=0,st1=1,st2=2,st3=3;
always@(posedge CLK)
begin
curent_state=next_state;
end
always@(curent_state or AWE or CE0 )
begin
if((CE0==1)&&(AWE==1))next_state=st0;
else
begin
case (curent_state)
2'b00: begin if((CE0==0)&&(AWE==0))next_state=st1;
else next_state=st0;
end
2'b01: begin if((CE0==0)&&(AWE==1))next_state=st2;
else next_state=st1;
end
2'b10: begin ain_tem <=AIN;
data_temp <=DIN;
next_state=st3;
end
2'b11: begin case (ain_tem)
5'b01000: DOUTA<=data_temp;
5'b00100: DOUTB<=data_temp;
5'b00010: DOUTC<=data_temp;
5'b00001: DOUTD<=data_temp;
default:
begin
DOUTA<=0;
DOUTB<=0;
DOUTC<=0;
DOUTD<=0;
end
endcase
next_state=st0;
end
default: next_state=st0;
endcase
end
end
endmodule
(1) 利用DSP C語言編程驅(qū)動16路D/A輸出不同幅度的方波信號,利用示波器分別跟蹤各個通道的波形及幅度顯示均正常。
(2) 將D/A輸出端連接到比例閥控制輸入端口,在0~3 V范圍內(nèi)改變D/A輸出電壓值,根據(jù)比例閥的參數(shù),控制電壓:0~5 V,對應的輸出壓力范圍:0.001~0.9 MPa,D/A轉(zhuǎn)換器10位的分辨率,基準電壓Uref為2 V,D/A輸入數(shù)值0x200,比例閥輸出氣壓按下式計算:
實際測試比例閥輸出與給定值之間的誤差滿足設計要求。根據(jù)實際需要可以通過選用更高分辨率的D/A,以及調(diào)整基準電壓值,采取濾波等措施進一步提高控制精度。
用手指按壓指端的壓力傳感器,利用示波器分別對每個通道的壓力變送器輸出信號進行檢測,波形跟蹤變化顯示正常,同時觀察176×220分辨率的TFT_LCD顯示的單個通道的壓力實時跟蹤波形正常。
利用DSPC語言編程驅(qū)動FPGA分別控制20路電磁換向閥工作正常。
控制部分實物見圖7,松手控制結(jié)果見圖8,握拳控制結(jié)果見圖9(說明:由于系統(tǒng)體積較大,實驗調(diào)試過程僅接入了部分電磁閥和比例閥)。
圖7 控制部分實物圖
圖8 松手控制結(jié)果圖9 握拳控制結(jié)果
本文綜合利用FPGA、DSP實現(xiàn)了氣動機械手控制系統(tǒng)教學案例設計,替代了體積龐大的PLC控制設備,提高了控制速度和控制精度,給學生提供了良好的創(chuàng)新鍛煉平臺,對電子系統(tǒng)設計、DSP技術及應用、EDA技術及應用、傳感器技術課程的綜合實踐教學起到了積極的促進作用。
不足之處,由于顯示屏尺寸較小無法同時顯示8個A/D通道波形,只能分開單獨顯示,需要將來通過換大屏幕顯示器來改進。
[1] 唐少琴. 基于PLC的氣動機械手控制系統(tǒng)設計[J]. 機械設計與制造工程,2016,45( 5):59-61.
[2] 李 碩,唐勤生,王朝兵. 教學用氣動機械手的研制[J]. 科技資訊,2016( 2):39-40.
[3] 劉曉敏,耿德旭,趙云偉,等. 氣動柔性五指機械手結(jié)構(gòu)設計及其抓取實驗[J]. 機床與液壓,2015,43( 7):10-12,70.
[4] 王偉偉,陳冰冰,舒 嫚. 基于比例閥控缸的氣動機械手柔性定位[J]. 東華大學學報(自然科學版),2016,42( 2):248-252.
[5] TI.TMS320VC5509A Fixed-Point Digital Signal Processor Data Manual. EB/OL].[2008].http://www.ti.com.
[6] ALTERA. Cyclone II Device Handbook, Volume 1. [EB/OL].[2008].http://www.altera.com.
[7] ALTERA. Cyclone II EP2C8 & EP2C8A Device Pin-Out( PT-EP2C8-1.9). [EB/OL].[2008].http://www.ti.com.
[8] Honeywell. FSG系列觸力傳感器[EB/OL].[2016]. https://sensing.honeywell.com.cn/_onelink_/honeywell/en2zh/pdfs/Datasheet_%20FSG_CN.pdf.
[9] JSD. 隔離變送器產(chǎn)品說明.[ EB/OL].[2016]. http://www.jsd-iae.com/Isolation_Transmitter.htm.
[10] Techvshine. TechV-5509使用說明書[EB/OL].[2009].http://www.techshine.com.
[11] TI. SLAS269F -MAY 2000-REVISED NOVEMBER 2008.[ EB/OL].[2008].http://www.ti.com.
[12] TI. SLAS169B - DECEMBER 1997- REVISED OCTOBER 2000[EB/OL].[2000].www.ti.com.
[13] Alinx. FPGA核心模塊.[EB/OL].[2016]. http://www.alinx.cn.
[14] TI. SLRS027O -DECEMBER 1976-REVISED JANUARY 2016[EB/OL].[2016].www.ti.com.
[15] TOSHIBA. TLP521-4.PDF[EB/OL].[2000]. http://www.toshiba.com.cn.
[16] 華 晶,賈 晶,殷 華. 基于DSP的通用語音信號處理系統(tǒng)設計[J].電腦編程技巧與維護,2012 ( 5):58-59,73.
DesignofPneumaticManipulatorExperimentControlSystem
DONGShenga,WUGuangbinb,GENGDexub,WANGJianana,WANGMenglonga
(a. College of Electrical and Information Engineering; b. Engineering Training Center, Beihua University, Jilin 132021, Jilin, China)
TMS320VC5509A and EP2C8Q208 are used to design a pneumatic manipulator experiment control system. The system uses DSP C and FPGA VerilogHDL languages programing to take the place of big volume PLC control system, and accomplishes the control of 20 channels electromagnetic directional valves. It accurately controls 16 channels proportional valves by using 10 bit DACs, controls the action intensity of manipulators. It also completes acquisition of signals of the tactility pressure on finger tips of manipulators, by 8 channels of 10 bit ADCs and displays waveforms, and provides feedback information of the gripping force of manipulators, the control accuracy and speed are all improved.
TMS320VC5509A; EP2C8Q208; pneumatic manipulator
TP 241.3
A
1006-7167(2017)11-0077-05
2017-03-02
吉林省科技發(fā)展計劃項目(20160418024FG); 吉林省教育廳項目(吉教科合字[2015]第161號); 北華大學2016年校級教研立項課題 (XJYB2016003)
董 勝 (1972-),男,黑龍江嫩江人,碩士,副教授,研究方向:信號采集與處理。
Tel.:18604497893; E-mail: dswlpdsx@163.com