SOLVED: Homing already homed XY axis fails
-
I'm just guessing but are you reaching axis minimum before the axes stall out?
Check what you have for M208. I bet your stopping at the minimum and then setting that to your new home position.
-
It also seems to me that even if this works, because you're moving at 45 degrees, you will get a motor stall when the print head hits EITHER X or Y limit, with no guarantee at all the you'll have hit the other. So if your print head were at X=150, Y=10, your print head would move back to X=140, Y=0, and the motor would stall, since it cannot move Y any further. If it now thinks that X=0, you're going to have a problem.
-
I deliberately positioned the head at X 150 and Y 30 and started homing. What happens is that Y hits the axis low end earlier but X continues moving to the low end and stops there and homing seems to finish as expected.
Do you think that this behavior is any different in a second homing pass?
-
@rs4race
Currently:
M208 X0 Y0 Z0 S1
M208 X300 Y300 Z410 S0 -
@toskium said in Homing already homed XY axis fails:
G1 S1 X-330 Y-330 F3600 ; move right/back 330mm, stopping at the endstop
Why are you moving both X and Y when you only want to home X?
See https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter#Section_Homing_files if you haven't already.
-
@dc42 TBH I thought I could take a shortcut since it first appeared to be working. I will change the homex and homey.g files so they only home their respective axis and try again. Maybe that is all it takes.
-
@dc42 said in Homing already homed XY axis fails:
G1 S1 X-330 Y-330 F3600 ; move right/back 330mm, stopping at the endstop
When you execute that on a CoreXY machine, it should move the print head until either the X or the Y axis reaches its endstop; then stop. On a Cartesian printer the move will continue until both X and Y have reached the endstops.
-
@dc42 I modified my homex.g and homey.g files so they only home their own axis. However nothing has changed in the outcome. For testing the homex.g looks like this:
;Sensorless Homing XY M564 H0 ; allow movement of axis that have not been homed M400 ; make sure everything has stopped before we make changes M915 X Y S3 F0 R0 H400 ; configure stall detection M913 X40 Y40 ; reduce motor current to 40% to prevent belts slipping G91 ; use relative positioning ;G1 Z5 F6000 S2 ; lift Z relative to current position G1 X30 F4600 ; move away from home G1 S1 X-330 F4600 ; move right/back 330mm, stopping at the endstop G1 X6 ; move away from home M400 ; make sure everything has stopped before we reset the motor currents M913 X100 Y100 ; motor currents back to 100% G90 ; back to absolute positioning G92 X0 ; Set X and Y to 0 M574 X1 Y1 S1 ; define active low microswitches
What I observed is, that the G1 S1 X-330 F4600 is not executed at all. It only does G1 X30 F4600 and the G1 X6 afterwards.
In addition to that, if I do move X and Y at the same time, the first triggered endstop does not terminate the movement at all.
In case it helps, here is my config.g:
; Configuration file for Duet WiFi (firmware version 1.20 or newer) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool on Wed Jul 11 2018 18:31:06 GMT+0200 (W. Europe Daylight Time) ; General preferences G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves M555 P1 ; Set firmware compatibility to look like RepRapFirmare M667 S1 ; Select CoreXY mode ; Network M550 PHypercube Evolution 001 ; Set machine name M552 S1 ; Enable network ;*** Access point is configured manually via M587 M586 P0 S1 ; Enable HTTP M586 P1 S0 ; Disable FTP M586 P2 S0 ; Disable Telnet ; Drives M569 P0 S1 ; Drive 0 goes forwards M569 P1 S1 ; Drive 1 goes forwards M569 P2 S1 ; Drive 2 goes forwards M569 P3 S0 ; Drive 3 goes forwards M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation M92 X160 Y160 Z3200 E2649 ; Set steps per mm M566 X900 Y900 Z12 E40 ; Set maximum instantaneous speed changes (mm/min) M203 X12000 Y12000 Z600 E1800 ; Set maximum speeds (mm/min) M201 X3000 Y3000 Z250 E120 ; Set accelerations (mm/s^2) M906 X1600 Y1600 Z1600 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; Set axis minima M208 X300 Y300 Z410 S0 ; Set axis maxima ; Endstops M574 X1 Y1 S3 ; Set endstops controlled by motor load detection M574 Z1 S2 ; Set endstops controlled by probe ( Z-endstop is Z-probe) ; Z-Probe M558 P8 A3 I1 H3 R1 F480 T6000 G31 P100 X0 Y0 Z0.05 ; Set Z probe trigger value, offset and trigger height ; Heaters M307 H0 B0 S1.00 ; Disable bang-bang mode for the bed heater and set PWM limit M305 P0 T100000 B4138 C0 R4700 ; Default Values Set thermistor + ADC parameters for heater 0 (bed) M143 H0 S150 ; Set temperature limit for heater 0 to 150C (bed) M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1 (hotend) M143 H1 S350 ; Set temperature limit for heater 1 to 350C (hotend) ; Fans M106 P0 S0.3 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on ; Tools M563 P0 D0 H1 ; Define tool 0 G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C ; Automatic saving after power loss is not enabled ; Custom settings M557 X0:300 Y0:300 S30 ; probe from X=15 to 285, Y=15 to 285mm with a mesh spacing of 30mm ; Pressure Advance M572 D0 S0.06 ; Enable use of sys/config-override.g M501
-
Update:
The repeated homing seems to work 99% now, I decreased the the current to the steppers from 1600mA to 1300mA in config.g. I am wondering if this might have been the reason behind the problem all the time.
The steppers I am using are the 0.9° high torque motors from E3D, in case you like to read the datasheet, it can be found here: https://e3d-online.dozuki.com/Item/High_torque_motor
What happens sometimes is that when the steppers get a bit temperature the stall threshold seems to be too low and it triggers early, however immediate homing again works fine, regardless the temperature.
Unfortunately it does not work reliable when I increase the stall threshold by 1. -
@toskium stall detection is a very tricky way to home the printer. Lots of variables and some of them change during operation. A simple switch is far more reliable.
-
@phaedrux It appears so, I was intrigued by the concept and less cables sounded like a nice bonus. But it is rather difficult to set up compared to a switch. It looks like it is working for now, I will mark this as solved, so nobody will invest more time in this.