🖇️

TRONXY CXY-V6-191121 (STM32F446 based) メインボードをKlipper化する

2022/10/01に公開

TRONXYのSTM32F446ベースの新型メインボードは比較的簡易な手順でファームウェアの書き換えができます。本稿ではKlipperファームウェアをビルドして書き込みます。

1. Klipperファームウェアのビルド

最新のKlipperをインストールしたディレクトリで、make menuconfigで設定した後、makeでビルドを行います。

1.1. make menuconfig

設定を行います。

make menuconfig

項目
Architecture STM32
model STM32F446
Bootloader offset 64KiB
interface Serial on USART1 PA10/PA9

1.2. make

ビルドします。

make

生成されたout/klipper.binがプリンタへ書き込むKlipperファームウェアです。

2. Klipperファームウェアをプリンタへ書き込む

2.1. SDカードへの書き込み

SDカードにUPDATEディレクトリを作成し、そこへKlipperファームウェアをコピーします。このとき機種によりファイル名を変更する必要があります。

機種 ファイル名
X5SA(2022) UPDATE/FMW_X5~1.BIN
XY-3 SE(2022) UPDATE/FMW_XY~2.BIN

2.2. SDカードからプリンタファームウェアを書き換え

SDカードをプリンタのスロットへ挿入し、電源を入れます。ブート画面の左下に書き換え状況が表示されます。

X5SAの書き込みのようす XY-3 SEの書き込みのようす

書き換えが終了しても画面が変化しませんが、それで正常です。

3. Klipperの設定

printer.cfgを設定します。環境に合わせて変更してください。
参考までに、本稿のX5SAとXY-3 SEの設定例を3.1.~3.2.に示します。

3.1. X5SAの設定例

本稿のX5SA(VzBot化改造済、BMGエクストルーダ使用)では次のように設定しています。

[mcu]
serial: /dev/serial/by-path/platform-3f980000.usb-usb-0:1.4:1.0-port0
restart_method: command

[pause_resume]

[display_status]

[virtual_sdcard]
path: ~/gcode_files

[printer]
kinematics: corexy
max_velocity: 1000
max_accel: 10000
max_z_velocity: 25
max_z_accel: 30

[stepper_x]
step_pin: PE5
dir_pin: !PF1
enable_pin: !PF0
microsteps: 32
rotation_distance: 40
endstop_pin: !PC15
position_endstop: -1
position_min: -1
position_max: 330
homing_speed: 50
homing_retract_dist: 10
second_homing_speed: 10.0

[stepper_y]
step_pin: PF9
dir_pin: !PF3
enable_pin: !PF5
microsteps: 32
rotation_distance: 40
endstop_pin: !PC14
position_endstop: 0
position_max: 280
homing_retract_dist: 10
homing_speed: 50.0
second_homing_speed: 10.0

[stepper_z]
step_pin: PA6
dir_pin: PF15
enable_pin: !PA5
microsteps: 32
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 400
position_min: -2

[extruder]
step_pin: PB1
dir_pin: PF13
enable_pin: !PF14
microsteps: 32
rotation_distance: 22.409 # BMG Clone
gear_ratio: 50:17 # BMG Clone
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PG7
sensor_type: ATC Semitec 104GT-2
sensor_pin: PC3
control: pid
pid_kp: 21.111
pid_ki: 0.991
pid_kd: 112.413
min_temp: -257
max_temp: 300
max_extrude_only_distance: 350
min_extrude_temp: -257
max_extrude_cross_section: 50.0

[heater_bed]
heater_pin: PE2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC2
min_temp: -257
max_temp: 130
control: pid
pid_kp: 73.625
pid_ki: 1.337
pid_kd: 1013.258

[heater_fan hotend_fan]
heater: extruder
heater_temp: 50.0
pin: PG9

[fan]
pin: PG0

[controller_fan drivers_fan]
pin: PD7

[filament_switch_sensor filament_sensor]
pause_on_runout: True
runout_gcode:
  M25
switch_pin: !PE6

[output_pin beeper]
pin: PA8

[safe_z_home]
home_xy_position: 177, 94.5
speed: 50
z_hop: 10
z_hop_speed: 5

[bed_screws]
screw1: 5, 5
screw2: 165, 5
screw3: 325, 5
screw4: 5, 325
screw5: 165, 325
screw6: 325, 325

[bed_mesh]
speed: 120
probe_count: 5, 5
horizontal_move_z: 10
algorithm: lagrange
mesh_min : 60, 72
mesh_max : 300, 300
mesh_pps: 0
fade_start: 1
fade_end: 10
fade_target: 0

[probe]
x_offset: -12
y_offset: 70.5
pin: !PE3
speed: 30
z_offset: 4.7

[gcode_macro G29]
gcode:
    G28
    BED_MESH_CALIBRATE

3.2. XY-3 SE 3-in-1の設定例

