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

    Random direction on homing Core XY

    Scheduled Pinned Locked Moved Solved
    General Discussion
    4
    8
    162
    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.
    • almstsoburundefined
      almstsobur
      last edited by jay_s_uk

      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
      
      jay_s_ukundefined 1 Reply Last reply Reply Quote 0
      • jay_s_ukundefined
        jay_s_uk @almstsobur
        last edited by

        @almstsobur can you post your homing files too please

        Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

        almstsoburundefined 1 Reply Last reply Reply Quote 0
        • almstsoburundefined
          almstsobur @jay_s_uk
          last edited by jay_s_uk

          @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
          
          almstsoburundefined 1 Reply Last reply Reply Quote 0
          • almstsoburundefined
            almstsobur @almstsobur
            last edited by jay_s_uk

            @almstsobur

            ; 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
            
            1 Reply Last reply Reply Quote 0
            • Phaedruxundefined
              Phaedrux Moderator
              last edited by

              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?

              Z-Bot CoreXY Build | Thingiverse Profile

              almstsoburundefined 1 Reply Last reply Reply Quote 0
              • almstsoburundefined
                almstsobur @Phaedrux
                last edited by

                @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.1ohms

                Thank You

                dc42undefined 1 Reply Last reply Reply Quote 0
                • dc42undefined
                  dc42 administrators @almstsobur
                  last edited by dc42

                  @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.

                  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

                  almstsoburundefined 1 Reply Last reply Reply Quote 0
                  • almstsoburundefined
                    almstsobur @dc42
                    last edited by

                    @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!

                    1 Reply Last reply Reply Quote 1
                    • Phaedruxundefined Phaedrux marked this topic as a question
                    • Phaedruxundefined Phaedrux has marked this topic as solved
                    • First post
                      Last post
                    Unless otherwise noted, all forum content is licensed under CC-BY-SA