Random direction on homing Core XY
-
I’ve had my Duet 2 Ethernet board for quite a while now and for the first couple of years it pretty much worked flawlessly. However, I would say around the time firmware version 3.X came out I started to have the oddest issue that has become so problematic that I have stopped using my 3D printer all together for the past couple of years now. I miss my printer and I have some things I would like to print right now. SO, over the weekend I started over, disconnected all the wiring, grabbed the latest firmware and web interface, used the config tool and tried a complete redo in the hopes it would solve the problem I never did solve before.
What happens is a coin flip as to which way the Axis want to home, I believe it could have been X or Y in the past, but after my redo I have only seen it with the X axis so far. If I issue the test commands in the console for Core XY testing, I get diagonal movement in the correct direction. I believe it only changes Axis home direction after a power cycle. I.E. if it homes correctly I can print a bunch of things without issue, however with absolutely nothing being changed the next time I turn it on a week, two later it will decide on it’s own that the X Axis homes in the other direction. I can’t make sense of what it is doing, it’s Zero’s and One’s and I’m not changing the Zero’s or One’s, it’s very frustrating. Turning it off and on again may correct the issue, or it may be 10 power cycles later and it still homes wrong and I have to just give up.
Can anyone please make sense of this or point me at ANY possible causes. I’m at a loss at this point. Below is a sample of the current config that works, but after all the redo work did the random swap of direction on me after a few reboots yesterday.
Thank You
The printer is a 300x300x300 Custom made Linear Rail version of a Hyper EVO
; Configuration file for RepRapFirmware on Duet 2 Ethernet ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sun Sep 15 2024 12:30:08 GMT-0700 (Pacific Daylight Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"DueTpek" ; set hostname ; Network M552 P192.168.200.85 S1 ; configure Ethernet adapter M553 P255.255.255.0 ; set netmask M554 P192.168.200.1 ; set gateway M586 P0 S1 ; configure HTTP ; Smart Drivers M569 P0 S0 D2 ; driver 0 goes backwards (X axis) M569 P1 S0 D2 ; driver 1 goes backwards (Y axis) M569 P2 S0 D2 ; driver 2 goes backwards (Z axis) M569 P3 S1 D2 ; driver 3 goes forwards (extruder 0) M569 P4 S0 D2 ; driver 4 goes backwards (Z axis) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S300 ; set motor current idle timeout ; Axes M584 X0 Y1 Z2:4 ; set axis mapping M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation M906 X1100 Y1200 Z1200 ; set axis driver currents M92 X160 Y160 Z400 ; configure steps per mm M208 X0:300 Y0:300 Z0:300 ; set minimum and maximum axis limits M566 X1800 Y1800 Z24 ; set maximum instantaneous speed changes (mm/min) M203 X12000 Y12000 Z360 ; set maximum speeds (mm/min) M201 X800 Y800 Z40 ; set accelerations (mm/s^2) ; Extruders M584 E3 ; set extruder mapping M350 E16 I1 ; configure microstepping with interpolation M906 E800 ; set extruder driver currents M92 E578 ; configure steps per mm M566 E120 ; set maximum instantaneous speed changes (mm/min) M203 E3600 ; set maximum speeds (mm/min) M201 E250 ; set accelerations (mm/s^2) ; Kinematics M669 K1 ; configure CoreXY kinematics ; Probes M558 K0 P8 C"zprobe.in" H5 F120 T6000 ; configure unfiltered digital probe via slot #0 G31 P500 X36 Y63 Z0.7 ; set Z probe trigger value, offset and trigger height ; Endstops M574 X1 P"xstop" S1 ; configure X axis endstop M574 Y1 P"ystop" S1 ; configure Y axis endstop M574 Z1 S2 ; configure Z axis endstop ; Mesh Bed Compensation M557 X15:215 Y15:195 S20:20 ; define grid for mesh bed compensation ; Sensors M308 S1 P"spi.cs1" Y"thermocouple-max31856" ; configure sensor 0 as thermocouple via CS pin spi.cs1 M308 S0 P"spi.cs2" Y"thermocouple-max31856" ; configure sensor 1 as thermocouple via CS pin spi.cs2 ; Heaters M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S100 ; set temperature limit for heater 0 to 100C M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Heated beds ;M140 P1 H0 ; configure heated bed #1 ; Tools M563 P0 D0 H1 ; create tool #0 M568 P0 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ; Miscellaneous T0 ; select first tool
-
@almstsobur can you post your homing files too please
-
@jay_s_uk said in Random direction on homing Core XY:
@almstsobur can you post your homing files too please
That would make sense, Thank You. I will post the other ones in a moment, but below is my Homeall, which I think is pretty much exclusively all I use and for sure the button that causes the coin flip and dart down the hall if it goes the wrong way. I must say though, this file looks a lot more complicated and different that the "old" homeall I used before my start-over this weekend. This SD card and these files though did definitely do the coin flip on me though. Thank You
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sun Sep 15 2024 12:30:08 GMT-0700 (Pacific Daylight Time) ; increase Z G91 ; relative positioning G1 H2 Z5 F6000 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home XY var xTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm var yTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm G91 ; relative positioning G1 H1 X{-var.xTravel} Y{-var.yTravel} F600 ; coarse home G1 H1 X{-var.xTravel} F600 ; coarse home in the -X direction G1 H1 Y{-var.yTravel} F600 ; coarse home in the -Y direction G1 X5 Y5 F6000 ; move back 5mm G1 H1 X{-var.xTravel} Y{-var.yTravel} F300 ; fine home G1 H1 X{-var.xTravel} F300 ; fine home in the -X direction G1 H1 Y{-var.yTravel} F300 ; fine home in the -Y direction G90 ; absolute positioning ; home Z var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G1 X{var.xCenter} Y{var.yCenter} F6000 ; go to bed centre G30 ; probe the bed
-
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sun Sep 15 2024 12:30:08 GMT-0700 (Pacific Daylight Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home X G91 ; relative positioning var maxTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm G1 H1 X{-var.maxTravel} F600 ; coarse home in the -X direction G1 X5 F6000 ; move back 5mm G1 H1 X{-var.maxTravel} F300 ; fine home in the -X direction G90 ; absolute positioning ; decrease Z again G91 ; relative positioning G1 H2 Z-5 F6000 ; move Z relative to current position G90 ; absolute positioning
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sun Sep 15 2024 12:30:08 GMT-0700 (Pacific Daylight Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home Y G91 ; relative positioning var maxTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm G1 H1 Y{-var.maxTravel} F600 ; coarse home in the -Y direction G1 Y5 F6000 ; move back 5mm G1 H1 Y{-var.maxTravel} F300 ; fine home in the -Y direction G90 ; absolute positioning ; decrease Z again G91 ; relative positioning G1 H2 Z-5 F6000 ; move Z relative to current position G90 ; absolute positioning
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sun Sep 15 2024 12:30:08 GMT-0700 (Pacific Daylight Time) ; increase Z G91 ; relative positioning G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed G90 ; absolute positioning ; home Z var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0] var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1] G1 X{var.xCenter} Y{var.yCenter} F6000 ; go to bed centre G30 ; probe the bed
-
What is the rated max current for your motors?
If you turn off the printer and disconnect the motor wiring, are you able to move the print head freely and smoothly around? -
@Phaedrux said in Random direction on homing Core XY:
What is the rated max current for your motors?
If you turn off the printer and disconnect the motor wiring, are you able to move the print head freely and smoothly around?Not sure if it matters but I'm running 24V completely. Below are the specs Amazon says my X and Y motors are. It takes a little nudge to get the first movement out of the print head, but moves smooth and free once it's moving. So a bit more force to get them out of Park and Into Drive.
45Ncm(63.7oz.in) holding torque
NEMA 17 bipolar 1.65"x1.65"x1.57" 4-wire
1.8 deg. step angle(200 steps/rev)
Rated current 2A & resistance 1.1ohmsThank You
-
@almstsobur if you use G91 followed by G1 H2 Xnn or G1 H2 Ynn moves, is the motor movement direction also random? If so then that probably means that one of the corresponding motor phases is not being driven.
-
@dc42 I think the issue is finally solved! I may have had multiple issues, because I'm still not sure why this would affect homing direction, but you were correct, I had a wire on one of my two z axis motors that was hanging by a thread, sometimes not hanging at all. Because my issue appeared to be X/Y related I never took a real close look at the Z axis, I finally caught an error message about motor/driver 2 and phase, I realized the Z axis gets triggered to lift the head off the bed even for X/Y calibration.
Thanks for the help, everyone, the fact no one saw any issues with my firmware config and the wise men thought motor issues, that changed my target and enabled me to spot this unknown bad wire.
Thanks again!
-
-