APP下载

气 动 机 械 手 控 制 实 验 系 统 设 计

2017-12-15武广斌耿德旭王佳南王梦龙

实验室研究与探索 2017年11期
关键词:电路设计机械手电磁阀

董 胜, 武广斌, 耿德旭, 王佳南, 王梦龙

(北华大学 a. 电气信息工程学院; b. 工程训练中心, 吉林 吉林 132021)

气动机械手控制实验系统设计

董 胜a, 武广斌b, 耿德旭b, 王佳南a, 王梦龙a

(北华大学 a. 电气信息工程学院; b. 工程训练中心, 吉林 吉林 132021)

利用TMS320VC5509A和EP2C8Q208设计实现了一个气动机械手实验控制系统,通过DSP C和FPGA VerilogHDL语言编程取代了体积庞大的PLC控制系统,实现了20路电磁换向阀控制。16路10 bit DAC精确控制比例阀电压从而控制气动机械手指的动作力度,利用8路10 bit ADC采集指端触感压力传感器压力信号并且完成波形显示,提供机械手指的握力反馈信息,提高了机械手的控制精度和控制速度。

TMS320VC5509A; EP2C8Q208; 气动机械手

0 引 言

工业机械手是一种在程序指令控制下,模拟人手的抓取、搬运等动作而设计的机电一体化设备[1]。气动机械手具有操作方便、拆卸简单,适用于学生教学的特点[2]。近年来研究表明,采用气动柔性关节研制的机械手具有较好的综合柔性,从仿生角度具备了人手的结构和功能特点[3],但是气动技术本身存在一些难以克服的缺点,所以采用一般的控制方式,很难实现气动机械手高精度控制[4]。

TMS320VC5509A (DSP)指令周期可达到5 ns,200 MHz的时钟频率,3个多通道缓冲串口,采用指令流水线以及片内乘法累加器技术[5]适用于信号的高速分析与处理,但是I/O端口数量有限;EP2C8Q208(FPGA)具有36个M4K存储块,总RAM bits达到165 888,可以实现包括:单端口、双端口存储器,FIFO等多种存储器架构,芯片外围引脚多达208个,除了时钟、电源等专用引脚外,仍具有相当丰富的I/O资源[6-7]。本文将DSP和FPGA两者有机结合,运用在气动机械手实验控制系统的设计中,可以提高控制精度,减小设备体积。

1 气动机械手控制系统工作原理及设计指标

气动机械手控制系统工作原理是通过电磁阀控制机械手气动回路,实现机械手指的动作,通过控制比例阀控制气压的大小,通过指端的压力传感器实时采集手指压力信息,从而控制手指执行动作的力度。指端压力传感器采用Honeywell FS系列惠斯顿电桥压力传感器FSG015WN[8],通过深圳市捷晟达科技有限公司生产的JSD系列压力应变桥隔离变送器[9],将压力信号转换成电压信号。电磁阀采用SMC公司生产的SYJ系列3通先导式电磁阀,电源电压直流24 V,功率0.4 W。比例阀采用SMC公司生产的ITV0000系列比例阀ITV0050,电源电压直流24 V / 0.12 A,输入控制信号电压0~5 V。

本文的气动机械手控制系统设计指标要求如下:① 输出20路电磁换向阀控制开关量。每路输出+24 V / >20 mA;② 输出16通道的比例阀控制电压。比例阀控制电压0~3 V,比例阀输入阻抗10 kΩ,要求控制电压精度不低于10 mV;③ 8个输入A/D通道。采集8个压力传感器输出的模拟电信号,每个压力传感器输出电压经过处理后为0~3 V/<10 mA,要求A/D电压分辨率不低于10 mV。

2 系统硬件设计

2.1 DSP平台选择

由于机械手控制关系复杂,实时性要求较高,本文选择北京精仪达盛科技有限公司生产的以TMS320VC5509A定点数字信号处理器(DSP)为核心的Techv-5509 DSP开发板,完成气动机械手控制系统的信息采集与控制指令的发出[10]。气动机械手控制系统硬件结构框图见图1。

图1 气动机械手控制系统硬件结构框图

2.2 D / A模块与DSP接口电路设计

TLV5631是一个8通道,带有内部电压基准的10 bit数模转换器,可通过编程选择基准电压为1.024 V或者2.048 V,满量程动态输出设定时间可达到1 μs,电压分辨率可达到2 mV[11],满足设计要求,本文通过2片TLV5631实现16通道D/A。如图2所示,利用DSP的MCBSP串口1驱动2片并联的TLV5631的帧同步和串行数据收发,利用FPGA的DOUTD3、DOUTD5端口通过VerilogHDL编程实现2个芯片输出地址区分,这样做要比级联模式具有更快的控制速度,同时为了防止时钟输出相互干扰,通过DSP的XF引脚和FPGA的DOUTD1端口分时关断2个D/A转换器的时钟信号。

图2 TLV5631与DSP接口电路

2.3 A/D模块与DSP接口电路设计

TLV1570是一个8通道10 bitA/D转换器,采样速率 1.25 MS/s,可以通过编程选择内部基准电压为:2.3 V或3.8 V[12],电压分辨率满足不低于10 mV要求。

