博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kossel 升级记 - 增加断料检测
阅读量:6831 次
发布时间:2019-06-26

本文共 3713 字,大约阅读时间需要 12 分钟。

由于Kossel是使用远程挤出机,那么如果手动更换打印耗材就是一件非常麻烦的事,要将耗材从远程挤出机中抽出或者插入都是一件极为麻烦的事,甚至某些时候可以说是一团糟。如果LCD控制菜单或者通过GCode指令能帮助我们完成这一项工作那将是一种福音。

Marlin支持一个非常棒的GCode那就是M600,这是一个指示打印机更换打印耗材的半自动化功能。

但如果要打开这个功能就需要在固件中更改不少的地方,首先要找到FILAMENT_RUNOUT_SENSOR的定义并取消注释,使耗材检测传感器处于可用状态。然后要将FIL_RUNOUT_INVERTING设置为true,具体代码如下:

/** * Filament Runout Sensor * A mechanical or opto endstop is used to check for the presence of filament. * * RAMPS-based boards use SERVO3_PIN. * For other boards you may need to define FIL_RUNOUT_PIN. * By default the firmware assumes HIGH = has filament, LOW = ran out */#define FILAMENT_RUNOUT_SENSOR#if ENABLED(FILAMENT_RUNOUT_SENSOR)  #define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.  #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined.  #define FILAMENT_RUNOUT_SCRIPT "M600"#endif

此时需要在将的 pins_RAMP.h 文件中的FIL_RUNOUT_PIN指向当前使用的跳线,如果采用Y-MIN则要改成以下的设定

#define FIL_RUNOUT_PIN      14 // 现在采用 Y-Min // 4

如果不清楚传感器的状态可以输入M119来查看断料传感器的状态,插入耗材后filament的状态应该为Tiggered, 在Pronterface的输出如下所示:

>>> M119SENDING:M119Reporting endstop statusx_max: openy_max: openz_min: openz_max: openfilament: TRIGGERED

当然此时你还没有上传固件,因为现在的状态是不能成功进行编译的FILAMENT_RUNOUT_SENSOR是需要在Configuration_adv.h文件中启用ADVANCED_PAUSE_FEATURE才能成功编译。打开Configuration_adv.h文件找到以下的代码行:

/** * Advanced Pause * Experimental feature for filament change support and for parking the nozzle when paused. * Adds the GCode M600 for initiating filament change. * If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle. * * Requires an LCD display. * Requires NOZZLE_PARK_FEATURE. * This feature is required for the default FILAMENT_RUNOUT_SCRIPT. */#define ADVANCED_PAUSE_FEATURE

这个选项实际的意义就是让3d打印机可以暂停打印并进行停靠,当然你还得在Configuration.h 文件中将NOZZLE_PARK_FEATURE启用起来:

/** * Nozzle Park * * Park the nozzle at the given XYZ position on idle or G27. * * The "P" parameter controls the action applied to the Z axis: * *    P0  (Default) If Z is below park Z raise the nozzle. *    P1  Raise the nozzle always to Z-park height. *    P2  Raise the nozzle by Z-park amount, limited to Z_MAX_POS. */#define NOZZLE_PARK_FEATURE#if ENABLED(NOZZLE_PARK_FEATURE)  // Specify a park position as { X, Y, Z }  #define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }  #define NOZZLE_PARK_XY_FEEDRATE 100   // X and Y axes feedrate in mm/s (also used for delta printers Z axis)  #define NOZZLE_PARK_Z_FEEDRATE 5      // Z axis feedrate in mm/s (not used for delta printers)#endif

其中的三个变量的定义的意思如下:

  • NOZZLE_PARK_POINT - 指定效应器的停靠位置
  • NOZZLE_PARK_XY_FEEDRATE - 指定效应器在停靠时XY轴方向(水平)运行速度
  • NOZZLE_PARK_Z_FEEDRATE - 指定效应器在停靠时Z轴方向(垂直)运行速度

然后回到 Configuration_adv.h 文件中,还需要对 ADVANCED_PAUSE_FEATURE内的具体选项进行修改,否则在更换耗材时耗材只会被拖出一点点或者送进一点点,因为Marlin是对近程挤出机进行设置的所以出料与入料都设得很短,因此我们得将FILAMENT_CHANGE_UNLOAD_LENGTHFILAMENT_CHANGE_LOAD_LENGTH设置得长一些,我这里是设置成为500,也就是50CM,代码如下所示:

#if ENABLED(ADVANCED_PAUSE_FEATURE)  // ... 省略  #define FILAMENT_CHANGE_UNLOAD_LENGTH 500   // Unload filament length from hotend in mm  #define FILAMENT_CHANGE_LOAD_LENGTH 500     // Load filament length over hotend in mm                                              // Longer length for bowden printers to fast load filament into whole bowden tube over the hotend,  // ...#endif

上传,然后运行。成功?

不好意思,你的打印机一定只会不停地出现要你插入耗材的提示而且根本没有按照我们所想那样退料50cm或者进料50cm,这是什么鬼?如果打开Pronterfont来观察打印机的日志输出你会发现这么一行:

echo: too long extrusion prevented

然后打印机的LCD控制面板就会提示你插入耗材(即使现在已经插入了耗材)。这是由于被EXTRUDE_MAXLENGTH这个选项给限制了,它是阻止挤出过多地挤出耗材设定的,默认值只有200,对于远程挤出机来说根本不够,那就将它改成600吧,在Configuration.h你可以找到它,代码如下所示:

#define PREVENT_LENGTHY_EXTRUDE#define EXTRUDE_MAXLENGTH 600

上传固件,大功告成!

注意 : 如果你没有将挤出头的温度加热到170度以上,LCD中是不会出现更换耗材菜单的,记得想更换耗材之前要预热哦。

转载地址:http://nqnkl.baihongyu.com/

你可能感兴趣的文章
返回顶部按钮
查看>>
程序员面试题100题第05题——查找最小的K个元素
查看>>
疯狂.NET 通用权限设计 C\S后台管理,B\S前台调用源码样例程序×××之 --- 操作权限...
查看>>
linux工作进程状态显示---------top命令
查看>>
RHEL7下 nginx 的详细配置
查看>>
LeetCode - Solved Algorithms
查看>>
SharePoint 2010 显示一个人是否在线
查看>>
第十篇 SpringBoot 2 x发送邮件
查看>>
从搞笑到高效,构建敏捷团队的基础原则
查看>>
python 基础语法学习笔记(2019年4月第二周学习笔记)
查看>>
springboot mybatis 项目框架源码 shiro 集成代码生成器 ehcache缓存
查看>>
《SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用》
查看>>
LayoutInflater的作用
查看>>
QT 消息处理机制
查看>>
看过Jdk动态代理类长啥样吗?Jdk动态代理原理源码分析
查看>>
volatile
查看>>
JavaScript 二叉树算法排序 图文并茂 这篇就够了
查看>>
操作中按了home键后广播为什么接收不了问题
查看>>
C# 组合控件
查看>>
Jquery获取属性值
查看>>