【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 252248|回复: 808

[教程] 【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...

  [复制链接]
发表于 2018-9-12 15:57 | 显示全部楼层 |阅读模式
本帖最后由 明娃子 于 2019-6-29 00:08 编辑

这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及发帖分享。所以先立这个帖子吧,这两天先打点零件出个组装教程。
打印件已全部放在
thingiverse上 :
游客,如果您要查看本帖隐藏内容请回复


2018.9.29插楼更新
新款笔夹测试,stl已更新,新增4mm*40mm光轴2根,8*4*10铜套2个。


部分定制件不好购买,这里提供部分零件
https://item.taobao.com/item.htm ... ibT&id=596224282726
2018.11.27插楼更新
Thingiverse上第6版固件已更新,新增自动调试功能,解决画线不直问题。1.确保大小臂长度为200mm
2.大臂与电机座侧边平行
3.小臂与大臂呈45度角
4.发送M700自动开始自动标定,数秒后自动标定完成
drawbot calibration.jpg 2019.5.31插楼更新
更新最新版上位机【机械臂大师】,后面附有连接,更多功能大家先自行摸索
QQ截图20190531172720.jpg
插楼结束


大家可以先打,有什么建议可以提出,图纸不断更新中。
暂时取名叫做drawbot吧,也想不出啥名字了。
arduino中文论坛和贴吧同步直播,欢迎关注。
简介:
桌面级scara机械臂,运动机构为两个42步进电机和一个9g舵机,控制板为mega 2560 和ramps 1.4,其他部件主要为3D打印件,工作范围为A4纸,使用国标G代码,目前可以实现写字画画功能。
交流q群 791947714
mmexport1531729597713.jpg

18.9.13 更新
---------------------机械安装教程-------------------

drawbot 所用零件除打印件和铝管外均为标件,tb上都能买到。  打印件tb上也有代打的,当然也可以找我打。
bom 表已整理完成,见下表。螺钉螺母数量可能不准确,建议多备几颗。舵机线长度需要80cm,长度不够的,需要自己接延长线。M8*55六角螺钉可用Φ8*40*M8 塞打螺钉代替,提高两个驱动轮同轴度。
铝管长度为178mm  200mm(老款笔夹)  178mm 197mm(新款笔夹),bom中长度有误,请注意。
步进电机和限位开关线长度为40cm。 QQ截图20180919115015.jpg

18.9.17更新

零件差不多齐了,忽略图中的钳子,开搞了
092057q6al42sv1ahqhfqf.png
092152ojsvsvb9blvhh6s7.jpg

舵机线不够长的,先将线加长到80cm,在较长的一根铝管一端装上舵机支架,将舵机线穿入管内
092244vu4silofediiidzu.png

装上舵机和笔夹,之前bom表漏掉了一个2mm*12mm光轴,可用钢丝代替 092258a25ky2sst92vn9yg.png
092300vhjh2cpjq5qp6cet.png

安装连接件,M4*35螺钉需要两个M4垫片,图中未画出
092452o8881dgf9z8ex8j1.png
092444h8ffqzqqanxklzi8.png

安装皮带轮,提前套入同步带,不要漏了
092536o3of6qjozrror6pr.png

限位开关为常闭型,如果买的常开型,自己改下线,接触片朝下。
092545sl77j7fsvxz50d7x.png

有个螺孔被挡住了,3颗勉强固定,网上底座图纸孔位已更新
092548vfayz4sjzwyw1w6b.png

两个M4螺钉反装如图,正装转动螺母会松
092552suhyjguwuvh7y7yi.png

插上电机线,裹上束线管,机械部分就算完成了
092908dsapniz28czvfrzr.png

附上全家福
092920a8oorjo600q02rz4.jpg
简单测试下重复精度,晚点再更新电气部分
视频如下
https://tieba.baidu.com/p/5881812268?pid=122005283943&cid=0&red_tag=2023302554#122005283943
https://gss3.baidu.com/6LZ0ej3k1Qd3ote6lo7D0j9wehsv/tieba-smallvideo-transcode/33_3724987122587fdcc04fb928eca2affe_1.mp4

2018.9.19更新
---------------------调试教程-------------------
4988驱动模块安装方向如图所示,驱动模块下方6个细分设置引脚全部短接。驱动模块电流调节方法见
http://www.diankeshequ.com/forum.php?mod=viewthread&tid=2003
1b556c899e510fb3e37e988cd433c895d0430cdb.jpg
2c50b086c9177f3ea59c13167dcf3bc79e3d569e.jpg


18.9.22更新
需要使用的软件主要如下

Xloader固件烧录软件
https://pan.baidu.com/s/1QR_wpkzYAFThaMymp68Hgg

机械臂大师上位机
链接:https://pan.baidu.com/s/1mu_-qLm5Fbt2HIe0oHoI1A  提取码:q3v3

G代码生成软件1 inkscape及相关插件
https://pan.baidu.com/s/1dC-QIEEeyjRYqdUHBHABpw插件由aelab提供,大家觉得好用,可以购买他们的正版上位机,付费的自然好用的多,可以手机录入字体,支持填表功能等,传送门http://www.aelab.net