本稿のXY-3 SE 3-in-1では次のように設定しています。

[include mainsail.cfg]

[mcu]
serial: /dev/serial/by-path/platform-70090000.xusb-usb-0:2.3:1.0-port0
restart_method: command

[virtual_sdcard]
path: ~/printer_3_data/gcodes

[printer]
kinematics: cartesian
max_velocity: 150
max_accel: 500
max_accel_to_decel: 250
max_z_velocity: 25
max_z_accel: 100

[stepper_x]
step_pin: PE5
dir_pin: PF1
enable_pin: !PF0
microsteps: 32
rotation_distance: 40
endstop_pin: !PC15
position_endstop: -1
position_min: -1
position_max: 255
homing_speed: 50
homing_retract_dist: 10
second_homing_speed: 10.0

[stepper_y]
step_pin: PF9
dir_pin: !PF3
enable_pin: !PF5
microsteps: 32
rotation_distance: 40
endstop_pin: !PC14
position_endstop: 0
position_max: 255
homing_retract_dist: 10
homing_speed: 50.0
second_homing_speed: 10.0

[stepper_z]
step_pin: PA6
dir_pin: !PF15
enable_pin: !PA5
microsteps: 32
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 260
position_min: -1

[extruder]
step_pin: PB1
dir_pin: !PF13
enable_pin: !PF14
microsteps: 32
rotation_distance: 7.64
nozzle_diameter: 0.400
filament_diameter: 1.750
max_extrude_only_distance: 400
max_extrude_cross_section: 55.0
pressure_advance: 0.4
heater_pin: PG7
sensor_type: ATC Semitec 104GT-2
sensor_pin: PC3
min_temp: -10
max_temp: 275
min_extrude_temp: 0 # 170
control = pid
pid_kp = 24.0
pid_ki = 1.360
pid_kd = 106.0

[gcode_macro T0]
gcode:
  SAVE_GCODE_STATE NAME=T0_state
  {% if printer.toolhead.extruder != "extruder" %}
    {% set E = params.E|default(80)|float %}
    G91
    G1 E-{E} F3000
    ACTIVATE_EXTRUDER EXTRUDER=extruder
    G1 E{E} F3000
    G90
  {% endif %}
  RESTORE_GCODE_STATE  NAME=T0_state

[extruder1]
step_pin: PD12
dir_pin: !PG4
enable_pin: !PG5
microsteps: 32
rotation_distance: 7.64
nozzle_diameter: 0.400
filament_diameter: 1.750
max_extrude_only_distance: 400
max_extrude_cross_section: 55.0
pressure_advance: 0.4
shared_heater: extruder

[gcode_macro T1]
gcode:
  SAVE_GCODE_STATE NAME=T1_state
  {% if printer.toolhead.extruder != "extruder1" %}
    {% set E = params.E|default(80)|float %}
    G91
    G1 E-{E} F3000
    ACTIVATE_EXTRUDER EXTRUDER=extruder1
    G1 E{E} F3000
    G90
  {% endif %}
  RESTORE_GCODE_STATE  NAME=T1_state

[heater_bed]
heater_pin: PE2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC2
min_temp: -10
max_temp: 110
control = pid
pid_kp = 70.0
pid_ki = 1.123
pid_kd = 1088.0

[heater_fan hotend_fan]
heater: extruder
heater_temp: 50.0
pin: PG9

[fan]
pin: PG0

[controller_fan drivers_fan]
pin: PD7

[temperature_sensor stm32f446]
sensor_type: temperature_mcu 

[filament_switch_sensor filament_sensor]
pause_on_runout: True
runout_gcode:
  M25
switch_pin: !PE6

[output_pin beeper]
pin: PA8

[safe_z_home]
home_xy_position: 155.3,119.5
speed: 50
z_hop: 10
z_hop_speed: 5

[bed_screws]
screw1: 25, 25
screw2: 230, 25
screw3: 25, 230
screw4: 230, 230

[bed_mesh]
speed: 120
probe_count: 5,5
horizontal_move_z: 5
algorithm: lagrange
mesh_min : 35,35
mesh_max : 220,220
mesh_pps: 0
fade_start: 1
fade_end: 10
fade_target: 0

[probe]
x_offset: -28.3
y_offset: 7.5
pin: !PE3
speed: 30
z_offset: 1.25

[gcode_macro G29]
gcode:
    G28
    BED_MESH_CALIBRATE

発展情報

ステッパードライバTMC2225をシリアル接続したい場合は、TRONXY CXY-V6-191121 (STM32F446 based) メインボードでTMC2225をシリアル制御するページを参照してください。

まとめ

TRONXYのSTM32F446ベースの新型メインボードは、Klipperをビルドして、SDカードへ入れて、電源を再投入するだけでKlipperファームウェアを書き込むことができます。

GitHubで編集を提案

Discussion