• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

CoreXY sometimes homes correctly, sometimes does its own thing

Scheduled Pinned Locked Moved Solved
General Discussion
4
10
377
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    Rorgaard
    last edited by 23 Feb 2023, 17:07

    I have a Duet 2 wifi controlled custom CoreXY machine that I built during the pandemic. I managed to get it set up and running okay, but there's a few oddities that I've been unable to figure out. The most important one keeping me from moving on to fine-tuning, is that occasionally I will try to home it and it not only doesn't utilize the sensorless homing right, it'll home X/Y to the middle of the bed, or try to home to the opposite corner (max X and max Y instead of 0:0).

    Here's my homeall file text:

    ; Home X/Y first
    
    M564 H0 S0							; disables soft endstops
    G91                     			                        ; relative positioning
    M915 X Y R0 F0						; Set M915 for sensorless homing
    M400                  				                ; make sure everything has stopped before we make changes
    M913 X100 Y100						; drops motor current to 70% (currently 100%, trying to fix homing issue)
    M400								; wait
    G91									; relative positioning
    G1 H2 Z10 F6000						; lower z relative to current position
    M400								; wait
    ;X axis
    G1 H1 X-325 F5000					; home x
    G1 H2 X10 F3600						; move away a bit
    G1 H1 X-20 F3600					; home again but slower
    G1 H1 X5							; sit at 5mm
    M400								; wait
    ;Y axis
    G1 H1 Y-325 F5000					; home y
    G1 H2 Y10 F3600						; move away a bit
    G1 H1 Y-20 F3600					; home again but slower
    G1 H1 Y5							; sit at 5mm
    M400								; wait
    
    ; Move probe for Z homing
    
    G90 								; absolute positioning
    G1 X168.5 Y155 F10000   			        ; Move to the center of the bed
    M558 F500                			                ; Set the probing speed
    G30									; Probe bed
    M558 F50                 			                ; Set a slower probing speed
    G30									; Do it again
    
    G30 P0 X0 Y195 Z-99999				; Probe near left endscrew
    G30 P1 X330	Y195 Z-99999 S2			; Probe near right endscrew, set compensation
    
    ;check center again for accurate zeroing
    
    G1 X167 Y155 F10000   				; Move to the center of the bed
    M558 F500               		 	                ; Set the probing speed
    G30									; Probe bed
    M558 F50                 			                ; Set a slower probing speed
    G30									; Do it again
    
    G1 X1 Y1 F5500						; Go back home
    
    M915 X Y S3 R1 F1					; set M915 for stall detection
    

    Apologies for the comments not aligning, they're right on my browser but not when pasted here.

    What am I missing?

    undefined 1 Reply Last reply 23 Feb 2023, 22:31 Reply Quote 0
    • undefined
      Phaedrux Moderator
      last edited by 23 Feb 2023, 22:30

      Post your full config.g please
      Also the results of M122 and M98 P"config.g"

      Z-Bot CoreXY Build | Thingiverse Profile

      undefined 1 Reply Last reply 27 Feb 2023, 22:52 Reply Quote 0
      • undefined
        Phaedrux Moderator @Rorgaard
        last edited by 23 Feb 2023, 22:31

        @Rorgaard said in CoreXY sometimes homes correctly, sometimes does its own thing:

        it'll home X/Y to the middle of the bed

        Sounds like your stall detection isn't tuned very well and it's having false triggers?

        Have you been through these guides?

        https://docs.duet3d.com/en/User_manual/Machine_configuration/Configuration_coreXY
        https://docs.duet3d.com/en/User_manual/Connecting_hardware/Sensors_stall_detection

        Z-Bot CoreXY Build | Thingiverse Profile

        undefined 1 Reply Last reply 27 Feb 2023, 23:09 Reply Quote 0
        • undefined
          ericrane
          last edited by 25 Feb 2023, 21:06

          This sounds like an the same issue I ran into when setting up my corexy. There are two different files you need configured for homing the bed.

          homeall.g and homez.g

          Make sure they are both setup properly.

          1 Reply Last reply Reply Quote 0
          • undefined
            Rorgaard @Phaedrux
            last edited by 27 Feb 2023, 22:52

            @Phaedrux said in CoreXY sometimes homes correctly, sometimes does its own thing:

            Post your full config.g please
            Also the results of M122 and M98 P"config.g"

            ; Configuration file for Duet WiFi (firmware version 3)
            ; executed by the firmware on start-up
            ;
            ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Oct 09 2020 19:49:58 GMT-0500 (Central Daylight Time)
            ; Using LGX Lite direct drive extruder
            
            ; General preferences
            G90                                                	; send absolute coordinates...
            M83                                                	; ...but relative extruder moves
            M550 P"Beast"                                      	; set printer name
            M669 K1                                            	; select CoreXY mode
            
            ; Network
            M551 P"Beast"                                      	; set password
            M552 S1                                            	; enable network
            M586 P0 S1                                         	; enable HTTP
            M586 P1 S0                                         	; disable FTP
            M586 P2 S0                                         	; disable Telnet
            
            ; Drives
            M569 P0 S0                                         	; physical drive 0 goes forwards 	(X)
            M569 P1 S0                                         	; physical drive 1 goes forwards	(Y)
            M569 P2 S1                                         	; physical drive 2 goes forwards	(Z1)
            M569 P4 S1											; physical drive 4 goes forwards	(Z2)
            M569 P3 S1                                         	; physical drive 3 goes forwards	(E)
            M584 X0 Y1 Z2:4 E3                                 	; set drive mapping
            M350 X16 Y16 Z16 E16 I1                            	; configure microstepping with interpolation
            M92 X80.00 Y80.00 Z400.00 E562						; set steps per mm (E562 for Bondtech LGX Lite)
            M203 X12000.00 Y12000.00 Z1000.00 E6000.00          ; set maximum velocity (mm/min) (Velocity)
            M201 X7500.00 Y7500.00 Z500.00 E5000.00             ; set maximum accelerations (mm/s^2) (Accel) (5000)
            M566 X750.00 Y750.00 Z60.00 E750.00               	; set maximum jerk (mm/min) (was 150xy 60z 120e) (500)
            M906 X1000 Y1000 Z800 E650 I30                      ; set motor currents (mA) and motor idle factor in per cent (LGX Lite 650 start from E800)
            M84 S30                                            	; Set idle timeout
            
            ; Axis Limits
            M208 X0 Y0 Z0 S1                                   	; set axis minima
            M208 X330 Y320 Z350 S0                             	; set axis maxima
            
            ; Dual Z stuff
            M671 X-45:375 Y0:0 S1.0								; Says there's z screws 45mm left of x axis and 45mm right of end, max adjustment is 1mm
            
            ; Endstops
            M574 X1 S4                                         	; configure sensorless endstop for low end on X
            M574 Y1 S4                                         	; configure sensorless endstop for low end on Y
            M574 Z1 S2										   	; Define Z to use Probe. Home to min.
            M915 X Y R0 F0										; added 2/17/23
            
            ; Z-Probe
            M950 S0 C"exp.heater3"							   						; Supposedly works, from duet gcode file
            M558 P9 C"zprobe.in" H1.5 F500 T6000                 					; Enable Z probe, set dive height, probe speed and travel speed
            G31 P500 X0 Y50 Z2.3													; Z probe trigger value, offset in relation to nozzle. Trigger height adjust. (40.75) (3.21)(2.57)(4.95)
            M557 X0:320 Y40:320 S20                            						; define mesh grid
            
            ; Heaters
            M308 S0 P"bedtemp" Y"thermistor" A"Bed" T100000 B4138 	    			; configure sensor 0 as thermistor on pin bedtemp (R4700)
            M950 H0 C"bedheat" T0 	                            					; create bed heater output on bedheat and map it to sensor 0 q=10hz (Q10)
            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" A"Hotend" T100000 B4680 C6.427137e-8   	; configure sensor 1 as thermistor on pin e0temp (use RRF configurator for TBC values)
            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 S300															; set temperature limit for heater 1 to 300c
            
            ; Fans
            M950 F0 C"fan0" Q500                               	; create fan 0 on pin fan0 and set its frequency
            M106 P0 S0 H-1 T50                                 	; set fan 0 value. Thermostatic control is turned off, cuts at 50C
            M950 F1 C"fan1" Q500                               	; create fan 1 on pin fan1 and set its frequency
            M106 P1 S1 H1 T50                                  	; set fan 1 value. Thermostatic control is turned on, 50C
            M950 F2 C"fan2" Q500                               	; create fan 1 on pin fan1 and set its frequency
            M106 P2 S1 H1 T30                                  	; set fan 2 value. Thermostatic control is turned on, 30C
            
            ; Tools
            M563 P0 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
            T0													; selects tool0 at startup (extruder)
            ;M571 P1 57600
            M575 P1 S1 B57600									; PanelDue stuff
            M501											   	; Use stored PID settings
            M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" 	; set voltage thresholds and actions to run on power loss
            
            

            M122:

            M122
            === Diagnostics ===
            RepRapFirmware for Duet 2 WiFi/Ethernet version 3.4.5 (2022-11-30 19:36:12) running on Duet WiFi 1.02 or later
            Board ID: 08DJM-9178L-L2MSD-6J1F4-3S06L-99FQP
            Used output buffers: 1 of 26 (18 max)
            === RTOS ===
            Static ram: 23836
            Dynamic ram: 75256 of which 12 recycled
            Never used RAM 12976, free system stack 184 words
            Tasks: NETWORK(notifyWait,14.7%,242) HEAT(notifyWait,0.0%,333) Move(notifyWait,0.0%,363) MAIN(running,84.6%,438) IDLE(ready,0.7%,30), total 100.0%
            Owned mutexes: WiFi(NETWORK)
            === Platform ===
            Last reset 00:02:23 ago, cause: power up
            Last software reset at 2023-02-17 16:17, reason: User, GCodes spinning, available RAM 15024, slot 0
            Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a
            Error status: 0x00
            Aux0 errors 0,0,0
            Step timer max interval 0
            MCU temperature: min 25.5, current 32.4, max 32.5
            Supply voltage: min 24.1, current 24.2, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes
            Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0
            Events: 0 queued, 0 completed
            Driver 0: standstill, SG min n/a
            Driver 1: standstill, SG min n/a
            Driver 2: standstill, SG min n/a
            Driver 3: standstill, SG min n/a
            Driver 4: standstill, SG min n/a
            Driver 5: 
            Driver 6: 
            Driver 7: 
            Driver 8: 
            Driver 9: 
            Driver 10: 
            Driver 11: 
            Date/time: 2023-02-27 16:49:39
            Cache data hit count 4294967295
            Slowest loop: 8.07ms; fastest: 0.18ms
            I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
            === Storage ===
            Free file entries: 10
            SD card 0 detected, interface speed: 20.0MBytes/sec
            SD card longest read time 3.8ms, write time 0.0ms, max retries 0
            === Move ===
            DMs created 83, segments created 0, maxWait 0ms, bed compensation in use: none, comp offset 0.000
            === MainDDARing ===
            Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
            === AuxDDARing ===
            Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
            === Heat ===
            Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0
            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 idle 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
            Daemon is idle in state(s) 0
            Autopause is idle in state(s) 0
            Code queue is empty
            === Network ===
            Slowest loop: 16.09ms; fastest: 0.00ms
            Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0)
            HTTP sessions: 1 of 8
            = WiFi =
            Network state is active
            WiFi module is connected to access point 
            Failed messages: pending 0, notready 0, noresp 0
            WiFi firmware version 1.27
            WiFi MAC address 84:0d:8e:b2:ef:82
            WiFi Vcc 3.34, reset reason Turned on by main processor
            WiFi flash size 4194304, free heap 24600
            WiFi IP address 10.0.0.12
            WiFi signal strength -31dBm, mode 802.11n, reconnections 0, sleep mode modem
            Clock register 00002002
            Socket states: 0 0 0 0 0 0 0 0
            
            

            M98 P"config.g":

            M98 P"config.g"
            HTTP is enabled on port 80
            FTP is disabled
            TELNET is disabled
            Warning: Heater 1 predicted maximum temperature at full power is 492°C
            
            1 Reply Last reply Reply Quote 0
            • undefined
              Rorgaard @Phaedrux
              last edited by 27 Feb 2023, 23:09

              @Phaedrux said in CoreXY sometimes homes correctly, sometimes does its own thing:

              @Rorgaard said in CoreXY sometimes homes correctly, sometimes does its own thing:

              it'll home X/Y to the middle of the bed

              Sounds like your stall detection isn't tuned very well and it's having false triggers?

              Have you been through these guides?

              https://docs.duet3d.com/en/User_manual/Machine_configuration/Configuration_coreXY
              https://docs.duet3d.com/en/User_manual/Connecting_hardware/Sensors_stall_detection

              I have, and I thought about playing with the sensitivity but the fact that the motors occasionally run backward made me think the sensitivity might not be the root cause.

              1 Reply Last reply Reply Quote 0
              • undefined
                Phaedrux Moderator
                last edited by 28 Feb 2023, 04:03

                You're using sensorless homing, but your acceleration is very very high. Try reducing it during homing.

                Have you gone through the corexy motor tests to confirm things are working as they should?

                Z-Bot CoreXY Build | Thingiverse Profile

                undefined 1 Reply Last reply 28 Feb 2023, 14:11 Reply Quote 0
                • undefined
                  Rorgaard @Phaedrux
                  last edited by 28 Feb 2023, 14:11

                  @Phaedrux oh geez it is very high. Huh. I can't believe I didn't catch that, that's from a test I did ages ago.

                  Motor testing has confirmed the motors move correctly. I also checked the wires to make sure they were pinned right, because I had an incident with a motor once that had two wires swapped. That's not the case here.

                  I'll spend today playing with things with the kinematics turned way down, see if that helps.

                  undefined 1 Reply Last reply 3 Jun 2023, 02:13 Reply Quote 0
                  • undefined
                    Rorgaard @Rorgaard
                    last edited by 3 Jun 2023, 02:13

                    Update: I finally got around to playing with this to figure it out.

                    The changes I made:

                    • I lowered the acceleration by a factor of 10. I may increase it again later but for now things are working.

                    • I increased the x/y homing speed to F6000. at 3600 it kept grinding on the stop.

                    • I got rid of the repeat of the home. Once is good enough anyway, no need to do it twice.

                    dc42undefined 1 Reply Last reply 4 Jun 2023, 20:12 Reply Quote 1
                    • dc42undefined
                      dc42 administrators @Rorgaard
                      last edited by 4 Jun 2023, 20:12

                      @Rorgaard I'm glad you got it working. I have a few comments:

                      @Rorgaard said in CoreXY sometimes homes correctly, sometimes does its own thing:

                      I lowered the acceleration by a factor of 10. I may increase it again later but for now things are working.

                      Recent versions of RRF have a command M201.1 which allows you to set a lower than normal acceleration for stall homing moves and Z prove moves. This helps to avoid getting a stall when the homing move starts, caused by extra load as the motor accelerates the mass of the print head.

                      @Rorgaard said in CoreXY sometimes homes correctly, sometimes does its own thing:

                      I increased the x/y homing speed to F6000. at 3600 it kept grinding on the stop.

                      There is a minimum speed at which stall detection is activated, set by the M915 H parameter, because stall detection at low speeds is not reliable. See https://docs.duet3d.com/en/User_manual/Reference/Gcodes#m915-configure-motor-stall-detection. At F3600 you may have been below that speed.

                      @Rorgaard said in CoreXY sometimes homes correctly, sometimes does its own thing:

                      I got rid of the repeat of the home. Once is good enough anyway, no need to do it twice.

                      That's fine if it reliably detects a stall when the physical endstop is reached and not before. Bear in mind that when the motor is hot, stall detection sensitivity increases.

                      Duet WiFi hardware designer and firmware engineer
                      Please do not ask me for Duet support via PM or email, use the forum
                      http://www.escher3d.com, https://miscsolutions.wordpress.com

                      1 Reply Last reply Reply Quote 0
                      • dc42undefined dc42 marked this topic as a question 4 Jun 2023, 20:12
                      • dc42undefined dc42 has marked this topic as solved 4 Jun 2023, 20:12
                      • First post
                        Last post
                      Unless otherwise noted, all forum content is licensed under CC-BY-SA