G代码生成软件2 奎享雕刻绿色版
链接:https://pan.baidu.com/s/1LBNSbfco1w0OKND0DE3ZPQ 提取码:s2fu

G代码生成软件3  laserGRBL,支持中文
https://pan.baidu.com/s/1yDEdDrPJ07wWkfhLtU5nOg

将mega2560连接电脑,选择对应的端口,用xloader烧录hex固件。
PU~Y)A7XV(GWS38U235MS@X.png

打开机械臂大师,选择对应端口连接
QQ截图20190531172333.jpg
出现如下返回值则连接成功。
QQ截图20180922004237.jpg

软件界面介绍如下

常用的控制指令如下。
G1 X10 Y10   直线移动
G28 回home点,每次开机后需要先回home点以确定机械臂位置
G90 切换到绝对坐标系
G91切换到相对坐标系
G94切换到直角坐标系
G95切换到到角度坐标系
直角坐标系
新建位图图像.jpg
角度坐标系定义如下,红线平行于电机座侧边
QQ截图20180922011318.jpg

M3 舵机落笔  转到默认落笔角度
M3 S15 舵机转到15度
M4 L10 T40  设置默认落笔角度为10 默认抬笔角度为40
M5舵机抬笔  转到默认抬笔角度M92 X48.8 Y48.8 设置电机分辨率,如果电机步进角是1.8°,16细分直接用出厂设置就行
M203 X2000 Y2000  设置电机最大运动速度
M201 X1000 Y1000 设置电机运动加速度
M205 X0.8 电机运动平滑度 (下面介绍)
M503 查看机械臂设置参数
M501 载入用户参数(保存到EEPROM的参数)
M502 恢复出厂设置
M500 保存用户参数(保存到EEPROM)
M370 将当面位置定义为坐标原点
M700 自动标定
所有参数修改后需用M500保存,否则重启后数据会丢失


首次连接后需要先发送M502恢复出厂设置,然后将机器摆成图示角度,点击自动标定按钮,数秒后标定完成,然后发送M500指令保存设置
1.大臂与电机座侧边平行
2.小臂与大臂呈45度角



发送G28回到HOME点,导入G代码生成软件导出的G代码,就可以开始愉快的写字了。写字测试,由于抬笔结构为旋转式抬笔,速度太快写字会飘,后续考虑改结构,做成直上直下结构。

18.9.23 更新

新版笔架以设计好,晚点试试效果,没问题就就上传thingiverse
QQ截图20180923223813.jpg

新版笔夹已做好,新笔夹对打印机要求较高,光轴铜套不同心的话,滑动不顺畅,准备再改善下,降低打印难度

QQ截图20180929133918.jpg

2018-10-16更新
---------------------代码简介-------------------控制板作为下位机,他的作用是解释上位机发过来的G代码,G代码包含运动坐标值和一些控制指令,对于运动控制,下位机就是将G代码转换成步进电机的脉冲控制步进电机。这里比较关键的就是坐标正解反解函数,已知末端坐标值求出机械臂的角度,或已知机械臂的角度求出末端坐标值。
大多数工业scara机械臂副臂控制电机位于主臂和副臂上,电机控制的大臂小臂之间的角度,属于“相对”角度scara。如下图
timg.jpg

和drawbot一样的平行四边形结构,副臂电机控制的副臂相对于世界坐标系的角度,即“绝对角度”scara
113334_G07F_3503462.jpg

通过同步带传送,将电机移动到固定底座上,也为“绝对角度”scara
5cb83fd0d5d2e34a79f212f6c299b857_preview_featured.jpg

两种结构运动算法稍微有点区别。marlin 自带的scara算法属于“相对角度”scara,这里容易被忽略。

drawbot正解算法如下:
[mw_shl_code=bash,true]void calculate_SCARA_forward_Transform(float f_scara[3])
{
    float x_sin, x_cos, y_sin, y_cos;
    x_sin = sin(f_scara[X_AXIS]/SCARA_RAD2DEG) * Linkage_1;
    x_cos = cos(f_scara[X_AXIS]/SCARA_RAD2DEG) * Linkage_1;
    y_sin = sin(f_scara[Y_AXIS]/SCARA_RAD2DEG) * Linkage_2;//当Y电机控制小臂相对于世界坐标系旋转角度时使用此公式
    y_cos = cos(f_scara[Y_AXIS]/SCARA_RAD2DEG) * Linkage_2;//当Y电机控制小臂相对于世界坐标系旋转角度时使用此公式
    delta[X_AXIS] = -x_cos - y_cos - SCARA_offset[X_AXIS];  //求得用户坐标系下X值
    delta[Y_AXIS] = x_sin + y_sin - SCARA_offset[Y_AXIS];  //求得用户坐标系下Y值
}[/mw_shl_code]

QQ截图20181016103402.jpg

SCARA_RAD2DEG弧度角度转换常数,即180/π。三角函数计算是弧度计算,所以所有角度需先转换成弧度。通过三角函数关系算出x_sin  x_cos  y_sin y_cos.
则图中黄色向量表示世界坐标系下的末端位置,(-x_cos - y_cos,x_sin + y_sin ) 。再减去用户坐标偏移SCARA_offset,得到用户坐标系下的末端坐标值。

drawbot反解算法如下:
[mw_shl_code=bash,true]void calculate_delta(float cartesian[3]){


float SCARA_pos[2];
  static float SCARA_C2, SCARA_S2, SCARA_K1, SCARA_K2, SCARA_theta, SCARA_psi;

  SCARA_pos[X_AXIS] = -cartesian[X_AXIS] - SCARA_offset[X_AXIS];  //求世界坐标系下X值并取反
  SCARA_pos[Y_AXIS] = cartesian[Y_AXIS] + SCARA_offset[Y_AXIS];  //求世界坐标系下Y值

  SCARA_C2 =   ( sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2 ) /(2*Linkage_1*Linkage_2);

  SCARA_S2 = sqrt( 1 - sq(SCARA_C2) );
  SCARA_K1 = Linkage_1 + Linkage_2 * SCARA_C2;
  SCARA_K2 = Linkage_2 * SCARA_S2;

  SCARA_theta = ( atan2(SCARA_K1, SCARA_K2)-atan2(SCARA_pos[X_AXIS],SCARA_pos[Y_AXIS]) ) ;//大臂旋转角度,即主臂与-X轴夹角

  SCARA_psi   =   atan2(SCARA_S2,SCARA_C2) + SCARA_theta;//小臂旋转角度,当Y电机控制小臂相对于世界坐标系旋转角度时使用此公式

  delta[X_AXIS] = SCARA_theta * SCARA_RAD2DEG; //大臂旋转角度转换为弧度
  delta[Y_AXIS] = SCARA_psi * SCARA_RAD2DEG;   //小臂旋转角度转换为弧度

}
}[/mw_shl_code]
新建 Microsoft PowerPoint 演示文稿.png
cartesian[X_AXIS][Y_AXIS]为用户坐标系下坐标值,加上SCARA_offset得到世界坐标系下坐标值。
其中SCARA_pos[X_AXIS]向量方向向右,与原坐标值X方向相反,故取反。
#define L1_2 sq(Linkage_1)
#define L2_2 sq(Linkage_2)
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]) ) /(2*Linkage_1*Linkage_2)  ]//这里是伪代码,C语言没有arccos函数
SCARA_C2为补角的cos值得取反
SCARA_C2 =   ( sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2 ) /(2*Linkage_1*Linkage_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
delta[Y_AXIS] = SCARA_psi * SCARA_RAD2DEG
2018.12.18更新
运动平滑度参数设置补充说明,运动平滑度就是工业机器人中的CNT值,因为速度不可以瞬间改变,折线运动中,如果准确运动到折点,折点速度为0,速度为很慢,所有用一条弧线代替折线,两条线的加速度梯形相交,设定值即为相交点的速度,设置越大,速度越快,路径被倒成的圆角也就越大。
图片1.jpg
UC截图20181210092912.jpg


















发表于 2018-10-2 12:42 | 显示全部楼层
虽然装慢不过总算完成架子,可以要固件去了。。  54883661@qq.com
IMG_20181002_123217.jpg
发表于 2018-10-6 12:16 | 显示全部楼层
x223222981@foxmail.com

谢谢大佬

1

1

2

2
发表于 2018-10-15 18:58 | 显示全部楼层
感谢分享,好人一生平安
shixiaohui.cc@foxmail.com
xiezishou.jpg
发表于 2018-10-24 14:59 | 显示全部楼层
本帖最后由 倾音听雪 于 2018-10-24 15:10 编辑

458499109423737267.jpg 大佬求固件447458740@qq.com
发表于 2018-10-24 15:04 | 显示全部楼层
发表于 2018-10-24 20:40 来自手机 | 显示全部楼层
求大佬给固件~
IMG_20181024_204018.jpg
发表于 2018-9-12 16:03 | 显示全部楼层
关注一下,能发打印件的图纸吗?
发表于 2018-9-12 17:43 | 显示全部楼层
不错哦!  居然是粉色。
 楼主| 发表于 2018-9-12 23:02 | 显示全部楼层
历史中的一粒尘埃 发表于 2018-9-12 16:03
关注一下,能发打印件的图纸吗?

上面有图纸连接
发表于 2018-9-13 20:28 | 显示全部楼层
不错,好东西,好好学习下!
发表于 2018-9-13 22:10 | 显示全部楼层
可以开通下打赏功能哈
https://www.arduino.cn/thread-31092-1-1.html
 楼主| 发表于 2018-9-16 00:13 | 显示全部楼层
syl312 发表于 2018-9-13 22:10
可以开通下打赏功能哈
https://www.arduino.cn/thread-31092-1-1.html

谢谢大佬
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 07:29 , Processed in 0.113662 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表