何爱睿
(兰州博文科技学院机电工程学院,甘肃 兰州 730101)
当今社会对生产厂商生产产品的质量要求越来越严格,精度要求也越来越高。有些生产环境中涉及一些危害人体健康的因素,例如在有毒、有害、易燃、易爆和高压等环境下从事生产会对人体造成巨大的伤害。因此急需找到能代替人工生产的机械,减轻对劳动者健康的危害。但目前生产的一些大型机械不适用于生产小件类产品,并且价格昂贵。因此,设计一款能够解放人工劳动的机械臂是十分迫切和有必要的。
该文设计的基于Arduino单片机同步机械臂是通过人为操作操控臂使动作在受控臂上得以复制和实现来完成人们的预期要求的,尤其是可以完成流水作业及危险环境下的工作[1]。而且该机械臂操作简单、应用范围广、维护维修方便且成本较低,因此具有较大的研究意义和应用价值。
机器臂在空间位移和姿态变化时所需的独立运动参数的总量叫作机器臂的移动自由。自由个数越多,适应性就更强,动作灵活多样,而机器的构造也就更复杂。一般的机械臂有6个自由度,能够完成各种复杂的运动形式[2]。
该文所设计的机械臂主要用于流水线生产、较轻物体的搬运等。因此,最终采用4个自由度的机械手臂[3],可以实现夹持器的开合、左右旋转、前后移动、上升和下降等运动。机械臂在工作过程中,夹持器和机械臂上关节的运动为2个自由度,底座的旋转和下关节的移动为2个自由度。自由度这样分配有利于机械臂在工作中能够有序、准确地执行任务,提高其工作效率。
该文所设计的基于Arduino单片机同步机械臂,由操控机械臂和受控机械臂2个部分构成[4]。由人为控制操控臂将其动作复制到受控臂上,实现动作的同步进行。主要结构包括3个部分,即基座、臂身和夹持器。除此之外还有控制部分、驱动部分等。在操控臂上一共安装有4个电位器和若干连杆,受控臂上装有4个舵机,操控臂的4个电位器分别对应受控臂上的4个舵机,通过导线将电位器和舵机连接在同一个控制板上。
工作原理如下:操控臂上安装的电位器与受控臂上安装的舵机通过Arduino开发板进行连接,通过人为控制操控臂,使操控臂做升降、旋转和伸缩等动作,引起电位器电位的变化,进而控制受控臂上的舵机的驱动,使受控臂能够做出和操控臂同样的动作。如此实现代替人工在一些危险环境中进行工作。
该文所设计的同步机械臂由3个部分组成,分别是操控臂部分、受控臂部分以及Arduino开发板连接部分[5]。总体设计框图如图1所示。
图1 设计框图
1.3.1 受控机械臂结构设计
受控臂由铝合金支架和4个MG996R舵机组成,如图2所示。1号舵机位于机械臂手腕处,控制机械臂夹持器的开合。2号舵机位于1号舵机与3号舵机之间,用来控制机械手臂上关节的升降。3号舵机位于机械臂的基座之上,用于操纵机械臂下关节上升和下降的动作。4号舵机安装在机械手的基座上,用于控制机械臂的左右转动。然后通过导线连接电位器与Arduino开发板,并连接受控臂上的舵机与Arduino开发板,再使用USB数据线连接控制主板与电脑,打开Arduino IDE程序,将代码上传。
图2 受控臂结构
1.3.2 控制臂结构设计
控制臂由铝合金材料制成上关节、下关节和基座,由3D材料打印夹持器导轨底座、夹持器连动杆、夹持器电位器舵盘、夹持器滑动块、机械臂底部转轴连动杆和底部电位器舵盘。在控制臂的夹持器、上关节、下关节和基座部分分别安装电位器,用于动作信息的捕捉。其中夹持器上的电位器用于检测夹持器的开、合,上关节的电位器检测上半臂的上升与下降,下关节的电位器监测下半臂的前、后运动,基座的电位器监测操控臂的左、右旋转。
1.3.3 机械臂驱动方式
该设计采用的传动形式是由舵机构传动。舵机是一种位置伺服的驱动器,由闭环控制系统的机电结构、可调电位器、控制板、传感器和变速齿轮组等部件组成。它的工作原理是控制装置从一个收发器接受一个信号,驱动一个电路板上的电机,用一个减速器驱动一个摇臂,一个位置探测器就会把一个信号反馈给它,以确定它是否达到。
该设计研究的同步机械臂主要用于较轻物体的搬运和流水线的作业,因此要充分考虑夹持器与具体物体的接触。由于工作的对象多为小物件,为了确保其在工作中的通用性,该设计采用的末端执行部件为夹持器。夹持器在工作中有一定的约束力和形状约束,能够在工作中灵活地适应各种形状物体的搬运,具有较好的适应性。对夹持器各个部件的图形绘制如图3和图4所示。最终将打印完成的各个部件组装成操控臂前段的夹持器。夹持器由人为控制,安装在电位器舵盘上的电位器转动时引起电位变化,并将此信号传送给与控制板相连接的舵机,使舵机转动,进而将动作同步到受控机械臂上的夹持器。
图3 夹持器电位器舵盘
图4 夹持器导轨底座
Arduino开发板由硬件和软件两部分组成[1],硬件部分既可以单独进行工作,也可以与其他硬件设备组合工作,例如与LED灯、发光二极管、舵机和各种传感器等,功能丰富多样。Arduino的开发语言基于C/C++,所以能大大降低汇编的难度,使用的函数难度较低,指令的可读性也比较强。除此之外,与其他开发板相比价格也较低廉,成本较低,因此受到电子爱好者的普遍欢迎。软件部分程序如下。
#include
Servo myservo;// 定义Servo对象来控制
int pos = 0; // 角度存储变量
void setup () {
myservo.attach(9); // 控制线连接数字9
}
void loop () {
for (pos = 0; pos <= 90; pos ++) { // 0º]90º
// in steps of 1 degree
myservo.write (pos) ;// 舵机角度写入
delay (10) ; // 等待转动到指定角度
}
for (pos = 90; pos >= 0; pos -- ) { // 90º510º
myservo.write (pos) ;// 舵机角度写入
delay (10) ; // 等待转动到指定角度
}
}
该文设计的是由人为控制操控机械臂,引起操控机械臂上电位器的电位变化,进而通过控制板引起舵机转动角度的变化,并将操控机械臂上的动作远程复制到受控机械臂上。电位仪由可移动的手刷和电阻体组成,可令一个活动触点在电阻体上移动,进而获得电位的变化,电位器的原理相当于滑动变阻器。该文设计的是4自由度机械臂,以上程序是单个舵机的控制,不能满足设计需要。因此,需要连接4个舵机,并连接外接电源,舵机红线处需要安装阻值适宜的固定电阻。
为了让电位器阻值-电压的关系趋近于线性,固定电阻的合适阻值如公式(1)所示。参数名称如下:固定电阻的阻值为R,电位器的阻值为r,固定信号电压为V,固定电阻两端的电压为v。把分压电路的电压公式v=V×(r/(r+R))带入曲率公式,并以固定阻值电阻大、小为变量对其求导,可得出曲率变化和阻值的关系。
式中:x为r;y为V×(r/(r+R))。
使公式(1)等于0,所得出的R能让电位器阻值-电压的关系最接近于线性。
操控臂在安装时需要先将滑块套入夹持器导轨底座中,然后用连杆将电位器的转动轴和滑动块连接,在2个滑块之间安装一根套有小弹簧的圆珠笔笔芯,使2个滑块合起来时自动弹开。上关节的连杆与臂身连接时,要先使用细铁丝在连杆孔处安装一根固定杆,然后用热熔胶将电位器固定在臂身上关节处。将电位器的转动轴和连杆的孔对应安装,使连杆孔上的固定杆与电位器的卡槽对应。底部基座在安装时要先将电位器固定好,然后将舵盘分别固定在操控臂的基座处和电位器上,使用废弃的信号线将舵盘的两端分别连接,以使机械臂在转动过程中保持左、右均衡。电位器连接好之后,在4个电位器的针脚处连接上信号线。为了使信号线容易区分,不同位置的电位器可以使用不同颜色的信号线连接。最后用胶带将信号线固定在不影响臂身关节运动的地方。受控臂的舵机分别安装在夹持器以及臂身的上关节、下关节和基座处。操控臂上的4个电位器分别对应受控臂的4个舵机。将舵机引出的导线和电位器的信号线依次插入控制板的接口处。
3.2.1 调试的方法
先连接好电路,使用USB数据线连接控制主板与电脑。打开Arduino IDE程序,将程序输入至窗口,然后从操控臂的夹持器开始从上往下依次测试每个电位器与对应的舵机的连接是否完好,当电位器发生旋转时,是否会引起舵机的转动。再进行整体的机械臂调试,测试整个机械臂的自由度是否能够达到预定的要求。
3.2.2 调试结果的分析与改进
检测电路连接时无异常,各个线路连接完好。逐一检测电位器与舵机的对接时,手动控制夹持器的开、合使电位器的转动轴发生转动,发现受控臂的夹持器能够做出相应的动作,说明夹持器部分的连接控制良好。检测臂身部分的连接时,将连杆拉至端点时,发现工作角度受到一定的限制,不能很好地控制臂身运动,导线的捆绑也限制了机械臂的运动。
连杆与臂身的连接不能很好地滑动是因为连杆臂身连接得太紧,可以扩大连杆的内侧尺寸,便可解决问题。如果舵机的转动角度不能达到输入参数对应的角度,可以对舵机的方向进行重新调整。
该文设计的机械臂基于Arduino单片机同步机械臂,采集真人手臂动作在操控臂上的电位器引起的电位变化,通过控制板和舵机将其直接转化为机械臂动作。通过确定行为状态和进行动作的坐标转换,实现基于姿态同步的主、从同步机械臂。该设计的最大特点是利用Arduino单片机实现机械臂控制,与其他单片机相比,该设计更简单、易操作。机械手臂采用舵机驱动方式,具有传动精度高、体积小、速度快及运动平稳的优点,从动机械臂可以自动同步或者重复主动机械臂的动作,使用方便,效率高。