33223| 4
|
[项目] drawbot 桌面级scara机械臂 |
在thingiverse上闲逛的时候,翻到了一个好几年前的机械臂项目,一下子就被这骚粉色吸引了。桌面级scara机械臂,运动机构为两个42步进电机和一个9g舵机,控制板为mega 2560 和ramps 1.4,其他部件主要为3D打印件,工作范围为A4纸,使用国标G代码,目前可以实现写字画画功能。 作者自己为了方便在淘宝开了店:点击前往 drawbot 所用零件除打印件和铝管外均为标件,tb上都能买到。打印件tb上也有代打的,当然也可以找我打。 bom 表已整理完成,见下表。螺钉螺母数量可能不准确,建议多备几颗。舵机线长度需要80cm,长度不够的,需要自己接延长线。M8x55六角螺钉可用Φ8x40xM8 塞打螺钉代替,提高两个驱动轮同轴度。 步进电机和限位开关线长度为40cm。 铝管长度为178mm 200mm(老款笔夹) 178mm 197mm(新款笔夹),bom中长度有误,请注意。 材料清单
软件需要使用的软件主要如下 下面是作者更新过的清单
将mega2560连接电脑,选择对应的端口,用xloader烧录hex固件。
软件界面介绍如下 常用的控制指令如下:
所有参数修改后需用M500保存,否则重启后数据会丢失 首次连接后需要先发送M502恢复出厂设置,然后将机器摆成图示角度,点击自动标定按钮,数秒后标定完成,然后发送M500指令保存设置 发送G28回到HOME点,导入G代码生成软件导出的G代码,就可以开始愉快的写字了。写字测试,由于抬笔结构为旋转式抬笔,速度太快写字会飘,后续考虑改结构,做成直上直下结构。 模型下载地址:https://www.thingiverse.com/thing:3096135 制作过程舵机线不够长的,先将线加长到80cm,在较长的一根铝管一端装上舵机支架,将舵机线穿入管内
安装连接件
安装皮带轮,提前套入同步带,不要漏了 限位开关为常闭型,如果买的常开型,自己改下线,接触片朝下。 有个螺孔被挡住了,3颗勉强固定,网上底座图纸孔位已更新 两个M4螺钉反装如图,正装转动螺母会松 插上电机线,裹上束线管,机械部分就算完成了
坐标系定义如下,X轴平行于电机座侧边,原点相对于旋转中心偏移如下 代码控制板作为下位机,他的作用是解释上位机发过来的G代码,G代码包含运动坐标值和一些控制指令,对于运动控制,下位机就是将G代码转换成步进电机的脉冲控制步进电机。这里比较关键的就是坐标正解反解函数,已知末端坐标值求出机械臂的角度,或已知机械臂的角度求出末端坐标值。 和drawbot一样的平行四边形结构,副臂电机控制的副臂相对于世界坐标系的角度,即“绝对角度”scara 通过同步带传送,将电机移动到固定底座上,也为“绝对角度”scara 两种结构运动算法稍微有点区别。marlin 自带的scara算法属于“相对角度”scara,这里容易被忽略。
SCARA_RAD2DEG弧度角度转换常数,即180/π。三角函数计算是弧度计算,所以所有角度需先转换成弧度。通过三角函数关系算出x_sin x_cos y_sin y_cos. 则图中黄色向量表示世界坐标系下的末端位置,(-x_cos - y_cos,x_sin + y_sin ) 。再减去用户坐标偏移SCARA_offset,得到用户坐标系下的末端坐标值。 反解算法如下
cartesian[X_AXIS][Y_AXIS]为用户坐标系下坐标值,加上SCARA_offset得到世界坐标系下坐标值。 其中SCARA_pos[X_AXIS]向量方向向右,与原坐标值X方向相反,故取反。
L1_2 L2_2是预先定义好的臂长的平方 则直线AB距离的平方为 sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS] 三角形ABC中,现已知三边长度,由余弦定理推出 cosC=(a^2+b^2-c^2)/2ab α的补角为 arccos [ ( (float)L1_2 + (float)L2_2- sq(SCARA_pos[X_AXIS]) - sq(SCARA_pos[Y_AXIS]) ) /(2Linkage_1Linkage_2) ]//这里是伪代码,C语言没有arccos函数 SCARA_C2为补角的cos值得取反 SCARA_C2 = ( sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2 ) /(2Linkage_1Linkage_2); 将α cos值转换为sin值 SCARA_S2 = sqrt( 1 - sq(SCARA_C2) ); 根据三角函数关系求出 SCARA_K1 SCARA_K2 由图可知SCARA_theta +δ+β =π/2 δ+γ =π/2 则SCARA_theta =γ-β = ( atan2(SCARA_K1, SCARA_K2)-atan2(SCARA_pos[X_AXIS],SCARA_pos[Y_AXIS]) ) SCARA_psi = α+SCARA_theta = atan2(SCARA_S2,SCARA_C2) + SCARA_theta 乘上弧度角度转换因子得出大小臂角度值 delta[X_AXIS] = SCARA_theta SCARA_RAD2DEG 更新:
|
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed