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

    Microstepping with CoreXY

    Scheduled Pinned Locked Moved
    General Discussion
    5
    7
    1.9k
    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.
    • lignumaquaundefined
      lignumaqua
      last edited by

      Everything is running fine with my CoreXY using the default of 16 step microstepping with interpolation. I wanted to experiment with higher rates so set the microstepping to 64. When I did this all moves were 1/4 the size they should be, in other words it looks like the steps/mm is not being altered to account for the change in microstepping.

      Most likely I have done something dumb in my config file, but I can't find what it is. I made sure that M350 was before M92. Is there something else I need to change?

      Running 1.15c (2016-09-05) and the relevant section of my config.g looks like this:

      [c]
      M350 X64 Y64 Z64 E16 I1 ; set 64x microstepping with interpolation

      ;*** If you use an endstop switch for Z homing, change Z0 to Z1 in the following line, and see also M558 command later in this file
      M574 X1 Y2 Z1 S0
      M574 E S1

      M667 S1 ; set CoreXY mode

      M906 X500 Y500 Z800 E800 ; Set motor currents (mA)
      M201 X2000 Y2000 Z100 E1000 ; Accelerations (mm/s^2)
      M203 X30000 Y30000 Z700 E10000 ; Maximum speeds (mm/min)
      M566 X400 Y400 Z24 E40 ; Maximum jerk speeds mm/minute
      M208 X270 Y170 Z265 ; set axis maxima and high homing switch (adjust to suit your machine)
      M208 X0 Y-10 Z0 S1 ; set axis minima and low homing switch (adjust to make X=0 and Y=0 the edges of the bed)
      M92 X100 Y100 Z400 ; Set axis steps/mm
      [/c]

      1 Reply Last reply Reply Quote 0
      • T3P3Tonyundefined
        T3P3Tony administrators
        last edited by

        You are setting your axis steps/mm to 100 for X and Y is this correct for 64 microsteps?

        www.duet3d.com

        1 Reply Last reply Reply Quote 0
        • StephenRCundefined
          StephenRC
          last edited by

          When you change the microstepping, you have to adjust the steps per mm.

          1 Reply Last reply Reply Quote 0
          • croadfeldtundefined
            croadfeldt
            last edited by

            Like T3P3Tony said, you will need to increase your steps per mm to match the microstepping.

            So if your above M92 was 100 steps mm was correct for 16 micro stepping, then the following should be correct for 64 microstepping.

            M92 X400 Y400 Z1600 ; Set axis steps/mm

            1 Reply Last reply Reply Quote 0
            • lignumaquaundefined
              lignumaqua
              last edited by

              Ah, thanks. That makes complete sense and I started off thinking that's what I was going to have to do, then I read the Wiki (text below) which suggests that the steps/mm are adjusted automatically. Perhaps if I leave the first M350 unchanged at 16x and then add a second M350 after the M92 to change it to 64x that will happen automatically.

              The M92 commands to set steps/mm must come after any M350 command to set microstepping. This is because when you change microstepping, the steps/mm are automatically adjusted to take account of the change in microstepping.

              I assumed (always dangerous I know) that the steps/mm were based on the default 16x microstepping, and everything else was calculated from there. The Wiki appeared to confirm that assumption, but you always see what you want to see…

              1 Reply Last reply Reply Quote 0
              • lignumaquaundefined
                lignumaqua
                last edited by

                UPDATE:

                Yes, that works, I know I could just change the steps/mm, but it's easier just to change the one M350 line when you are experimenting.

                M350 X16 Y16 Z16 E16 I1             	; set 16x microstepping with interpolation
                M92 X100 Y100 Z400 		        ; Set axis steps/mm
                M350 X64 Y64 Z64 E16 I1             	; set 64x microstepping with interpolation and automatically
                                                        ; update steps/mm accordingly
                
                

                Thanks for the speedy assistance! 🙂

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

                  @lignumaqua:

                  Ah, thanks. That makes complete sense and I started off thinking that's what I was going to have to do, then I read the Wiki (text below) which suggests that
                  I assumed (always dangerous I know) that the steps/mm were based on the default 16x microstepping, and everything else was calculated from there. The Wiki appeared to confirm that assumption, but you always see what you want to see…

                  When RRF sees a M92 command it takes that as the number of microsteps/mm at the current microstepping rate. If you subsequently use M350 to change the microstepping, then the steps/mm is recalculated by the firmware to allow for the change. If you then issue another M92 then that will be the number of microsteps/mm at the new microstep setting.

                  So if you want to experiment with different microstepping, it's probably easiest to put your M92 command, calculated at x16 microstepping (the default at power up) before the M350 command. Then you can adjust the M350 command without having to adjust the M92 command.

                  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 1
                  • First post
                    Last post
                  Unless otherwise noted, all forum content is licensed under CC-BY-SA