3D打印已经非常普及,手搓3D打印机的也很普遍了,不幸的是多年前买的三角洲(delta型)打印机年前罢工了,幸好它完成了一项重要使命:让手搓的铣床动起来,从而能够让铣床把受力部分的PLA零件自己加工电木板进行替换,所以有一台三轴铣床可以用来加工一些零件。即便如此,由于是从立方体框架式铣床的设计改为龙门式加之各种设计和材料的缺陷也导致了它们都各自存在明显问题,厚脸皮的讲这也符合了DIY的最初用意吧。所以,现在它们长这样:
和这样:
铝板和PEI板还没到货,所以热床部分还没完善。上图一个TMC2208拿下来实验一种15毫米步进电机的驱动了,暂时用了8825。上面的各种零件一部分来自于原来的铣床,一部分来自于原来的3D打印机(双Z、X轴是原来3D打印机的导轨),至于原来的3D打印机铝材框架嘛正在养吊兰。
开始进入正题,通过不断摸挲,也算和Marlin知根知底了。这篇介绍Marlin2.1固件+RAMPS1.4扩展板(包括MAGE2560、显示屏都是原来3D打印机上的)来实现双Z轴(分别用两个限位和两个驱动),带自动调平(舵机版)、热床(使用板载MOSFET)。
一、Marlin2.1.x编译、上传:
使用VS CODE,点左侧M图标上面的扩展管理按钮,安装Auto build marlin插件(会自动安装platformio ide for vs code),选择Marlin2.1.x所在文件夹,点击Show ABM Panel就会出现右侧界面,绑定、上传即可。
二、RAMPS1.4都连了哪些端口
下图来源于https://reprap.org/wiki/RAMPS_1.4/zh_cn,有需要可以参考一下。
挤出机加热棒,这个没什么好说的,无正负连接即可。
喉管散热风扇,这个会在加热时开始工作。该位置还应连接出料冷却风扇,即挤出之后的料进行降温使之快速定型的风扇,和喉管散热风扇作用不同,喉管散热风扇用于给喉管降温,使得从挤出机加热棒传递过来的热量不至于过多导致喉管内的线材被过度加热而软化导致堵头。
热床,原来的热床是圆形的面积小但功率过大(RAMPS1.4的MOSFET接两块PTC刚好不烫手),所以买了一块300*300的铝板和310*310的PEI,用的12V 110℃ PTC发热片,安装之后会用泡沫或者海绵做隔热,这样两块PTC应该够用。
一块12V30A开关电源,所以无脑把两个输入并联。
5块TMC2208,按对应引脚插入5个插槽,其中E1被用作Z2步进电机。
最下面的舵机按引脚连接舵机,我的舵机好像只能0-150°,实际测试0°是打开,145°斜向收起正好。需要注意的是舵机左边的按键开关左侧有3个针脚,你需要把上面两个(5V和VCC)用跳线帽连接以便给舵机供电。
X\Y\Z最大限位,因为在Marlin中可以限制X,Y,Z轴运动长度,所以只需要3个限位就可以了,我使用的最大限位,所以X_MAX,Y_MAX,Z_MAX还是原来的功能。
Z_MIN限位被连接在自动调平的限位开关上,代码改动比较少。
X_MIN限位被用作Z2的限位开关。
挤出机热敏电阻连接在T0,热床热敏电阻连接到T1。
关于为什么用两个Z轴驱动而不是用Z驱动芯片旁边的两个Z连接口:
两个Z连接口是可以连两个电机的,并且这两个电机运动同步性非常棒。
但是,如果由于外界扰动,导致它们无法使得X方向上左右高度相同就很麻烦。改为双驱动就使得每个Z轴都是独立运动的,进而使用双Z_MAX限位配合调节螺丝就可以在每次归零(实际上走向最大位置)时Z轴被顺便重新调平。这比使用自动调平功能更便捷也更高效。
三、Marlin2.1.x配置
首先声明,不提供人工智能百度功能,即关于配置的问题请不要提问,修改的部分我记得的都会说明,并且把configuration.h,configuration_adv.h,pins_ramps.h附在最后。既然选择手搓,就应该有一定的综合知识和动手动脑解决问题的能力。原版Marlin请自行在github下载。
configuration.h中修改的部分(按代码行顺序):
定义扩展版类型:
#define MOTHERBOARD BOARD_RAMPS_14_EFB //表示板载MOSFET用作挤出机加热棒、风扇、热床
步进电机驱动类型:
#define X_DRIVER_TYPE TMC2208_STANDALONE //启用X电机,其驱动模块为TMC2208
#define Y_DRIVER_TYPE TMC2208_STANDALONE //启用Y电机,STANDALONE表示独立驱动避免使用DIR/STP驱
#define Z_DRIVER_TYPE TMC2208_STANDALONE //启用Z电机,动模式提示TMC CONNECT ERROR错误
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
#define Z2_DRIVER_TYPE TMC2208_STANDALONE //启用Z2电机
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
//#define I_DRIVER_TYPE A4988
//#define J_DRIVER_TYPE A4988
//#define K_DRIVER_TYPE A4988
//#define U_DRIVER_TYPE A4988
//#define V_DRIVER_TYPE A4988
//#define W_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
开启挤出机和热床温度传感器
#define TEMP_SENSOR_0 1 //开启挤出机温度传感器。默认1一般都没问题
#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
#define TEMP_SENSOR_BOARD 0
#define TEMP_SENSOR_REDUNDANT 0
启用PIC温度控制
#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning
//#define MPCTEMP // ** EXPERIMENTAL **
#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_K1 0.95 // 调大这个P系数可以更快升温——如果你的加热棒够棒,BANGBANG那些是超出最大值之后的值,即PID(看这里只有P)控制的PWM计算结果超出255后
启用限位开关
#define USE_XMIN_PLUG //用于Z2限位
//#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG //用于自动调平限位开关
//#define USE_IMIN_PLUG
//#define USE_JMIN_PLUG
//#define USE_KMIN_PLUG
//#define USE_UMIN_PLUG
//#define USE_VMIN_PLUG
//#define USE_WMIN_PLUG
#define USE_XMAX_PLUG //最大限位3个
#define USE_YMAX_PLUG
#define USE_ZMAX_PLUG
//#define USE_IMAX_PLUG
//#define USE_JMAX_PLUG
//#define USE_KMAX_PLUG
//#define USE_UMAX_PLUG
//#define USE_VMAX_PLUG
//#define USE_WMAX_PLUG
限位信号模式
#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // 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 I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define U_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define V_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define W_MIN_ENDSTOP_INVERTING false // 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 true // Set to true to invert the logic of the endstop.
#define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define U_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define V_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define W_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.
//这些设置取决于你连接的传感器种类、接线方法等,如果是光电传感器(连3个引脚要连对)就看其说明书确定输出
//我使用的机械限位,这取决于连接COM和NC还是COM和NO,NO代表常开,NC代表常关,我连接的NO避免电路一直连通,所以对用到的引脚都进行取反。
//需要注意的是,你需要保证最后一行 Z_MIN_PROBE_ENDSTOP_INVERTING (Z轴探针)的设置值与Z_MIN相同。
电机速度和最大速度
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 800, 166.67 }
//这个地方就是分别代表X,Y,Z,E的速度,不要因为你设置了两个Z就感觉:哦,我Z有俩速度!大聪明噢
//值填的都是steps/mm即多少个控制信号走1毫米:
//1、先算多少脉冲一圈:360/1.8*16=3200,即一圈360度、步距角1.8、16细分,所以3200个脉冲一圈
//2、查看一圈多少毫米:查看,不是计算,也不是测量,走一圈同步带直线距离走多少=齿数*2,我的20齿所以走40mm
//3200/40即可。
//对于挤出机,这玩意受到结构和线材等各种因素影响,呵呵了就,咋能计算准呢,我就是拿个游标卡尺(还是塑料的)让它转一圈看看咬了多少个牙印……后边看打印效果再调
/**
* Default Max Feed Rate (linear=mm/s, rotational=°/s)
* Override with M203
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_MAX_FEEDRATE { 800, 800, 200, 600 }
//一般3D打印机上用的这些都是42步进,好点无负载时不丢步RPM也就在500上,按240算,就是4圈/秒咯。
//加上负载,惯量也变大,所以设置太大也没啥好处。
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 1000, 3000 }
//这个也是看步进性能、噪音等方面,上限就是不丢步。
Z探针
/**
* Z Servo Probe, such as an endstop switch on a rotating arm.
*/
#define Z_PROBE_SERVO_NR 0 // 启动0号舵机:对应SERVO 1插口(最左边的那个)
#define Z_SERVO_ANGLES { 0, 145 } //放下和收起时舵机的角度
//测试时使用M280命令:M280 P0 SX 表示了让舵机1转动到X角度。
* +-- BACK ---+
* | [+] |
* L | 1 | R <-- Example "1" (right+, back+)
* E | 2 | I <-- Example "2" ( left-, back+)
* F |[-] N [+]| G <-- Nozzle
* T | 3 | H <-- Example "3" (right+, front-)
* | 4 | T <-- Example "4" ( left-, front-)
* | [-] |
* O-- FRONT --+
*/
#define NOZZLE_TO_PROBE_OFFSET { 30, 30, -15 } //舵机相对于喷嘴的相对距离,正负自己看上图
电机方向设置
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false
//#define INVERT_I_DIR false
//#define INVERT_J_DIR false
//#define INVERT_K_DIR false
//#define INVERT_U_DIR false
//#define INVERT_V_DIR false
//#define INVERT_W_DIR false
// @section extruder
// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR true
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
#define INVERT_E4_DIR false
#define INVERT_E5_DIR false
#define INVERT_E6_DIR false
#define INVERT_E7_DIR false
//按你实际情况设置就可以了,我是插电路的时候按黑线在左插的。这个地方把插的线翻转和软件设置都能达到相同效果。
归零方向设定
#define X_HOME_DIR 1 //归零时走向最大位置
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1
//#define I_HOME_DIR -1
//#define J_HOME_DIR -1
//#define K_HOME_DIR -1
//#define U_HOME_DIR -1
//#define V_HOME_DIR -1
//#define W_HOME_DIR -1
热床大小设置
#define X_BED_SIZE 300 //就是喷嘴能到达的最远距离
#define Y_BED_SIZE 300 //对于热床跟着Y轴走的,如果热床不被两端的东西挡住,可以用滑块计算
// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS 0 //软限位,从M_MAX位置(归零后的最大位置)走X_BED_SIZE-X_MIN_POS就不会再走了
#define Y_MIN_POS 0 //软限位
#define Z_MIN_POS 0 //软限位
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 250
开启EEPROM以便保存自动调平数据
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
//这个地方需要注意一下,可能即使你开启了这个功能,也会提示EEPROM版本错误是否格式化之类的,即使按提示操作了,也无效- -!!!
//此时,打开一个串口调试器(啥的都行)依次发送M502、M500即可解决。注意:设置你的串口调调试器发送时带有换行回车
预热设置
//
// Preheat Constants - Up to 10 are supported without changes
//
#define PREHEAT_1_LABEL "PLA"
#define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED 60 //热床温度不要太高,PEI会退磁。不要迷信任何人说的数据,自己的打印机打完不翘边就行了。
#define PREHEAT_1_TEMP_CHAMBER 35
#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255:注意把这个地方设置为255,预热时喉管风扇才会转起来。
#define PREHEAT_2_LABEL "ABS"
#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 80
#define PREHEAT_2_TEMP_CHAMBER 35
#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255
LCD设置
#define LCD_LANGUAGE en //原来的3D打印机的屏不支持,就用这个吧
然后注释掉它默认的LCD屏,选择你现在用的屏
设置舵机个数
#define NUM_SERVOS 1 // Note: Servo index starts with 0 for M280-M282 commands
configuration_adv.h中修改的部分(按代码行顺序):
#ifdef Z2_DRIVER_TYPE
//#define INVERT_Z2_VS_Z_DIR // Z2 direction signal is the opposite of Z
#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops
#if ENABLED(Z_MULTI_ENDSTOPS)
#define Z2_USE_ENDSTOP _XMIN_ // 这里,我使用X_MIN作为Z2最大限位,所以设置为_XMIN_
#define Z2_ENDSTOP_ADJUSTMENT 0 // Z2 offset relative to Y endstop
#endif
#ifdef Z3_DRIVER_TYPE
//#define INVERT_Z3_VS_Z_DIR // Z3 direction signal is the opposite of Z
#if ENABLED(Z_MULTI_ENDSTOPS)
#define Z3_USE_ENDSTOP _YMAX_ // Z3 endstop board plug. Don't forget to enable USE_*_PLUG.
#define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Y endstop
#endif
#endif
#ifdef Z4_DRIVER_TYPE
//#define INVERT_Z4_VS_Z_DIR // Z4 direction signal is the opposite of Z
#if ENABLED(Z_MULTI_ENDSTOPS)
#define Z4_USE_ENDSTOP _ZMAX_ // Z4 endstop board plug. Don't forget to enable USE_*_PLUG.
#define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Y endstop
#endif
#endif
#endif
pins_RAMPS.h设置:
#ifndef E1_STEP_PIN
#define E1_STEP_PIN 36
#endif
#ifndef E1_DIR_PIN
#define E1_DIR_PIN 34
#endif
#ifndef E1_ENABLE_PIN
#define E1_ENABLE_PIN 30
#endif
#ifndef E1_CS_PIN
#define E1_CS_PIN 44
#endif
//因为吧E1的电机用作Z2,所以这里需要给Z2电机引脚进行定义,
//没啥好修改的,硬件上就是那么焊接的,咱只照葫芦画瓢给出Z2的定义即可。
//复制还是在源代码上修改都可以,没影响。
#ifndef Z2_STEP_PIN
#define Z2_STEP_PIN 36
#endif
#ifndef Z2_DIR_PIN
#define Z2_DIR_PIN 34
#endif
#ifndef Z2_ENABLE_PIN
#define Z2_ENABLE_PIN 30
#endif
#ifndef Z2_CS_PIN
#define Z2_CS_PIN 44
#endif
其实Mage2560的端口资源非常丰富,即使被SD+液晶屏用去了很多,RAMPS1.4还有很多预留端口,例如该文件中定义的AUX1-4端口,这些PIN都可以被我们挪作他用,例如在configuration_adv.h中,可以启用自动风扇:
#define E0_AUTO_FAN_PIN -1
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
#define E4_AUTO_FAN_PIN -1
#define E5_AUTO_FAN_PIN -1
#define E6_AUTO_FAN_PIN -1
#define E7_AUTO_FAN_PIN -1
#define CHAMBER_AUTO_FAN_PIN -1
#define COOLER_AUTO_FAN_PIN -1
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255 // 255 == full speed
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
#define CHAMBER_AUTO_FAN_SPEED 255
#define COOLER_AUTO_FAN_TEMPERATURE 18
#define COOLER_AUTO_FAN_SPEED 255
当给其中某个-1指定为某引脚(最好使用pins_RAMPS.h中的预定义名称,以免后续使用产生冲突),则可以实现Marlin预设的降温功能。例如define E0_AUTO_FAN_PIN 设置为AUX1_05_PIN当挤出机温度超过EXTRUDER_AUTO_FAN_TEMPERATURE时,以EXTRUDER_AUTO_FAN_SPEED指定的PWM来输出一个信号,可以把AUX1_05_PIN和一个GND引脚(AUX1_03,AUX1_04...)连接到外置MOS管模块的信号端,并把MOS管模块的输入接到12V输入上,输出接到风扇上以给挤出机添加自动风扇功能。
//
// AUX1 5V GND D2 D1
// 2 4 6 8
// 1 3 5 7
// 5V GND A3 A4
//
#define AUX1_05_PIN 57 // (A3)
#define AUX1_06_PIN 2
#define AUX1_07_PIN 58 // (A4)
#define AUX1_08_PIN 1
总之愿意捣鼓总有办法实现别人的3D打印机有的功能,希望大家捯饬的时候也不烧板子、不气冒烟嗷。
后记:
没有必要再开一个,把实际组装完毕、达到能正常打印的过程中对之前内容的一些修改更新到下面:
自动调平遇到的问题:
点不在热床上:调整#define NOZZLE_TO_PROBE_OFFSET { 30, 30, -15 } 参数的正负。
调平之后还是偏的:保存设置并重启打印机;感觉运行之前提到的命令,保存设置也可以(未测试)。
使用打印软件控制时Z轴丢步:
调节下面几个参数,减少加速度,(我同时减少了速度以减轻噪音)。
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING)
#define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // ...or, set your own edit limits
#endif
/**
* Default Max Acceleration (speed change with time) (linear=mm/(s^2), rotational=°/(s^2))
* (Maximum start speed for accelerated moves)
* Override with M201
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_MAX_ACCELERATION { 600, 600, 60, 600 }
使用打印软件打印时打印到某个部分之后arduino mega2560自动重启:
最主要的问题在于控制板的剩余内存过小,是程序跑飞了所以重启的,尝试关闭M503命令,如果还是不行,就关闭自动调平,没有详细阅读marlin的代码,所以不知它到底用了多少内存,mega应该是允许修改map来重新划分闪存使用办法从而改变程序运行时可用内存的大小的。
//M500 - Store settings in EEPROM.
//M501 - Restore settings from EEPROM.
//M502 - Revert to default "factory settings." (Use M500 if you want to store them to EEPROM.)
//M503 - Print the current settings (as set in memory, not the settings stored in EEPROM.)
#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
如果你的电路设计存在问题,也可能导致重启,解决办法2所述,减少电机空载、打印加速度(主要),较少电机空载、打印速度(次要)。
热床加热慢:
实际使用时,我用了4个加热片,但还是比较慢,所以……把D8输出引出到上次改造时用的大功率MOS的信号端,以求解决问题。然并卵!把大功率MOS模块换成24V供电,问题解决。所以,在不改造1.4控制板为24V的前提下,唯有外挂大功率MOS模块并提高其输入电压才是好的解决办法——虽然我给铝板下面覆盖了海绵保温,但效果并不理想,它只提高了加热快能达到的最高温度5℃左右,对升温速度并没有太大帮助,提高电压不仅提高了功率、降低了可能的最大电流,升温速度,还降低了导线产生的热量,就是有点费电源,如果你也12V,24V,48V各种电源一大堆,建议尝试一下24V,不是广告是疗效^ ^。自从用上24V电源和原来的圆形底床做加热片,升温60℃只需30秒……测试时的等待过程腰不了,酸腿不疼了!
没遇到的问题:
如开始的图,如此简易的喷嘴,仅有一个3CM小风扇给喉管散热连喷出的PLA都没有风扇冷却,打印了线材支架等进行测试(连续工作5小时)并没有堵头或者打印效果不理想的情况,说明喉管预热效果还可以,即使没加额外的冷却风扇也可以正常工作(现在北阳台19℃,夏天暂时不得而知)。
后续的改进:
单X轴晃动的问题:小导轨小滑块结合就是不紧密,如开始的图,铣床上用的“上银互换”导轨和滑块,即使单根也一点晃动都没有,所以某宝了一条500mm导轨解决X轴晃动问题。文章来源:https://www.toymoban.com/news/detail-426245.html
暂时这样吧,没啥精力追求更高的打印速度,Y轴惯量太大(电木板、4mm铝板、PEI、4块铣床上用的滑块)。现在用打印速度80、空驶120,打印质量没问题(即使没增加一根X轴),噪音很小(主要来源于电源风扇)。所以,废物利用之后比原来的打印速度、静音程度、打印质量都有明显提升。文章来源地址https://www.toymoban.com/news/detail-426245.html
到了这里,关于DIY 3D打印机——【有啥用啥版】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!