本文利用DSP的MCBSP串口0驱动1片TLV1570,利用FPGA的DOUTD7端口通过VerilogHDL编程实现芯片的片选地址CS输出,具体接口电路见图3。

图3 TLV1570与DSP的接口电路图

2.4 FPGA芯片选型及其与DSP接口电路设计

为了扩展8通道10 bit A/D输入,16路10 bitD/A输出,以及20路电磁阀控制输出,本文采用芯驿电子科技(上海)有限公司生产的以CycloneII 系列EP2C8Q208芯片作为主芯片的FPGA核心板[13],其与DSP接口电路设计见图4。图中,DOUTA[7..0]、DOUTB[7..0]、DOUTC[7..0]用于输出驱动20路电磁阀的开关量。

2.5 FPGA驱动20路电磁阀电路设计

DOUTA [7..0]、DOUTB[7..0]、DOUTC[7..0]用于输出驱动20路电磁阀,FPGA驱动电磁阀电路设计如图5所示。由于具有完全相同的电路结构,图5仅画出其中一路。

图4 FPGA芯片与DSP接口电路

图5 FPGA驱动20路电磁阀电路

根据设计要求中的负载负荷计算,本文采用高电压(50 V)、大电流(单路输出500 mA)7路输出的达林顿晶体管阵列ULN2003A控制电磁阀L1[14],1N4148型二极管D1用于反电势灭弧保护,TLP521-4型4通道光电耦合器U1负责隔离控制部分和执行部分[15]。

3 系统软件程序设计

3.1 DSP程序设计

(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驱动比例阀程序。

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 驱动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;}}

3.2 FPGA程序设计

(1) 顶层设计图。利用VerilogHDL语句实现的顶层设计见图6。

图6 VerilogHDL语句实现的顶层设计

(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

4 系统调试与结果分析

4.1 16路D/A测试

(1) 利用DSP C语言编程驱动16路D/A输出不同幅度的方波信号,利用示波器分别跟踪各个通道的波形及幅度显示均正常。

(2) 将D/A输出端连接到比例阀控制输入端口,在0~3 V范围内改变D/A输出电压值,根据比例阀的参数,控制电压:0~5 V,对应的输出压力范围:0.001~0.9 MPa,D/A转换器10位的分辨率,基准电压Uref为2 V,D/A输入数值0x200,比例阀输出气压按下式计算:

实际测试比例阀输出与给定值之间的误差满足设计要求。根据实际需要可以通过选用更高分辨率的D/A,以及调整基准电压值,采取滤波等措施进一步提高控制精度。

4.2 8通道A/D采集测试

用手指按压指端的压力传感器,利用示波器分别对每个通道的压力变送器输出信号进行检测,波形跟踪变化显示正常,同时观察176×220分辨率的TFT_LCD显示的单个通道的压力实时跟踪波形正常。

利用DSPC语言编程驱动FPGA分别控制20路电磁换向阀工作正常。

4.3 系统实物图

控制部分实物见图7,松手控制结果见图8,握拳控制结果见图9(说明:由于系统体积较大,实验调试过程仅接入了部分电磁阀和比例阀)。

图7 控制部分实物图

图8 松手控制结果图9 握拳控制结果

5 结 语

本文综合利用FPGA、DSP实现了气动机械手控制系统教学案例设计,替代了体积庞大的PLC控制设备,提高了控制速度和控制精度,给学生提供了良好的创新锻炼平台,对电子系统设计、DSP技术及应用、EDA技术及应用、传感器技术课程的综合实践教学起到了积极的促进作用。

不足之处,由于显示屏尺寸较小无法同时显示8个A/D通道波形,只能分开单独显示,需要将来通过换大屏幕显示器来改进。

[1] 唐少琴. 基于PLC的气动机械手控制系统设计[J]. 机械设计与制造工程,2016,45( 5):59-61.

[2] 李 硕,唐勤生,王朝兵. 教学用气动机械手的研制[J]. 科技资讯,2016( 2):39-40.

[3] 刘晓敏,耿德旭,赵云伟,等. 气动柔性五指机械手结构设计及其抓取实验[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. 隔离变送器产品说明.[ 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的通用语音信号处理系统设计[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

吉林省科技发展计划项目(20160418024FG); 吉林省教育厅项目(吉教科合字[2015]第161号); 北华大学2016年校级教研立项课题 (XJYB2016003)

董 胜 (1972-),男,黑龙江嫩江人,硕士,副教授,研究方向:信号采集与处理。

Tel.:18604497893; E-mail: dswlpdsx@163.com

猜你喜欢

电路设计机械手电磁阀
基于ANSYS Maxwell的比例电磁阀隔磁环仿真分析与优化
低速机电控喷油器电磁阀换热特性计算
关于部分行程测试电磁阀的应用和探讨
Altium Designer在电路设计中的应用
负反馈放大电路设计
TRIZ与情景分解法在换刀机械手设计中的应用
基于粒子群迭代的一种冗余机械手逆解算法
开漏输出比较器的峰值检测电路设计
搬运机械手PLC控制系统设计
基于PLC的机械手控制系统