Solved CoreXY homing
-
I was having a lot of issues with my homing with my CoreXY printer depending on the relative position of the tool head at the start of the home all. The home X, Y and Z individually worked like a charm but the Home all was always a surprise.
As a good Duet user I go to the documentation, cleaned my home all g file and started from scratch testing it line by line.
I will discuss it in more detail on other post but here is something I noted that is an Issue with the current example.
Sometimes after the homeall my printer did not register the G90 and was kept at the relative movement!
I did need to add a M400 after the last homing movement before the G90 and the Z homing sequence.
Another issue is that sometimes when homing the Y it moved a few mm the X so it is a good practice to go back a few mm both X and Y after the coarse homing to avoid it.
G91 ; relative mode G1 H1 X-240 Y-240 F3000 ; coarse home X or Y G1 H1 X-240 ; coarse home X G1 H1 Y-240 ; coarse home Y G1 X4 Y4 F600 ; move away from the endstops G1 H1 X-10 ; fine home X G1 X4 Y4 F600 ; move away from the endstops ; this last one avoids the "residual" X movement that can or not happens when stalling at Y homing. G1 H1 Y-20 ; fine home Y M400 ; wait for movement to finish G90 ; Absolute positioning ; Z homing section follows ...
-
@brunofporto X should not move at all when homing Y and Y should not move at all when homing X. You have to be able to move X and Y independently or you won't be able to make quality prints. I suspect a mechanical problem such as a belt layout error. Can you post photos of the XY stage?
You're not using steel core belts, are you?
-
Can you post your config.g?
What firmware version are you using? -
@mrehorstdmd No misaligment for sure. It clearly move X when it fails to detect the first stall "jump".
As it move diagonally on the first move it is only using one motor. When it fails to detect the first stall it forces a few steps into Y0 making X move by consequence. If I set it to be more sensitive it does not happens at all BUT it also detect false hits.
No steel core belts also. The prints are well calibrated along 5 to 150mm on both axis and without skeweness and right angle reference parts are perpendicular.
But the homing issue is not the topic of this thread.
The topic here is that the printer fails to detect G90 after the fine home Y (line 9 of the example above) and it caused issues. A m400 failsafe that.
I will open another post to discuss the homeall issues As soon as I have time to describe it and organize to post I put the link here.
-
@mrehorstdmd yes. But the topic here is fail to detect the G90 command after the last movement. It was solved by a M400.
I using latest firmware release on a Duet 2 Ethernet
; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"forkLIFT" ; set printer name M669 K1 ; select CoreXY mode ; Network M551 P"notyourbusiness" ; set password M552 P0.0.0.0 S1 ; enable network and uses defined IP M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S0 ; physical drive 2 goes backwards M569 P3 S0 ; physical drive 3 goes backwards M569 P4 S0 ; physical drive 4 goes backwards M584 X0 Y1 Z2:4 E3 ; set drive mapping M350 E256 I0 ; configure microstepping without interpolation M350 X16 Y16 Z16:16 I1 ; configure microstepping with interpolation M92 X80.18 Y79.71 Z398.98 E6640 ; set steps per mm M201 X700 Y700 Z100 E3000 ; Set accelerations (mm/s^2) M201.1 X300 Y300 Z20 ; Set reduced acceleration for special move types M203 X15000 Y15000 Z1400 E3600 ; Set maximum speeds (mm/min) ;M204 P500 T2500 ; Set printing and travel accelerations M566 X720 Y720 Z300 E3600 ; Set maximum instantaneous speed changes (mm/min) M906 X1800 Y1800 Z1500 E1500 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 X298 Y300 Z290 S0 ; set axis maxima ; Endstops M574 X1 S3 ; configure sensorless endstop for low end on X M574 Y1 S3 ; configure sensorless endstop for low end on Y M574 Z1 S2 ; configure Z-probe endstop for low end on Z M915 X Y R0 F0 S4 ; Configuring Sensorless Homing ; Z-Probe M950 S0 C"exp.heater7" ; create servo/gpio 0 on heater 7 pin on expansion connector M558 P5 C"^zprobe.in" H5 F120 T12000 ; set Z probe type to switch and the dive height + speeds G31 P600 X0 Y-41.9 Z0.321 ; set Z probe trigger value, offset and trigger height M557 X20:278 Y0:258 P5:5 ; Define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 0 as thermistor on pin bedtemp 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 S150 ; set temperature limit for heater 0 to 150C M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp 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 M143 H1 S285 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off ; Tools M563 P0 S"Basic" D0 H1 F0 ; 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 ; Custom settings are not defined ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue T0 ; select first tool M703 ; reload loaded filament settings M912 P0 S-23.6 ; MCU temperature Calibration M501 ; load saved parameters from non-volatile memory
-
This post is deleted! -
@brunofporto said in CoreXY homing:
But the topic here is fail to detect the G90 command after the last movement. It was solved by a M400.
Assuming that you are using one of our standard stable builds of RRF, I can't see any way that RRF could fail to execute a G90 command. Please check using M115 or M122 exactly which firmware version you are using and tell us.
The M400 is redundant because the H1 parameter in the G1 move that precedes it causes RRF to wait for motion to stop already.
This sequence from your homing file:
G1 H1 X-240 Y-240 F3000 ; coarse home X or Y
G1 H1 X-240 ; coarse home X
G1 H1 Y-240 ; coarse home Yis unlikely to work when using stall detection endstops. The reason is that the first line movement will terminate when either motor stalls, but that motor will likely remain stalled so the next two lines may be skipped.
With stall detection endstops you should do the following instead:
- Home one of the axes
- Back that axis off a little (to un-stall whichever motor stalled)
- Home the other axis
- Back that axis off a little
There is no point in doing a "fine hope" step, because stall detection endstops are not very accurate and don't work at low speeds.
-
@dc42 said in CoreXY homing:
Assuming that you are using one of our standard stable builds of RRF, I can't see any way that RRF could fail to execute a G90 command. Please check using M115 or M122 exactly which firmware version you are using and tell us.
FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 3.4.5 ELECTRONICS: Duet Ethernet 1.02 or later FIRMWARE_DATE: 2022-11-30 19:36:12
Thanks, I will remove the "fine hope" part
-
-