Microstepping with CoreXY
-
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 S1M667 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] -
You are setting your axis steps/mm to 100 for X and Y is this correct for 64 microsteps?
-
When you change the microstepping, you have to adjust the steps per mm.
-
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
-
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…
-
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!
-
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.