【3D打印机】原来配置Marlin2.0这么简单,别说我没告诉你。 您所在的位置:网站首页 电脑怎么调平 【3D打印机】原来配置Marlin2.0这么简单,别说我没告诉你。

【3D打印机】原来配置Marlin2.0这么简单,别说我没告诉你。

#【3D打印机】原来配置Marlin2.0这么简单,别说我没告诉你。| 来源: 网络整理| 查看: 265

`` ​

可能由于各人的打印机款式不同,某些参数没有出现在文中,但是只要你完全看完本指南,就可以理解Marlin是如何工作的,我相信在此基础上,你在固件中找到哪些不同配置并不困难。

本文的最终的目标是让你自己学会配置Marlin,消除恐惧,而不是需要依赖向导。

从头开始配置 Marlin 2.0.x 我强烈建议您在设置时遵循本文的顺序。原因是当你编辑固件时,参数也会以相同的顺序找到。这样你就不会在配置的路上留下一个隐藏的危险。

最重要的是要消除你对马林鱼的恐惧,如果这篇文章对你有帮助的话,它就已经完成了它的目标。了解马林你将了解和享受更多一点的3D打印和所有的可能性的令人兴奋的世界。

从marlin2.0固件开始适配自己的打印机咋看起来似乎是个挑战,只有经验丰富的程序员才能做到。但相信我,这种说法与事实相去甚远。

有一点耐心和一个好的文本编辑器(和编程知识),我们可以配置任何基于arduino的打印机与最新的固件版本没有任何问题。

事实上,Marlin是由很多很多文件组成的,但我们最多只需要修改一两个文件就可以编译一个工作的固件,然后将其上传到我们的打印机。当然,您可以随心所欲地自定义Marlin 2,但是我们已经需要修改相当多的文件,我们现在不会提及这些文件,或者稍后再做这些文件。

您可能想知道为什么需要学习配置Marlin 2.0.x。答案多种多样,但最让我信服的是,它为我们提供了安全性、性能改进,当然,还纠正了以前版本中报告的可能错误。

但是,我不否认,在配置和编译过程中,可能会出现难以解决的错误或问题。但有了百度和一点耐心,我们应该不会有太多麻烦。我们是DIY玩家,遇到问题就把问题解决掉就好啦。

在本手册中配置Marlin 2.0.x,正如我上面提到的几行,我们将使用一个“定制”打印机作为一个例子,我设计和建造了一段时间前。您可以看到我所做的更改,然后将其应用到您自己的机器上。我们将打开文件并按顺序(从文件的开头到末尾)更改参数。

请记住,对于配置Marlin 2.0,您需要事先知道机器的所有技术特性和组件。如挤出机类型、打印体积、热敏电阻等。所以,先提前收集好所有这些信息,然后我们马上着手去做。

正如我前面提到的,在配置Marlin 2.0.x时,有两个主要文件来管理一切,一个是基础配置的Configuration.h文件,另一个是高级配置的Configuration_adv.h文件,对于一个DIY爱好者来说,基本上只需要配置完这两个参数,就可以实现自己的3D打印机定制了。

备注:配置文件包含主要硬件、语言和驱动程序设置,以及打印机最常见的功能和组件的设置。在白色中,您可以看到我激活的选项(或默认激活的选项),在深灰色中可以看到未激活的选项。要激活一个选项,我们只需要消除参数前面的两个栏//。

接下来我将一步步带领你们将你们的打印机适配成marlin2.0的版本。

选择串口 #define SERIAL_PORT 0

只需要打开默认的arduino连接串口

通信速度(波特率) #define BAUDRATE 250000

我们将电脑连接到打印机的速度,默认值是250000,所以我们将保持这个速度。

如果您偶然与您的打印机有通信问题,您可以降低此参数的速度以尝试解决它。

主板或电子产品(主板) #ifndef MOTHERBOARD #define MOTHERBOARD BOARD_RAMPS_14_EFB #endif

