• Models
  • Contests
  • Slicer
  • Login
  • Start Here
    thingiverse-iconprintables-iconcults3d-iconmakerworld-iconmyminifactory-icon

    3D GO

    3D ModelsContestsCollectionsSaved ModelsOn a mobile device?

3D GO

Privacy Policy
drawbot 写字写字机械臂 3D Printer File Image 1
drawbot 写字写字机械臂 3D Printer File Image 2
drawbot 写字写字机械臂 3D Printer File Image 3
drawbot 写字写字机械臂 3D Printer File Image 4
drawbot 写字写字机械臂 3D Printer File Image 5
drawbot 写字写字机械臂 3D Printer File Image 6
drawbot 写字写字机械臂 3D Printer File Thumbnail 1
drawbot 写字写字机械臂 3D Printer File Thumbnail 2
drawbot 写字写字机械臂 3D Printer File Thumbnail 3
drawbot 写字写字机械臂 3D Printer File Thumbnail 4
drawbot 写字写字机械臂 3D Printer File Thumbnail 5
drawbot 写字写字机械臂 3D Printer File Thumbnail 6

drawbot 写字写字机械臂

mossbot avatarmossbot

October 18, 2024

makerworld-icon
DescriptionCommentsTags

Description

先来一张效果图

再来一张全家福

看看书写效果

项目简介:

桌面级scara机械臂,运动机构为两个42步进电机和一个9g舵机,控制板为mega 2560 和ramps 1.4,其他部件主要为3D打印件,工作范围为A4纸,使用国标G代码,目前可以实现写字画画功能。

交流q群 791947714

 

测试视频见

https://v.youku.com/v_show/id_XMzg0MzA0NjY4MA==.html?playMode=pugv&spm=a2hje.13141534.card_3.d_1_3&scm=20140719.manual.239312.video_XMzg0MzA0NjY4MA== 

 

https://v.youku.com/v_show/id_XNjQxODc4NTYwNA==.html?playMode=pugv&spm=a2hje.13141534.card_3.d_1_1&scm=20140719.manual.239312.video_XNjQxODc4NTYwNA== 

 

https://youtu.be/NTBxLTUPyTU?si=kK8MbXBvQ_6qLob7


https://youtu.be/tPbYbp5LPhs?si=99UB9mAYLIAaEC__


https://www.youtube.com/watch?v=JfaiAnQvb0s

 

 

                                                                                                                                     

这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及发帖分享,这两天先打点零件出个组装教程。

 

需要用到的软件如下(两个链接内容一样,下载其中一个即可):
 

百度网盘(针对中国区用户)

 https://pan.baidu.com/s/18yXWUpLg42WciHy6xodiBA?pwd=krjr 提取码: krjr

Google网盘(针对全球用户)

https://drive.google.com/drive/folders/1Z0zM5VJ--ebthopvkgDU_kdO5pZJhkqG?usp=drive_link

 

 

配件包购买地址:

https://item.taobao.com/item.htm?id=1014022063556&mi_id=0000RvyG5r5gFKexPHN8P56AbPpiArThKv0HzF9AfO1-lg0&spm=a21xtw.29178619.0.0&xxc=shop

 

 

---------------------机械安装教程-------------------

drawbot 所用零件除打印件和铝管外均为标准件,bom 表已整理完成,见下表。

安装笔夹

 

舵机线不够长的,先将线加长到80cm,在较长的一根铝管一端装上舵机支架,并安装上舵机,将舵机线穿入管内,舵机线从管内穿入可隐藏走线,更美观。

 

安装大小臂,图示孔心距为200mm

图示孔心距50mm

由于铝管切割有误差,安装时保证图示尺寸为180mm即可。

安装电机座

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

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

安装步进电机

两个M4螺钉反装如图

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

电气接线图如下,舵机 红正黑负 棕色为信号线,4988驱动模块下面 需全部短接,以设置步进电机为16细分。电源为12v 电流大于2A即可。

注意!!!12V电源是插红色ramps1.4板子上,不是插底下蓝色mega2560板子。插错容易烧主板。

步进电机先不分正反插上,后续调试如何回home归位方向不是向着触发限位的方向,再将电机反插就行。

 

如果电机光抖动不转,那就是电机线序有问题。用万用表测试一下,短接在一组的就是一相,如下图,左边红色两根线是导通的,是一相,右边亮蓝色两根线也是导通的,是另一相。如线序不对,用镊子挑开端子换一下即可。

---------------------调试教程-------------------

将mega2560连接电脑,打开设备管理器-端口找到如下端口, 如果电脑无法识别控制板,需要控制板驱动,找商家要即可。

