基于图像识别的物料分拣系统——机械臂设计与控制
2.机械臂本体的设计
2.1机械臂类型方案选择
机械臂的种类繁多,首先是针对坐标形式和驱动形式,对其进行一系列的选型,选择最为合适的方案,对整体功能实现起到关键作用。[6]
(1)坐标形式
笛卡尔坐标:机械臂在由x、y、z组成的右手直角坐标内做直线运动,名为笛卡尔坐标,如下图2.1所示。该类型需要预留大量的操作空间,刚性的结构给末端位置提供了精确的位置,但是该类型维护起来较难,由于直线运动是采用旋转电机配合上螺母和滚珠丝杠来实现的,因此堆积在螺杆中的灰尘会影响机械臂的滑动,且其组件必须采用刚性高的材料,这类机械臂造价较高,考虑到成本关系且占据空间大,工作范围小,故对此类型坐标不做考虑。[7]
图2.1 笛卡尔坐标机械臂
圆柱坐标:该类型机械臂采用了两个平移关节和一个旋转关节,运动坐标就是圆柱坐标,如下图2.2所示。图中机械臂能够作出z轴方向的伸长与缩短运动、y轴方向的上下移动和腰关节的360度旋转运动。与直角坐标相比较,该工作空间是一个圆柱体,与长方体空间相比较,空间要小一点,可以看到,如果所要抓取的物体高度比机械臂底座要矮,则根本抓取不了,这在一定的程度上限制了手臂的发挥空间,同时惯性也比较大。同样的,其直线驱动部分也难以实现防尘。考虑到本设计要识别抓取地面上的工件,故不采用该坐标形式的机械臂。
图2.2 圆柱坐标机械臂
3.机械臂控制系统的设计
3.1 Arduino开发板介绍
在我看来,Arduino自从面世以来,就是为了满足人们那丰富的想象力,它是人们实现自己的想法的万能愿望机,就像是乐高积木。它的组成部分是一个基于单片机并且开放源码的硬件平台和一套为Arduino板编写的程序,板子上的其他东西都是用于供电或者电脑连接的。只要在电脑上敲上几段代码,透过Arduino与其他电子设备通信,从而控制生活一些比较常见的电子设备。基本上就是没有你做不到的,只有你想不到的。[13]
在设计时候,Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样设备。Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。Arduino板你可以选择自己DIY,也可以是在市面上选择进行购买,其实,Arduino面世这么久,市面上各式各样,能够用于不同项目的开发板数不胜数。同时,Arduino开源的IDE可以免费下载得到Arduino的编程语言,而这个平台其实就是一个基于处理多媒体的编程环境。[14]
3.2基于Arduino控制舵机的原理
伺服电机的种类有很多种,其中精确定位来控制轴转过的角度是一大特点。伺服电机系统其实就是一种闭环系统,如下图3.1所示。
图3.1 电机闭环控制系统
它通过检测位置并反馈来控制其运动和最终的位置。一个精准度高的编码器就是我们在工业应用上的位置反馈传感器,其中精度问题就决定了伺服电机在工业上的应用范围,而这里我们所要用到的舵机就是一个微型的直流伺服电机。其实工业上的位置反馈传感器就是一个电位计,这个电位计相对于来说比较简单,这些传感器首先是根据一个目标位置的信号,然后该信号会与误差检测器进行通信连接,信息反馈后就会与实际位置进行校对,最后校对出来的误差就会使控制器工作,将电机的实际位置校对到我们事先设计好的目标位置上。
舵机是用于控制遥控玩具,飞机,船等的小型控制器,工程专业的学生还可以使用这类特殊的伺服电机来设计制作机器人,在舵机内部有四个主要组件,如下图3.2所示。
图3.2 舵机的组成部分
4.基于Proteus的仿真测试
Proteus软件功能强大,我们只要绘制出电气原理图,并且通过各种软件进行代码编辑,输出成Proteus能识别的文件,就可以在Proteus软件上进行仿真。更为出色的是,通过对代码不断的调试,并且与外围电路一起仿真,切换到PCB设计,就可以将我们的想法转变为实实在在的东西。其次是仿真的过程不会产生资源上的损耗,尤其是对于一些简单程序来控制的设计,可以说是大大减少了成本,对于一些复杂重要的设计,可以用Proteus循序渐进地仿真,将风险降到最低。
本文设计的机械臂是基于Arduino控制的,借用Proteus对其Arduino控制的舵机进行仿真测试,在舵机的pwm信号线上接上示波器,就可以看到仿真出来的波形,可以看出脉冲的宽度,通过宽度的大小来分析Arduino对舵机的控制是否恰当。[16]
4.1 Proteus电气原理图的建立
电气原理图如下图4.1所示,由于本文设计的机械臂是采用吸盘吸取物料,涉及到气泵的驱动,和两位三通电磁阀,气泵的作用是抽吸吸盘内部的气体,这里电气原理图采用直流电机来代替,电机开始转动就表示气泵开始工作。而两位三通电磁阀工作原理与继电器相类似,所以就用继电器接LED灯来表示电磁阀的打开和关闭。Arduino控制直流电机时,中间采用的电机驱动模块L298来控制,在连接继电器的时候,为了能让Arduino正常驱动继电器,就接入一个PNP的三极管来放大电流,同时为了保护PNP三极管,就在继电器和三极管间接了一个二极管,防止过流击穿三极管。而舵机的连接方式如上一章所述,其中,示波器接PWM信号线,以观察脉冲的宽度。
图4.1 Proteus电气原理图
4.3 Proteus仿真结果分析
在未进行分拣时,要对所有舵机进行初始位置的的调节,也就是腰部waist舵机要0度,大臂big arm舵机要90度,小臂samll arm舵机要90度,末端执行器actuato舵机要90度,我们知道在0度的位置所对应的脉冲宽度为0.5ms,在90度的位置所对应的脉冲宽度为1.5ms。仿真舵机初始位置的波形图如下图4.5所示。
图4.5 舵机在0度和90度位置的波形图
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。
更多推荐



所有评论(0)