Sapphire plus with klipper, bltouch setup

Sapphire plus
Simplify 3D
Revo hotted with orbiter extruder and no other major upgrades.

I have a Sapphire Plus with dual z end stops. I have being trying to install a bltouch clone (touch3d) on it and ran into an issue. The robin nano v1.2 that came in my printer only has 4 end stop pinouts (x, y, zmin and zmax). I need all 4 to run my x, y, and z on this printer because z is a bit sloppy when the machine is powered off requiring both endstops . I was wondering if it would be possible to use one of the filament runout ports (PA4 or PE6 on the robin) to connect the control pin from the bltouch to?

I am running Klipper and have tried both PA4 and PE6 but been unable to get it to work. All I get is a red light flashing on the bltouch and a massage “Failed to verify BLTouch probe is raised; retrying.”

Below is my Klipper config file.

# This file contains common pin mappings for MKS Robin Nano (v1.2.004)
# boards. To use this config, the firmware should be compiled for the
# STM32F103. When running "make menuconfig", enable "extra low-level
# configuration setup", select the 28KiB bootloader, disable "USB for
# communication", and select USART3 for the "Serial Port".

# Note that the "make flash" command does not work with MKS Robin
# boards. After running "make", run the following command:
#   ./scripts/update_mks_robin.py out/klipper.bin out/Robin_nano.bin
# Copy the file out/Robin_nano.bin to an SD card and then restart the
# printer with that SD card.

# See docs/Config_Reference.md for a description of parameters.

[stepper_x]
step_pin: PE3
dir_pin: !PE2
enable_pin: !PE4
microsteps: 16
rotation_distance: 40
endstop_pin: !PA15
position_endstop: 0
position_max: 300
homing_speed: 50

[stepper_y]
step_pin: PE0
dir_pin: !PB9
enable_pin: !PE1
microsteps: 16
rotation_distance: 40
endstop_pin: !PA12
position_endstop: 290
position_max: 290
homing_speed: 50

[stepper_z]
step_pin: PB5
dir_pin: PB4
enable_pin: !PB8
microsteps: 16
rotation_distance: 8
endstop_pin: !PA11
#position_endstop: 0.5
position_max: 340

[stepper_z1]
step_pin: PA6
dir_pin: PA1
enable_pin: !PA3
microsteps: 16
rotation_distance: 8
endstop_pin: !PC4

[bltouch]                               # enable for BLTouch
sensor_pin: ^PA8
control_pin: PA4
z_offset: 3

[extruder]
step_pin: PD6
dir_pin: PD3
enable_pin: !PB3
microsteps: 16
rotation_distance: 4.623
#rotation_distance: 4.637
# rotation_distance: 4.5714
full_steps_per_rotation: 200
#run_current: 0.35 or .85
#hold_current: 0.1
max_extrude_only_distance: 500
max_extrude_only_velocity: 60
max_extrude_only_accel: 600
nozzle_diameter: 0.400
pressure_advance: 0.065
pressure_advance_smooth_time: 0.02 
# *to be calibrated
filament_diameter: 1.750
heater_pin: PC3
sensor_type: ATC Semitec 104GT-2
sensor_pin: PC1
control: pid
pid_Kp: 14.669
pid_Ki: 0.572
pid_Kd: 94.068
min_temp: 0
max_temp: 285

#[extruder1]
#step_pin: PA6
#dir_pin: !PA1
#enable_pin: !PA3
#heater_pin: PB0
#sensor_pin: PC2
#...

[heater_bed]
heater_pin: PA0
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC0
#control: pid
#pid_Kp: 325.10
#pid_Ki: 63.35
#pid_Kd: 417.10
min_temp: 0
max_temp: 130

[fan]
pin: PB1

[mcu]
serial: /dev/ttyUSB0
restart_method: command

[printer]
kinematics: corexy
max_velocity: 150
max_accel: 2000
max_z_velocity: 25
max_z_accel: 100

[input_shaper]
shaper_freq_x: 47.34
shaper_freq_y: 62.11
shaper_type: mzv

[virtual_sdcard]
path: ~/gcode_files

[display_status]
[pause_resume]

[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
  {% set X = params.X|default(5)|float %}
  {% set Y = params.Y|default(5)|float %}
  {% set Z = params.Z|default(10)|float %}
  {% set E = params.Z|default(0.5)|float %}
#default_parameter_X: 5    #edit to your park position
#default_parameter_Y: 5    #edit to your park position
#default_parameter_Z: 10     #edit to your park position
#default_parameter_E: 0.5      #edit to your retract length

#gcode:
#  {% set E = params.E|default(3) %}

gcode:
    SAVE_GCODE_STATE NAME=PAUSE_state
    BASE_PAUSE
    G91
    G1 E-{E} F2100
    G1 Z{Z}
    G90
    G1 X{X} Y{Y} F6000

[gcode_macro RESUME]
rename_existing: BASE_RESUME
  {% set E = params.Z|default(0.5)|float %}
#default_parameter_E: 0.5      #edit to your retract length
gcode:
    G91
    G1 E{E} F2100
    G90
    RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
    BASE_RESUME

[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
    TURN_OFF_HEATERS
    CLEAR_PAUSE
    SDCARD_RESET_FILE
    BASE_CANCEL_PRINT

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 0.000
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 69.392
#*# pid_ki = 0.537
#*# pid_kd = 2240.479

why using z end stops if you plan to use bltouch? you can specify in your klipper firmware 2 independent z motors with z alignment during bed levelling, I’m not running my Sapphire plus with bltouch as it’s belt synchronised but sure there must be klipper config file on github or elsewhere for your use case, if you won’t find anything there’s discord server for Sapphire printers, I’m sure someone will help you to set it up

Hello Kukynas,

I was just trying to see if it was possible. Mostly just do to the reliability of end stops over a bed probe. After some research and a lot of trouble shooting I came to the conclusion that my bltouch clone was faulty. I then added a Proximity sensor (SN04-N) and used (safe_z_home) for homing. As for the unwanted tilt in the bed, you are right (Z_Tilt) is the answer.