非常重要的参数。在这里,我们将选择我们已经安装在3D打印机的电子设备。由于有许多电子产品可供选择,我们将不得不找出哪一种是我们的,并将其价值放在这里。

您在文件“boards.h”中有一个可兼容电子产品的列表。它位于Marlin固件的以下路径:\Marlin\src\core\boards.h

在我的例子中,我的3D打印机使用的是RAMPS_14_EFB电子板。对于它,我必须写“BOARD_RAMPS_14_EFB”,正如您在示例中看到的那样。你配置一个你自己的。

您的机器名称(CUSTOM_MACHINE_NAME) #define CUSTOM_MACHINE_NAME "3D Printer"

这很简单,即您希望新配置的打印机具有的名称。默认情况下,你会注意到它是禁用的,因此这两个栏出现在#define前面的" // "。

我们将删除这两根杆,并留下这样的配置

挤出机数量(挤出机) #define EXTRUDERS 1

这里,我们将配置挤出机的数量,我们的3D打印机有。默认情况下,初始值是1,因为大多数都有一个挤出机。如果不是这样,请输入正确的挤出机数量。

线材的直径 (DEFAULT_NOMINAL_FILAMENT_DIA) #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

在本节中,我们将选择打印机使用的直径类型。默认是1.75,虽然现在大多数打印机已经在1.75直径。但是假如我们有些使用的不同,那么必须改变它,这很重要。

Prusa多材料套件(PRUSA_MMU2) //#define MMU_MODEL PRUSA_MMU2

如果你安装了原始的Josef Prusa多材料工具包或其他中国克隆的工具包,那么就打开他,否则保持关闭。

标题温度传感器(TEMP_SENSORS)

在这一部分的Marlin固件,我们将定义我们的3D打印机中现有的温度传感器。在最新版本2.0.8.2中,增加了对更多挤出机的支持(总共支持11个传感器),包括一个用于腔室温度的传感器。正如你所看到的,有很多这样的传感器,并且在代码本身中出现了一个列表。如果您没有关于您的打印机的信息,请尝试咨询谷歌,因为它可能由使用相同打印机的其他用户记录。

缺省情况下,只有TEMP_SENSOR_0的值为1。在我的例子中,我必须把值5放在这里。因为我也有一个加热床,以提高印刷期间的附着性和避免扭曲问题,我设置TEMP_SENSOR_BED的值1。剩下的置0,因为我没有更多的挤出机或一个封闭的房间在这台打印机。

#define TEMP_SENSOR_0 5 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 #define TEMP_SENSOR_4 0 #define TEMP_SENSOR_5 0 #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 #define TEMP_SENSOR_BED 1 #define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_COOLER 0 标题温度限制器(MINTEMP & MAXTEMP)

在Marlin 2中配置这些参数是非常重要的,因为它们控制我们打印机的最高和最低温度。

我们将定义每一个可用的传感器必须在哪个范围内。这样,如果任何传感器没有达到或超过这个温度,Marlin会在显示屏上发出一个错误,并关闭Hotend和加热床。

在我的情况下,我通常设置挤出温度在5度(最低)和265度(最高)。如果挤出机或床没有达到5º度,我们将推断热敏电阻没有正确安装,或物理损坏。同样,在意外超过最高温度的情况下,它也会保护我们,这对我们和我们的家园的安全至关重要。

