评论
|
我没有双头机器。这通常是怎么做的?切片软件当前是否正在处理移位? |
|
目前,切片软件内部几乎不支持多挤出机。 ReplicatorG-Dualstrusion-分支在启动代码中发送特殊的GCode以设置不同的坐标系,并且无论何时完成工具头变更,它也会变更此特定工具头的坐标系(发送多个GCode以变更工具头)。 Slic3r仅发送刀头更换命令(T0、T1 …)希望机器内部一切正常 在我看来,工具头距离是一个配置要做的机器/固件(所有其他机器相关的设置,如长度的x,y,z长度,步进率,…是在那里完成的,为什么不固定距离的工具头?)。 我为此创建了一个实验性的补丁,我现在正在测试: 在“Configuration.h”中,我添加了以下代码行(我使用了很多定义,以使二进制文件在不使用该特性的情况下不会增长): // Distance(s) between the nozzles to correct them automatically at tool head change
#define E0E1_X_DISTANCE 20.0
#define E0E1_Y_DISTANCE 0.0
//#define E0E2_X_DISTANCE 0.0
//#define E0E2_Y_DISTANCE 0.0
在“马林”中,我将“add_toolhead”数组添加到变量部分(就像“add_homeing”一样): float add_toolhead[3]={0,0,0};
向“process_commands()”函数添加每个轴的偏移量(再次类似于“add_homeing”) if(code_seen(axis_codes[X_AXIS]))
{
if(code_value_long() != 0) {
current_position[X_AXIS]=code_value()+add_homeing[X_AXIS]+add_toolhead[X_AXIS];
}
}
if(code_seen(axis_codes[Y_AXIS])) {
if(code_value_long() != 0) {
current_position[Y_AXIS]=code_value()+add_homeing[Y_AXIS]+add_toolhead[Y_AXIS];
}
}
if(code_seen(axis_codes[Z_AXIS])) {
if(code_value_long() != 0) {
current_position[Z_AXIS]=code_value()+add_homeing[Z_AXIS]+add_toolhead[Z_AXIS];
}
}
然后在“T”gcode处理程序内的gcode解析器中,将相应的工具头距离应用于变量: else if(code_seen('T'))
{
tmp_extruder = code_value();
if(tmp_extruder >= EXTRUDERS) {
SERIAL_ECHO_START;
SERIAL_ECHO("T");
SERIAL_ECHO(tmp_extruder);
SERIAL_ECHOLN(MSG_INVALID_EXTRUDER);
}
else {
active_extruder = tmp_extruder;
//MULTIPLE TOOLHEAD DISTANCE ADD ON
st_synchronize();
//remove old toolhead offset from current position
current_position[X_AXIS] -= add_toolhead[X_AXIS];
current_position[Y_AXIS] -= add_toolhead[Y_AXIS];
//reset current offset
add_toolhead[X_AXIS] = 0;
add_toolhead[Y_AXIS] = 0;
//setup specific toolhead offsets if defined
if( 1==active_extruder )
{
#ifdef E0E1_X_DISTANCE
add_toolhead[X_AXIS]=E0E1_X_DISTANCE;
#endif
#ifdef E0E1_Y_DISTANCE
add_toolhead[Y_AXIS]=E0E1_Y_DISTANCE;
#endif
}
else
if( 2==active_extruder )
{
#ifdef E0E2_X_DISTANCE
add_toolhead[X_AXIS]=E0E2_X_DISTANCE;
#endif
#ifdef E0E2_Y_DISTANCE
add_toolhead[Y_AXIS]=E0E2_Y_DISTANCE;
#endif
}
//add new toolhead offset to current position
current_position[X_AXIS] += add_toolhead[X_AXIS];
current_position[Y_AXIS] += add_toolhead[Y_AXIS];
//reset the extruder position
//DO NOT DO THIS! current_position[E_AXIS] = 0;
//move to new position...
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
//MULTIPLE TOOLHEAD DISTANCE ADD ON
SERIAL_ECHO_START;
SERIAL_ECHO(MSG_ACTIVE_EXTRUDER);
SERIAL_PROTOCOLLN((int)active_extruder);
}
}
现在我不确定是否需要在G92内部添加刀头距离。我需要确认一下。 case 92: // G92
if(!code_seen(axis_codes[E_AXIS]))
st_synchronize();
for(int8_t i=0; i < NUM_AXIS; i++) {
if(code_seen(axis_codes[i])) {
//==> BUG, REMOVE THIS LINE <== current_position[i] = code_value()+add_homeing[i];
if(i == E_AXIS) {
current_position[i] = code_value();
plan_set_e_position(current_position[E_AXIS]);
}
else {
current_position[i] = code_value()+add_homeing[i]+add_toolhead[i];
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
}
}
}
break;
我认为像这样的事情是一个简单而干净的解决方案。 |
|
我同意 |
|
我现在有一个双头的终极制造者。固件中的X/Y偏移会很有帮助。但我更希望看到每个挤出机的E值不同。现在我需要在每次换刀后重新设置E值,或者我需要使用相对E值,这会增加舍入误差。每个刀具的偏移量很容易在软件中进行补偿。 |
|
我已经成功地打印了马林和netfab双挤出-这有gcode偏移虽然.. 我希望能够使用马林(双挤压)与kisslicer,slic3r等,其中没有gcode偏移固件 Repetier固件刚刚实现了双挤出机与偏移在固件等-将测试时,我回到周日。 |
|
save head offset via “G10”? |
|
只想为基于固件的挤出机偏移添加+1,因为这显然是特定于机器的内部尺寸。切片软件应当仅仅管理工具架的选择而不知道它们的物理偏移。 |
|
这个是大约一年前创建的,已经有了很多变化,请下载最新的马林鱼副本,看看问题是否仍然存在。 你也最新的arduino IDE闪存的马林固件。如果您的董事会文件等只工作在旧的IDE升级那些第一,使他们在最新的IDE工作。 如果您为硬件创建的板文件不在https://github.com/ErikZalm/Marlin/tree/Marlin_v1/ArduinoAddons中,请派生marlin并添加文件,然后创建拉取请求,以便我们可以获得支持的硬件。这也会给予你知道人们在使用什么硬件。 |
|
此问题已自动锁定,因为在关闭后没有任何近期活动。请为相关错误打开一个新问题。 |



使用双挤出机时,通过“T”gcode(T0、T1、…)选择激活的工具头/热端。
由于大多数机器将有多个工具头/热端彼此相邻排列,因此它们之间会有一段距离(最有可能在X方向)。
这里我的想法:
==>“Configuration. h”中应有一个选项,允许定义刀头相对于第一个(标准)刀头的距离。
==>使用“T”地理代码更改刀头时,应选择适当的距离,应定位刀头距离(以便新选择的刀头与“T”地理代码之前的旧刀头精确位于相同位置),并且所有新移动应使用新距离设置作为偏移。
迈克