Zonestar P802QR2 with BTT boards

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

1 Like

Noice!


Side note:

This section is only valid for your printer and the values may very different on other printers. It makes no much sense to include it.

So should I delete it in the post? (it does show the config works)
Thanks :slight_smile:

You may add to your post the users have to adapt their own values by running auto-PIDs, probe calibration and bed mesh leveling

Wilco, done!, danke schön!

1 Like