Problem with core XY homing
-
SO i Converted my cartesian printer to a core XY i followed the wiki : https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter
when i call : G91
G1 H2 X10 F3000 printer goes X+Y+ like it should
when i call: G91
G1 H2 Y10 F3000 printer goes X+ Y- like it shouldIF i write G92 X0Y0 to home , then use the +10 increment everything move like it should
IF i press HOME X , head move hit the switch move away and come back like it should as lonf Y is not already homed.
IF i press Home Y,head move hit the switch move away and come back like it should as long X is not already homed.
Here my problem if one axis is already at HOME it were it doesnt work anymore,i can home X everything is fine trying to home Y after, head move hit the switch than move away and X start moving , there no X coord in the HOME Y, if i home Y first than cal X it does the exact thing on the second pass it will move Y.Basically anytime an axis is already homed and i call the other one on the second pass the axis already homed start moving when it shouldnt
IF i call HOMEALL , well it will hit the switch on the first pass like it should but the second pass will not and will say it homed randomly in the middle of the print space
SO him kinda lost there and cant seem to find what wrong .
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Sun May 03 2020 01:01:37 GMT-0600 (Mountain Daylight Time) ; General preferences M669 K1 G90 ; send absolute coordinates... M83 ; ...but relative extruder moves G4 S4 M550 P"The mean printer" ; set printer name M669 K1 ; select CoreXY mode ; Network M551 P"XXXXXX" ; set password M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP M586 P0 S1 ; enable HTTP M586 P1 S1 ; enable FTP M586 P2 S1 ; disable Telnet ; Drives M569 P0.0 S1 ; physical drive 0.0 goes forwards X M569 P0.1 S1 ; physical drive 0.1 goes forwards double Z M569 P0.2 S0 ; physical drive 0.2 goes forwards Z M569 P0.3 S1 ; physical drive 0.3 goes forwards double X M569 P0.5 S1 ; physical drive 0.5 goes forwards EXT 1 M569 P0.4 S0 ; physical drive 0.4 goes forwards EXT 2 M569 P1.2 S0 ; physical drive 1.2 goes forwards Y, 3HC M569 P1.1 S0 ; physical drive 1.1 goes forwards Y, 3HC M584 X1.1:1.2 Y0.0:0.3 Z0.2:0.1 E0.5:0.4 ; set drive mapping M350 X16:16 Y16 Z16:16 E16:16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z480.00 E415:415 ; set steps per mm M566 X1000.00 Y1000.00 Z10.00 E250.00:250.00 ; set maximum instantaneous speed changes (mm/min) M203 X3000.00 Y3000.00 Z1000.00 E1500.00:1500.00 ; set maximum speeds (mm/min) M201 X1500.00 Y1500.00 Z10.00:10.00 E350.00:350.00 ; set accelerations (mm/s^2) M906 X1400:1400 Y1400:1400 Z1600:1600 E0550:0550 I60 ; set motor currents (mA) and motor idle factor in per cent M84 S1800 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X300 Y300 Z600. S0 ; set axis maxima ; Filaments M591 D0 P1 C"io3.in" S1 ; filament monitor connected to E0_stop M591 D1 P1 C"io4.in" S1 ; filament monitor connected to E1_stop ; Endstops M574 X1 S1 P"!io0.in" ; configure active-high endstop for low end on X via pin io0.in M574 Y1 S1 P"1.io1.in" ; configure active-high endstop for high end on Y via pin io1.in ; Z-Probe M950 S0 C"io7.out" ; create servo pin 0 for BLTouch M558 P9 C"^io7.in" H5 F120 T3000 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X25 Y40 Z2.70 ; set Z probe trigger value, offset and trigger height M557 X50:200 Y50:200 S50 ; define mesh grid ; Heaters M308 S0 P"temp3" Y"thermistor" T100000 B4050 ; configure sensor 0 as thermistor on pin temp3 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M307 H0 B1 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M308 S1 P"temp2" Y"thermistor" T100000 B4050 ; configure sensor 1 as thermistor on pin temp2 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S295 M308 S2 P"temp1" Y"thermistor" T100000 B4050 ; configure sensor 2 as thermistor on pin temp1 M950 H2 C"out2" T2 ; create nozzle heater output on out2 and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H2 S295 ; set temperature limit for heater 0 to 295C ; Fans M950 F0 C"out9" Q150 ; create fan 0 on pin out9 and set its frequency M106 P0 C"blower" S0 H-1 ; set fan 0 name and value. Thermostatic control is turned off M950 F1 C"out4" Q200 ; create fan 1 on pin out4 and set its frequency M106 P1 C"blower E0" S0 H-1 ; set fan 1 name and value. Thermostatic control is turned off M950 F2 C"out5" Q200 ; create fan 2 on pin out5 and set its frequency M106 P2 C"blower E1" S0 H-1 ; set fan 2 name and value. Thermostatic control is turned off M950 F3 C"out6" Q750 ; create fan 3 on pin out6 and set its frequency M106 P3 C"electrical" S1 H1:2 T20 ; set fan 3 name and value. Thermostatic control is turned on M950 F4 C"out7" Q200 ; create fan 4 on pin out7 and set its frequency M106 P4 C"E0" S1 H1 T45 ; set fan 4 name and value. Thermostatic control is turned on M950 F5 C"out8" Q200 ; create fan 5 on pin out8 and set its frequency M106 P5 C"E1" S1 H2 T30 ; set fan 5 name and value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0:1:2 ; define tool 1 G10 P0 X0 Y0 Z0 ; set tool 1 axis offsets G10 P0 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P1 D1 H2 F0:2:1 ; define tool 2 G10 P1 X0 Y-34.10 Z0 ; set tool 2 axis offsets G10 P1 R0 S0 ; set initial tool 2 active and standby temperatures to 0C ; Custom settings are not defined M593 F0. ; cancel ringing at 0Hz ; Miscellaneous M501 ; load saved parameters from non-volatile memory T0 ; select first tool
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Fri Apr 23 2021 23:00:19 GMT-0600 (Mountain Daylight Time) G91 ; relative mode G1 H1 X-240 Y-240 F1000 ; coarse home X or Y G1 H1 X-240 ; coarse home X G1 H1 Y-240 ; coarse home Y G1 X40 Y40 F600 ; move away from the endstops G1 H1 X-50 ; fine home X G1 H1 Y-50 ; fine home Y G1 X130 Y125 F3000 ; go to first bed probe point and home Z G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z-5 F50 ; lift Z relative to current position ;G90 ; absolute positioning
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Fri Apr 23 2021 22:59:43 GMT-0600 (Mountain Daylight Time) G91 ; relative positioning G1 H1 X-305 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 X30 F360 ; go back a few mm G1 H1 X-50 F360 ; move slowly to X axis endstop once more (second pass) G90 ; absolute positioning
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Fri Apr 23 2021 23:00:02 GMT-0600 (Mountain Daylight Time) G91 ; relative positioning G1 H1 Y-255 F1000 ; move quickly to Y axis endstop and stop there (first pass) G1 Y30 F1000 ; go back a few mm G1 H1 Y-50 F360 ; move slowly to Y axis endstop once more (second pass) G90 ; absolute positioning
-
@dad003 said in Problem with core XY homing:
; Endstops
M574 X1 S1 P"!io0.in" ; configure active-high endstop for low end on X via pin io0.in
M574 Y1 S1 P"1.io1.in" ; configure active-high endstop for high end on Y via pin io1.inWhat kind of endstops do you have and how are they connected?
One of them is inverted and the other is connected to an expansion?Could you show a video of the behaviour to help me understand what you mean?
Can you also provide the results of sending M122 and M98 P"config.g" in the gcode console?
-
I didnt touch the limit switch they were from my cartesian setup , same than what was working before , one is plug on the mainboard and the other on the expansion that is correct
here when the X home work
https://www.youtube.com/watch?v=NdWEAsdzKZEwhen Y home work
https://www.youtube.com/watch?v=zbjCIbW465Inow has you can see the homing work , now if i press home X than Y , not homeall
here the behaviour i get, X axis never went back to the limit switch
-
i tested something here i removed the second homing pass on bot X and y , didnt get the weird homing behaviour maybe i just need to remove the second pas in the home all as well maybe .
-
so i tested this again , home all doesnt get weird behaviour and seem to actually track to the number it move ,
modified home all that work
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Fri Apr 23 2021 23:00:19 GMT-0600 (Mountain Daylight Time) G91 ; relative mode G1 H1 X-240 Y-240 F1000 ; coarse home X or Y G1 H1 X-240 ; coarse home X G1 H1 Y-240 ; coarse home Y G1 X130 Y125 F3000 ; go to first bed probe point and home Z G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z-5 F50 ; lift Z relative to current position ;G90 ; absolute positioning
while homing X alone , it reach the limit switch web control show 0 , homing Y hit the switch than Y show 0 but X has now a negative number even if it didnt move
-
i added a g92 in all homing program now the axis after they home do not get change to a negative value anymore and everything seem to track correctly . i will test more and come back if any issue . this conversion has been a lot of headache so far from the config .
-
@dad003 said in Problem with core XY homing:
i added a g92 in all homing program now the axis after they home do not get change to a negative value anymore and everything seem to track correctly . i will test more and come back if any issue . this conversion has been a lot of headache so far from the config .
Do you understand what a G1 H1 move does when the endstop of the axis is triggered?
Frederick
-
Yes when the endstop is trigger is zero the coord ,but in my case i had weird behavior for unknown reason, i had to find a workaround until somebody has a better solution
-
@dad003 said in Problem with core XY homing:
Yes when the endstop is trigger is zero the coord ,but in my case i had weird behavior for unknown reason, i had to find a workaround until somebody has a better solution
That is not correct.
When the endstop is triggered the axis position is set to the axis min or max value as specified in the M208 command for that axis.
If the M574 command for the endstop specifies low end then the axis min value is used.
If the M574 command for the endstop specifies high end then the axis max value is used.
That is likely why you are not getting the values you are expecting.
Frederick
-
@phaedrux said in Problem with core XY homing:
@dad003 said in Problem with core XY homing:
; Endstops
M574 X1 S1 P"!io0.in" ; configure active-high endstop for low end on X via pin io0.in
M574 Y1 S1 P"1.io1.in" ; configure active-high endstop for high end on Y via pin io1.inWhat kind of endstops do you have and how are they connected?
One of them is inverted and the other is connected to an expansion?Could you show a video of the behaviour to help me understand what you mean?
Can you also provide the results of sending M122 and M98 P"config.g" in the gcode console?
@Dad003
What Phaedrux wanted to point out, is you have a typo in the definition of the Y-endstop:M574 Y1 S1 P"1.io1.in" should be M574 Y1 S1 P"!io1.in"
Everything you've done are just bandaids to coverr the real problem
-
@o_lampe that limit switch is on an expansion board not the mainboard .
mainboard control 2x Z , 2x Y, 2x extruder expansion board has the 2 X axis motor with that limit switch. if i remember correctly the limitation of the expansion board the limit switch has to be with the board controlling the axis
m122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.2.2 running on Duet 3 MB6HC v0.6 or 1.0 (standalone mode) Board ID: 08DJM-956L2-G43S8-6JTDJ-3SS6L-9816H Used output buffers: 3 of 40 (21 max) === RTOS === Static ram: 149788 Dynamic ram: 93996 of which 52 recycled Never used RAM 114996, free system stack 200 words Tasks: NETWORK(ready,193) ETHERNET(blocked,119) HEAT(blocked,297) CanReceiv(blocked,848) CanSender(blocked,371) CanClock(blocked,352) TMC(blocked,51) MAIN(running,1119) IDLE(ready,19) Owned mutexes: === Platform === Last reset 01:22:24 ago, cause: power up Last software reset at 2021-04-24 23:39, reason: User, GCodes spinning, available RAM 114996, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Aux1 errors 0,0,0 MCU temperature: min 8.7, current 22.5, max 22.8 Supply voltage: min 12.2, current 12.3, max 12.3, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 11.4, current 11.5, max 11.5, under voltage events: 0 Driver 0: position 0, standstill, reads 21815, writes 14 timeouts 0, SG min/max 0/0 Driver 1: position 0, standstill, reads 21815, writes 14 timeouts 0, SG min/max 0/0 Driver 2: position 0, standstill, reads 21815, writes 14 timeouts 0, SG min/max 0/0 Driver 3: position 0, standstill, reads 21815, writes 14 timeouts 0, SG min/max 0/0 Driver 4: position 0, standstill, reads 21816, writes 14 timeouts 0, SG min/max 0/0 Driver 5: position 0, standstill, reads 21816, writes 14 timeouts 0, SG min/max 0/0 Date/time: 2021-04-25 18:40:36 Slowest loop: 42.58ms; fastest: 0.06ms === Storage === Free file entries: 9 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 3.2ms, write time 9.3ms, max retries 0 === Move === DMs created 125, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 0 is on, I-accum = 0.2 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is doing "M190 S85" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 44.97ms; fastest: 0.02ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions HTTP sessions: 1 of 8 - Ethernet - State: active Error counts: 0 0 1 0 0 Socket states: 5 2 2 2 2 2 0 2 === Filament sensors === Extruder 0 sensor: ok Extruder 1 sensor: ok === CAN === Messages queued 19769, send timeouts 0, received 16, lost 0, longest wait 1ms for reply type 6042, free buffers 48
Expansion board
m122 b1 Diagnostics for board 1: Duet EXP3HC firmware version 3.2.2 (2021-02-11) Bootloader ID: not available Never used RAM 154800, free system stack 198 words HEAT 92 CanAsync 94 CanRecv 84 TMC 64 MAIN 317 AIN 259 Last reset 00:06:23 ago, cause: software Last software reset data not available Driver 0: position 0, 80.0 steps/mm, standstill, reads 48852, writes 11 timeouts 0, SG min/max 0/0 Driver 1: position 0, 160.0 steps/mm, standstill, reads 48844, writes 21 timeouts 0, SG min/max 0/0 Driver 2: position 0, 160.0 steps/mm, standstill, reads 48847, writes 21 timeouts 0, SG min/max 0/0 Moves scheduled 0, completed 0, in progress 0, hiccups 0 No step interrupt scheduled VIN: 12.4V, V12: 11.5V MCU temperature: min 44.9C, current 44.9C, max 44.9C Ticks since heat task active 246, ADC conversions started 383988, completed 383988, timed out 0 Last sensors broadcast 0x00000000 found 0 249 ticks ago, loop time 0 CAN messages queued 37, send timeouts 0, received 3458, lost 0, free buffers 36
M98 P"config.g" HTTP is enabled on port 80 FTP is enabled on port 21 TELNET is enabled on port 23 Warning: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 365C
-
@dad003 said in Problem with core XY homing:
@o_lampe that limit switch is on an expansion board not the mainboard .
OK, my bad.
Doesn't the switch on the expansion board also need the '!' to invert the input? -
no , like i say my printer started as a cartesian so when i switched to core xy , i didnt touch the config for the limit switch since they were working like they should .