// Below this temperature the heater will be switched off // because it probably indicates a broken thermistor wire. #define HEATER_0_MINTEMP 5 #define HEATER_1_MINTEMP 5 #define HEATER_2_MINTEMP 5 #define HEATER_3_MINTEMP 5 #define HEATER_4_MINTEMP 5 #define HEATER_5_MINTEMP 5 #define HEATER_6_MINTEMP 5 #define HEATER_7_MINTEMP 5 #define BED_MINTEMP 5 #define CHAMBER_MINTEMP 5 // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) #define HEATER_0_MAXTEMP 265 #define HEATER_1_MAXTEMP 265 #define HEATER_2_MAXTEMP 265 #define HEATER_3_MAXTEMP 265 #define HEATER_4_MAXTEMP 265 #define HEATER_5_MAXTEMP 265 #define HEATER_6_MAXTEMP 265 #define HEATER_7_MAXTEMP 265 #define BED_MAXTEMP 150 #define CHAMBER_MAXTEMP 60 标题PID调优(挤出机) #if ENABLED(PIDTEMP) //#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM) //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM) //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) // Set/get with gcode: M301 E[extruder number, 0-2] #if ENABLED(PID_PARAMS_PER_HOTEND) // Specify between 1 and HOTENDS values per array. // If fewer than EXTRUDER values are provided, the last element will be repeated. #define DEFAULT_Kp_LIST { 22.20, 22.20 } #define DEFAULT_Ki_LIST { 1.08, 1.08 } #define DEFAULT_Kd_LIST { 114.00, 114.00 } #else #define DEFAULT_Kp 20.3 // Values that I added !! #define DEFAULT_Ki 1.43 // Values that I added !! #define DEFAULT_Kd 71.84 // Values that I added !! #endif #endif // PIDTEMP

控制控制控制挤出机和加热床温度的算法设置的部分。

我们可以更详细地讨论它是如何工作的,但这不是正确的文章。如果您有兴趣了解更多关于PID调优的知识,我建议您查看REPRAP上关于PID调优的以下文章。

默认情况下,市场上一些最知名的打印机的一些值已经预先确定。由于我的打印机不符合描述,我只是添加了我自己的值。

要从打印机获取值,您可以在Internet上查询这些值,也可以使用一个名为PID Autotune的内部马林函数自己生成这些值。

要做到这一点,将您的打印机连接到Repetier/Simplify3D或任何其他软件,允许您使用Gcode命令。一旦连接上,发送命令M303 E0 S200 C8,这个过程就会开始。

加热冷却8次后,加热结束,显示如下信息。你只需要取Kp、Ki和Kd的值,并在DEFAULT_Kp、DEFAULT_Ki和DEFAULT_Kd字段中输入它们。

bias: 92 d: 92 min: 196.56 max: 203.75 Ku: 32.59 Tu: 54.92 Clasic PID Kp: 19.56 Ki: 0.71 Kd: 134.26 PID Autotune finished ! Place the Kp, Ki and Kd constants in the configuration.h PID床整定(热床)

和以前一样,只是我们的加热床。在新固件中,默认情况下它将被禁用。如果您有一个加热床,您必须取消注释#define PIDTEMPBED选项,正如您将在我的配置中看到的那样。

您还可以运行另一个内部马林函数来获得您的床的最佳值。这是通过Gcode命令M303 E-1 C8 S90完成的。

//=========================================================================== //====================== PID > Bed Temperature Control ====================== //=========================================================================== /** * PID Bed Heating * * If this option is enabled set PID constants below. * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis. * * The PID frequency will be the same as the extruder PWM. * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz, * which is fine for driving a square wave into a resistive load and does not significantly * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W * heater. If your configuration is significantly different than this and you don't understand * the issues involved, don't use bed PID until someone else verifies that your hardware works. */ #define PIDTEMPBED //#define BED_LIMIT_SWITCHING /** * Max Bed Power * Applies to all forms of bed control (PID, bang-bang, and bang-bang with hysteresis). * When set to any value below 255, enables a form of PWM to the bed that acts like a divider * so don't use it unless you are OK with PWM on your bed. (See the comment on enabling PIDTEMPBED) */ #define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current if ENABLED(PIDTEMPBED) //#define MIN_BED_POWER 0 //#define PID_BED_DEBUG // Sends debug data to the serial port. //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) #define DEFAULT_bedKp 347.77 #define DEFAULT_bedKi 48.46 #define DEFAULT_bedKd 623.90 //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from pidautotune //#define DEFAULT_bedKp 97.1 //#define DEFAULT_bedKi 1.41 //#define DEFAULT_bedKd 1675.16 // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED

然而,有时激活PIDTEMPBED参数比不激活它更具破坏性。我建议您不要从一开始就启用它。

