Rhino XR-2机器人[1]是一个典型的机电一体化产品,它模拟人的上肢,肩关节可从-45到+135度旋转;肘关节可从-135到90 度旋转;手腕可以上下90度旋转,左右170度旋转,是一个具有7个自由度的机械臂系统。通过适当调节各关节,该机器人能够从指定位置抓取较小物体。为了实现远程控制,构建了基于TCP/IP网络的七自由度机械臂远程控制系统,如图1所示。通过该系统,连接在Internet网络上的任意客户端均可登录指定服务器获取操作权限实现对七自由度机械臂的远程控制,并通过视频网络服务器实时监控机械臂操作结果。
图1 七自由度机械臂远程控制系统
1.本地端控制系统设计
首先设计本地端控制器,由于每个关节单独由一个Brevel电机驱动,因此只要在本地端实现对各个电机的单独控制包括启动、停止、调速即可。
1.1基于 ZLG7289B的本地控制
ZLG7289B[2] 是周立功单片机发展有限公司自行设计的数码管显示驱动及键盘扫描管理芯片,可直接驱动8 位共阴式数码管(或64 只独立LED),同时还可以扫描管理多达64 只按键。ZLG7289B 内部含有显示译码器,可直接接收BCD 码或16 进制码,并同时具有2 种译码方式。ZLG7289B 采用SPI 串行总线与微控制器接口,仅占用少数几根I/O 口线。
本例中采用AVRmega128单片机作为微控制器,通过ZLG7289B实现对键盘的操作www.cechina.cn,从而触发8个电机的不同动作,实现对机械臂的控制。AVR高端芯片MEGA128拥有53个IO口输出,8个PWM输出口,8个外部中断,16位定时器与8位定时器各两个。它采用单指令周期,处理速度快,在满足I/O的情况下www.cechina.cn,足以满足电机控制的运算要求。利用该单片机产生8路PWM信号通过两个L298N驱动模块实现8个电机的驱动。每个L298N驱动模块包含2块电机驱动芯片L298N、16个保护二极管、4个电源滤波稳定电容、2个输入信号逻辑处理单元、4个控制电机输出插座。由于每个L298N芯片控制2个电机,则每个驱动模块可以控制4个电机,其实物图如图2所示。
图2 L298N驱动模块
为方便操作,使用了液晶显示模块LCMxxZKwww.cechina.cn,其绘图显示画面提供一个64*256 点的绘图区域,电源操作范围宽(2.7V to 5.5V),此外,低功耗设计可满足产品的省电要求同时与单片机的接口界面非常灵活。如图3所示,利用设计的单片机控制系统,根据液晶显示屏的提示通过键盘操作可以实现对机械臂的控制,同时操作结果通过液晶显示屏反馈给操作者。
图3 液晶屏与键盘
1.2基于串口通信的上位机控制
为了构建基于TCP/IP网络的远程控制系统,需要在本地建立服务器端控制器。本例中采用PC机作为远程控制的服务器,同时作为单片机控制系统的上位控制器。
该上位机系统采用DB9-RS232串口线作为数据总线,通过串行通信与下位机建立联系。PC机通过数据总线把位选、转向、转速等信息传递给下位单片机AVR Mega128,通过对I/O口置1或清零来控制相应电机的转向,并通过改变PWM信号占空比来控制转速。
由于数据总线的使用,各部分都相互独立,只需要遵守相同的数据传输协议即可工作,使得扩展功能变得十分容易。有时候甚至不需对芯片进行重编程或电路板进行大幅度修改CONTROL ENGINEERING China版权所有,只需要更换部分模块就可以实现功能升级。在Visual C++ 6.0环境下运用串口类编写了上位机控制程序[3],通过该程序,可利用个人PC实现对机械臂的控制。
2.基于TCP/IP网络的远程控制
通过设计本地端控制系统后,可以在本地端实现七自由度机械臂的各关节速度控制,从而实现机械手运动到适当位置抓取物体,并传送到另一位置。为了实现异地远程控制,需要设计远程控制系统。基于TCP/IP的以太网络进行远程控制是一个好的选择。本例中构建了一个基于C/S(Client/Server)结构的远程控制体系,该体系包含服务器端和客户端,服务器端接收到客户端程序发来的数据后,对数据进行处理,进而发出相应的指令通过串口通信控制主控单片机www.cechina.cn,从而控制各关节的相应动作。
服务器端程序功能如下:
(1)创建监听Socket进行监听,当有客户端请求连接时建立一个新的接收Socket处理这个客户的数据发送与接收;
(2)接收客户端发来的数据并向客户端返回相应信息;
(3)对接收到的数据进行处理,然后向下位单片机发送控制命令。
客户端程序功能如下:
(1)建立与服务器程序的连接
(2)向服务器程序发送数据信息,接收从服务器程序返回的信息
(3)关闭与服务器程序的连接
在Visual C++ 6.0环境下运用WinSockets类来编写基于TCP/IP的远程控制程序,其中服务器端监听程序如下。
i