Incorrect Z microstepping
-
1600 steps per mm looks right for your Z axis based on
Z_steps_per_mm = (motor_steps_per_rev * driver_microstep) / thread_pitch
(200*16)/2=1600
Are the independent drivers on a Duex, or external drivers?
If you jog the Z axis back and forth manually does it end up back in the same position?
Is there any binding or misalignment?
Are all of the drives identical?
You might get some odd behaviour with x1 microstepping like some drives maybe turning the wrong direction. If you want to experiment with lower microsteps start with x4.
If you want to test other microsteppings you can leave your current settings as they are set with x16, then simply add a new M350 Z4 command below the M92 command. The firmware will take the default values for x16 microsteps and adjust them for you, so you don't need to manually add the correct steps per mm value. Make sense?
-
@phaedrux said in Incorrect Z microstepping:
1600 steps per mm looks right for your Z axis based on
Z_steps_per_mm = (motor_steps_per_rev * driver_microstep) / thread_pitch
(200*16)/2=1600
Are the independent drivers on a Duex, or external drivers?
If you jog the Z axis back and forth manually does it end up back in the same position?
Is there any binding or misalignment?
Are all of the drives identical?
You might get some odd behaviour with x1 microstepping like some drives maybe turning the wrong direction. If you want to experiment with lower microsteps start with x4.
If you want to test other microsteppings you can leave your current settings as they are set with x16, then simply add a new M350 Z4 command below the M92 command. The firmware will take the default values for x16 microsteps and adjust them for you, so you don't need to manually add the correct steps per mm value. Make sense?
The independent drivers are on a duex5. If the bed is tilted too much it will bind, but when it is leveled there is no binding, but there is a little binding/slight misalignment if it's not level. I still need to add the pillowblock bearings in, but that should not be making my benchy layers like 5x as thick. All of the motors are identical, and I'm hoping all the drives are identical seeing as it's a duex5. I can test jogging the z-axis. Something to note is that when it is homing/leveling the bed it moves much faster in the +z direction (downwards because it's a corexy) than it does in the -z direction. I am assuming this was because of gravity, but I am unsure.
-
Do you have a video of the z axis movement in action? Pictures of the stretched prints?
Are you sure the lead screws are 2mm pitch?
-
@phaedrux I can get a picture of the stretched print on here. I bought the screws from openbuilds. They are an ACME 8mm, so I'm 99% sure they are 2mm pitch.
-
https://i.imgur.com/dDIib1K.jpg
https://i.imgur.com/IYOxH61.jpg
As you can see the first layer went down fine, but it's FUBAR after that. I think there are only 10-20 layers there (so 2-4mm actual) but the whole print is about 20mm high.
-
Ok so if you move to Z0 and touch the bed, and then job the bed up 10mm and measure it with a ruler, is it actually 10mm?
-
@phaedrux So the Z axis is set at 30.8mm my calipers read out about 120mm (not exact, just around about there) and if I move it up it moves the same amount upwards. Maybe it's because I have 4 z motors? 30*4=120. It's definitely more than 30.8mm, I can tell you that.
-
Wait, it's a 4 start lead screw, could that be the issue?
-
@surgikill This is almost certainly it. For lead screw calculations we actually use the 'lead' (movement of the nut per complete turn) rather than the 'pitch' (peak-to-peak measurement of the threads). For single start screws these values are the same so it's easy to miss the distinction.
So a 2mm pitch 4-start screw will have a 8mm lead (2mm pitch * 4 starts).
so the calc becomes something like
(200steps/rev * 16) / 8mm/rev = 400 steps/mm
-
@nhof Thanks man. That's what I thought but using the prusa calculator there's no input for start. I had to go looking for the calculation. Seems to be printing much better now, at least it's not moving 4x what it should.
-
Microstepping is not the problem. Try reducing Z acceleration. Also try increasing Z motor current if you can do that without the motors overheating.
-
I just spotted a big problem with your config.g. The M584 command must come before the M350 and M906 commands.
-
@dc42 It's a 4 start leadscrew so I needed to divide the microstepping by 4, so instead of 1600 it's 400. Did a test print last night and it came out fine, minus the z artifacts and lack of cooling. Why does the M584 need to come before M350 and M906? Looks like those are just microstepping and motor idle currents.
I was also reading in some other documentation that I need to configure microstepping and steps/mm for each z-motor. Is this true? It seems to work fine now but I can't find anything in the official documentation about it.
-
If you look up M584 in the GCode wiki, it says clearly that it must come before certain other GCode commands. That's so that the firmware knows which drivers to apply those settings to.
You don't need to set the steps/mm or microstepping separately for the multiple Z motors.
-
@dc42 Is there any way I or somebody else could add this to the documentation?
-
@surgikill You can register and modify the dokuzi wiki . Should not need any special permissions. I have done this several times.
-
@dc42 I just looked up M584 in the g-code wiki and didn't see anything about the order. Can you point me to where you found it? I want to read up on it.
-
@surgikill It's actually listed under the
M350
andM92
commands rather than theM584
-
From https://duet3d.dozuki.com/Wiki/Gcode#Section_M584_Set_drive_mapping :
Order dependenceM584 must come earlier in config.g than any M350amd M906 commands. If it creates new axes, it must also be earlier than any M92, M201, M203, M208, M350, M566, M574 , M667 and M669 commands.
-
@aidar Is there anything I can't run M584 before? I'm just going to stick it at the top of the list.