MakerLab创客实验室 — Let's Make something.
现在注册
已注册用户请 登入
收藏此话题的成员
卡通鱼刺 mini avatar
卡通鱼刺 large avatar
MakerLab创客实验室  ›  固件

关于极坐标打印机的一系列问题,有请有经验的高手和对代码有研究的高手

By 卡通鱼刺 at 一年前 , 1646 次浏览

新手问题较多,看到各个3D打印机的论坛中这个还比较活跃,所以特来请教!
最近在考虑制作极坐标打印机,并已经着手写一点固件程序并测试,但是这个过程中有好多问题,希望这里的前辈来指点一下。我是用MARLIN固件,在marlin固件中有DELTA机型和 SCARA机型代码,后者是使用极坐标的,但是我想做的又和SCARA不太一样。在分析marlin代码时有如下问题:
1、关于configuration.h中定义 X Y轴最大最小位置是指的打印件的坐标系位置么?当然在使用笛卡尔坐标系的打印机下是一样的,但是极坐标系打印机的话就不对应。
// Travel limits after homing
#define X_MAX_POS 200
#define X_MIN_POS 0
#define Y_MAX_POS 200
#define Y_MIN_POS 0
#define Z_MAX_POS 225
#define Z_MIN_POS MANUAL_Z_HOME_POS
2、#define DEFAULT_AXIS_STEPS_PER_UNIT {103.69,106.65,200/1.25,1000} // default steps per unit for SCARA
定义电机单位步进数时如果是一般打印机应该填前进1毫米的步进数即steps/mm,如果是极坐标电机直驱是不是应该填电机旋转一度的步进数即steps/degree?
3、在marlin_main.cpp中G2、G3代码中,以G2为例:
#ifndef SCARA //disable arc support
case 2: // G2 - CW ARC
if(Stopped == false) {
get_arc_coordinates();
prepare_arc_move(true);
return;
}
break;
第一行#ifndef的规则是什么?是表示如果没有定义SCARA就执行case 2即定义G2么?
4、这个问题关于plan_buffer_line()函数的, 网上有一篇《Delta(rostock型)3d打印机算法解读及调试步骤》(3D小蚂蚁工作室的鸭哥)的文章中说,在DELTA机型的void calculate_delta(float cartesian[3])中计算的是每个轴电机的坐标原话是:“来看看calculate_delta()函数,这个函数的主要用途是将打印件的世界坐标转换为三个垂直的电机轴的运动坐标哦。注意:新的marlin支持SCARA结构的delta,那里也有个calculate_delta()的函数,不过那个跟rostock有点差异。所以我们还是看rostock的吧。”
我的疑问是函数中得到的delta是正数,如果是坐标那就要求每个轴的原点要设为0,这就跟我的第一个问题有关系了,如果第一个问题中是指打印件的坐标系的话,那不是笛卡尔坐标系的打印机在逻辑上就不通了,因为完全可以把最小位置设为负数,如果把最小位置设为负数,DELTA打印机就不能正常工作了吧?

1 回复
zz910205 medium avatar
#1 - 5 个月前
zz910205

你好,我也在研究极坐标3D打印机,您的问题解决了么