用xloader烧录hex固件。选择对应的端口,波特率和主板设置如图,然后点击upload

打开机械臂大师,选择对应端口连接

出现如下返回值则连接成功。如果没有出现返回值,按一下控制板上的按钮即可。

软件界面如下

常用的控制指令如下:

G1 X10 Y10 直线移动

G28 回home点,每次开机后需要先回home点以确定机械臂位置

G90 切换到绝对坐标系

G91切换到相对坐标系

G94切换到直角坐标系

G95切换到到角度坐标系

M3 舵机落笔 转到默认落笔角度

M3 S15 舵机转到15度

M4 L10 T40 设置默认落笔角度L 默认抬笔角度为T (用M4修改抬笔落笔舵机角度后,再通过M3 M5指令抬笔落笔,确认角度是否合适 )

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恢复出厂设置,然后将机器摆成图示角度,大臂与电机座侧边平行,大小臂之间夹角为45°,可用A4纸对折得到45度角。

点击自动标定按钮,机械臂会自动归位,并触发限位,并通过计算到触发限位移动的步数,确定机械臂的角度,并数秒后标定完成,然后发送M500指令保存设置。

标定完成后,下次开机只需要回home位(点机械臂大师的中小房子即可,即G28指令)。如果机械臂重新拆装后,则需要重新标定。

如果标定后画线不直,请确认安装后下面3个尺寸是否准确,大小臂各长200mm,大臂和大臂拉杆轴承中心距离50mm。

发送G28回到HOME点,导入G代码生成软件导出的G代码,就可以开始愉快的写字了。

坐标系定义如下,X轴平行于电机座侧边,原点相对于旋转中心偏移如下,书写范围可以覆盖整个A4纸。

------------------------ ----控制代码部分-------- -------------------------

控制板作为下位机,他的作用是解释上位机发过来的G代码,G代码包含运动坐标值和一些控制指令,对于运动控制,下位机就是将G代码转换成步进电机的脉冲控制步进电机。这里比较关键的就是坐标正解反解函数,已知末端坐标值求出机械臂的角度,或已知机械臂的角度求出末端坐标值。

大多数工业scara机械臂副臂控制电机位于主臂和副臂上,电机控制的大臂小臂之间的角度,属于“相对”角度scara。如下图

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

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

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

drawbot正解算法如下:

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值

}

SCARA_RAD2DEG弧度角度转换常数,即180/π。三角函数计算是弧度计算,所以所有角度需先转换成弧度。通过三角函数关系算出x_sin x_cos y_sin y_cos.

则图中黄色向量表示世界坐标系下的末端位置,(-x_cos - y_cos,x_sin + y_sin ) 。再减去用户坐标偏移SCARA_offset,得到用户坐标系下的末端坐标值。

反解算法如下

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; //小臂旋转角度转换为弧度

}

}

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]) ) /(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

delta[Y_AXIS] = SCARA_psi SCARA_RAD2DEG

运动平滑度参数设置补充说明,运动平滑度就是工业机器人中的CNT值,因为速度不可以瞬间改变,折线运动中,如果准确运动到折点,折点速度为0,速度为很慢,所有用一条弧线代替折线,两条线的加速度梯形相交,设定值即为相交点的速度,设置越大,速度越快,路径被倒成的圆角也就越大。

License:

MakerWorld Exclusive License

Related Models

Fully 3D-printable wind-up car gift card preview image

Fully 3D-printable wind-up car gift card

Bribro12 profile image

Bribro12

29,347

Split-Flap Display preview image

Split-Flap Display

David Kingsman profile image

David Kingsman

5,632

Smartes LED-Namensschild Mini-Billboard ESP8266 D1 preview image

Smartes LED-Namensschild Mini-Billboard ESP8266 D1

HD Robotics Electronics profile image

HD Robotics Electronics

10

DIY Dremel CNC preview image

DIY Dremel CNC

NikodemBartnik profile image

NikodemBartnik

29,116

3D Printed RC SkidSteer V3.0 preview image

3D Printed RC SkidSteer V3.0

ProfessorBoots profile image

ProfessorBoots

3,030

Hydroponic NFC Tag Plant Tags preview image

Hydroponic NFC Tag Plant Tags

beastlyblake25 profile image

beastlyblake25

12

Iron Man Helmet, Articulated, Wearable preview image

Iron Man Helmet, Articulated, Wearable

Boxandloop profile image

Boxandloop

16,965

Otto DIY build your own robot preview image

Otto DIY build your own robot

HP Robots Otto profile image

HP Robots Otto

755