冷挤压(PREVENT_COLD_EXTRUSION) /** * Prevent extrusion if the temperature is below EXTRUDE_MINTEMP. * Add M302 to set the minimum extrusion temperature and/or turn * cold extrusion prevention on and off. * * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! *** */ #define PREVENT_COLD_EXTRUSION #define EXTRUDE_MINTEMP 170

这两个功能都管理马林的冷挤压。我们都知道,如果我们的喷头没有打开,是不建议挤出灯丝的。

PREVENT_COLD_EXTRUSION选项,它将直接防止我们挤压材料,如果我们的加热器没有达到定义的最低温度。

我们可以通过EXTRUDE_MINTEMP参数来配置允许马林挤出灯丝的最低温度。默认情况下两者都是活动的,所以您不必担心。

然而,我认为给它命名是很重要的,这样你就能证明它的存在。

挤出长度(prevent_length_extrude) /** * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH. * Note: For Bowden Extruders make this large enough to allow load/unload. */ #define PREVENT_LENGTHY_EXTRUDE #define EXTRUDE_MAXLENGTH 200

如注释中所示,它可以防止灯丝挤出的距离大于我们所配置的距离。这意味着Marlin将只允许你在一个单一的GCODE命令挤压最大200mm。如果您想在一个命令中挤出超过200mm的材料,例如使用Bowden从显示中加载灯丝的函数,您必须修改参数EXTRUDE_MAXLENGTH为一个更高的值。在Marlin 2中,两者都是默认启用的。

热保护(THERMAL_PROTECTION) /** * Thermal Protection provides additional protection to your printer from damage * and fire. Marlin always includes safe min and max temperature ranges which * protect against a broken or disconnected thermistor wire. * * The issue: If a thermistor falls out, it will report the much lower * temperature of the air in the room, and the the firmware will keep * the heater on. * * If you get "Thermal Runaway" or "Heating failed" errors the * details can be tuned in Configuration_adv.h */ #define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber #define THERMAL_PROTECTION_COOLER // Enable thermal protection for the laser cooling

这三个参数激活了马林2.0的额外热保护提供防止损坏我们的打印机。它们必须总是活跃的,事实上它们在Marlin 2中是默认的,所以我们不会以任何方式接触它们。

机械参数(COREXY运动学) //=========================================================================== //============================= Mechanical Settings ========================= //=========================================================================== // @section machine // Enable one of the options below for CoreXY, CoreXZ, or CoreYZ kinematics, // either in the usual order or reversed //#define COREXY //#define COREXZ //#define COREYZ //#define COREYX //#define COREZX //#define COREZY //#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042

市场上有不同运动学的打印机。例如笛卡尔运动学,delta, tripteron, corexy(及其变体)等等。事实上,我会用一篇不错的文章来讨论所有这些问题。

在这种情况下,您的3D打印机使用COREXY运动学或其任何变体,您应该激活其相应的参数。因为我用了笛卡尔运动学,所以我把所有的东西都去掉了

标题激活限位开关(USE_XMIN_PLUG & USE_XMAX_PLUG) // Specify here all the endstop connectors that are connected to any endstop or probe. // Almost all printers will be using one per axis. Probes will use one or more of the // extra connectors. Leave undefined any used for non-endstop and non-probe purposes. #define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG

在本节中,我们将向我们的Marlin固件指出我们已经连接到主板的限制开关。最常见的是使用3个限位开关来指示最小行程(或停止)。

通过这种方式,马林确定了归航时在所有轴上的初始位置(0)。还可以安装额外的传感器来确定最大行程。它们将用于防止机器超出严格必要的范围。它们不是必需的,但它们是控制所有未预见到的事情的好选择。

在我的特殊情况下,我在X轴(挤出机)和Y轴(床)上有两个机械限位开关。我也有一个水平传感器在Z,所以我只留下3个最小限制开关激活,你可以看到自己在下面的行。

限位开关触发高低电平(ENDSTOP_INVERTING) // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). #define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.

