Heavily modified Zonestar P802QR2 with the mcu BTT SKR V1.4 BTT display D_TFT24_V1.1.27 and the BTT CB1 controller. Everything works, It does two color prints.
Please note the users have to adapt their own values by running auto-PIDs, probe calibration and bed mesh leveling. The values for my particular printing are shown only for illustration.
Config file:
[include mainsail.cfg]
#[include zonestar_macros.cfg]
# host MCU service is preinstalled and ready to use with:
#[mcu CB1]
[mcu]
# spare board
#serial: /dev/serial/by-id/usb-Klipper_lpc1769_1DE0FF13618445AF63BED65CC42000F5-if00
#printer board
serial: /dev/serial/by-id/usb-Klipper_lpc1769_1A50011848104AAFB4CC675DC32000F5-if00
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[stepper_x]
step_pin: P2.2
dir_pin: !P2.6
enable_pin: !P2.1
microsteps: 16
rotation_distance: 40
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
position_max: 220
#position_min: -10
homing_speed: 20
homing_retract_dist: 0
[tmc2209 stepper_x]
uart_pin: P1.10
run_current: 0.860
diag_pin: P1.29 # Set to MCU pin connected to TMC DIAG pin
driver_SGTHRS: 43 # 255 is most sensitive value, 0 is least sensitive
[stepper_y]
step_pin: P0.19
dir_pin: !P0.20
enable_pin: !P2.8
microsteps: 16
rotation_distance: 40
endstop_pin: tmc2209_stepper_y:virtual_endstop
position_endstop: 0
position_max: 220
#position_min: -10
homing_speed: 30
homing_retract_dist: 0
[tmc2209 stepper_y]
uart_pin: P1.9
run_current: 0.860
diag_pin: P1.28 # Set to MCU pin connected to TMC DIAG pin
driver_SGTHRS: 30 # 255 is most sensitive value, 0 is least sensitive
[stepper_z]
step_pin: P0.22
dir_pin: P2.11
enable_pin: !P0.21
microsteps: 16
rotation_distance: 8
#endstop_pin: !P1.27
endstop_pin: probe: z_virtual_endstop
#position_endstop: 0.0
position_max: 240
position_min: -4
[tmc2209 stepper_z]
uart_pin: P1.8
run_current: 0.860
diag_pin: !P1.27 # Set to MCU pin connected to TMC DIAG pin
[probe]
pin: ^!P1.0
speed: 3.5
#z_offset: 7.8
#x_offset: 40
lift_speed: 4
samples: 4
sample_retract_dist:15
# The safe_z_home section modifies the default G28 behavior
[safe_z_home]
home_xy_position: 110, 110
speed: 50
z_hop: 15
z_hop_speed: 5
# bed_mesh config section
[bed_mesh]
speed: 100
mesh_min: 0, 20
mesh_max: 170, 200
probe_count: 4, 4
horizontal_move_z: 15
fade_start: 1
fade_end: 10
fade_target: 0
[extruder]
step_pin: P2.13
dir_pin: !P0.11
enable_pin: !P2.12
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: P2.7
sensor_type: Generic 3950
sensor_pin: P0.24
min_temp: 0
max_temp: 260
pressure_advance: 0.80
[tmc2209 extruder]
uart_pin: P1.4
run_current: 0.860
stealthchop_threshold: 0
# Script to change back to the main extruder
[gcode_macro T0]
gcode:
SET_GCODE_OFFSET Z=0 MOVE=1 # Adjust z-height
SET_GCODE_OFFSET X=0 # Clear X offset
ACTIVATE_EXTRUDER EXTRUDER=extruder
[extruder1]
step_pin: P1.15
dir_pin: !P1.14
enable_pin: !P1.16
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: P2.4
sensor_type: Generic 3950
sensor_pin: P0.23
min_temp: 0
max_temp: 260
pressure_advance: 0.80
[tmc2209 extruder1]
uart_pin: P1.1
run_current: 0.860
stealthchop_threshold: 0
# Script to activate second extruder
[gcode_macro T1]
gcode:
SET_GCODE_OFFSET Z=0 MOVE=1 # Adjust z-height
SET_GCODE_OFFSET X=-18 # Account for different X offset
ACTIVATE_EXTRUDER EXTRUDER=extruder1
[heater_bed]
heater_pin: P2.5
sensor_type: Generic 3950
sensor_pin: P0.25
min_temp: 0
max_temp: 130
[fan]
pin: P2.3
[printer]
kinematics: cartesian
max_velocity: 400
max_accel: 500
max_z_velocity: 10
max_z_accel: 100
# An arc will be split into segments. Each segment's length will
# equal the resolution in mm set above. Lower values will produce a
# finer arc, but also more work for your machine. Arcs smaller than
# the configured value will become straight lines. The default is 1mm
[gcode_arcs]
resolution: 1.0
#recover_velocity: 50.
# When capture/restore is enabled, the speed at which to return to
# the captured position (in mm/s). Default is 50.0 mm/s.
[pause_resume]
########################################
# EXP1 / EXP2 (display) pins
########################################
[board_pins]
aliases:
# EXP1 header
EXP1_1=P1.30, EXP1_3=P1.18, EXP1_5=P1.20, EXP1_7=P1.22, EXP1_9=<GND>,
EXP1_2=P0.28, EXP1_4=P1.19, EXP1_6=P1.21, EXP1_8=P1.23, EXP1_10=<5V>,
# EXP2 header
EXP2_1=P0.17, EXP2_3=P3.26, EXP2_5=P3.25, EXP2_7=P1.31, EXP2_9=<GND>,
EXP2_2=P0.15, EXP2_4=P0.16, EXP2_6=P0.18, EXP2_8=<RST>, EXP2_10=<NC>
# Pins EXP2_1, EXP2_6, EXP2_2 are also MISO, MOSI, SCK of bus "ssp0"
# See the sample-lcd.cfg file for definitions of common LCD displays.
# allow object selections
[exclude_object]
######################################################################
# "RepRapDiscount 128x64 Full Graphic Smart Controller" type displays
######################################################################
[display]
spi_software_miso_pin: EXP1_6
spi_software_mosi_pin: EXP1_3
spi_software_sclk_pin: EXP1_5
en_pin: EXP1_4
encoder_pins: ^EXP2_3, ^EXP2_5
click_pin: ^!EXP1_2
lcd_type: emulated_st7920
# add a second temperature to the nozzle field
[display_template _heater_temperature]
param_heater_name: "extruder"
param_heater1_name: "extruder1"
text:
{% if param_heater_name in printer %}
{% set heater = printer[param_heater_name] %}
{% set heater1 = printer[param_heater1_name] %}
# Show glyph
{% if param_heater_name == "heater_bed" %}
{% if heater.target %}
{% set frame = (printer.toolhead.estimated_print_time|int % 2) + 1 %}
~bed_heat{frame}~
{% else %}
~bed~
{% endif %}
{% else %}
~extruder~
{% endif %}
# Show temperature
{% if param_heater_name != "heater_bed" %}
{ "%3.0f %3.0f" % (heater.temperature, heater1.temperature,) }
{% else %}
{ "%3.0f" % (heater.temperature,) }
{% endif %}
# Optionally show target
{% if heater.target and (heater.temperature - heater.target)|abs > 2 %}
~right_arrow~
{ "%0.0f" % (heater.target,) }
{% endif %}
# ~degrees~
{% endif %}
#lcd_type: st7920
#cs_pin: EXP1_4
#sclk_pin: EXP1_5
#sid_pin: EXP1_3
#encoder_pins: ^EXP2_3, ^EXP2_5
#click_pin: ^!EXP1_2
#kill_pin: ^!EXP2_8
[output_pin beeper]
pin: EXP1_1
# have bed screws
[bed_screws]
screw1: 10, 10
screw2: 10, 210
screw3: 210, 210
screw4: 210, 10
[menu __main __leveling]
type: list
enable: {not printer.idle_timeout.state == "Printing"}
name: Leveling
[menu __main __leveling preheatBed]
type: command
name: Hotbed > 60c
gcode:
M140 S60
[menu __main __leveling bedMesh]
type: command
name: Generate Mesh
gcode:
G28
BED_MESH_CALIBRATE
[menu __main __leveling __BedScrews]
type: list
name: Bed Screws
[menu __main __leveling __BedScrews Home]
type: command
name: Home
gcode:
G28
[menu __main __leveling __BedScrews Start]
type: command
name: Start
gcode:
BED_SCREWS_ADJUST
[menu __main __leveling __BedScrews Accept]
type: command
name: Accept
gcode:
ACCEPT
[menu __main __leveling __BedScrews Adjust]
type: command
name: Adjust
gcode:
ADJUSTED
[menu __main __leveling __BedScrews Abort]
type: command
name: Abort
gcode:
ABORT
G1 Z10
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 26.517
#*# pid_ki = 1.437
#*# pid_kd = 122.308
#*#
#*# [extruder1]
#*# control = pid
#*# pid_kp = 23.496
#*# pid_ki = 0.973
#*# pid_kd = 141.857
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 69.461
#*# pid_ki = 1.279
#*# pid_kd = 942.930
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# -0.156875, -0.025625, -0.062500, -0.281875
#*# -0.143125, -0.031250, -0.028125, -0.108750
#*# -0.014375, -0.002500, -0.038125, -0.158125
#*# 0.031875, 0.047500, 0.056875, -0.050625
#*# x_count = 4
#*# y_count = 4
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 0.0
#*# max_x = 169.98
#*# min_y = 20.0
#*# max_y = 200.0
#*#
#*# [probe]
#*# z_offset = 7.995
#*#
#*# [bed_mesh default1]
#*# version = 1
#*# points =
#*# -0.475625, -0.385000, -0.411250, -0.584375
#*# -0.472500, -0.343125, -0.066875, -0.381875
#*# -0.341250, -0.315000, -0.286875, -0.488125
#*# -0.268750, -0.251250, -0.276250, -0.388125
#*# x_count = 4
#*# y_count = 4
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 0.0
#*# max_x = 169.98
#*# min_y = 20.0
#*# max_y = 200.0
#*#
#*# [bed_mesh default2]
#*# version = 1
#*# points =
#*# -0.086250, -0.031250, -0.077500, -0.304375
#*# -0.128750, -0.008125, -0.029375, -0.135625
#*# 0.003125, 0.001875, -0.022500, -0.158750
#*# 0.011875, 0.045000, 0.031875, -0.077500
#*# x_count = 4
#*# y_count = 4
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 0.0
#*# max_x = 169.98
#*# min_y = 20.0
#*# max_y = 200.0