Acceleration as a function of speed
-
@deckingman
ANY variation to the rate of change of acceleration will result in jerky motion as defined in the physics sense. You cannot alter the rate of change of acceleration and get smooth motion.If we are not in a quantum world ANY motion is SMOOTH in physical sense ( the space is smooth anyway). I can't understand why max acceleration should depend on the speed if limitting factor is the max available force (max torque). a=F/m in classical physics no matter how fast we are moving.
-
@zov:
@deckingman
ANY variation to the rate of change of acceleration will result in jerky motion as defined in the physics sense. You cannot alter the rate of change of acceleration and get smooth motion.If we are not in a quantum world ANY motion is SMOOTH in physical sense ( the space is smooth anyway). I can't understand why max acceleration should depend on the speed if limitting factor is the max available force (max torque). a=F/m in classical physics no matter how fast we are moving.
The first derivative of position is velocity, the second derivative is acceleration, the third (rate of change of acceleration) is jerk, named because of how it manifests itself.
I think the OP is referring to the fact that the stepper motor torque drops off with speed so the maximum available force is speed dependent and therefore the maximum acceleration rate could be altered. I guess it would be possible if one looked ahead at the move, calculated the maximum speed it was likely to attain, then set the acceleration rate for that move (but you'd need to maintain that acceleration for the duration of the move otherwise you'll get jerky motion). Repeat the process for every move. That's an awful lot of processing to do on top of everything else that needs to happen. It's a lot easier to choose steppers that will give the necessary torque at the highest speed one is likely to use.
-
NO. That's completely wrong! Jerk as used by 3D printers is referred to as instantaneous speed change and is only applied when there is a change of direction, which usually only happens doing short segmented perimeter moves. Instantaneous speed changes are NEVER applied otherwise. ANY variation to the rate of change of acceleration will result in jerky motion as defined in the physics sense. You cannot alter the rate of change of acceleration and get smooth motion.
It is correct that "jerk" is only applied when direction changes, especially because it has a lot to do with "backlash".
But as mentioned by ZOV, nothing which is driven by a stepper (stepper says everything) is not "smooth in a mathematically sense" (That means continuous derivatives).Stepwise change of acceleration is also not possible. Therefore it never happens, as well as jerk never happens, because the mass and stiffness smooths the step. As long as you don´t lose a real step (not microsteps) it does not hurt anybody.
@ZOV:
The max force is a function of the torque. The torque start to drop of quite soon. If you use higher speeds, you have to limit your acceleration to the worst case torque - which is the small torque at higher speeds.E.g. torque at 100 rpm is 0.5 Nm, at 200 rpm 0.2 Nm. If you want to use 200 rpm even only for a very short time, you have to limit the acceleration even at slow speeds to 0.2 Nm torque - although the stepper could deliver 0.5 Nm.
-
It's a lot easier to choose steppers that will give the necessary torque at the highest speed one is likely to use.
I am sorry, but exactly this is not possible. More doesn´t help more and smaller steppers have exactly the same problem, only at a different level, until they are just too small.
Of course it is clear to choose the proper steppers, the link above from DC42 shows how to. But after you have done this, you still loose plenty of torque == printing quality and or printing time.
The difference in CPU resources is there, but depending on how it is solved not significant by definition.
Nobody says everybody has to use it.If the ramp parts of the 3 move phases are split in 2 parts, one part limiting the speed to speed_limit_1 (this is already done now) and the second part of the ramp is limited to speed_limit_2. For both parts 2 acceleration settings could be applied. I don´t believe that this is too CPU intensive. The change in acceleration does not matter at all in real life.
-
@deckingman:
The first derivative of position is velocity, the second derivative is acceleration, the third (rate of change of acceleration) is jerk, named because of how it manifests itself.I think the OP is referring to the fact that the stepper motor torque drops off with speed so the maximum available force is speed dependent and therefore the maximum acceleration rate could be altered.
For the sake of truth the smooth space is infinitely differentiable so any move is smooth by definition. I am not sure that stepper motor torque depends on speed of rotation very much but I may err, not fully my field of knoweledge.
Correction: I saw that MAX torque indeed depends on speed (Power = Torque x Angular Speed). I appologise for my misunderstanding.
-
@vp:
E.g. torque at 100 rpm is 0.5 Nm, at 200 rpm 0.2 Nm. If you want to use 200 rpm even only for a very short time, you have to limit the acceleration even at slow speeds to 0.2 Nm torque - although the stepper could deliver 0.5 Nm.
That's not true, because we use constant current stepper drivers. Torque is proportional to current, so torque is maintained as RPM increases up to the point at which the back emf due to inductance + back emf due to rotation + voltage drop due to resistance exceed the driver supply voltage, and the driver can no longer supply enough voltage to achieve the desired peak current.
It would be true using constant-voltage drivers though.
-
That's not true, because we use constant current stepper drivers.
Thanks David. It became crystal clear that variable acceleration is useless for our case.
-
@zov:
That's not true, because we use constant current stepper drivers.
Thanks David. It became crystal clear that variable acceleration is useless for our case.
I don't think it's completely useless. It would be useful if the combination of motor, drive voltage and drivechain gearing meant that it was not possible to maintain the specified motor current at high speeds. This could be the case for a printer that uses leadscrews for the X and Y axes, because of the high steps/mm of such an arrangement. But for belt-driven printers, I think it's usually possible to choose motors that don't run into the torque limit at the highest wanted RPM - especially when using a series 2 Duet with its 2.4A output capacity, because that allows you to to choose motors with lower inductance (and higher operating current) than when using the types of driver found in other 3D printer control electronics.
-
That's not true, because we use constant current stepper drivers. Torque is proportional to current, so torque is maintained as RPM increases up to the point at which the back emf due to inductance + back emf due to rotation + voltage drop due to resistance exceed the driver supply voltage, and the driver can no longer supply enough voltage to achieve the desired peak current.
It would be true using constant-voltage drivers though.
Are you sure of that? I never saw a torque vs speed curve with a flat part, then a falling part; they always start to fall as soon as rpm>0 (more or less quickly, depending on the supply voltage, for the rasons you mentioned). And I never saw constant voltage drivers (except diy ones)…
-
@vp:
…....................The change in acceleration does not matter at all in real life.
Try it next time you are driving your car. Rather than accelerating evenly, pump the accelerator up and down. Or conversely slow down by pumping the brake peddle instead of applying gentle even pressure. The jerk you will encounter is the result of altering the rate of change of acceleration (and it does matter in real life as well as in 3d printing).
-
@fma:
That's not true, because we use constant current stepper drivers. Torque is proportional to current, so torque is maintained as RPM increases up to the point at which the back emf due to inductance + back emf due to rotation + voltage drop due to resistance exceed the driver supply voltage, and the driver can no longer supply enough voltage to achieve the desired peak current.
It would be true using constant-voltage drivers though.
Are you sure of that? I never saw a torque vs speed curve with a flat part, then a falling part; they always start to fall as soon as rpm>0 (more or less quickly, depending on the supply voltage, for the rasons you mentioned). And I never saw constant voltage drivers (except diy ones)…
The curve you are talking about is for the case of constant driving voltage (nominal voltage applied to the DC motor). I think David is right as duet's drivers are constant current ones.
-
That's right, torque vs. speed curves are only relevant to constant voltage operation. If you wanted to publish a torque vs. speed curve for constant current operation, you would have to specify the actual RMS or peak used and the driver supply voltage, because both of those affect the point at which the torque starts to drop off.
-
At work, we use Nema 34 Slo-Syn steppers, and curves given by the manufacturer (sorry, I only have them on paper, and as I'm on holidays, I can't scan them) do specify driver supply voltage; I guess they give them for nominal current of the motor. And they usually show 2 or 3 curves, for different supply voltages (24V, 48V and 70V, if I remember correctly).
As I have these documentations for more than 20 years, and as we always used constant current drivers, I assumed constant voltage drivers were abandoned long ago…
-
Dear all,
i know very well what constant current vs constant voltage means, i am a CNC guy and in the very old past there was only constant voltage with all limitations.
Please do me a favour and just google –> https://www.google.at/search?q=stepper+torque+curve and check the pictures. I don´t understand why that is a secret here ?!?Because of back EMF as mentioned already several times the torque starts to drop at about 0-10 rps (revs per second, depending on supply voltage). The constant current ONLY applies in the low speed region, because afterwards (at higher speeds) the coil limits the current. The reason to use higher supply voltage is because of this effect. At 12V it starts at nearby 0 rps, at 24V before 5 and with high voltage (48 V and above) the constant current torque maybe gets to 10 rps.
5 rps means with a 16 GT2 pulley 5162 = 160 mm/s !!!!! I don´t know why a 3D printer should not operate in higher speed regions? At 12 V torque drops from "zero speed".
-
please do me a favor and e.g. check the following link: http://www.electrocraft.com/products/stepper/TPP23/ and go to the tab "speed/torque curves", there is nothing more to say
-
Well, so, there is a constant torque phase, but it is very small; at work, we operate far beyond that zone.
But as you showed, for a 3D printer, it is possible to operate at constant torque, using at least a 24V supply voltage…
Are Allegro or Ti chip constant current drivers? Or are they constant voltage ones?
-
The speed/torque curves that vp linked to are indeed specified for different supply voltages and a particular current, so they are applicable to constant current drivers.
I don't think vp has said which particular motor he has chosen, so I can't comment on his calculation that suggests he is limited to 160mm/sec before there is a significant torque reduction, or whether he has chosen the most appropriate motor from the range. But here are some points to note:
1. In 3D printers we normally run the motors well below their maximum current, because at maximum current the motors get very hot. At reduced current, the back emf due to inductance is lower, so the (reduced) torque is maintained to higher speeds. For example, if you halve the current, then the torque at low speeds will be half what is shown on the torque/speed curves and will be almost flat until it intercepts the torque/speed curve shown for the same motor and same driver voltage at full current.
2. Because we want precise motion during printing, we use 1/16 or greater microstepping, and to get position accuracy this means that the motors need to have far more holding torque than is needed to produce the acceleration demanded, so that we can maintain a position accuracy of around one 1/16 microstep. But high-speed travel moves don't need this accuracy during the high speed part of the motion, it's only the end of the move that needs to be accurate. So quite a large loss of torque is acceptable during the middle part of a travel move. If you know the mass of the print head or bed or whatever the motor is moving, you can work out the torque needed to produce the desired acceleration, and you just need to make sure the motor can provide this torque with a sufficient safety margin e.g. 2x.
3. If you are building a CNC machine and need motors with seriously high torque, you should use external drivers.
-
Thanks for the explanations!
-
I did choose WANTAI 42BYGHW811, in my setup, they should be able to achieve nearly 1g close to about 1500mm/s, without losing 1/16 micro step with a light direct driven extruder/hot end. I don´t have a "problem" at 160mm/s, this is just an example to show that if the torque drop starts with 12 V at "0" rps, this problem is existing in the normal operating range of 3D printer, just check the curves.
1. In 3D printers we normally run the motors well below their maximum current, because at maximum current the motors get very hot. At reduced current, the back emf due to inductance is lower, so the (reduced) torque is maintained to higher speeds. For example, if you halve the current, then the torque at low speeds will be half what is shown on the torque/speed curves and will be almost flat until it intercepts the torque/speed curve shown for the same motor and same driver voltage at full current.
This is not special for 3d printing, it is a good rule of thumb for every stepper application to use at max about 80 % of the specified amps. The steppers itself are normally rated to > 100°C surface temperature, I operate my steppers at about 80 % of the rated current and they get at max about 50 °C (also NEMA32s), which is at least for me no problem. Because P = IIR it is for sure sensitive to the chosen current - but it is also no trick to cool them and in the long term i will use mine at maybe > 100 % current.
Who operates his steppers at half of the design current? This 50 % comparison is completely misleading and even at 50 % and 12 V there is also before 5rps a torque drop. If somebody operates at 50 % i would suggest him to go for different (smaller and faster) steppers. But do these people buy a premium product like the Duet Wifi ?
2. Because we want precise motion during printing, we use 1/16 or greater microstepping, and to get position accuracy this means that the motors need to have far more holding torque than is needed to produce the acceleration demanded, so that we can maintain a position accuracy of around one 1/16 microstep. But high-speed travel moves don't need this accuracy during the high speed part of the motion, it's only the end of the move that needs to be accurate. So quite a large loss of torque is acceptable during the middle part of a travel move. If you know the mass of the print head or bed or whatever the motor is moving, you can work out the torque needed to produce the desired acceleration, and you just need to make sure the motor can provide this torque with a sufficient safety margin e.g. 2x.
Yes, that is one reason for the firmware change request, now we get back on track.
But i would say we don´t use 16 microsteps for finer resolution (with a 16 T GT2 pulley 16th means in theory 0.01 mm), because this fine steps never happen with this accuracy (e.g. stepper nonlinearities and all other mechanical errors of a 3D printer are much bigger) we just do it because it runs smoother and less noisy - and because it doesn´t cost anything. Maybe it can reduce some fancy patterns on deltas, but there only relative accuracy is needed. On xyz printers 16th stepping doesn´t improve accuracy at all.
I have to show more clearly what this request is for because it still seems to be not clear:
1. Many speed as well quality problems are extrusion related. Often people claim their E3D v6 cannot go above e.g. 50 mm/s because then under extrusion and so on is happening. They say the extrusion capacity is not enough - which is wrong. The problem is, that the hot end print speed varies and by that the extrusion rate. Unfortunately, molten plastics have a viscoelastic material law which brings the time factor in play. So any change in extrusion rate/speed is going to make problems - but this is not the root cause. The root cause is the varying printing speed. The root cause for the varying printing speed is a lack of useable acceleration which is limited by the mass/stiffness of the system and the stepper torque which is a function of speed .
Especially at lower layer heights and small nozzles or with e.g. a volcano, the extrusion capacity is enough for speeds far above 100 mm/s. But as soon as the speed drops the extrusion problems will occur. On youtube are enough videos showing damn fast prints - with a miserable print quality. I want fast prints with good quality - this is not possible without the maximum acceleration.
2. Many problems are retraction related. Why do we need retraction at all ? Because too much plastic would ooze out. The smartest way I know to overcome this problem is to give the oozing process no time. Half the time and you half the amount which could ooze out. If you print flexible material that is the only way to go. If you don´t need to retract (or less), problems of 1. are also reduced. Solve the problem by just increasing the speed of travel moves.
3. Think the other way round. With a Duet Wifi capable of acceleration as a function of speed, one could use smaller (faster) and cheaper steppers. This could mean one uses NEMA14 for normal printers or NEMA 17 instead of NEMA23 for big size printers.
4. printing time
Many prints need excessive amounts of travel moves. Normally most travel moves are short distance moves. Using a histogram to show the distribution of travel move length, it would be very heavy on the left side (much more short than long moves). What does short distance mean ? With 2g it takes 25 mm to reach 1000 mm/s, with 5g 10 mm. The problem is, that long travel moves need more time and increasing max travel speed would reduce the time significant. To increase max travel speed, i would have to reduce the max torque - also in the low speed region were most of the moves happen. Increasing max travel speed ends up to give no benefit, if the max torque on the low side has to be decreased.A higher acceleration in the low-speed region (printing) means a higher average printing speed and again a reduction of printing time.
5. Jerk. Jerk was introduces to get away from blobs on every corner (bleeding edges) and to decrease printing time. Unfortunately jerk is the most brutal way and is mostly based on backlash and low stiffness. In the old days both was existing at much higher levels than nowadays. Using too much jerk shows ringing/resonance artifacts in the print (as well as too high accelerations). Using 2 g it takes 0.0xyz mm to get to e.g. 20 mm/s. But it is much more gentle and gives by that less artifacts - or at same amount of artifacts much more printing speed. Jerk could be reduced to nearby 0 and substituted by "soft" acceleration. Doing so would be like a poor mans s-curve acceleration in the very low speed region.
6. Future developments like s-curve acceleration/moves. Although some people thinks it is too CPU intensive, for me it is clear that in future we will use something like s-curve like moves. This gives much more possible printing speed at same artifact level. But using s-curve like moves reduces at the same max acceleration the average acceleration - so in total the benefit is much smaller as it cold be. To overcome this problem, acceleration has to be really maximized - according speed.
Finally:
I don´t care at all, what people are doing now, i question for what is possible, i want to push the limits - and premium products like the Duet are bought because the "normal" stuff is not as good as it could be. It is not true that printing speed is limited by extrusion rate to e.g. 100 mm/s. It is limited by too much varying printing speed, caused by too low acceleration settings.
Why should we bottleneck our printers? Why should we waste resources?
I don´t care if I am able to use 5g in the low-speed region (<= 1000 mm/s) already now if I can get 8g…. or travel with 2000 mm/s instead of 1000 mm/s.BTW: On travel moves, the deflection of the printer parts doesn´t matter (nearby). When printing they become very significant at higher accelerations (e.g. > 1g), and more stiffness (a stiffer system means more mass) doesn´t help more. So finally the firmware will also have to address this problem because there is a mechanical material limit where engineering cannot increase the stiffness vs weight ratio anymore (see 6.).
[Edit: i added 5 and 6]
-
@vp:
On youtube are enough videos showing damn fast prints - with a miserable print quality. I want fast prints with good quality - this is not possible without the maximum acceleration.
Maybe you should take a look at this little video I did. It's to evaluate the effect of using pressure but it demonstrates high speed printing with good quality. https://www.youtube.com/watch?v=lnYYNfVoxmQ. Speeds up to 250mm/sec. Nice smooth acceleration with no jerk cause by any step change in the acceleration setting. This is all with a moving mass of around 4kgs, std Nema 17s.
Have you actually done any calculations on the time and distance it takes to travel X amount at Y acceleration? I think if you do you'll find that what you are requesting is simply a waste of time.
Edit…..........Oh, never mind.
2nd Edit. Here are some calcs pertinent to the video I linked to. Acceleration was set to 1200mm/sec^2. This was derived from the available torque of the motor (assuming all sorts of worse case scenarios) and the mass to be moved. The speed reached was 250 mm/sec. So the time to reach that speed is t=(Vf-Vi)/a = 0.208 seconds. The distance travelled during that acceleration phase was (1/2at^2) = 26.042 mm. Let's assume we used double the acceleration which is theoretically possible now that I am using two motors. So acceleration becomes 2400mm/sec^2. At that rate, the time to reach 250mm/sec is 0.104 seconds and the distance travelled during the acceleration phase is 13.021 mm. So your desire to use increased acceleration at low speeds will have an almost negligible effect on the overall print time (but if you change the acceleration rate mid move, it will lead to jerk and poor quality prints).