根据我们使用的传感器或限位开关的类型,它们将有不同的逻辑。它没有更大的神秘性,只是把它们都留在FALSE中,如果其中一个对您不起作用,在这里更改逻辑(您指示TRUE)。

驱动程序配置(DRIVER_TYPE) /** * Stepper Drivers * * These settings allow Marlin to tune stepper driver timing and enable advanced options for * stepper drivers that support them. You may also override timing options in Configuration_adv.h. * * A4988 is assumed for unspecified drivers. * * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01, * TB6560, TB6600, TMC2100, * TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE, * TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE'] */ #define X_DRIVER_TYPE DRV8825 #define Y_DRIVER_TYPE DRV8825 #define Z_DRIVER_TYPE DRV8825 //#define X2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988 //#define Z3_DRIVER_TYPE A4988 #define E0_DRIVER_TYPE DRV8825 //#define E1_DRIVER_TYPE A4988 //#define E2_DRIVER_TYPE A4988 //#define E3_DRIVER_TYPE A4988 //#define E4_DRIVER_TYPE A4988 //#define E5_DRIVER_TYPE A4988 //#define E6_DRIVER_TYPE A4988 //#define E7_DRIVER_TYPE A4988

使用我们现有的驱动程序配置Marlin 2固件是非常重要的。但是不用担心,这是一个很简单的过程。

默认情况下,你会看到所有的选项都是禁用的,所以你必须启用你将要使用的选项,这将是你在你的板上安装驱动程序的地方。

在我的打印机我有3个马达在3个轴(X, Y, Z),和一个单一的马达为挤出机。所以我启用了必要的选项。如您所见,第一个挤出机总是命名为E0。

但我们不仅必须启用这个选项,还必须指出你已经安装在电子设备上的驱动程序。因为我有DRV8825,我已经将它指示给编译器,仅此而已。

在评论中,你可以看到马林2中可用的所有类型的驱动程序,所以找到你的并将其记录下来。

电机步骤配置(DEFAULT_AXIS_STEPS_PER_UNIT) /** ``* Default Axis Steps Per Unit (steps/mm) ``* Override with M92 ``* X, Y, Z, E0 [, E1[, E2...]] ``*/ #define DEFAULT_AXIS_STEPS_PER_UNIT { 160, 160, 800, 803 }

在本节中,我们将告诉打印机每个运动单元将执行多少步。单位可以定义为毫米或英寸。

如果使用英寸,必须激活INCH_MODE_SUPPORT参数。我们不打算激活该参数,因为我们通常使用毫米,在这一节中,我们将介绍我们的步骤为每个轴和挤出机。

您首先需要知道要输入的值,因此我建议您从您的打印机已经可用的一些固件中提取它们(为了安全)。

另一种选择是在互联网上从其他用户那里搜索,浏览论坛,咨询制造商,或者作为最后一种选择,自己计算,就像你在这个视频中看到的那样。

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

自动调平传感器位置(NOZZLE_TO_PROBE_OFFSET) /** * Nozzle-to-Probe offsets { X, Y, Z } * * - Use a caliper or ruler to measure the distance from the tip of * the Nozzle to the center-point of the Probe in the X and Y axes. * - For the Z offset use your best known value and adjust at runtime. * - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc. * * Assuming the typical work area orientation: * - Probe to RIGHT of the Nozzle has a Positive X offset * - Probe to LEFT of the Nozzle has a Negative X offset * - Probe in BACK of the Nozzle has a Positive Y offset * - Probe in FRONT of the Nozzle has a Negative Y offset * * Some examples: * #define NOZZLE_TO_PROBE_OFFSET { 10, 10, -1 } // Example "1" * #define NOZZLE_TO_PROBE_OFFSET {-10, 5, -1 } // Example "2" * #define NOZZLE_TO_PROBE_OFFSET { 5, -5, -1 } // Example "3" * #define NOZZLE_TO_PROBE_OFFSET {-15,-10, -1 } // Example "4" * * +-- BACK ---+ * | [+] | * L | 1 | R


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有