开始之前,先放两只可爱的断网小恐龙x。也挺久没碰过这个的了,和这机器年份差不多,有问题大佬欢迎指出,不过现在的新技术真好啊真好啊!
整天断网的YF
前言
delta结构,其实在近期来看已经是一个被抛弃的结构,找件也是比较困难的。现在再组装或者修复其实不是个高性价比的方案,机器大占地方、容易偏移、大小不定、难以调试等等问题,加上闲鱼200~400都可以收到一台这个结构的(二手)机器了,对于买新配件修复来说也是挺不值的。
但无奈这台机器第一手就是和咱的,现在收拾出来了,便打算把它收拾好。
这是一台14年的Micromake D1?已经将近十年了,(且因为早期低配版本和后期的出口的应该有点区别)
在第一次大修复本着能用就用的原则,只是替换了损坏的硬件,在修复之后打印还是遇到不少问题,当年她们设计主板又或是自调平效应器到软件的适配其实都挺好的。
但是在体验过静音驱动后以及大家都在说Klipper,咱决定大升级了 (本篇文章只记录做了什么升级,不详细的写教程一样)。
第一次修复如下
- 更换打印头(E3D V5 => E3D V6) 原打印头年久用不了了
- 更换风扇(4CM风扇, 淘宝3块一个)
- 滑车&滚轮换新(时间长了,原本的滑车全部脆了,滚轮也开裂了)
第二次修复如下
- 滑轮升级线轨
- 更换同步轮
- 重做限位开关(原限位开关接口和新驱动版不一样以及时间长了)
- 更换驱动板 + 静音驱动TMC2226
- 使用Klipper系统
- 电源支架
- 线路优化(全部压了端子和接头+迫真理线)
主板各家的成品太贵了,自己做又挺麻烦的,所以就闲鱼买了块(应该是卖家做的的,有JLC的客户编号x),所以下面的配置文件可能有点不通用。
没对效应器做升级,还是使用了当年的设计,也没优化任何风道。(主要是改近程挤出的打印头太费钱,其他开源的效应器和打印头看了一遍感觉优化不大)
成本项
- 欧姆龙微动开关 1.38元/个(超值包邮x,卖家清货,就是不知道是不是假的,以及需要自己焊接排线)
- 乐积TMC2226驱动 14.9元/个
- 控制板(下位机) 55元 (闲鱼买的开源全新?)
- 直线导轨 MGN12 + MGN12H滑块 35元/条 (原本打算闲鱼找上银的,后面直接淘宝全新其他的了,价格基本都一样)(研究了 当年的版本应该是35CM的,但是咱定的是40CM的,感觉长点好看x)
- 晶格玻璃20CM圆形 25元 (感觉升级不大,还是喜欢普通几块钱的钢化玻璃贴美纹纸)
- 同步轮+惰轮 3元/套
- M3 M4 M5 120mm 80mm + 螺母 总共 15元
- 台达4CM风扇 3元 (包邮)
- DBN1.25 接线端子 + SV1.25-5 接线端子 5元/100个
- 绕线管12mm 3元 (包邮,还多了好多 3块钱7.5M,实际使用0.5M不到)
- 挤出机CR-10s 16元
- E3D V6 19元
- 2GT-6mm 皮带同步带 12元/5米 包邮
主要大成本都在 控制板 和 直线导轨上(导轨其实可以不上的,但是想起很多年前就想改直线导轨,于是就上了)。
使用到的开源项目
3D模型
效应器:https://www.thingiverse.com/thing:1016843
电源支架
其他改进
主板支架
因为变了控制板,所以就自己画了个能用的支架,然后这个支架改了两遍X (1. 主板针脚有些突出,咱没铜柱了,2.装上后 再插上驱动 驱动的大散热片和热床有些冲突,随后降低)
限位器
做了个限位器,因为是改的线轨加上MGN12这个规格的限位器(卖家没有,其他的有点贵)
想着下面也不装限位开关于是就重做了个。
Klipper的配置文件(针对咱这块板子和Delta三角洲结构的写的)
主要是改了下,下面的那些咱也不懂x,不用Uart模式的,直接删除每个配置下面的TMC2209就好了
已经能跑了,但是后面咱又没整Uart模式了
[include mainsail.cfg]
[mcu]
serial: /dev/serial/by-id/usb-Klipper_rp2040_rbq-if00
#delta 打印机
[printer]
kinematics: delta
max_velocity: 150
max_accel: 1500
max_z_velocity: 75
delta_radius: 95
[stepper_a]
step_pin: gpio12
dir_pin: !gpio13
enable_pin: !gpio4
microsteps: 16
#主动带轮周长mm(2GT-20T带轮40,2GT-16T带轮32)
rotation_distance: 32
endstop_pin: ^!gpio21
homing_speed: 100
# 后退距离
homing_retract_dist: 3
# 终点限位位置 (复位点)
position_endstop: 319.5
arm_length: 217.0
[tmc2209 stepper_a]
uart_pin: gpio11
run_current: 1
hold_current: 0.4
stealthchop_threshold: 999999
[stepper_b]
step_pin: gpio9
dir_pin: !gpio10
enable_pin: !gpio4
microsteps: 16
rotation_distance: 32
endstop_pin: ^!gpio20
[tmc2209 stepper_b]
uart_pin: gpio8
run_current: 1
hold_current: 0.4
stealthchop_threshold: 999999
[stepper_c]
step_pin: gpio6
dir_pin: !gpio7
enable_pin: !gpio4
endstop_pin: ^!gpio19
microsteps: 16
rotation_distance: 32
[tmc2209 stepper_c]
uart_pin: gpio5
run_current: 1
hold_current: 0.4
stealthchop_threshold: 999999
[extruder]
step_pin: gpio2
dir_pin: gpio3
enable_pin: !gpio4
microsteps: 16
rotation_distance: 22.6789511
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: gpio14
sensor_type: EPCOS 100K B57560G104F
sensor_pin: gpio29
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
max_extrude_only_distance: 100.0
[tmc2209 extruder]
uart_pin: gpio1
run_current: 0.6
hold_current: 0.2
sense_resistor: 0.110
stealthchop_threshold: 999999
# [filament_switch_sensor runout_sensor]
# switch_pin: ^gpio16
# pause_on_runout: True
# [filament_motion_sensor smart_sensor]
# switch_pin: ^gpio16
# detection_length: 2.5
[heater_bed]
heater_pin: gpio15
sensor_type: EPCOS 100K B57560G104F
sensor_pin: gpio28
control: pid
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: -111
max_temp: 130
[fan]
pin: gpio23
[delta_calibrate]
radius: 80
# Enable object exclusion
[exclude_object]
# Enable arcs support
[gcode_arcs]
resolution: 0.1
[virtual_sdcard]
path: /home/klipper/printer_data/gcodes
[gcode_macro TEMPERATURE_ADJUSTED_PRINT_START_SETTINGS]
gcode:
SAVE_GCODE_STATE NAME=temperature_adjust
# Cancel any previous delayed event
UPDATE_DELAYED_GCODE ID=NEVERMORE_FAN_OFF DURATION=0
SET_FAN_SPEED FAN=nevermore_fan SPEED=1.0
RESTORE_GCODE_STATE NAME=temperature_adjust
[gcode_macro TEMPERATURE_ADJUSTED_PRESSURE_ADVANCE]
gcode:
# ABS
{% if printer.heater_bed.target >= 100 %}
SET_PRESSURE_ADVANCE ADVANCE=0.05
# PLA
{% elif printer.heater_bed.target <= 65 %}
SET_PRESSURE_ADVANCE ADVANCE=0.05
# Catch-all
{% else %}
SET_PRESSURE_ADVANCE ADVANCE=0.05
{% endif %}
[gcode_macro UNLOAD_FILAMENT]
gcode:
SAVE_GCODE_STATE NAME=UNLOADFILAMENT
M83 ; set extruder to relative
G1 E10 F600 ; extrude a little to soften tip
# G1 E-100 F1800 ; retract filament completely
G1 E-125 F2000
RESTORE_GCODE_STATE NAME=UNLOADFILAMENT
[gcode_macro LOAD_FILAMENT]
gcode:
SAVE_GCODE_STATE NAME=LOADFILAMENT
M83 ; set extruder to relative
G1 E90 F600
RESTORE_GCODE_STATE NAME=LOADFILAMENT
# M600: Filament Change. This macro will pause the printer, move the
# tool to the change position, and retract the filament 50mm. Adjust
# the retraction settings for your own extruder. After filament has
# been changed, the print can be resumed from its previous position
# with the "RESUME" gcode.
[gcode_macro M600]
gcode:
{% set X = params.X|default(175)|float %}
{% set Y = params.Y|default(20)|float %}
{% set Z = params.Z|default(10)|float %}
SAVE_GCODE_STATE NAME=M600_state
PAUSE
G91
G1 E-.8 F3600
G1 Z10
PARKFRONT
UNLOAD_FILAMENT
RESTORE_GCODE_STATE NAME=M600_state
SET_LED LED=btt_mini12864 RED=0 GREEN=1 BLUE=0 INDEX=1
SET_LED LED=btt_mini12864 RED=0 GREEN=1 BLUE=0 INDEX=2
[gcode_macro ON_FILAMENT_INSERTED]
gcode:
SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=1
SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2
# Replace M190 (Wait for heater bed temperature with TEMPERATURE_WAIT) to allow temperature overshoot and under temperature (within 1 deg)
# Replace M109 (Wait for Hotend Temperature) with TEMPERATURE_WAIT to allow temperature overshoot
#将 M109(等待热端温度)替换为 TEMPERATURE_WAIT 以允许温度过冲
[gcode_macro M109]
rename_existing: M109.1
gcode:
#Parameters
{% set s = params.S|float %}
M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set hotend temp
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s - 0.5}
{% endif %}
# Replace M190 (Wait for heater bed temperature with TEMPERATURE_WAIT) to allow temperature overshoot and under temperature (within 1 deg)
#替换 M190(用 TEMPERATURE_WAIT 等待加热床温度)以允许温度过冲和低于温度(1 度以内)
[gcode_macro M190]
rename_existing: M190.1
gcode:
#Parameters
{% set s = params.S|float %}
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set heater bed temp
{% if s != 0 %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s - 0.5}
{% endif %}
[gcode_macro G32]
gcode:
#BED_MESH_CLEAR
G28
[gcode_macro PRINT_START]
# Use PRINT_START for the slicer starting script - please customise for your slicer of choice
gcode:
G28
G1 X5 Y5 Z0.5 F6000
G92 E0
G1 E10 F2000
G92 E0
G1 X40 E4 F1000
G1 X80 E10 F1000
G1 X130 E18 F1000
G1 X150 E22 F1000
G92 E0
G1 E-2 F2000
G1 Z1 F4000
G92 E0
G1 E2 F2000
G92 E0
[gcode_macro PRINT_END]
# Use PRINT_END for the slicer ending script - please customise for your slicer of choice
gcode:
M400 ; wait for buffer to clear
G92 E0 ; zero the extruder
G1 E-10.0 F3600
TURN_OFF_HEATERS
M106 S255
G91
G1 z1 F3000
G90
G1 X60 Y110 F3600
G92 E0
G4 P5000
M107
M84 ; park nozzle at rear
[gcode_macro CANCEL_PRINT] #取消打印
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
TURN_OFF_HEATERS
CLEAR_PAUSE
SDCARD_RESET_FILE
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - 20.0) %}
{% set z_safe = 20.0 %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
G91
G1 Z{z_safe} F900
G90
G0 X{x_park} Y{y_park} F6000
M106 S0
BASE_CANCEL_PRINT
#######M84三件套#######
#允许未回零操作电机(支持手动移动步进电机进行诊断。)
#官方用法的指令非常长不建议使用(FORCE_MOVE stepper=stepper_x distance=1 velocity=100 accel=300)
[force_move]
enable_force_move: true
#重写解锁电机的M84指令,然后设置当前位置(类似G92指定位置;强制设定低级运动学代码使用的打印头位置。)
#官方用法为:SET_KINEMATIC_POSITION [X=<值>] [Y=<值>] [Z=<值>]
#不指定坐标就是等于当前面板上的坐标
[gcode_macro M84]
rename_existing: M84.1
gcode:
SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z enable=0
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=0
SET_STEPPER_ENABLE STEPPER=extruder enable=0
SET_KINEMATIC_POSITION
#开机后设定当前位置(解锁保护)
[delayed_gcode KINEMATIC_POSITION]
initial_duration:0.2
gcode:
SET_KINEMATIC_POSITION
#######M84三件套-结束#######
# The path of the local directory on the host machine to look for
# g-code files. This is a read-only directory (sdcard file writes
# are not supported). One may point this to OctoPrint's upload
# directory (generally ~/.octoprint/uploads/ ). This parameter must
# be provided.
#on_error_gcode:
# A list of G-Code commands to execute when an error is reported.
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 28.875
#*# pid_ki = 2.026
#*# pid_kd = 102.866
#*#
#*# [input_shaper]
#*# shaper_type_x = mzv
#*# shaper_freq_x = 80.0
#*# shaper_type_y = mzv
#*# shaper_freq_y = 54.4
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 57.255
#*# pid_ki = 1.251
#*# pid_kd = 654.854
结尾,成果
TMC2226这种新驱动是真的安静啊,在旁边睡觉都可以了,比起以前的那种。简直是大革命,再配合线轨,awsl
黑色为原本的零件(10年前),白色零件是嘉立创(X树脂)的打印件,粉红色零件的是自己打印的x,当然自己做的线也是粉红色的,粉色电线x
:那个-42度是热敏电阻好像出问题了,debug了半天发现得更换。
在这台机器将近十岁的时候给她来了这个大升级,不过好像也紧紧是为了完成升级罢了,可能收拾好后又会去吃灰,也可以说是版本弃子了x。
题外,PETG打印个人见解
这个可能和别人说的区别比较大
咱打PETG可以说是各种坑,什么金属板啊、晶格玻璃啊、降低风扇速度、降低打印速度、降低打印头都不粘,没啥用。都远不如当年的美纹纸,一贴,打的贼好x
咱的个人用的参数:
热床:75°
喷头:240°
风量:25%
其他全部是Cura默认的,没改动,就贴了美纹纸