IDEX config has me <scratching head>

Basic Information:

Printer Model: Tridex - voron trident mixed to IDEX
MCU / Printerboard: Octopus 1.1
Host / SBC raspberry Pi 4
klippy.log
klippy (2).log (3.8 MB)

Describe your issue:

Three Issues and I’m not sure which one to fix first:
One:
After homing X, I can move the primary (left tool head) +12 mm (moves right) X: from -50 to -38, then I get “Move out of range”
What is creating the limit so it can’t move further?

Two:
–enter: SET_DUAL_CARRIAGE CARRIAGE=1
I can then move the secondary tool head +200 (or more) X: 22 to +222 but the head moves left. Will it should move left, but the coordinates are reversed, huh? Shouldn’t cords be same as the primary tool head?

Three:
When homing Y: Gantry and primary tool head moves straight back as expected, but secondary tool head moves to left and will crash into primary tool head?
I’ve checked both X axis pully’s and they are the same, steppers are same brand/model

Well those are my issues, pick the one you can answer and thanks!

  • there are a lot of redundant logs, so maybe clear the logs out so only the most recent run is sent.
  • in the most recent run, I see "dict object' has no attribute 't1_offset_x'" error in logs in the delayed_gcode _load_offsets_from_disk section. That should be addressed if it’s still a problem, I couldn’r find a [save_variables] section there (though earlier configs had that section) which is necessaryto enable the functionality and specify the filename.
  • Item 3: [stepper_x] homes at position_endstop: -50, but [dual_carriage] homes in some copies of the section to position_endstop=22. It’s more likely that it should be position_endstop=300 or close to that so that it will home to the right.
  • also item 3: in [dual_carriage], you can set safe_distance: 50 or whatever the correct extruder to extruder clearence should be.

The logs are not redundant. They are chronological.
The most recent one is at the end. Never touch a klippy.log that is used for analysis.

sorry…allow me to restate. we have to pick a config to troubleshoot. as each of these runs has different configs, we need to know which is relevant. there are lots of differently configured [dual_carriage] sections that are redundant, only one can be in use, for example.

Supporters know: The last section is the recent one. We need the others to compare. Also, if not necessary, Klipper itself would delete it.

They are all in one printer.cfg section.

A klippy.log looks like this:

config - section
runtime - section
config - section
runtime - section
config - section
runtime - section
config - section
runtime - section

Okay, I get it: my suggestion runs afoul of some established best practices here.

I will say in this case some of the issue seems to be a lot of changes over time, as there are many macros that attempt to save variables but no longer a [save_variables] section in the most recent config.

This runs afoul of another troubleshooting principle of limiting changes as to understand when there’s been an improvement what caused it.

Sorry for the confusion: I’ve been attempting to fix it myself and that result showed up in the log. I will paste my current printer.cfg.
Some things I’ve noted that may or may not be relevant.

  1. the original build uses a Y end stop on the left and right and included in [stepper_y] and [stepper_y1]. I have just one Y end stop and tried to use the one pin in both, then remarked it out of [stepper_y1] - there was no change.

  2. The original build places [stepper_y] on the right and [stepper_y1] on the left, my build is the opposite: Primary on left, secondary on right. During homing X on my build, left homes first, then right. I understand this homing is as intended.

EDIT: the remark hash is formatting the lines as headings, I will correct once I find the fix.

#printer.cfg
[include mainsail.cfg]
[include Toolhead_LEDs.cfg] #originally: stealthburner_leds.cfg
[include toolheads.cfg]
[include macros_basic.cfg] #moved from printer.cfg
[include macros_IDEX.cfg] #originally: IDEX_mode.cfg
[include macros_klicky.cfg] #originally: klicky-probe-for_VT.cfg

[mcu]

Obtain definition by “ls -l /dev/serial/by-id/” then unplug to verify

serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_2A0035000951313133353932-if00
restart_method: command #rpi_usb #command

[virtual_sdcard]
path: /home/macmc/printer_data/gcodes
on_error_gcode: CANCEL_PRINT

[printer]
kinematics: hybrid_corexy
max_velocity: 300
max_accel: 4000
max_z_velocity: 25
max_z_accel: 350

[idle_timeout]
timeout: 1800

[resonance_tester]
accel_chip: adxl345 tool0
probe_points:
125, 125, 50 # 150, 150, 50 for 300 Trident

[probe]
pin: tool0:PB8
x_offset: 0
y_offset: 26.0
z_offset = 2.0
speed: 1
lift_speed: 10
samples:5
samples_result: median
sample_retract_dist: 2.0
samples_tolerance: 0.01
samples_tolerance_retries: 5

X Steppers

[stepper_x]

controls toolhead 0 (T0)

motor0/driver0: left toolhead -right X stepper

enable_pin: !PF14
step_pin: PF13
dir_pin: PF12
microsteps: 32
rotation_distance: 40
endstop_pin: ^tool0:PB9
position_min: -50
position_endstop: -50
position_max: 225
homing_speed: 30 #60
homing_retract_dist: 5
second_homing_speed: 3

[tmc2209 stepper_x]
uart_pin: PC4
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

[dual_carriage] #(stepper_x1)

controls toolhead 1 (T1)

