Corexy homing moves diff direction after first probe

Basic Information:

Printer Model: Axiom20
MCU / Printerboard: BTT M8P v2.0/CB1
klippy.log

Updating an older coreXY printer with BTT M8P v2.0 and a CB1. I’m having an issue with the printer moving in a coreXY fashion. I was having an issue where the printer wanted to move away from my homing switches and I was not able to home to test movement directions.

I was able to enable sensorless homing to fool the controller into allowing me to move the axis correctly to check that the direction is correct.

I tried all of the combinations of alpha beta positions and polarity swaps and I can find one that moves in the correct direction. The issue is now when it homes sensorless or on traditional limit switches, it will touch once and then move - in the other axis. This sets a limit switch not released error.

And to be clear it will move X- to the limit switch and the once touched, it will not back up and instead move Y-. Or Y- and once touched will move X-.

I had compiled a printer.cfg file that had a whole bunch of macros and stuff in it. I skimmed it way back down to as little as possible. This is where I’m able to get it to move attempt to home in the correct X- and Y-, it just won’t rehome.

In other configs I can get it to home, I’m just not able to to get it to move in core xy directions, it always wants to either one way forward and the other diagonally.

When it homes, it showed positive values as the targets. I’m not sure if it’s trying to home positive and I’m trying to get it to home negative. I tried all of the homing directions positive true/false and it would give me errors for that. Set with and without homing retract distance to 0 and without the command.

Why didn’t you attach the klippy.log as requsted?

I typed this up late last night and thought I did attach it. I will go back to the office and add it in.

1 Like

klippy.zip (2.3 MB)
Here Ya go.

It’s not clear to me what you’re trying to achieve. The log has dozens of restarts with numerous errors. In the last restart it appears you have sensorless homing enabled, and a safe_z_home defined which is not the correct way to do sensorless homing. If you want to use sensorless homing, then follow the instructions at this link.. You need to use macros that back the toolhead off of the frame after homing each axis and a homing_override.

If you want to use endstop switches, then you need to delete the diag lines from your tmc configs, and change your endstop_pin for X and Y back to the correct pins.

I have been trying to find the correct placement/orientation of the alpha and beta motors. I could not get them to home in X-/Y- directions. I used sensorless homing on really soft settings to allow me to move the head so I can confirm that everything is moving correctly.

I used a stripped down config to try and eliminate as many variables as possible. On my normal CFG, it will sensorless home and then move Y+ when Y+ is requested and X+ when X+ is commanded. When Y-is commanded it moves X+ and when X- is commanded it moves Y-. If I swap the pins around it will do the same thing just rotated in different directions.

The example configs from Klipper and BTT have almost nothing in them. I don’t know if I’m missing a few settings or if it’s still config or wiring.

Also afaik I did not add any safe z home to either cfg that I have been using. I will check again.

Thank you for looking at my issue.

This “not finding the right combo of directions” usually speaks of swapped motors. Try switching the X and Y motor plugs and see if it works properly then. Ask me how I know…

I have done this a few times. All 8 combinations. When I find one that moves in what I perceive to be the correct X+\Y+, it will not move opposite in the X-/Y- directions.

If you haven’t successfully homed the printer, how do you know this? If you have endstop switches installed, I would strongly recommend ditching sensorless and going through the Klipper checklists to make sure the motors are connected correctly, moving in the correct directions, and that your X and Y endstops are working properly. I would do all of this with no include files or macros so you know exactly what is in your config and what is happening.

Here is a graphic that shows how to determine if the motors are set up properly for a corexy. Before you get there though, you need to get your endstops functioning using the Klipper configuration checks.

When I use the sensors for homing, I will select “Home X”, It will move X- and then once it hits the endstop, it will move Y-. I will then get an error that says X stop still triggered after retract.

I set it to sensorless homing to be able to bypass the homing procedure and be able to move the axis to check for the correct movement directions. Right now, I can move X+ and Y+ but when I select Y- it moves X+ and when I select Y- it moves X+. This corresponds to what happens when it tries to home on the sensors.

