Microstepping suggestions, explanation?
-
Hi!
It seems well-known that microstepping, at least beyond a certain point (when the incremental torque becomes too low to provide the desired movement), can actually decrease accuracy. For reference, see: http://www.micromo.com/technical-library/stepper-motor-tutorials/microstepping-myths-and-realities or any of the many references that you can find by googling 'microstepping precision accuracy'.
Exactly where microstepping becomes counterproductive probably depends on many factors, including the torque of your motors, motor friction, the moving mass of your system, and the speeds at which you are printing. However, I think a fair point to start scratching your head and wondering if microstepping really does anything is when you go past 16X.
At 16X you are already down to less than 10% of max torque. At 32X you are under 5% of max torque. And perhaps more importantly, a 1/32 step result in movements that are so small, it seems like they would be meaningless in light of various sources of error such backlash, stretching of belts, vibration, etc. Presumably the exact numbers are system-specific, but according to one post I read here, 32X results in 0.000332023mm of movement. Seriously?? And that's 32X. 64X - 256X would give much smaller displacements.
This all gives me the impression that the utility of microstepping over maybe 16X, and certainly 32X, is wishful thinking. However, I see some people in these forums saying that 64X - 256X actually improves quality. I'm new to this, so my apologies if this is a dumb question, but could someone explain whether such high microstepping really has a positive effect, and if so, how it is possible that such tiny steps and torques rise above system noise?
By the way, I have a Pursa i3 (cartesian) and a Kossel (delta) clone, in case the best microstepping settings vary substantially.
Thanks,
James -
I've no doubt DC42 will step (excuse the pun) in here, and if he talks about stepper motors, it is generally best to sit up and take note.
My twopence worth. The positional accuracy of stepper motor is generally quoted as being +/- 5% per step but this is non accumulative. So any step will be within a 0.18 degree error range (assuming a 1.8 degree stepper). Micro stepping just chops full steps into smaller ones so it won't improve the accuracy. Conversely, as long as the motor doesn't skip, micro-stepping won't make the accuracy worse either. It will make the motors run quieter though.
As for high rate micro stepping improving quality - well you've done the maths. There are people who post on HiFi and video forums claiming that a (high price) exotically named mains lead has improved the picture quality of their LCD or plasma TV by making the blacks, blacker. This would imply that the lead is somehow capable of doing selective bit manipulation of the data stream. Clearly not possible but equally, it is also not possible to convince these people that they must be imagining it.
-
Higher micro stepping reduces vibration, and therefore improves print quality (though there eventually diminishing returns).
There's no downside to it, really. The 'reduced accuracy" is a bit of a misnomer. A perfect driving signal would be a sine wave, and increasing micro stepping just better approximates a sine wave.
-
Its worth saying that the microstepping mode most popular with duetwifi is 1/16th to 1/256 interpolation where the driver accepts step and dir signals at 1/16th but moves the motors by adding the extra steps required in between, this means no excessive load on the processor to generate huge numbers of step pulses, but you gain the silence of the 1/256th mode/
I've often wondered using Duetwifi with 1/16 to 1/256th interpolation why the torque is still adequate for the job but it is, I wouldn't fancy grabbing a carriage and trying to stop it moving (with normal motor current set). Plus the incredible silence of the motors has encouraged me to get some tmc 2100 step sticks for my other machine running ramps.
I have no illusions that it will magically generate increased accuracy but also no complaints that it decreases accuracy either. Now when it comes to 16t drive pulleys and 400 steps/rev (0.9deg) motors they definitely do improve accuracy.
-
Thanks all! Dj, I'd heard that about 0.9 degree motors also. My stock motors are NEMA 17 1.8 degree motors with 40 Nm max torque. Are there particular 0.9 degree motors you would suggest if converting?
-
Keep in mind you don't loose ANY torque at 1/16th steps if you run at 1/256 stepping. The 1/2 and 1/4, 1/8th steps also have their same torque running at 256 stepping. People often get confused with this lower torque rating at higher stepping and equate it to lower torque overall, it's not. I run at 256 stepping and I'm still getting the same torque as if I ran at 1/16th stepping at the 1/16th steps. On the other hand yes I have less torque at say 129/256ths position. At 128th / 256ths on the other hand I still get the same 1/2 step torque.
Edit: It really boils down to trying to hold the motor at ever smaller slices, it's why they say you have less holding torque at higher stepping, The motor tends to snap a bit towards it's larger steps.
As to accuracy anything above 1/32nd isn't going to buy you much if anything at all other then lower noise. Many will argue with some merit that anything above 1/16th isn't going to gain you any accuracy, etc. Each situation is different.
Run at least 64 micro stepping and be happy.
Jeff
-
Thanks all! Dj, I'd heard that about 0.9 degree motors also. My stock motors are NEMA 17 1.8 degree motors with 40 Nm max torque. Are there particular 0.9 degree motors you would suggest if converting?
Well I am using these
http://www.omc-stepperonline.com/9deg-nema-17-bipolar-stepper-44ncm623ozin-17hm191684s-p-12.html
and can't fault them especially on 24v, but I was chatting to someone planning a pretty big delta 1.5m verticals and 450mm base and recommended that he might consider a 2.0A OR 2.4A motor given that we should be aiming to run them at up to 80% of max current to avoid excessive heat build up, which means you can stretch the legs on the drivers on Duetwifi and run 1.6A or 2.0A respectively. However for my 1m tall 330mm wide delta they are solid performers. -
From what I understand much of the need for higher current motors comes down to using motors that have lower inductance and thus lower inductive reactance which allows the motor to run at higher speeds while keeping out of the resonance frequency of the inductor. More or less if it hits that electrically resonant point it's dead in the water. You then also have the back EMF from the inductor (motor coil) which works against the drivers themselves. Less inductance less back EMF.
So yes, more current less voltage good.
Jeff
-
With respect to using 0.9 degree motors, since a full step is half the size, do you do half as much microstepping, or still leave it at, e.g., 1/16 interpolated to 1/128?
And, is this just something you configure in the software so it knows step angle?
Thanks,
James -
With respect to using 0.9 degree motors, since a full step is half the size, do you do half as much microstepping, or still leave it at, e.g., 1/16 interpolated to 1/128?
And, is this just something you configure in the software so it knows step angle?
Thanks,
JamesSet the steps per/mm and then the desired microstepping. I use 0.9 deg/step motors on my extruders. You'll double from the 1.8 deg steps of course. In my case the extruders would have been 100.3619 for 1.8 deg motors, 200.7238 for 0.9 deg motors. The steps per mm @ 1/16th stepping which then gets re-calculated by the firmware.
M92 X94.12 Y94.12 Z400 ; set axis steps/mm
M92 E200.7238:200.7238 ; set extruder 0 and 1 steps/mmM350 X128 Y128 Z128 E128:128 ; set microstepping
-
Yes I use 1/16 to 1/256th interpolation with 0.9 deg steppers. Steps/mm are 200 rather than the usual 80 as its 160 for 0.9deg motors and 200 for 16t pulleys. I have only really tried other modes without interpolation to see if could enhance the accuracy of my piezo z probe I am developing, the theory being the interpolated positions are not perfect but it made no difference. In fact despite the might duet's processing power at 1/256th true microstepping the processor cannot keep up with the step pulses required to go very fast.
-
Yes I use 1/16 to 1/256th interpolation with 0.9 deg steppers. Steps/mm are 200 rather than the usual 80 as its 160 for 0.9deg motors and 200 for 16t pulleys. I have only really tried other modes without interpolation to see if could enhance the accuracy of my piezo z probe I am developing, the theory being the interpolated positions are not perfect but it made no difference. In fact despite the might duet's processing power at 1/256th true microstepping the processor cannot keep up with the step pulses required to go very fast.
Perhaps you should try the latest test firmware, how fast exactly are you trying to go with 256 stepping ?
-
I'm not trying to go that fast and am quite happy with interpolated, just pointing out that it takes a truly mighty controller to really do it properly, and as such the interpolation on the TMC's is really rather clever. 1.17c+1 didn't work for me retractions were about 5 times too long, quite a shock to see the filament disappear back up the tube at a speed I've never seen an extruder attempt before or since. I'm sure its a bug easily fixed.
-
I've timed prints at 80 mm/s 2500 acl at 16 , 64 and 256 micro stepping and found the finish time to be Exactly the same. I don't think your giving the board enough credit. I've also done 140 mm/s at 4000 acl with 128 stepping with excellent results.
-
On a Cartesian printer with 20 tooth pulleys and 1.8deg motors, the steps/mm at 256x microstepping will be 1280. Only 2 motors are moving significantly for most of the time, so you should be able to reach about 200mm/sec before the electronics can't generate steps fast enough.
On a CoreXY it's generally better because both motors contribute to a single axis movement. This doesn't apply to diagonal movements, but then only one motor is moving.
On a delta, there are two factors that increase the step rate. First, 0.9deg motors are often used to get better Z resolution. Second, the carriages have to move up to about 3 times faster than the effector. That's why I determined that 64x microstepping was the highest I should use on my delta.
-
@(In)Sanity:
I've timed prints at 80 mm/s 2500 acl at 16 , 64 and 256 micro stepping and found the finish time to be Exactly the same. I don't think your giving the board enough credit. I've also done 140 mm/s at 4000 acl with 128 stepping with excellent results.
Yeah I'm just quoting David who said to get a delta to move at 15000mm/min (250 mm/s) with 0.9 deg motors at 1/256th would need 800khz step pulses, which is probably beyond the processor.
-
His new firmware is even faster, so far so good for me at least. While I've reduced weight significantly on the carriage assembly I can't even begin to dream of 250mm/s nor would I want to. Comes a point when quality suffers even with the very lightest, highest quality printers. I'm going to stick with 80-90mm/s for now and I know I can do 150 when I need to. I might be able to pull off 200 mm/s, guess I'll have to try.
This all brings up another point, I've seen some individuals brag about printing at 300mm/s on lets say YouTube videos and watching their videos it's really clear they didn't increase acceleration and jerk settings so their not getting anything near their claims. I've done 150 mm/s with 4000 acceleration and I must say it's pretty quick.
I need a delta to play around with.
Jeff
-
I just love really fast non-print moves which is why I'm keeping my micro-stepping low. My print speed is limited by how fast the Diamond hot end can melt filament which tops out at around the equivalent of 130mm/sec for PLA at the temperature I prefer to use. My default "everyday" print speed is around 80 to 90 mm/sec but non-print moves are set to 350 - 400mm/sec (but rarely reach that of course). When you start snapping around like that, you hardly need any retraction, even with longish Bowden tubes.
-
This is what I am mainly referring to, travel speed, I am using 120mm/s but have used 150 and 175 in the past. For small objects it makes little difference for large ones, it definitely saves time. I'd agree that quality printing above 90mm/s is not something I bother with.
-
Ok, this makes sense. I'm only running non print moves at 150 mm/s but perhaps will increase this. I find S3D does an OK job minimizing the number of NPM's so it might not make much difference. Certainly something I'm going to investigate more. I can print at 150mm/s so I suspect NPM's could be increased significantly.
Edit: Might be nice if NPM's could use a different acceleration value.