motor1/driver1: right toolhead -left X stepper

axis: x
safe_distance: 60 #Set to width of your tool head
enable_pin: !PF15
step_pin: PG0
dir_pin: !PG1
microsteps: 32
rotation_distance: 40
endstop_pin: ^tool1:PB9
position_min: 25
position_endstop: 25
position_max: 300
homing_speed: 30 #60
homing_retract_dist: 5
second_homing_speed: 3

[tmc2209 dual_carriage]
uart_pin: PD11
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

Y Steppers

[stepper_y]

motor 2_1, driver 2, left Y stepper

enable_pin: !PG5
step_pin: PF11
dir_pin: PG3
microsteps: 32
rotation_distance: 40
endstop_pin: PG9
position_endstop: 250
position_max: 250
######position_min: -5
homing_speed: 30 #60
second_homing_speed: 5
homing_retract_dist: 5

[tmc2209 stepper_y]
uart_pin: PC6
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

[stepper_y1]

motor3/driver3; right Y stepper

enable_pin: !PA0
step_pin: PG4
dir_pin: !PC1
microsteps: 32
rotation_distance: 40
######endstop_pin: PG9 #is this required???

[tmc2209 stepper_y1]
uart_pin: PC7
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

Z Steppers

[stepper_z]
#motor4/driver4; front left Z
enable_pin: !PG2
step_pin: PF9
dir_pin: PF10
microsteps: 32
rotation_distance: 4
endstop_pin: probe:z_virtual_endstop
position_max: 250
position_min: -3
homing_speed: 3 # 10 is recommended maximum. 3 is gentle on klicky and switchs last longer
second_homing_speed: 2
homing_retract_speed: 10
homing_retract_dist: 2

[tmc2209 stepper_z]
uart_pin: PF2
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

[stepper_z1]
#motor5/driver5; rear Z
enable_pin: !PF1
step_pin: PC13
dir_pin: !PF0
microsteps: 32
rotation_distance: 4

[tmc2209 stepper_z1]
uart_pin: PE4
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

[stepper_z2]
#motor6/driver6; front right Z
enable_pin: !PD4
step_pin: PE2
dir_pin: !PE3
microsteps: 32
rotation_distance: 4

[tmc2209 stepper_z2]
uart_pin: PE1
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

Extruder PID - in printer.cfg so save_config works properly

[extruder]

PID control extruder, tune this

control: pid
pid_Kp: 36.965
pid_Ki: 4.650
pid_Kd: 73.468

[extruder1]

PID control extruder1, tune this

control: pid
pid_Kp: 35.650
pid_Ki: 4.850
pid_Kd: 65.508

Bed

[heater_bed]
heater_pin: PA3
sensor_type: Generic 3950
sensor_pin: PF3
max_power: 0.80
min_temp: 0
max_temp: 120
pwm_cycle_time: 0.016
control: pid
pid_kp: 14.810
pid_ki: 0.914
pid_kd: 59.983

Sensors and Extras

[controller_fan BayFan0]
#FAN 0 - electronics bay
pin: PA8
max_power: 0.70
kick_start_time: 0.5
stepper: stepper_z, stepper_x, stepper_y

[controller_fan controller_fan1]

pin: PD15

max_power: 0.5

kick_start_time: 0.5

heater: heater_bed

[temperature_sensor raspberry_pi]
sensor_type: temperature_host
gcode_id: D
min_temp: 0
max_temp: 100

#[temperature_sensor chamber]
#sensor_type: Generic 3950
#sensor_pin: head1:PA1
#pullup_resistor: 2200
#min_temp: -100
#max_temp: 100
#gcode_id: C

Display & Lighting

mini12864 LCD Display

[display]
lcd_type: uc1701
cs_pin: PE9
a0_pin: PE10
rst_pin: PE12
encoder_pins: ^PB2, ^PB1
click_pin: ^!PE7
contrast: 63
spi_software_miso_pin: PA6
spi_software_mosi_pin: PA7
spi_software_sclk_pin: PA5

control Neopixel RGB in mini12864 display

[neopixel btt_mini12864]
pin: PE13
chain_count: 3
initial_RED: 0.9
initial_GREEN: 0.0
initial_BLUE: 0.0
color_order: RGB

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=0.0431 GREEN=0.9216 BLUE=0.0196 INDEX=3 TRANSMIT=1
SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
SET_LED LED=btt_mini12864 RED=0 GREEN=0 BLUE=1 INDEX=1

can you confirm that you want the right toolhead to home at X = 25? otherwise position_endstop in the [dual_carriage] section should be 300 or close to it.

That is the result of me following example configs, I will try your suggestion and report back shortly. thanks

Result: Left tool head homes normally to left, but right tool head also homes left (instead of right). I could try to reverse dir(?)

along with changing to “position_endstop: 300” I reversed dir on right tool head and…
Woot! Woot!
Homing X works!
and Homing Y works!
left tool head moves more than 12mm!
thanks much for the help!
I’ll need to set klicky to home Z, but I should try to get some sleep first.

1 Like

For future posts:

When you upload code (snippets), either do it as file or use the Preformatted Text feature of the forum editor.

Format

They look much better, are more easy to read and things like spaces don’t get lost.

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.