Why can I move X+/Y+ but not X-/Y-?

The motor connections are flipped between using triggered homing and sensorless. The problem is if I can get it to move correct in two directions, it wont move in the oppsite.

I tried to attach a video but it is too large. Zipping it doesn’t make it small enough. if you shoot me an IG message, Ill send you the video. at ebturbo. The front of the printer is facing the wall and I am working from the backside where all of the electronics are. X+ is left and Y+ is towards me.

Have you verified your endstops using the procedure at the link I provided? Ignoring the problem and trying to work around it with sensorless homing which is more difficult and complicated to set up is not a good solution. I can’t help you if you don’t go through the proper steps to diagnose the problem.

I did do the homing procedure. When homing X, it will move to X- and then one it hits the end stop, it won’t retract to X+, instead it moves to Y-. Because it didn’t come off the end stop, it throws and error for endstop released after retraction.

When homing Y, it will move to Y- and then one it hits the end stop, it won’t retract to Y+, instead it moves to X-. Because it didn’t come off the end stop, it throws and error for endstop released after retraction.

I have not been able to get it to move in all four directions. it will only move one direction in X and Y. When I hit the opposing directions it keeps moving the same way.

You’re not following what I’m saying. Have you run query_endstops and verified that they’re working?

Yes. I have done that and verified all of the end stops.

Then reboot your printer so you have a fresh log, configure your printer to use the endstops, and post a fresh log showing the problem. Make sure when you do this that you remove the sensorless endstop jumpers from the board.

So homing works fine.

Can you move the print head by using G1 commands?

Try

G1 X0 Y0 F2000
G1 X200 Y100 F2000

Does it move correctly?

@EddyMI3D, Homing does not work. The printer will only move in two directions and not the others. (These directions are depending on how the Alpha/Beta motors are wired.)

Limit switches are in the X-/Y- direction. If I set the motors to move those ways, it will hit the limit switches and then instead of backing up to hit the switch again, it will move in an opposite axis + direction. The printer will then throw a endstop not released after retraction fault.

I went to a sensorless homing feature that tripps automatically just to be able to complete homing to have the ability to move the extruder with the klipper screen. Once that happens, when i try to move the extruder around, it does the same thing, it will move X+/Y+ or X-/Y- and then when I select the opposite direction, it moves the opposite axis.

Here is the video link on YouTube.
This is with the motors wired that they work in the X+/Y+ directions. The front of the printer is facing the wall and I am working from the backside where all of the electronics are. X+ is to the left and Y+ is towards me.

First of all: Homing must work correctly.

There is a feature in the stepper sections:

#homing_positive_dir:
#   If true, homing will cause the stepper to move in a positive
#   direction (away from zero); if false, home towards zero. It is
#   better to use the default than to specify this parameter. The
#   default is true if position_endstop is near position_max and false
#   if near position_min.

If you feel the axes move to the wrong direction for homing, do not invert the stepper direction, but use that feature.

https://www.klipper3d.org/Config_Reference.html#stepper

Here is a new klippy log. It kept showing safe home and I found the code for it in the MicroProbe cfg. I took it out and it still did the same thing.

I moved the motor connectors around until they homed in the negative direction. However, when watching the position requests, the homing direction is always positive. I have tried to confirm that the code should attempt to home in the negative direction but I am not sure.

[stepper_x]
step_pin = !PE6
dir_pin = PE5
enable_pin = !PC14
microsteps = 32
rotation_distance = 32
endstop_pin = PF4
position_endstop = 10
position_min = 0
position_max = 100
homing_speed = 20
homing_retract_dist = 5
homing_positive_dir = false

As much as you guys are saying the homing procedure needs to be done first, I think that there is an issue where the printer will not or is not able to move the motors in the X+ and Y+ directions. This is preventing the extruder from coming off of the endstops.

klippy Mon test 6.log (30.2 KB)

I see tons of issues with your config, but let’s start with the step_pin. They should never be inverted. If you want to reverse the direction of a motor you invert the dir_pin, so please fix that. You also need to remove the diag pins from you config and add pull-ups to the endstop pins.