Hello. I just configured generic_cartesian on a tridex and am having an issue with homing the dual_carriage. T0 (stepper x) homes and then nothing happens for T1 (dual_carriage u). Please let me know if you have any ideas what I did wrong.
Unfortunately, it is not possible to help without logs. Please post the full unmodified log of your attempt.
klippy.log.zip (2.1 MB)
For issues please open a thread in General Discussion with all requested information.
This is the error I am getting âNo trigger on u after full movementâ
Does the extruder move in the correct direction?
T0 does but T1 doesnât move at all when homing. I did a stepper_buzz on T1 and itâs moving in the positive direction. Found that I had to add quotes now for the space to do a stepper buzz. STEPPER_BUZZ STEPPER=stepper" "u
[gcode_macro IDEX_HOME_X]
gcode =
{% set dcvars = printer["gcode_macro DC_VARS"] %}
{% set prev_z_offset = printer.gcode_move.homing_origin.z|round(3)|float %}
{% set bed_center = (printer.configfile.config.stepper_x.position_min + printer.configfile.config.dual_carriage.position_max)|float / 2|float %}
{% if printer.toolhead.extruder == "extruder1" %}
SET_DUAL_CARRIAGE CARRIAGE=0
ACTIVATE_EXTRUDER EXTRUDER=extruder
{% set prev_z_offset = (prev_z_offset - dcvars.offset_z)|round(3) %}
{% endif %}
G28 X0
T0
SET_GCODE_OFFSET X=0 Y=0 Z={prev_z_offset} MOVE=1
So you home with G28 X0
Switch over to T0
- again -
But you do no further homing on T1
BTW: There is no need to add a 0
to the direction (like X0
) when using G28.
BTW: Why so many empty lines?
#####################################################################
# IDEX Home X Routine
#####################################################################
[gcode_macro IDEX_HOME_X]
gcode:
{% set dcvars = printer["gcode_macro DC_VARS"] %}
{% set prev_z_offset = printer.gcode_move.homing_origin.z|round(3)|float %}
{% set bed_center = (printer.configfile.config.stepper_x.position_min + printer.configfile.config.dual_carriage.position_max)|float / 2|float %}
{% if printer.toolhead.extruder == "extruder1" %}
SET_DUAL_CARRIAGE CARRIAGE=0
ACTIVATE_EXTRUDER EXTRUDER=extruder
{% set prev_z_offset = (prev_z_offset - dcvars.offset_z)|round(3) %}
{% endif %}
# Stealthburner LED Section ##
#STATUS_HOMING #
#SET_DUAL_CARRIAGE CARRIAGE=1 #
#STATUS_HOMING #
#SET_DUAL_CARRIAGE CARRIAGE=0 #
# End LED Section ############
G28 X0
#SET_DUAL_CARRIAGE CARRIAGE=1
#ACTIVATE_EXTRUDER EXTRUDER=extruder1
# Stealthburner LED Section ##
#STATUS_READY #
#SET_DUAL_CARRIAGE CARRIAGE=0 #
#STATUS_READY #
#SET_DUAL_CARRIAGE CARRIAGE=1 #
# End LED Section ############
T0 # Switch to T0
SET_GCODE_OFFSET X=0 Y=0 Z={prev_z_offset} MOVE=1 #set the previous z_offset
Looks like the spaces are from #commented items. I actually removed macros.cfg temporarily to see if they were causing the issue. I was getting an error from idex_home_x since stepper_x doesnât work anymore. âprinter.configfile.config.stepper_x.position_minâ How would I reference this item now?
I see that youâve got quite a custom setup here:
Git version: 'v0.13.0-79-gcc6736c3e-dirty'
Untracked files: klippy/extras/auto_speed.py, klippy/extras/bed_thermal_adjust.py, klippy/extras/gcode_shell_command.py, klippy/extras/manual_rail.py, klippy/extras/multi_fan.py, klippy/extras/rounded_path.py, klippy/extras/tool.py, klippy/extras/tool_probe.py, klippy/extras/tool_probe_endstop.py, klippy/extras/toolchanger.py, (+2 files)
Alas, these modifications could very well conflict with the latest Klipper changes. At least, there are no guarantees that they donât. As such, unfortunately there is no reasonable way to debug the issue. Youâd need to make a fresh clean install of Klipper without modifications and reproduce the problem there.
FWIW, I tested generic_cartesian
kinematics on my cartesian printer with dual_carriage, and it seems to be working fine, also the hybrid kinematics was tested previously by other community members and it was working fine, however it is possible that some latest changes broke it. But the only way to debug it is to test the clean Klipper installation.
For this, you can reference them as printer.configfile.config['carriage x'].position_min
or, alternatively, though not 100% functionally equivalent, as printer.toolhead.axis_minimum.x
(and similarly, printer.toolhead.axis_maximum.x
), also note that for generic_cartesian
the limits are updated correctly when switching the carriages, which isnât the case for cartesian
and hybrid_corexy
kinematics.
Also, an alternative (but still requiring quotes) is
STEPPER_BUZZ STEPPER='stepper u'
I am running a Tridex Awd and had to modify Hybrid CoreXY to have the extra steppers. When I was testing the new generic_cartesian setup I did a soft recovery of klipper and everything was current. Also disabled the extra steppers and macros. I am sure I messed up something with the printer.cfg.
#[include auto_speed.cfg]
[include bigtreetech_mmb_v1-1.cfg]
[include bigtreetech_ebb42_cpap.cfg]
[include bigtreetech_ebb42_T0.cfg]
[include bigtreetech_ebb42_T1.cfg]
##[include filament_macros.cfg]
#[include homing_override_for_idex.cfg]
#[include idex_mode.cfg]
#[include macros.cfg]
[include mainsail.cfg]
##[include fan_control.cfg]
[include menu.cfg]
[include shaketune.cfg]
##[include stealthburner_leds.cfg]
[include test_speed.cfg]
# Enable object exclusion
[exclude_object]
# Enable arcs support
[gcode_arcs]
resolution: 0.1
[force_move]
enable_force_move:true
[mcu]
canbus_uuid: 83ddae4429e2
#serial: /dev/serial/by-id/usb-Klipper_stm32h723xx_2E0036001751313338343730-if00
#restart_method: command
[mcu EBBCan0]
canbus_uuid: 47cdcdb6cc93
#canbus_uuid: e5f9e894655b
[mcu EBBCan1]
#canbus_uuid: 47cdcdb6cc93
canbus_uuid: e5f9e894655b
[printer]
kinematics: generic_cartesian #hybrid_corexy
max_velocity: 500 #300
max_accel: 7500 # 3000 Max 4000
max_z_velocity: 15
max_z_accel: 350 #30
square_corner_velocity: 5.0
#max_accel_to_decel: 10000
#need to be on Klipper Pull Request #5311 to use Input Shaper
[input_shaper] # Leave empty for Tridex
#shaper_freq_x: 50.0
#shaper_type_x: mzv
#shaper_freq_dc: 50.0
#shaper_type_dc: mzv
#shaper_freq_y: 58.0
#shaper_type_y: mzv
[resonance_tester]
accel_chip: adxl345 EBBCan0
accel_per_hz: 100 #75
probe_points:
150,150,20
########################################
# Probe
########################################
[probe]
# Inductive Probe - Connected to Z MAX
# This probe is not used for Z height, only Quad Gantry Leveling
# Connected to Probe Pins
# If your probe is NO instead of NC, change pin to !PA3
pin: ^EBBCan0: PB9
#z_offset: -0.55 #4.70 PLA / 4.80 ABS / 4.95 TPU Lower Number=Farther
x_offset: 0
y_offset: 0
speed: 10 #5
samples: 3
sample_retract_dist: 3.0
samples_tolerance: 0.1 #0.006
samples_result: median
samples_tolerance_retries: 3 #5
activate_gcode:
{% set PROBE_TEMP = 150 %}
{% set MAX_TEMP = PROBE_TEMP + 5 %}
{% set ACTUAL_TEMP = printer.extruder.temperature %}
{% set TARGET_TEMP = printer.extruder.target %}
{% if TARGET_TEMP > PROBE_TEMP %}
{ action_respond_info('Extruder temperature target of %.1fC is too high, lowering to %.1fC' % (TARGET_TEMP, PROBE_TEMP)) }
M109 S{ PROBE_TEMP }
{% else %}
# Temperature target is already low enough, but nozzle may still be too hot.
{% if ACTUAL_TEMP > MAX_TEMP %}
{ action_respond_info('Extruder temperature %.1fC is still too high, waiting until below %.1fC' % (ACTUAL_TEMP, MAX_TEMP)) }
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={ MAX_TEMP }
{% endif %}
{% endif %}
[include calibrate_offsets.cfg]
########################################
# Carriages
########################################
[carriage x]
endstop_pin: EBBCan0: PB8
position_min: -24
position_endstop: -24
position_max: 263
homing_retract_dist: 5
homing_speed: 5 #100 #Max 100
second_homing_speed: 10
homing_positive_dir: false
[dual_carriage u]
primary_carriage: x #axis: x
#safe_distance: 0
endstop_pin: EBBCan1: PB8
position_min: 40
position_endstop: 328.5 #328.5 T1 +Left/-Right
position_max: 328.5 #328.5
homing_retract_dist: 5
homing_speed: 5 #100 #Max 100
second_homing_speed: 10
homing_positive_dir: true
[carriage y]
endstop_pin: ^PF1
position_min: 0 #40
position_endstop: 354
position_max: 354
homing_retract_dist: 5
homing_speed: 5 #100
second_homing_speed: 10
[extra_carriage y1]
primary_carriage: y
endstop_pin: ^PF0
[carriage z]
endstop_pin: probe:z_virtual_endstop #^PC15
position_min: -2.5 #3
position_max: 230
homing_retract_dist: 3
homing_speed: 8 #Max 10
second_homing_speed: 3
[gcode_macro PARK_extruder]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=x
G90
G1 X0
[gcode_macro T0]
gcode:
PARK_{printer.toolhead.extruder}
SET_SERVO SERVO=my_servo angle=100
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=x
[gcode_macro PARK_extruder1]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=u
G90
G1 X300
[gcode_macro T1]
gcode:
PARK_{printer.toolhead.extruder}
SET_SERVO SERVO=my_servo angle=50
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=u
########################################
# Y Steppers
########################################
# S1 (Y-Right)
[stepper y] #stepper_y
carriages: y
step_pin: PC14
dir_pin: !PC13
enable_pin: !PE6
microsteps: 64
rotation_distance: 40
full_steps_per_rotation: 200 #set to 400 for 0.9 degree stepper
#endstop_pin: ^PF1
#position_endstop: 354
#position_min: 0 #40
#position_max: 354
#homing_speed: 100
#second_homing_speed: 10
#homing_retract_dist: 5
[tmc5160 stepper y]
cs_pin: PD6
interpolate: false
spi_software_sclk_pin: PC6
spi_software_mosi_pin: PC8
spi_software_miso_pin: PC7
run_current: 1.3 #2.5amp max
sense_resistor: 0.022
stealthchop_threshold: 999999
## sensorless homing, plug in jumper on M1-DIAG
#diag1_pin: PC15
# S2 (Y-Left)
[stepper y1] #stepper_y1
carriages: y1
step_pin: PE5
dir_pin: PE4
enable_pin: !PE3
microsteps: 64
rotation_distance: 40
full_steps_per_rotation: 200 #set to 400 for 0.9 degree stepper
#endstop_pin: ^PF0
[tmc5160 stepper y1]
cs_pin: PD5
interpolate: false
spi_software_sclk_pin: PC6
spi_software_mosi_pin: PC8
spi_software_miso_pin: PC7
run_current: 1.3 #2.5amp max
sense_resistor: 0.022
stealthchop_threshold: 999999
## sensorless homing, plug in jumper on M2-DIAG
#diag1_pin: PF0
# S5 (T0-Left Back)
[stepper x] #stepper_x
carriages: x-y
step_pin: PG9
dir_pin: PG10
enable_pin: !PG13
microsteps: 64
rotation_distance: 40
full_steps_per_rotation: 200 #set to 400 for 0.9 degree stepper
#endstop_pin: EBBCan0: PB8
#position_endstop: -24
#position_min: -24
#position_max: 263
#homing_speed: 100 #Max 100
#second_homing_speed: 10
#homing_retract_dist: 5
#homing_positive_dir: false
[tmc5160 stepper x]
cs_pin: PD2
interpolate: false
spi_software_sclk_pin: PC6
spi_software_mosi_pin: PC8
spi_software_miso_pin: PC7
run_current: 1.10 #2amp max
sense_resistor: 0.075
stealthchop_threshold: 999999
### S6 (T0-Left Front)
#[stepper_x1] #stepper_x1
#step_pin: PG11
#dir_pin: PD7
#enable_pin: !PG12
#microsteps: 64
#rotation_distance: 40
#[tmc5160 stepper_x1]
#cs_pin: PA15
#interpolate: false
#spi_software_sclk_pin: PC6
#spi_software_mosi_pin: PC8
#spi_software_miso_pin: PC7
#run_current: 1.10 #2amp max
#sense_resistor: 0.075
#stealthchop_threshold: 999999
# S7 (T1-Right Back)
[stepper dual_carriage] #dual_carriage
carriages: u+y1 #axis: x
step_pin: PB4
dir_pin: PB3
enable_pin: !PB5
microsteps: 64
rotation_distance: 40
full_steps_per_rotation: 200 #set to 400 for 0.9 degree stepper
#endstop_pin: EBBCan1: PB8
#position_endstop: 328.5 #328.5 T1 +Left/-Right
#position_min: 40
#position_max: 328.5 #328.5
#homing_speed: 100 #Max 100
#second_homing_speed: 10
#homing_retract_dist: 5
#homing_positive_dir: true
[tmc5160 stepper dual_carriage]
cs_pin: PA9
interpolate: false
spi_software_sclk_pin: PC6
spi_software_mosi_pin: PC8
spi_software_miso_pin: PC7
run_current: 1.10 #2amp max
sense_resistor: 0.075
stealthchop_threshold: 999999
## S8 (T1-Right Front)
#[dual_carriage1]
#step_pin: PG15
#dir_pin: PB6
#enable_pin: !PG14
#microsteps: 64
#rotation_distance: 40
#[tmc5160 dual_carriage1]
#cs_pin: PA10
#spi_software_sclk_pin: PC6
#spi_software_mosi_pin: PC8
#spi_software_miso_pin: PC7
#run_current: 1.10 #2amp max
#sense_resistor: 0.075
#stealthchop_threshold: 999999
########################################
# Extruder PID - in printer.cfg so save_config works properly
########################################
[extruder]
##--------------------------------------------------------------------
## PID control extruder, tune this
#control: pid
#pid_Kp: 26.952
#pid_Ki: 1.321
#pid_Kd: 137.458
##--------------------------------------------------------------------
[extruder1]
##--------------------------------------------------------------------
## PID control extruder1, tune this
#control: pid
#pid_Kp: 26.952
#pid_Ki: 1.321
#pid_Kd: 137.458
##--------------------------------------------------------------------
########################################
# Bed
########################################
[heater_bed]
heater_pin: PF5
sensor_pin: PB0 # TB
sensor_type: Generic 3950
## Adjust max_power so it doesn't exceed the SSR rating. The Omron G3NA-210B-DC5 SSR is rated at 4 amps without a heatsink.
## The formula is "4 / (Wattage_of_bed_heater / Mains_voltage) = max_power"
## If max_power is greater than 1.0, use 1.0
max_power: 0.95
min_temp: 0
max_temp: 120
pwm_cycle_time: 0.016 # Adjust cycle time to avoid flashing lights: 0.016 60Hz mains, 0.02 50Hz mains
#control: pid
#pid_kp: 58.437
#pid_ki: 2.347
#pid_kd: 363.769
########################################
# Fan Control
########################################
[controller_fan Electronics_Bay_Single_Fan]
pin: PA6
tachometer_pin: PC1
kick_start_time: 0.5
heater: heater_bed
max_power: 1.0
[temperature_fan Electronics_Bay_Dual_Fans]
# Electronics fan PWM
pin: PE8
tachometer_pin: PG0
hardware_pwm: false
control: watermark
sensor_type: temperature_host
max_delta: 10
min_temp: 0
max_temp: 100
target_temp: 45
max_power: 1.0
shutdown_speed: 1.0
########################################
# Display
########################################
[display]
lcd_type: uc1701
cs_pin: EXP1_3
a0_pin: EXP1_4
rst_pin: EXP1_5
encoder_pins: ^EXP2_5, ^EXP2_3
click_pin: ^!EXP1_2
contrast: 63
spi_software_miso_pin: EXP2_1
spi_software_mosi_pin: EXP2_6
spi_software_sclk_pin: EXP2_2
display_group: _multiextruder_16x4
[output_pin beeper]
pin: EXP1_1
[neopixel btt_mini12864]
pin: EXP1_6
chain_count: 3
initial_RED: 1.0
initial_GREEN: 0.0
initial_BLUE: 0.0
color_order: GRB
## Set RGB values on boot up for each Neopixel.
## Index 1 = display, Index 2 and 3 = Knob
#[delayed_gcode setdisplayneopixel]
#initial_duration: 1
#gcode:
# SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0
# SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
# SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3
########################################
# EXP1 / EXP2 (display) pins
########################################
[board_pins]
aliases:
# FPC header, Aliases EXP1 & EXP2 for mini12864
EXP1_1=PG5, EXP1_2=PG4,
EXP1_3=PG3, EXP1_4=PG2,
EXP1_5=PD15, EXP1_6=PD14,
EXP1_7=PD13, EXP1_8=PD12,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PE13, EXP2_2=PE12,
EXP2_3=PG8, EXP2_4=PE11,
EXP2_5=PG7, EXP2_6=PE14,
EXP2_7=PG6, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=<NC>
########################################
# Sensors and Extras
########################################
[output_pin Caselight_Left]
pin: PF9
pwm: True
cycle_time: 0.01
[output_pin Caselight_Right]
pin: PF8
pwm: True
cycle_time: 0.01
[gcode_macro Caselight_Off]
gcode:
SET_PIN PIN=Caselight_Left VALUE=0
SET_PIN PIN=Caselight_Right VALUE=0
[gcode_macro Caselight_Min]
gcode:
SET_PIN PIN=Caselight_Left VALUE=.1
SET_PIN PIN=Caselight_Right VALUE=.1
[gcode_macro Caselight_Max]
gcode:
SET_PIN PIN=Caselight_Left VALUE=0.5
SET_PIN PIN=Caselight_Right VALUE=0.5
[temperature_sensor BTT_Kraken]
sensor_type: temperature_mcu
min_temp: 0
max_temp: 100
[temperature_sensor Raspberry_Pi]
sensor_type: temperature_host
gcode_id: D
min_temp: 10
max_temp: 100
[temperature_sensor T0]
sensor_type: temperature_mcu
sensor_mcu: EBBCan0
min_temp: 0
max_temp: 100
[temperature_sensor T1]
sensor_type: temperature_mcu
sensor_mcu: EBBCan1
min_temp: 0
max_temp: 100
########################################
# Basic Macros
########################################
[gcode_macro Deactivate_Steppers]
gcode:
SET_STEPPER_ENABLE STEPPER=stepper_x ENABLE=0
SET_STEPPER_ENABLE STEPPER=stepper_x1 ENABLE=0
SET_STEPPER_ENABLE STEPPER=dual_carriage ENABLE=0
SET_STEPPER_ENABLE STEPPER=dual_carriage1 ENABLE=0
[gcode_macro Activate_Steppers_T0]
gcode:
SET_STEPPER_ENABLE STEPPER=stepper_x ENABLE=1
SET_STEPPER_ENABLE STEPPER=stepper_x1 ENABLE=1
[gcode_macro Activate_Steppers_T1]
gcode:
SET_STEPPER_ENABLE STEPPER=dual_carriage ENABLE=1
SET_STEPPER_ENABLE STEPPER=dual_carriage1 ENABLE=1
[idle_timeout]
timeout: 3600
gcode:
TURN_OFF_HEATERS
M18
M107
SET_PIN PIN=Caselight_Left VALUE=0
SET_PIN PIN=Caselight_Right VALUE=0
[z_tilt]
## Use Z_TILT_ADJUST to level the bed left to right.
## z_positions: Location of toolhead
z_positions: # 350 Frame
-50,18
175,398
400,18
points: # 300 Bed
40,42 #40,5
150,292 #150,245
260,42 #260,5
speed: 150
horizontal_move_z: 10
retries: 5
retry_tolerance: 0.01
[bed_mesh]
speed: 300
horizontal_move_z: 10
mesh_min: 30, 30
mesh_max: 260, 260
fade_start: 0.6
fade_end: 10.0
probe_count: 5,5
algorithm: bicubic
#relative_reference_index: 12
[gcode_macro UNSAFE_LOWER_BED_BEFORE_HOMING]
description: Lower the bed 10mm without homing
gcode:
G90 #Use absolute coordinates
SET_KINEMATIC_POSITION Z=0
G0 Z10 F600
M84
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 35.816
#*# pid_ki = 5.427
#*# pid_kd = 59.096
#*#
#*# [extruder1]
#*# control = pid
#*# pid_kp = 34.498
#*# pid_ki = 4.339
#*# pid_kd = 68.563
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 66.170
#*# pid_ki = 3.244
#*# pid_kd = 337.466
#*#
#*# [probe]
#*# z_offset = -0.830
What I posted is an excerpt from your log (the latest entry for that matter). So whatever you did to recover the Klipper installation with git
, apparently did not help. You should get to the state where git reports a clean Klipper state. The easiest way to do that would be to reinstall Klipper installation via Kiauh. And the configs you posted do not have very obvious issues at least that would prevent dual_carriage homing.
Thank you. I will give that a try.
Did you have any luck configuring the kinematics?
I have not had a chance to install a clean version of klipper yet but did experiment with the print.cfg file. Originally if I homed just the x-axis, stepper x (T0) was homing but stepper u (T1) wasnât even activating and would just time out. Y-axis homing worked fine. If I change stepper u carriages from u+y to just u, x-axis would home fine but y-axis T1 would drift to the left. N1_3D has a similar setup to mine. Curious to see what they did.
Hi everyone,
Iâm getting the following error when starting Klipper:
Option âmicrostepsâ in section âdual_carriage vâ must be specified
The strange thing is: I have the microsteps
option defined in the [dual_carriage v]
section of my config, so this error shouldnât happen.
Iâve double-checked the spelling and indentation, and everything seems correct. Could this be a parsing issue or a problem with how Klipper loads that section?
Has anyone else experienced this?
printer 6WD_IDEX_TEST.cfg (13.1 KB)
A lot of the config is from you @mandela64
Thanks in advance!
Best regards,
Nico / N1_3D_Print