Tiny-Tを作る(5) klipperの設定
klipperの設定ファイル
klipperの特徴のひとつに設定ファイルによる設定ができることが挙げられます。設定を変更した場合にMCUのファームウェアを書き換える必要がなく、簡単に編集することができます。設定ファイルの拡張子は.cfgで/home/pi/printer_data/configの中に複数の.cfgファイルを作ることができます。klipperが起動すると最初に/home/pi/printer_data/config直下のprinter.cfgファイルを読み込みます。複数の.cfgファイルを使用する場合はprinter.cfgファイルから該当するファイルをincludeすることで使用できるようになります。
ファイル構成
TIny-Tの設定ファイルは後で見やすく、変更や追加(特にマクロ)がやりやすいようと思いましたので以下の構成にしました。
📂config/ ├── printer.cfg # includeの入口。構成ファイルを一括読み込み ├── system.cfg # MCUや補正系の設定(z_tilt, resonance など) ├── variables.cfg # save_variablesによりeddyのz_offsetを保存 ├── 📂hardware/ # ハードウェア構成ファイル群 │ ├── 00_board_pins.cfg # MCUピン定義(先に読み込まれるよう00を付ける) │ ├── machine.cfg # モーション制御・ヒーター・ファン・LEDなど全体定義 │ └── eddy.cfg # Eddy Probe関連の設定とマクロ ├── 📂macros/ # 各種操作マクロ │ ├── print_start_end.cfg # 印刷開始・終了処理の自動化 │ ├── cold_pull.cfg # コールドプル用マクロ(Happy Hareベース) │ ├── common_macros.cfg # 共通ユーティリティマクロ │ ├── pid_tuning.cfg # PIDチューニング補助 │ ├── resonance.cfg # リゾナンス測定(ADXL使用) │ ├── stepper_buzz_cycle.cfg # ステッパーの動作、回転方向の確認用 │ └── test_speed.cfg # 移動速度、加速度のテスト用
設定ファイル
printer.cfg
printer.cfgは設定ファイルをincludeするのとpidの係数やbed_meshなどの自動保存用です。
[include hardware/*.cfg] [include system.cfg] [include macros/*.cfg] [include mainsail.cfg]
include hardware/* .cfgはconfig/hardware下の.cfgファイルをすべてincludeできます。こうすることで個別にincludeする必要がなく必要なcfgファイルをhardewareディレクトリに保存するだけでincludeすることができます。(*はワイルドカードです)
includeに関してはこちらのサイトが参考になります。
hardware/00_board_pins.cfg
00_board_pins.cfgはファイル名の先頭に00をつけています。これはhardwareディレクトリ内の.cfgファイルを一括includeした場合、通常はファイル名のアルファベット順(a→z)にincludeされます。
borad_pinsはボードピンのエイリアス(別名)を設定しているので一番最初にincludeしたいために先頭に00_を付与しています。エイリアスの設定をすることでボードの変更があった場合でもこのファイル内のピン番号を変更するだけで対応できます。
TIny-Tのボードは当初Spider V2.3を使用していましたが、48Vする際にE3EZに変更しました。ホストコンピュータもRPi3B+からCM4(eMMC)に変更しています。


#E3EZ [board_pins mcu] mcu:mcu aliases: STEPPER_X_UART=PB8, STEPPER_X_STEP=PA14, STEPPER_X_DIR=PA10, STEPPER_X_ENABLE=PA13, STEPPER_Y_UART=PC9, STEPPER_Y_STEP=PC8, STEPPER_Y_DIR=PA15, STEPPER_Y_ENABLE=PC14, STEPPER_Z_UART=PD0, STEPPER_Z_STEP=PD2, STEPPER_Z_DIR=PD4, STEPPER_Z_ENABLE=PD3, STEPPER_Z1_UART=PD1, STEPPER_Z1_STEP=PD5, STEPPER_Z1_DIR=PD6, STEPPER_Z1_ENABLE=PB3, STEPPER_Z2_UART=PB5, STEPPER_Z2_STEP=PB7, STEPPER_Z2_DIR=PB6, STEPPER_Z2_ENABLE=PB4, spi_miso=PC11, spi_mosi=PC12, spi_sclk=PC10, X_ENDSTOP=PC4, Y_ENDSTOP=PB0, Z_ENDSTOP=PC6, BED_HEATER_PIN=PB2, HE0_PIN=PB11, HE1_PIN=PB10, THB_PIN=PA3, TH0_PIN=PA4, TH1_PIN=PA5, FAN0_PWM=PA8, FAN1_PWM=PB15, FAN2_PWM=PB14, RGB_PIN=PC7, #H36 COMBO [board_pins tool_board] mcu:tool_board aliases: STEPPER_E_UART=PC14, STEPPER_E_STEP=PB9, STEPPER_E_DIR=PB8, STEPPER_E_ENABLE=PB7, HOTEND0_PIN=PA7, TH_HOTEND=PA6, PARTS_COOLING_FAN=PA9, PARTS_COOLING_FAN_TACO=PC6, PARTS_COOLONG_FAN1=PB15, PARTS_COOLING_FAN1_TACO=PB14, HOTEND_FAN=PB13, HOTEND_FAN1=PA5, ENDSTOP0_PIN=PA10, ENDSTOP1_PIN=PB1, RGB_PIN=PA8, ADXL_SPI_CS=PB12, ADXL_SPI_SCLK=PB10, ADXL_SPI_MISO=PB2, ADXL_SPI_MOSI=PB11,
hardware/machine.cfg
モーション系・ホットエンドなど本体定義をしています。
ステッパー設定(X/Y/Z)やエクストルーダー、ヒーター、ファンなどの本体構成。従来 printer.cfg で書かれていた内容を分離し、見通しを良くしています。
まずはprinterセクションから
######################################################################################################################################################## # 8888888b. 8888888b. 8888888 888b 888 88888888888 8888888888 8888888b. # 888 Y88b 888 Y88b 888 8888b 888 888 888 888 Y88b # 888 888 888 888 888 88888b 888 888 888 888 888 # 888 d88P 888 d88P 888 888Y88b 888 888 8888888 888 d88P # 8888888P" 8888888P" 888 888 Y88b888 888 888 8888888P" # 888 888 T88b 888 888 Y88888 888 888 888 T88b # 888 888 T88b 888 888 Y8888 888 888 888 T88b # 888 888 T88b 8888888 888 Y888 888 8888888888 888 T88b ######################################################################################################################################################## [printer] kinematics: corexy max_velocity: 500 #mm/s max_accel: 20000 #mm/s^2 minimum_cruise_ratio: 0.5 square_corner_velocity: 5.0 #max_accel_to_decel:3000 #このパラメータは設定することを推奨しません max_z_velocity: 15 max_z_accel: 350
A/Bモータのセクション
######################################################################################################################################################## # 888888b. 888b d888 .d88888b. 88888888888 .d88888b. 8888888b. # 888 "88b 8888b d8888 d88P" "Y88b 888 d88P" "Y88b 888 Y88b # 888 .88P 88888b.d88888 888 888 888 888 888 888 888 # 8888888K. 888Y88888P888 888 888 888 888 888 888 d88P # 888 "Y88b 888 Y888P 888 888 888 888 888 888 8888888P" # 888 888 888 Y8P 888 888 888 888 888 888 888 T88b # 888 d88P 888 " 888 Y88b. .d88P 888 Y88b. .d88P 888 T88b # 8888888P" 888 888 "Y88888P" 888 "Y88888P" 888 T88b ######################################################################################################################################################## ## X Stepper on Motor1(B Motor left) #LDO-42STH48-2804AC #resistance: 0.7Ω #inductance: 0.0060 #holding_torque: 420mN-m #rated_current: 2.8A/phase (2.0Arms) #steps_per_revolution: 200 [stepper_x] step_pin:mcu:STEPPER_X_STEP dir_pin:mcu:STEPPER_X_DIR enable_pin:!mcu:STEPPER_X_ENABLE rotation_distance:40 microsteps:16 full_steps_per_rotation: 200 #gear_ratio: #step_pulse_duration: #TMCステッパーのデフォルトは0.000000100(100ns) endstop_pin:tool_board:ENDSTOP0_PIN position_min: 0 position_endstop:180 position_max:180 homing_speed: 30 homing_retract_dist: 5.0 homing_retract_speed:25 #second_homing_speed: homing_positive_dir:true #default is true [tmc5160 stepper_x] cs_pin:mcu:STEPPER_X_UART spi_software_miso_pin: spi_miso spi_software_mosi_pin: spi_mosi spi_software_sclk_pin: spi_sclk #tx_pin: #select_pins: interpolate: False run_current: 2.0 #hold_current: #保持電流は設定しないのが推奨 sense_resistor: 0.075 #TMC2209→0.110 EZ5160 PRO→0.075 #stealthchop_threshold: 999999 #spreadCycle #coolstep_threshold: #uart_address: #driver_MULTISTEP_FILT: True #driver_IHOLDDELAY: 8 #driver_TPOWERDOWN: 20 driver_TBL: 2 driver_TOFF: 2 driver_HEND: 1 driver_HSTRT: 4 #driver_PWM_AUTOGRAD: True #driver_PWM_AUTOSCALE: True driver_PWM_LIM: 8 driver_PWM_REG: 4 driver_PWM_FREQ: 1 driver_PWM_GRAD: 8 #driver_PWM_OFS: 36 #driver_SGTHRS: 70 #driver_SEMIN: 0 #driver_SEUP: 0 #driver_SEMAX: 0 #driver_SEDN: 0 #driver_SEIMIN: 0 #diag_pin:mcu:^STEPPER_X_DIAG #センサレスホーミングを有効にする場合に設定 ######################################################################################################################################################## # d8888 888b d888 .d88888b. 88888888888 .d88888b. 8888888b. # d88888 8888b d8888 d88P" "Y88b 888 d88P" "Y88b 888 Y88b # d88P888 88888b.d88888 888 888 888 888 888 888 888 # d88P 888 888Y88888P888 888 888 888 888 888 888 d88P # d88P 888 888 Y888P 888 888 888 888 888 888 8888888P" # d88P 888 888 Y8P 888 888 888 888 888 888 888 T88b # d8888888888 888 " 888 Y88b. .d88P 888 Y88b. .d88P 888 T88b # d88P 888 888 888 "Y88888P" 888 "Y88888P" 888 T88b ######################################################################################################################################################## ## Y Stepper on Motor2 (A Motor) #LDO-42STH48-2804AC #resistance: 0.7Ω #inductance: 0.0060 #holding_torque: 420mN-m #rated_current: 2.8A/phase (2.0Arms) #steps_per_revolution: 200 [stepper_y] step_pin:mcu:STEPPER_Y_STEP dir_pin:!mcu:STEPPER_Y_DIR enable_pin:!mcu:STEPPER_Y_ENABLE rotation_distance:40 microsteps:16 full_steps_per_rotation: 200 #gear_ratio: #step_pulse_duration: #TMCステッパーのデフォルトは0.000000100(100ns) endstop_pin:^mcu:Y_ENDSTOP position_min: 0 position_endstop:180 position_max:180 homing_speed: 30 homing_retract_dist: 5.0 homing_retract_speed:25 #second_homing_speed: homing_positive_dir:true #default is true [tmc5160 stepper_y] cs_pin:mcu:STEPPER_Y_UART spi_software_miso_pin: spi_miso spi_software_mosi_pin: spi_mosi spi_software_sclk_pin: spi_sclk #tx_pin: #select_pins: interpolate: False run_current: 2.0 #hold_current: #保持電流は設定しないのが推奨 sense_resistor: 0.075 #stealthchop_threshold: 999999 #spreadCycle #coolstep_threshold: #uart_address: #driver_MULTISTEP_FILT: True #driver_IHOLDDELAY: 8 #driver_TPOWERDOWN: 20 driver_TBL: 2 driver_TOFF: 2 driver_HEND: 1 driver_HSTRT: 4 #driver_PWM_AUTOGRAD: True #driver_PWM_AUTOSCALE: True driver_PWM_LIM: 8 driver_PWM_REG: 4 driver_PWM_FREQ: 1 driver_PWM_GRAD: 8 #driver_PWM_OFS: 36 #driver_SGTHRS: 0 #driver_SEMIN: 0 #driver_SEUP: 0 #driver_SEMAX: 0 #driver_SEDN: 0 #driver_SEIMIN: 0 #diag_pin:mcu:STEPPER_Y_DIAG #センサレスホーミングを有効にする場合に設定
ピンの設定はエイリアス設定したものを使用しています。例えばstepper_xのstepにE3EZ(00_board_pins.cfgのmcu:mcu)のピンPA14を設定したい場合は[stepper_x]セクションのstepper_xに以下のように設定します。
step_pin:mcu:STEPPER_X_STEP
E3EZのエイリアス設定ではSTEPPER_X_STEP=PA14となっていますので、
step_pin:mcu:STEPPER_X_STEPはstep_pin:PA14と同様の扱いになります。
A/Bモーターは48V駆動に対応させるため、ドライバーに EZ5160(TMC5160ベース) を使用しています。
EZ5160を使用する際の注意点として、以下の点が重要です。
TMC2209 は UART 通信ですが、EZ5160 は SPI通信 なので cs_pin や spi_software_* ピンの設定が必要になります。
TMC2209の電流検出用センサ抵抗は0.110ΩですがEZ5160は0.075Ωが実装されています。TMC系ドライバーは、モーターに流す電流をsense_resistor の両端電圧から逆算して制御します。
例えば1A設定で0.075Ωだと1[A]×0.075[Ω]=0.075Vになりますが、0.110Ωだと1[A]×0.110[Ω]=0.11Vです。EZ5160ドライバーには0.075Ωが実装されていますので0.075Vで1Aと認識する必要がありますが、0.110Ωの設定だと0.11Vで1Aであると誤認識します。0.075Ωの抵抗両端の電位差が0.11Vになるためには0.11[V]/0.075[Ω]≒1.47[A]の電流が必要です。ドライバーは0.11Vになる電流値でスイッチング制御しようとしますので1A流しているつもりが1.47Aも流れてしまっているためドライバーが焼損する恐れがあり注意が必要です。
klipperのcfgファイルではTMC2209はデフォルトで0.110Ω,TMC5160は0.075Ωになっていて、sense_resistorを設定しなければデフォルト値が採用されます。
TMC5160ベースのドライバーはモノによってsense_resistorに様々な値の抵抗を採用しているので注意が必要です。
Zモータセクション
######################################################################################################################################################## # 8888888888P 888b d888 .d88888b. 88888888888 .d88888b. 8888888b. # d88P 8888b d8888 d88P" "Y88b 888 d88P" "Y88b 888 Y88b # d88P 88888b.d88888 888 888 888 888 888 888 888 # d88P 888Y88888P888 888 888 888 888 888 888 d88P # d88P 888 Y888P 888 888 888 888 888 888 8888888P" # d88P 888 Y8P 888 888 888 888 888 888 888 T88b # d88P 888 " 888 Y88b. .d88P 888 Y88b. .d88P 888 T88b # d8888888888 888 888 "Y88888P" 888 "Y88888P" 888 T88b ######################################################################################################################################################## #MOON'S LE174S-T0808-200-0-S-065 #resistance: 8.7Ω #inductance: 0.0152H #rated_thrust:34N @300rpm #rated_current: 0.65A/phase (0.46Arms) #steps_per_revolution: 200 #Lead: 8mm [stepper_z] step_pin:mcu:STEPPER_Z_STEP dir_pin:mcu:STEPPER_Z_DIR enable_pin:!mcu:STEPPER_Z_ENABLE rotation_distance:8 microsteps:32 #full_steps_per_rotation: 200 #gear_ratio: #step_pulse_duration: #TMCステッパーのデフォルトは0.000000100(100ns) endstop_pin:probe:z_virtual_endstop position_min: 0 #position_endstop:0 position_max:135 homing_speed: 30 homing_retract_dist: 3.0 homing_retract_speed:25 second_homing_speed:3 homing_positive_dir:false #default is true [tmc2209 stepper_z] uart_pin:mcu:STEPPER_Z_UART #tx_pin: #select_pins: interpolate: False run_current: 0.37 #hold_current: #保持電流は設定しないのが推奨 sense_resistor: 0.110 #stealthchop_threshold: 999999 #spreadCycle #coolstep_threshold: #uart_address: #driver_MULTISTEP_FILT: True #driver_IHOLDDELAY: 8 #driver_TPOWERDOWN: 20 #driver_TBL: 2 #driver_TOFF: 3 #driver_HEND: 0 #driver_HSTRT: 5 #driver_PWM_AUTOGRAD: True #driver_PWM_AUTOSCALE: True #driver_PWM_LIM: 12 #driver_PWM_REG: 8 #driver_PWM_FREQ: 1 #driver_PWM_GRAD: 14 #driver_PWM_OFS: 36 #driver_SGTHRS: 0 #driver_SEMIN: 0 #driver_SEUP: 0 #driver_SEMAX: 0 #driver_SEDN: 0 #driver_SEIMIN: 0 #diag_pin: #センサレスホーミングを有効にする場合に設定 ######################################################################################################################################################## # 8888888888P d888 888b d888 .d88888b. 88888888888 .d88888b. 8888888b. # d88P d8888 8888b d8888 d88P" "Y88b 888 d88P" "Y88b 888 Y88b # d88P 888 88888b.d88888 888 888 888 888 888 888 888 # d88P 888 888Y88888P888 888 888 888 888 888 888 d88P # d88P 888 888 Y888P 888 888 888 888 888 888 8888888P" # d88P 888 888 Y8P 888 888 888 888 888 888 888 T88b # d88P 888 888 " 888 Y88b. .d88P 888 Y88b. .d88P 888 T88b # d8888888888 8888888 888 888 "Y88888P" 888 "Y88888P" 888 T88b ######################################################################################################################################################## [stepper_z1] step_pin:mcu:STEPPER_Z1_STEP dir_pin:mcu:STEPPER_Z1_DIR enable_pin:!mcu:STEPPER_Z1_ENABLE microsteps:32 rotation_distance:8 [tmc2209 stepper_z1] uart_pin:mcu:STEPPER_Z1_UART interpolate: False run_current: 0.37 sense_resistor: 0.110 ######################################################################################################################################################## # 8888888888P .d8888b. 888b d888 .d88888b. 88888888888 .d88888b. 8888888b. # d88P d88P Y88b 8888b d8888 d88P" "Y88b 888 d88P" "Y88b 888 Y88b # d88P 888 88888b.d88888 888 888 888 888 888 888 888 # d88P .d88P 888Y88888P888 888 888 888 888 888 888 d88P # d88P .od888P" 888 Y888P 888 888 888 888 888 888 8888888P" # d88P d88P" 888 Y8P 888 888 888 888 888 888 888 T88b # d88P 888" 888 " 888 Y88b. .d88P 888 Y88b. .d88P 888 T88b # d8888888888 888888888 888 888 "Y88888P" 888 "Y88888P" 888 T88b ######################################################################################################################################################## [stepper_z2] step_pin:mcu:STEPPER_Z2_STEP dir_pin:!mcu:STEPPER_Z2_DIR enable_pin:!mcu:STEPPER_Z2_ENABLE microsteps:32 rotation_distance:8 [tmc2209 stepper_z2] uart_pin:mcu:STEPPER_Z2_UART interpolate: False run_current: 0.37 sense_resistor: 0.110
ZエンドストップはEddyを使用するのでendstop_pin:probe:z_virtual_endstopとしています。
EXTRUDERセクション
####################################################################################################################################################################################################################### # 8888888888 Y88b d88P 88888888888 8888888b. 888 888 8888888b. 8888888888 8888888b. # 888 Y88b d88P 888 888 Y88b 888 888 888 "Y88b 888 888 Y88b # 888 Y88o88P 888 888 888 888 888 888 888 888 888 888 # 8888888 Y888P 888 888 d88P 888 888 888 888 8888888 888 d88P # 888 d888b 888 8888888P" 888 888 888 888 888 8888888P" # 888 d88888b 888 888 T88b 888 888 888 888 888 888 T88b # 888 d88P Y88b 888 888 T88b Y88b. .d88P 888 .d88P 888 888 T88b # 8888888888 d88P Y88b 888 888 T88b "Y88888P" 8888888P" 8888888888 888 T88b ####################################################################################################################################################################################################################### [extruder] step_pin: tool_board: STEPPER_E_STEP dir_pin: tool_board: STEPPER_E_DIR enable_pin: !tool_board: STEPPER_E_ENABLE microsteps: 16 rotation_distance: 4.637 #ORBITER V2.5 full_steps_per_rotation:200 #gear_ratio: 50:10 nozzle_diameter: 0.400 filament_diameter: 1.750 #max_extrude_cross_section: #instantaneous_corner_velocity: 1.000 max_extrude_only_distance: 500.0 max_extrude_only_velocity: 120 #max_extrude_only_accel: pressure_advance: 0.025 #0.025 #PETG_0.01 pressure_advance_smooth_time: 0.030 #ORBITER V2.5 heater_pin: tool_board: HOTEND0_PIN max_power: 1.0 sensor_type: PT1000 sensor_pin: tool_board: TH_HOTEND pullup_resistor: 2200 #J36Comboはプルアップ抵抗2.2kΩなので注意 #smooth_time: 1.0 #control: pid #pid_Kp: 21.527 #pid_Ki: 1.063 #pid_Kd: 108.982 #pwm_cycle_time: 0.100 #デフォルトは0.1秒 min_extrude_temp: 170 min_temp: 0 max_temp: 500 [tmc2209 extruder] uart_pin: tool_board: STEPPER_E_UART #tx_pin: #select_pins: interpolate: False run_current: 0.850 #hold_current: #保持電流は設定しないのが推奨 #sense_resistor: 0.110 #stealthchop_threshold: 999999 #stealthchop_threshold: 999999 #spreadCycle #coolstep_threshold: #uart_address: #driver_MULTISTEP_FILT: True #driver_IHOLDDELAY: 8 #driver_TPOWERDOWN: 20 #driver_TBL: 2 #driver_TOFF: 3 #driver_HEND: 0 #driver_HSTRT: 5 #driver_PWM_AUTOGRAD: True #driver_PWM_AUTOSCALE: True #driver_PWM_LIM: 12 #driver_PWM_REG: 8 #driver_PWM_FREQ: 1 #driver_PWM_GRAD: 14 #driver_PWM_OFS: 36 #driver_SGTHRS: 0 #driver_SEMIN: 0 #driver_SEUP: 0 #driver_SEMAX: 0 #driver_SEDN: 0 #driver_SEIMIN: 0 #diag_pin: #センサレスホーミングを有効にする場合に設定
EXTRUDERセクションでは測温抵抗体PT1000のプルアップ抵抗をデフォルトの4700から2200に変更しています。
H36 COMBOはプルアップ抵抗に2200Ωが使用されていますので2200を設定します。
Heater Bedセクション
######################################################################################################################################################## # 888 888 8888888888 d8888 88888888888 8888888888 8888888b. 888888b. 8888888888 8888888b. # 888 888 888 d88888 888 888 888 Y88b 888 "88b 888 888 "Y88b # 888 888 888 d88P888 888 888 888 888 888 .88P 888 888 888 # 8888888888 8888888 d88P 888 888 8888888 888 d88P 8888888K. 8888888 888 888 # 888 888 888 d88P 888 888 888 8888888P" 888 "Y88b 888 888 888 # 888 888 888 d88P 888 888 888 888 T88b 888 888 888 888 888 # 888 888 888 d8888888888 888 888 888 T88b 888 d88P 888 888 .d88P # 888 888 8888888888 d88P 888 888 8888888888 888 T88b 8888888P" 8888888888 8888888P" ######################################################################################################################################################## [heater_bed] heater_pin:mcu:BED_HEATER_PIN max_power: 1.0 sensor_type:Generic 3950 sensor_pin:mcu:THB_PIN #PIDチューニングしたら以下はコメントアウトした後でSAVE_CONFIGする ############################################################# #control:pid #pid_kp: 58.437 #pid_ki: 2.347 #pid_kd: 363.769 ############################################################# #pwm_cycle_time: 0.100 #デフォルトは0.1秒 min_temp:0 max_temp:120
コメントにもあるようにPIDチューニング後にsave_configしようとするとエラーになります。これはこのセクションがprinter.cfgにないために起きるので、コメントの通りPIDチューニング実施後にコメントアウトしてからsave_configするかprinter.cfgファイルに[heater_bed]セクションを追加で設けて、controlからpid_kdの部分だけprinter.cfgのほうに書くことで対処できます.
part_fanセクション
######################################################################################################################################################## # 8888888b. d8888 8888888b. 88888888888 .d8888b. 8888888888 d8888 888b 888 # 888 Y88b d88888 888 Y88b 888 d88P Y88b 888 d88888 8888b 888 # 888 888 d88P888 888 888 888 Y88b. 888 d88P888 88888b 888 # 888 d88P d88P 888 888 d88P 888 "Y888b. 8888888 d88P 888 888Y88b 888 # 8888888P" d88P 888 8888888P" 888 "Y88b. 888 d88P 888 888 Y88b888 # 888 d88P 888 888 T88b 888 "888 888 d88P 888 888 Y88888 # 888 d8888888888 888 T88b 888 Y88b d88P 888 d8888888888 888 Y8888 # 888 d88P 888 888 T88b 888 "Y8888P" 888 d88P 888 888 Y888 ######################################################################################################################################################## #マルチピン設定をしてパーツファン出力を2つのポートに出す #マルチピンを使用するセクションより上に書くこと [multi_pin part_cooling_fans] pins: tool_board: PARTS_COOLING_FAN, tool_board: PARTS_COOLONG_FAN1 [fan] pin= multi_pin:part_cooling_fans
H36 Comboには4つのファンポートがあるため、パーツ冷却用のファンを2つ別々のポートに接続することができます。
従来のツールボードではポート数が足りず、複数のファンを1つのコネクタにまとめて圧着する必要がありましたが、H36 Comboならそれぞれのファンに独立したポートが使えるため、より確実で安全な配線が可能です。
ただし、このように2つのファンをパーツ冷却用として同時に使いたい場合は、両方のファンポートが同じ動作をするように設定してあげる必要があります。
そのために multi_pin 機能を使います。
ここで重要なのは、multi_pin の定義が fan セクションより先に読み込まれる必要があるということです。
そうでないと、Klipperは multi_pin 名が未定義としてエラーになります。
その他のセクション
[heater_fan heatbreak_cooling_fan] pin: tool_board: HOTEND_FAN max_power: 1.0 [controller_fan stepper_fan] pin:mcu:FAN0_PWM shutdown_speed:1.0 stepper: stepper_x,stepper_y [fan_generic nevergrater] pin:mcu:FAN1_PWM [temperature_sensor RPi_temp] sensor_type: temperature_host min_temp:0 max_temp:100 [temperature_sensor H36_temp] sensor_type: temperature_mcu sensor_mcu: tool_board [adxl345] cs_pin: tool_board:ADXL_SPI_CS spi_software_sclk_pin: tool_board:ADXL_SPI_SCLK spi_software_mosi_pin: tool_board:ADXL_SPI_MOSI spi_software_miso_pin: tool_board:ADXL_SPI_MISO axes_map: -y,z,-x [neopixel daylight] pin:mcu:RGB_PIN chain_count: 20 color_order: GRB initial_RED: 0.2 initial_GREEN: 0.2 initial_BLUE: 0.2 [neopixel dragon_burner] pin:tool_board:RGB_PIN chain_count: 3 color_order: GRB initial_RED: 0.2 initial_GREEN: 0.2 initial_BLUE: 0.2
その他のセクションではファンや温度センサー,LEDなどを設定しています。
stepper_fanセクションではA/Bモータドライバーがアクティブになっているときにファンが回るように設定しています。A/Bモータドライバーの電流設定が2Aと高めなのでファンで冷却しないと温度以上で停止してしまうためです.
hardware/eddy.cfg
eddy.cfgはBTTの公式にあるcfgファイルをベースにベッドサイズに合わせた変更をします。
[probe_eddy_current btt_eddy] sensor_type: ldc1612 z_offset: 2.5 i2c_mcu: eddy i2c_bus: i2c0f x_offset: 0 y_offset: 30.0 [bed_mesh] horizontal_move_z: 2 speed: 200 mesh_min: 30, 30 mesh_max: 150, 150 probe_count: 9, 9 algorithm: bicubic [safe_z_home] home_xy_position: 90, 90 z_hop: 10 z_hop_speed: 25 speed: 200 [save_variables] filename: ~/printer_data/config/variables.cfg [gcode_macro BED_MESH_CALIBRATE] rename_existing: BTT_BED_MESH_CALIBRATE gcode: BTT_BED_MESH_CALIBRATE METHOD=rapid_scan
私が変更した部分だけ載せておきます。セクションsave_variablesでz_offsetの値を保存するファイルを指定しています。
system.cfg
主にシステム全体に関わる定義をまとめています。
・複数のMCU(E3EZ, H36 Combo, Eddy Duo)をCAN接続
・各種補正機能(resonance_tester, skew_correction, exclude_object, gcode_arcs, z_tilt)
・idle_timeoutやresonance測定、Input Shaperの設定
######################################################################################################################################################## # 888b d888 .d8888b. 888 888 # 8888b d8888 d88P Y88b 888 888 # 88888b.d88888 888 888 888 888 # 888Y88888P888 888 888 888 # 888 Y888P 888 888 888 888 # 888 Y8P 888 888 888 888 888 # 888 " 888 Y88b d88P Y88b. .d88P # 888 888 "Y8888P" "Y88888P" ####################################################################################################################################################### #ホストコンピュータと接続するmcuを設定します。 [mcu] #BTT MANTA E3EZ canbus_uuid:0f27be7e5f51 canbus_interface:can0 [mcu tool_board] #FYSTECT H36 COMBO canbus_uuid:c2261b06834f canbus_interface:can0 [mcu eddy] #BTT eddy duo canbus_uuid:6604bf47e2cf canbus_interface:can0 ######################################################################################################################################################## # 8888888 8888888b. 888 8888888888 88888888888 8888888 888b d888 8888888888 .d88888b. 888 888 88888888888 # 888 888 "Y88b 888 888 888 888 8888b d8888 888 d88P" "Y88b 888 888 888 # 888 888 888 888 888 888 888 88888b.d88888 888 888 888 888 888 888 # 888 888 888 888 8888888 888 888 888Y88888P888 8888888 888 888 888 888 888 # 888 888 888 888 888 888 888 888 Y888P 888 888 888 888 888 888 888 # 888 888 888 888 888 888 888 888 Y8P 888 888 888 888 888 888 888 # 888 888 .d88P 888 888 888 888 888 " 888 888 Y88b. .d88P Y88b. .d88P 888 # 8888888 8888888P" 88888888 8888888888 888 8888888 888 888 8888888888 "Y88888P" "Y88888P" 888 ######################################################################################################################################################## [idle_timeout] gcode: TURN_OFF_HEATERS M84 ; disable steppers timeout: 3600 ######################################################################################################################################################## # 8888888b. 8888888888 .d8888b. .d88888b. 888b 888 d8888 888b 888 .d8888b. 8888888888 88888888888 8888888888 .d8888b. 88888888888 8888888888 8888888b. # 888 Y88b 888 d88P Y88b d88P" "Y88b 8888b 888 d88888 8888b 888 d88P Y88b 888 888 888 d88P Y88b 888 888 888 Y88b # 888 888 888 Y88b. 888 888 88888b 888 d88P888 88888b 888 888 888 888 888 888 Y88b. 888 888 888 888 # 888 d88P 8888888 "Y888b. 888 888 888Y88b 888 d88P 888 888Y88b 888 888 8888888 888 8888888 "Y888b. 888 8888888 888 d88P # 8888888P" 888 "Y88b. 888 888 888 Y88b888 d88P 888 888 Y88b888 888 888 888 888 "Y88b. 888 888 8888888P" # 888 T88b 888 "888 888 888 888 Y88888 d88P 888 888 Y88888 888 888 888 888 888 "888 888 888 888 T88b # 888 T88b 888 Y88b d88P Y88b. .d88P 888 Y8888 d8888888888 888 Y8888 Y88b d88P 888 888 888 Y88b d88P 888 888 888 T88b # 888 T88b 8888888888 "Y8888P" "Y88888P" 888 Y888 d88P 888 888 Y888 "Y8888P" 8888888888 888 8888888888 "Y8888P" 888 8888888888 888 T88b ######################################################################################################################################################## #probe_points: #accel_chip: #accel_chip_x: #accel_chip_y #max_smoothing: #move_speed: #min_freq: #max_freq: #accel_per_hz: #hz_per_sec: #sweeping_accel: #sweeping_period: [resonance_tester] accel_chip: adxl345 probe_points: 90,90,30 ######################################################################################################################################################## # 8888888 888b 888 8888888b. 888 888 88888888888 .d8888b. 888 888 d8888 8888888b. 8888888888 8888888b. # 888 8888b 888 888 Y88b 888 888 888 d88P Y88b 888 888 d88888 888 Y88b 888 888 Y88b # 888 88888b 888 888 888 888 888 888 Y88b. 888 888 d88P888 888 888 888 888 888 # 888 888Y88b 888 888 d88P 888 888 888 "Y888b. 8888888888 d88P 888 888 d88P 8888888 888 d88P # 888 888 Y88b888 8888888P" 888 888 888 "Y88b. 888 888 d88P 888 8888888P" 888 8888888P" # 888 888 Y88888 888 888 888 888 "888 888 888 d88P 888 888 888 888 T88b # 888 888 Y8888 888 Y88b. .d88P 888 Y88b d88P 888 888 d8888888888 888 888 888 T88b # 8888888 888 Y888 888 "Y88888P" 888 "Y8888P" 888 888 d88P 888 888 8888888888 888 T88b ######################################################################################################################################################## #[input_shaper] #shaper_freq_x: 66.8 #shaper_type_x: mzv #shaper_freq_y: 50.0 #shaper_type_y: mzv #SHAPER_CALIBRATE後にsave_configするとprinter.cfgに自動保存されます。 ######################################################################################################################################################## # .d8888b. .d8888b. .d88888b. 8888888b. 8888888888 d8888 8888888b. .d8888b. .d8888b. # d88P Y88b d88P Y88b d88P" "Y88b 888 "Y88b 888 d88888 888 Y88b d88P Y88b d88P Y88b # 888 888 888 888 888 888 888 888 888 d88P888 888 888 888 888 Y88b. # 888 888 888 888 888 888 8888888 d88P 888 888 d88P 888 "Y888b. # 888 88888 888 888 888 888 888 888 d88P 888 8888888P" 888 "Y88b. # 888 888 888 888 888 888 888 888 888 d88P 888 888 T88b 888 888 "888 # Y88b d88P Y88b d88P Y88b. .d88P 888 .d88P 888 d8888888888 888 T88b Y88b d88P Y88b d88P # "Y8888P88 "Y8888P" "Y88888P" 8888888P" 8888888888 d88P 888 888 T88b "Y8888P" "Y8888P" ######################################################################################################################################################## [gcode_arcs] resolution: 0.1 ######################################################################################################################################################## # 8888888888 Y88b d88P .d8888b. 888 888 888 8888888b. 8888888888 .d88888b. 888888b. 888888 8888888888 .d8888b. 88888888888 # 888 Y88b d88P d88P Y88b 888 888 888 888 "Y88b 888 d88P" "Y88b 888 "88b "88b 888 d88P Y88b 888 # 888 Y88o88P 888 888 888 888 888 888 888 888 888 888 888 .88P 888 888 888 888 888 # 8888888 Y888P 888 888 888 888 888 888 8888888 888 888 8888888K. 888 8888888 888 888 # 888 d888b 888 888 888 888 888 888 888 888 888 888 "Y88b 888 888 888 888 # 888 d88888b 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 # 888 d88P Y88b Y88b d88P 888 Y88b. .d88P 888 .d88P 888 Y88b. .d88P 888 d88P 88P 888 Y88b d88P 888 # 8888888888 d88P Y88b "Y8888P" 88888888 "Y88888P" 8888888P" 8888888888 "Y88888P" 8888888P" 888 8888888888 "Y8888P" 888 # .d88P # .d88P" # 888P" ######################################################################################################################################################## #複数のオブジェクトをプリント中にプリント失敗したオブジェクトを以降プリントしないようにできます。 #moonraker.confに以下を記述しておく必要があります。 #[file_manager] #enable_object_processing:true #この記述はadaptive mesh使用時にも必要になります [exclude_object] ######################################################################################################################################################## # 8888888888P 88888888888 8888888 888 88888888888 # d88P 888 888 888 888 # d88P 888 888 888 888 # d88P 888 888 888 888 # d88P 888 888 888 888 # d88P 888 888 888 888 # d88P 888 888 888 888 # d8888888888 888 8888888 88888888 888 ######################################################################################################################################################## #Zステッパーが複数ある場合にベッドの傾斜を調整することができます。 #このセクション[z_tilt]が存在する場合はZ_TILT_ADJUSTコマンドが使用できるようになります。 #z_positions: #各zステッパーのピボットポイントを示すX,Y座標を設定します。 #ピボットポイントはベッドが特定のzステッパーと接続されている点のことです。 #ノズル座標がそのポイントに到達できると仮定した場合の座標を設定します。 #1行目がstepper_z,2行目がstepper_z1,3行目がstepper_z2に対応します。 #設定が必須です #points #Z_TILT_ADJUSTコマンド実行中にプローブされるX,Y座標のリストです。 #1行に1つの座標を設定します。 #設定が必須です #speed #Z_TILT_ADJUST実行中のプローブしないときの移動速度をmm/sで設定します。 #デフォルトは50です。 #設定しない場合は50mm/sになります #horizontal_mode_z #ツールヘッドが移動するときのz高さ(mm)です。 #デフォルトは5です。 #設定しない場合は5mmになります #retries #プローブしたポイントが許容差内に入らないときにリトライする回数です #retry_tolerance #retriesが有効になっている場合にプローブされた点で最大と最小のポイント差が #この値より大きい場合にリトライします。変更の最小単位は1ステップです。 #1.8度、マイクロステップ32,リード8mmの台形ねじの場合は8/200/32=0.00125 [z_tilt] z_positions: -50, 18 90, 228 230, 18 points: 30, 5 90, 125 150, 5 speed: 200 horizontal_move_z: 10 retries: 5 retry_tolerance: 0.0075 ######################################################################################################################################################## # .d8888b. d8888 8888888888 8888888888 8888888888P 888 888 .d88888b. 888b d888 8888888888 # d88P Y88b d88888 888 888 d88P 888 888 d88P" "Y88b 8888b d8888 888 # Y88b. d88P888 888 888 d88P 888 888 888 888 88888b.d88888 888 # "Y888b. d88P 888 8888888 8888888 d88P 8888888888 888 888 888Y88888P888 8888888 # "Y88b. d88P 888 888 888 d88P 888 888 888 888 888 Y888P 888 888 # "888 d88P 888 888 888 d88P 888 888 888 888 888 Y8P 888 888 # Y88b d88P d8888888888 888 888 d88P 888 888 Y88b. .d88P 888 " 888 888 # "Y8888P" d88P 888 888 8888888888 d8888888888 888 888 "Y88888P" 888 888 8888888888 ######################################################################################################################################################## #[safe_z_home] #eddy.cfg参照 ######################################################################################################################################################## #888888b. 8888888888 8888888b. 888b d888 8888888888 .d8888b. 888 888 #888 "88b 888 888 "Y88b 8888b d8888 888 d88P Y88b 888 888 #888 .88P 888 888 888 88888b.d88888 888 Y88b. 888 888 #8888888K. 8888888 888 888 888Y88888P888 8888888 "Y888b. 8888888888 #888 "Y88b 888 888 888 888 Y888P 888 888 "Y88b. 888 888 #888 888 888 888 888 888 Y8P 888 888 "888 888 888 #888 d88P 888 888 .d88P 888 " 888 888 Y88b d88P 888 888 #8888888P" 8888888888 8888888P" 888 888 8888888888 "Y8888P" 888 888 ######################################################################################################################################################## #[bed_mesh] #eddy.cfg参照 ######################################################################################################################################################## # 8888888888 .d88888b. 8888888b. .d8888b. 8888888888 888b d888 .d88888b. 888 888 8888888888 # 888 d88P" "Y88b 888 Y88b d88P Y88b 888 8888b d8888 d88P" "Y88b 888 888 888 # 888 888 888 888 888 888 888 888 88888b.d88888 888 888 888 888 888 # 8888888 888 888 888 d88P 888 8888888 888Y88888P888 888 888 Y88b d88P 8888888 # 888 888 888 8888888P" 888 888 888 Y888P 888 888 888 Y88b d88P 888 # 888 888 888 888 T88b 888 888 888 888 Y8P 888 888 888 Y88o88P 888 # 888 Y88b. .d88P 888 T88b Y88b d88P 888 888 " 888 Y88b. .d88P Y888P 888 # 888 "Y88888P" 888 T88b "Y8888P" 8888888888 888 888 "Y88888P" Y8P 8888888888 ######################################################################################################################################################## #[force_move] #eddy.cfg参照 ######################################################################################################################################################## # .d8888b. 888 d8P 8888888888 888 888 # d88P Y88b 888 d8P 888 888 o 888 # Y88b. 888 d8P 888 888 d8b 888 # "Y888b. 888d88K 8888888 888 d888b 888 # "Y88b. 8888888b 888 888d88888b888 # "888 888 Y88b 888 88888P Y88888 # Y88b d88P 888 Y88b 888 8888P Y8888 # "Y8888P" 888 Y88b 8888888888 888P Y888 ######################################################################################################################################################## #歪み補正をします。 #このセクションが有効になっている場合にSET_SKEWコマンドが使用可能になります。 #補正の仕方 #1.skew調整するモデルをダウンロードしてプリントします。 #2.プリントしたモデルの寸法を測定します #3.コンソールでSET_SKEW XY=[ACの長さmm],[BDの長さmm],[ADの長さmm] XZ=[ACの長さmm],[BDの長さmm],[ADの長さmm] YZ=[ACの長さmm],[BDの長さmm],[ADの長さmm]を入力します # ひとつの平面のみの測定値でも設定可能です。その場合は指定していない面の補正は現在の値を保持します #4.コンソールでSKEW_PROFILE SAVE=<プロファイル名>を実行してプロファイルを保存します。プロファイルはprinter.cfgの下部に保存されます。 #5.プリント開始時のマクロにSKEW_PROFILE LOAD=<プロファイル名>を追加します。 #6.プリント終了時のマクロにSET_SKEW CLEAR=1を追加します。 #注意 SKEWプロファイルの読み込みはプリント開始直前にしてください。ホームポジションへの移動やパージラインをプリントする場合に #skew補正が有効になっていると移動可能範囲外への移動指令が発生する恐れがありこの場合プリントが停止してしまいます。 #また、プリント完了時にはskew補正をクリアするようにしてください。 [skew_correction]
macros/print_start_end.cfg
このファイルには2つのマクロが含まれています
・PRINT_START: スライサーのスタートGコードで呼び出すことで、印刷開始前の準備を一括で実行
・PRINT_END: 印刷完了後にヒータやファンを停止します。印刷完了5分後には庫内フィルターの運転を停止します。
これらのマクロを使用するにはスライサーのプリンター開始G-codeにPRINT_START EXTRUDER_TEMP={first_layer_temperature[0]} BED_TEMP={first_layer_bed_temperature[0]}
プリンター終了G-codeにPRINT_END
と書いておきます。(Orcaスライサーの場合)

[gcode_macro PRINT_START] # Use PRINT_START for the slicer starting script - please customise for your slicer of choice gcode: G92 E0 BED_MESH_CLEAR SET_SKEW CLEAR=1 {% set BED_TEMP = params.BED_TEMP|default(100)|float %} {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(250)|float %} #M117 Heating... M118 Heating BED { printer.heater_bed.temperature }/{ BED_TEMP } LED_Turn_Red M140 S{BED_TEMP} ; ベッド温度セット M104 S{EXTRUDER_TEMP - 100} ; ホットエンド1段目 1stレイヤ設定値から-100℃ M190 S{BED_TEMP} ; ベッド1stレイヤ温度到達待機 # ベッド温度が目標に到達したらフィルターをオン M118 Bed reached target temperature. Turning on the filter. FILTER_ON LED_Turn_White G4 P500 G90 #M117 Homing M118 Homing G28 #M117 Z_TILT_ADJUST M118 Z_TILT_ADJUST Z_TILT_ADJUST #M117 Homing M118 Homing G28 #M117 BED MESH CALIBRATE M118 BED MESH CALIBRATE BED_MESH_CALIBRATE ; ベッドメッシュ eddyのrapid scanなのでアダプティブメッシュはしなくても十分速い。 G0 Z20 F3000 ; 念のためノズル上げとく G0 X170 Y170 Z30 F3000 ; 右奥に移動 M109 S{EXTRUDER_TEMP} ; ホットエンドの温度が設定値になるまで待機 G0 X20 Y4 F10000 ; X-Yをパージライン開始位置に移動 G0 Z0.4 ; Zを0.4に移動 G91 G1 X100 E20 F1000 # パージライン引く SKEW_PROFILE LOAD=my_skew_profile # skewを設定 G90 # Absolut position M117 Printing... [gcode_macro PRINT_END] gcode: G92 E0 ; エクストルーダクリア G1 E-2 F3600 ; フィラメントリトラクト G91 ; 相対位置 G0 Z1.00 X20.0 Y20.0 F10000 ; move nozzle to remove stringing TURN_OFF_HEATERS G0 Z2 F3000 ; move nozzle up 2mm G90 ; 絶対位置 G0 X175 Y175 F6000 ; X175,Y175に移動 M140 S0 ; ベッド温度を0に設定 M104 S0 ; ホットエンド温度を0に設定 M106 S0 ; パーツファンを停止 M84 ; モータをオフ SET_SKEW CLEAR=1 ; skewをクリア BED_MESH_CLEAR M220 S100 ; 送り速度を100%にセット M221 S100 ; フローを100%にセット # フィルターを5分後にオフ M118 Filter will turn off in 5 minutes. UPDATE_DELAYED_GCODE ID=delayed_filter_off DURATION=300 #M117 Finished M118 Finished
skewの設定はプリント開始直前に実行します。これはskewの設定値次第ではhomingやパージを行う際に、移動限界位置を超える座標を指定してしまうことによるエラーを防止するためです。プリント完了時にはskewの設定をクリアしておきます。
プリント完了5分後に庫内フィルターを停止させるようにDELAYED_GCODEを使用しています。
macros/cold_pull.cfg
cold_pull.cfg は、ノズルの詰まりや内部の焦げを取り除く「コールドプル」を自動で行うマクロです。Happy Hare のアイデアをベースに、独自コマンドを使わず汎用的に使えるよう再設計されています。PLAやPETGなどのマテリアルを指定するだけで、それに最適な温度で押出し→冷却→再加熱→引き抜きを実行します。引き抜き時はklipper screenに>>>>> PULL NOW <<<<< と表示されるのでエクストルーダの引き戻し速度に合わせて人手でまっすぐフィラメントを引き抜きます。メンテナンスの定番としておすすめです。
[gcode_macro COLD_PULL] description: Guide you through the process of cleaning your extruder with a cold pull gcode: {% set material = params.MATERIAL|default("pla")|string|upper %} {% set materials = { 'NYLON': {'hot_temp': 260, 'cold_temp': 50, 'pull_temp': 120, 'min_extrude_temp': 190}, 'PLA': {'hot_temp': 250, 'cold_temp': 45, 'pull_temp': 100, 'min_extrude_temp': 160}, 'ABS': {'hot_temp': 255, 'cold_temp': 50, 'pull_temp': 120, 'min_extrude_temp': 190}, 'PETG': {'hot_temp': 250, 'cold_temp': 45, 'pull_temp': 100, 'min_extrude_temp': 180} } %} {% if material not in materials %} {action_raise_error("Unknown material. Valid types are: Nylon, ABS, PLA, PETG")} {% endif %} {% set hot_temp = params.HOT_TEMP|default('')|int %} {% set cold_temp = params.COLD_TEMP|default('')|int %} {% set pull_temp = params.PULL_TEMP|default('')|int %} {% set min_extrude_temp = params.MIN_EXTRUDE_TEMP|default('')|int %} {% set hot_temp = (hot_temp if hot_temp > 0 else materials.get(material).hot_temp)|int %} {% set cold_temp = (cold_temp if cold_temp > 0 else materials.get(material).cold_temp)|int %} {% set pull_temp = (pull_temp if pull_temp > 0 else materials.get(material).pull_temp)|int %} {% set min_extrude_temp = (min_extrude_temp if min_extrude_temp > 0 else materials.get(material).min_extrude_temp)|int %} {% set pull_speed = params.PULL_SPEED|default(10)|int %} {% set clean_length = params.CLEAN_LENGTH|default(25)|int %} {% set extrude_speed = params.EXTRUDE_SPEED|default(1.5)|float %} {% set ns = namespace(stuff_points=[], cool_points=[]) %} {% for temp in range(hot_temp + 1, cold_temp - 1, -1) %} {% if temp % 10 == 0 %} {% if temp > min_extrude_temp %} {% set ns.stuff_points = ns.stuff_points + [temp] %} {% elif temp < min_extrude_temp %} {% set ns.cool_points = ns.cool_points + [temp] %} {% endif %} {% endif %} {% endfor %} G90 ; 絶対位置モード M83 ; エクストルーダー相対位置モード G92 E0 ; エクストルーダー位置を0にリセット M118 Heating extruder to {hot_temp} SET_HEATER_TEMPERATURE HEATER="extruder" TARGET={hot_temp} TEMPERATURE_WAIT SENSOR="extruder" MINIMUM={hot_temp - 2} MAXIMUM={hot_temp + 2} FORCE_MOVE STEPPER=extruder DISTANCE={clean_length} VELOCITY={extrude_speed} M118 Allowing extruder to cool SET_HEATER_TEMPERATURE HEATER="extruder" TARGET={cold_temp} M106 S255 #パーツファンを回して早く冷却する # 押出可能な温度内のときは10℃下がるごとに1mm押し出す {% for temp in ns.stuff_points %} TEMPERATURE_WAIT SENSOR="extruder" MAXIMUM={temp} FORCE_MOVE STEPPER=extruder DISTANCE=1 VELOCITY={extrude_speed} {% endfor %} # Give some feedback on cooling process M117 Waiting for extruder to completely cool to {cold_temp} {% for temp in ns.cool_points %} TEMPERATURE_WAIT SENSOR="extruder" MAXIMUM={temp} M118 Nozzle at {temp} {% endfor %} TEMPERATURE_WAIT SENSOR="extruder" MAXIMUM={cold_temp} # コールドプルする温度まで再加熱 M107 #パーツファンを停止 M118 Re-warming extruder to {pull_temp} SET_HEATER_TEMPERATURE HEATER="extruder" TARGET={pull_temp} # PULL NOWが表示されたらフィラメントをゆっくり引っ張ります TEMPERATURE_WAIT SENSOR="extruder" MINIMUM={pull_temp - 10} M118 Get ready to pull... TEMPERATURE_WAIT SENSOR="extruder" MINIMUM={pull_temp} M118 >>>>> PULL NOW <<<<< # コールドプルします。フィラメントをつかんでまっすぐ引っ張ってください。モータは150mmリトラクトします FORCE_MOVE STEPPER=extruder DISTANCE=-150 VELOCITY={pull_speed} M118 Cold pull is successful if you can see the shape of the nozzle at the filament end SET_HEATER_TEMPERATURE HEATER="extruder" #エクストルーダ温度を下げる
macros/common_macros.cfg
このファイルには、プリント中や終了後の動作を簡単に制御するためのマクロがいくつか定義されています。
######################################################################################################################################################## # .d8888b. .d8888b. .d8888b. # d88P Y88b d88P Y88b d88P Y88b # 888 888 888 Y88b. d88P # 888 .d88P "Y88888" # 888 88888 .od888P" .d8P""Y8b. # 888 888 d88P" 888 888 # Y88b d88P 888" Y88b d88P # "Y8888P88 888888888 "Y8888P" ######################################################################################################################################################## #eddy.cfg参照 ######################################################################################################################################################## # 888888b. 8888888888 8888888b. 888b d888 8888888888 .d8888b. 888 888 .d8888b. d8888 888 8888888 888888b. 8888888b. d8888 88888888888 8888888888 # 888 "88b 888 888 "Y88b 8888b d8888 888 d88P Y88b 888 888 d88P Y88b d88888 888 888 888 "88b 888 Y88b d88888 888 888 # 888 .88P 888 888 888 88888b.d88888 888 Y88b. 888 888 888 888 d88P888 888 888 888 .88P 888 888 d88P888 888 888 # 8888888K. 8888888 888 888 888Y88888P888 8888888 "Y888b. 8888888888 888 d88P 888 888 888 8888888K. 888 d88P d88P 888 888 8888888 # 888 "Y88b 888 888 888 888 Y888P 888 888 "Y88b. 888 888 888 d88P 888 888 888 888 "Y88b 8888888P" d88P 888 888 888 # 888 888 888 888 888 888 Y8P 888 888 "888 888 888 888 888 d88P 888 888 888 888 888 888 T88b d88P 888 888 888 # 888 d88P 888 888 .d88P 888 " 888 888 Y88b d88P 888 888 Y88b d88P d8888888888 888 888 888 d88P 888 T88b d8888888888 888 888 # 8888888P" 8888888888 8888888P" 888 888 8888888888 "Y8888P" 888 888 "Y8888P" d88P 888 88888888 8888888 8888888P" 888 T88b d88P 888 888 8888888888 ######################################################################################################################################################## #eddy.cfg参照 ######################################################################################################################################################## # 8888888b. 8888888 .d8888b. d8888 888888b. 888 8888888888 .d8888b. 88888888888 8888888888 8888888b. 8888888b. 8888888888 8888888b. # 888 "Y88b 888 d88P Y88b d88888 888 "88b 888 888 d88P Y88b 888 888 888 Y88b 888 Y88b 888 888 Y88b # 888 888 888 Y88b. d88P888 888 .88P 888 888 Y88b. 888 888 888 888 888 888 888 888 888 # 888 888 888 "Y888b. d88P 888 8888888K. 888 8888888 "Y888b. 888 8888888 888 d88P 888 d88P 8888888 888 d88P # 888 888 888 "Y88b. d88P 888 888 "Y88b 888 888 "Y88b. 888 888 8888888P" 8888888P" 888 8888888P" # 888 888 888 "888 d88P 888 888 888 888 888 "888 888 888 888 888 888 888 T88b # 888 .d88P 888 Y88b d88P d8888888888 888 d88P 888 888 Y88b d88P 888 888 888 888 888 888 T88b # 8888888P" 8888888 "Y8888P" d88P 888 8888888P" 88888888 8888888888 "Y8888P" 888 8888888888 888 888 8888888888 888 T88b ######################################################################################################################################################## [gcode_macro Disable_Steppers] gcode: M84 [gcode_macro Filter_on] gcode: SET_FAN_SPEED FAN=nevergrater SPEED=1 [gcode_macro Filter_off] gcode: SET_FAN_SPEED FAN=nevergrater SPEED=0 [delayed_gcode delayed_filter_off] gcode: SET_FAN_SPEED FAN=nevergrater SPEED=0 [gcode_macro LED_Turn_Red] gcode: SET_LED LED=daylight GREEN=0.0 RED=0.2 BLUE=0.0 [gcode_macro LED_Turn_White] gcode: SET_LED LED=daylight GREEN=0.2 RED=0.2 BLUE=0.2 [gcode_macro LED_Turn_Bule] gcode: SET_LED LED=daylight GREEN=0.0 RED=0.0 BLUE=0.2 [gcode_macro LED_Turn_Off] gcode: SET_LED LED=daylight GREEN=0.0 RED=0.0 BLUE=0.0
macros/pid_tuning.cfg
このマクロはDemon klipperに使われているマクロをほぼそのまま使用しています。
######################################################################################################################################################## # 8888888b. 8888888 8888888b. 88888888888 888 888 888b 888 8888888 888b 888 .d8888b. # 888 Y88b 888 888 "Y88b 888 888 888 8888b 888 888 8888b 888 d88P Y88b # 888 888 888 888 888 888 888 888 88888b 888 888 88888b 888 888 888 # 888 d88P 888 888 888 888 888 888 888Y88b 888 888 888Y88b 888 888 # 8888888P" 888 888 888 888 888 888 888 Y88b888 888 888 Y88b888 888 88888 # 888 888 888 888 888 888 888 888 Y88888 888 888 Y88888 888 888 # 888 888 888 .d88P 888 Y88b. .d88P 888 Y8888 888 888 Y8888 Y88b d88P # 888 8888888 8888888P" 888 "Y88888P" 888 Y888 8888888 888 Y888 "Y8888P88 ######################################################################################################################################################## #エクストルーダとベッドのヒータのPIDチューニングをするマクロです。 #チューニング完了後SAVE_CONFIGしてください [gcode_macro PID_Tune_Mode_FULL] gcode: {% set noz_temp = params.NOZZLE_TARGET|default(200)|int %} #<<<<<<<<<<<<<<<<<<< Edit default nozzle test temp (200) {% set bed_temp = params.BED_TARGET|default(60)|int %} #<<<<<<<<<<<<<<<<<<<< Edit default bed test temp (60) {% set x_park = printer.toolhead.axis_maximum.x|float / 2 %} {% set y_park = printer.toolhead.axis_maximum.y|float / 2 %} G90 #絶対位置指定モード M117 Hotend AND Bed PID Tune Mode! Long Test! M118 Hotend AND Bed PID Tune Mode! Long Test! {% if "xyz" not in printer.toolhead.homed_axes %} G28 {% endif %} M400 G0 X{x_park} Y{y_park} Z5 F9000 #ツールヘッドをベッド中央に移動 M106 S155 #ファンを60%に設定 M117 EXTRUDER PID TUNE! PLEASE WAIT! M118 EXTRUDER PID TUNE! PLEASE WAIT! PID_CALIBRATE HEATER=extruder TARGET={noz_temp} #エクストルーダチューニング M400 M106 S0 #ファン停止 M117 EXTRUDER TEST END! DONT SAVE YET!! M118 EXTRUDER TEST END! DONT SAVE YET!! G4 P10000 G0 Z50 F9000 M117 HEAT BED PID TUNE! LONG TEST PLEASE WAIT! M118 HEAT BED PID TUNE! LONG TEST PLEASE WAIT! PID_CALIBRATE HEATER=heater_bed TARGET={bed_temp} M400 M117 HEAT BED TEST END! M118 HEAT BED TEST END! G4 P10000 M117 ALL TESTS COMPLETE! SAVE_CONFIG NOW!! M118 ALL TESTS COMPLETE! SAVE_CONFIG NOW!! [gcode_macro PID_Tune_Hotend] gcode: {% set noz_temp = params.NOZZLE_TARGET|default(200)|int %} {% set x_park = printer.toolhead.axis_maximum.x|float / 2 %} {% set y_park = printer.toolhead.axis_maximum.y|float / 2 %} G90 #絶対位置指定モード M117 Hotend PID Tune Mode! Long Test! M118 Hotend PID Tune Mode! Long Test! {% if "xyz" not in printer.toolhead.homed_axes %} G28 {% endif %} M400 G0 X{x_park} Y{y_park} Z5 F9000 #ツールヘッドをベッド中央に移動 M106 S155 PID_CALIBRATE HEATER=extruder TARGET={noz_temp} #エクストルーダチューニング M400 M106 S0 #ファン停止 M117 ALL TESTS COMPLETE! SAVE_CONFIG NOW!! M118 ALL TESTS COMPLETE! SAVE_CONFIG NOW!! [gcode_macro PID_Tune_Heat_Bed] gcode: {% set bed_temp = params.BED_TARGET|default(60)|int %} {% set x_park = printer.toolhead.axis_maximum.x|float / 2 %} {% set y_park = printer.toolhead.axis_maximum.y|float / 2 %} G90 #絶対位置指定モード M117 HEAT BED PID TUNE! LONG TEST PLEASE WAIT! M118 HEAT BED PID TUNE! LONG TEST PLEASE WAIT! {% if "xyz" not in printer.toolhead.homed_axes %} G28 {% endif %} M400 G0 X{x_park} Y{y_park} Z5 F9000 #ツールヘッドをベッド中央に移動 PID_CALIBRATE HEATER=heater_bed TARGET={bed_temp} #エクストルーダチューニング M400 M117 ALL TESTS COMPLETE! SAVE_CONFIG NOW!! M118 ALL TESTS COMPLETE! SAVE_CONFIG NOW!!
PID_Tune_Mode_FULLはホットエンドとヒートベッド両方のPIDチューニングを一括実行します。ホットエンド→ベッドの順にテストし、完了後に SAVE_CONFIG
を促す表示が出ます。ツールヘッドは自動で中央に移動し、冷却ファン(パーツファン)も自動制御されます。
PID_Tune_Hotendはホットエンドのみを対象にPIDチューニングします。
PID_Tune_Heat_Bedはヒートベッドのみを対象にチューニングします。
macros/resonance.cfg
このマクロ群は、KlipperのInput Shaper機能を活用して印刷品質の向上を狙うものです。専用の加速度センサ(ADXL345)を使用して、X/Y軸の共振周波数を測定し、補正パラメータを自動でチューニングします。
######################################################################################################################################################## # 8888888b. 8888888888 .d8888b. .d88888b. 888b 888 d8888 888b 888 .d8888b. 8888888888 # 888 Y88b 888 d88P Y88b d88P" "Y88b 8888b 888 d88888 8888b 888 d88P Y88b 888 # 888 888 888 Y88b. 888 888 88888b 888 d88P888 88888b 888 888 888 888 # 888 d88P 8888888 "Y888b. 888 888 888Y88b 888 d88P 888 888Y88b 888 888 8888888 # 8888888P" 888 "Y88b. 888 888 888 Y88b888 d88P 888 888 Y88b888 888 888 # 888 T88b 888 "888 888 888 888 Y88888 d88P 888 888 Y88888 888 888 888 # 888 T88b 888 Y88b d88P Y88b. .d88P 888 Y8888 d8888888888 888 Y8888 Y88b d88P 888 # 888 T88b 8888888888 "Y8888P" "Y88888P" 888 Y888 d88P 888 888 Y888 "Y8888P" 8888888888 ######################################################################################################################################################## #共振測定と自動調整はデフォルトではインストールされていないため #追加のソフトウェアをインストールする必要があります。 #ホストコンピュータで以下のコマンドを実行します。 #sudo apt update #sudo apt install python3-numpy python3-matplotlib libatlas-base-dev libopenblas-dev #~/klippy-env/bin/pip install -v "numpy<1.26" #共振の測定 #コンソールに以下のコマンドを発行すると加速度計の現在の測定値が表示されます #ACCELEROMETER_QUERY #測定値は以下のように表示されます。 #Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800 #X軸の共振測定はコマンド:TEST_RESONANCES AXIS=X #Y軸の共振測定はコマンド:TEST_RESONANCES AXIS=Y #測定した結果は/tmp/resonances_x_*.csvおよび/tmp/resonances_y_*.csvに保存されます。 #この結果をpngファイルに変換するためホストコンピュータ上で以下を実行します。 #~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png #~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png #pngファイルは/tmp/shaper_calibrate_x.png,/tmp/shaper_calibrate_y.pngに生成されます。 #生成されたpngファイルはPCのwinscpなどでダウンロードします。ホストコンピュータ上のcsvやpngファイルは削除しておきましょう #各軸の共振補正値をセクション[input_shaper](system.cfg)に記載して再起動すると反映されます。 #自動調整 #コマンドSHAPER_CALIBRATEを実行するとセクション[input_shaper](systen.cfg)の内容はコメントアウトされ #printer.cfgの自動保存部分(下の方)にセクション[input_shaper]が作成され、推奨値が記録されます。 [gcode_macro TEST_RESONNANCES_X] gcode: G28 TEST_RESONANCES AXIS=X [gcode_macro TEST_RESONNANCES_Y] gcode: G28 TEST_RESONANCES AXIS=Y [gcode_macro Auto_Shaper_X] description: Auto tuning of input shaper on X-axis gcode: G28 SHAPER_CALIBRATE AXIS=X [gcode_macro Auto_Shaper_Y] description: Auto tuning of input shaper on Y-axis gcode: G28 SHAPER_CALIBRATE AXIS=Y [gcode_macro Auto_Inputshaper] description: Auto tuning of input shaper on X&Y-axis gcode: G28 SHAPER_CALIBRATE
macros/stepper_buzz_cycle.cfg
初期セットアップ時にモータが回転するか、回転方向があっているかを確認するためのマクロです。こちらもDemon klipperを参考にしています。
#Stepper_Buzz_Xycle #すべてのモータを1mmプラス側に回転させてから元に戻すテスト #stepper_□のdirピンに「!」をつけると回転方向を反転できます。 #表示器又は通信によりどのモータが回るか確認できます。 # [gcode_macro Stepper_Buzz_Cycle] gcode: #M117 Stepper X Buzz Cycle in 10 Seconds! M118 Stepper X Buzz Cycle in 10 Seconds! G4 P5000 #5秒停止 #M117 5 Seconds! #ディスプレイに表示 M118 5 Seconds! #シリアルポートに送信 G4 P3000 #3秒停止 #M117 Stepper X! READY GO! M118 Stepper X! READY GO! G4 P2000 #2秒停止 STEPPER_BUZZ STEPPER=stepper_x M400 #動作完了まで待機 #M117 Stepper Y Buzz Cycle in 10 Seconds M118 Stepper Y Buzz Cycle in 10 Seconds G4 P5000 #5秒停止 #M117 5 Seconds! M118 5 Seconds! G4 P3000 #3秒停止 #M117 Stepper Y! READY GO! M118 Stepper Y! READY GO! G4 P2000 #2秒停止 STEPPER_BUZZ STEPPER=stepper_y M400 #動作完了まで待機 #M117 Stepper Z Buzz Cycle in 10 Seconds M118 Stepper Z Buzz Cycle in 10 Seconds G4 P5000 #5秒停止 #M117 5 Seconds! M118 5 Seconds! G4 P3000 #3秒停止 #M117 Stepper Z! READY GO! M118 Stepper Z! READY GO! G4 P2000 #2秒停止 STEPPER_BUZZ STEPPER=stepper_z M400 #動作完了まで待機 #M117 Stepper Z1 Buzz Cycle in 10 Seconds M118 Stepper Z1 Buzz Cycle in 10 Seconds G4 P5000 #5秒停止 #M117 5 Seconds! M118 5 Seconds! G4 P3000 #3秒停止 #M117 Stepper Z1! READY GO! M118 Stepper Z1! READY GO! G4 P2000 #2秒停止 STEPPER_BUZZ STEPPER=stepper_z1 M400 #動作完了まで待機 #M117 Stepper Z2 Buzz Cycle in 10 Seconds M118 Stepper Z2 Buzz Cycle in 10 Seconds G4 P5000 #5秒停止 #M117 5 Seconds! M118 5 Seconds! G4 P3000 #3秒停止 #M117 Stepper Z2! READY GO! M118 Stepper Z2! READY GO! G4 P2000 #2秒停止 STEPPER_BUZZ STEPPER=stepper_z2 M400 #M117 CYCLE COMPLETE! M118 CYCLE COMPLETE! G4 P6000 #M117
macros/test_speed.cfg
このマクロは、高品質なプリントのためのチューニングガイドとして世界的に有名な Ellis’ Print Tuning Guide に掲載されている「スピードテスト用マクロ」を基にしています。
cfgファイルのダウンロード
紹介したcfgファイルはこちらからダウンロードできます。