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

    Request for variable acceleration(slower acceleration at higher speed)

    Scheduled Pinned Locked Moved
    Firmware wishlist
    8
    64
    10.2k
    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.
    • Shenundefined
      Shen
      last edited by

      @T3P3Tony:

      A further point. This is already achievable in slicers to a certain extent by setting different max speeds for different areas. maybe the right answer is get slicers to have a "max velocity" as well as max speed.

      Btw Shen - that is one solid looking printer (/cnc machine!)

      Thanks. Yes, I designed it to be a printer and cnc machine based on the tool head. It prints very nicely, but with the 6kg Y gantry the vibration is huge I had to put it in the basement.

      1 Reply Last reply Reply Quote 0
      • botundefined
        bot
        last edited by

        Okay, I think we are all confusing each other. At the end of the day, we all seem to agree. Tony's conclusions seem best for now. Set your feedrate for the region as best as your slicer can. I agree with him that it would be nice if slicers could change acceleration on the fly. This would actually be very easy for it to do, though I'm not sure if acceleration change gcodes are executed in-time with the motion-planning. If not, this would be a good place to start for this: to allow the slicer to set the acceleration (and jerk values?) in real time.

        *not actually a robot

        1 Reply Last reply Reply Quote 0
        • Shenundefined
          Shen
          last edited by

          I made small test, it looks like there is a small delay to the M201 command which changes the acceleration. I'm going to see if there is any command that would cause the M201 command to apply(as a side effect).
          Update: Looks like adding a G92 command before the M201 command produces the correct behavior, at least for the simple test I made. I will run some variable acceleration test, as soon as I finish reworking my extruder/hotend assembly.

          1 Reply Last reply Reply Quote 0
          • Zesty_Lykleundefined
            Zesty_Lykle
            last edited by

            Interesting discussion.

            Lykle
            Design, make and enjoy life

            Co Creator of the Zesty Nimble

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

              @Shen:

              I made small test, it looks like there is a small delay to the M201 command which changes the acceleration. I'm going to see if there is any command that would cause the M201 command to apply(as a side effect).
              Update: Looks like adding a G92 command before the M201 command produces the correct behavior, at least for the simple test I made. I will run some variable acceleration test, as soon as I finish reworking my extruder/hotend assembly.

              M201 will not affect the acceleration of moves that are already in the move queue. If you want to insert M201 in a gcode file, put a M400 command before it to wait for all previous moves to complete.

              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 0
              • InSanityundefined
                InSanity
                last edited by

                I'm assuming this firmware is fast enough that the M400 wouldn't even be noticed , i.e. the queue will empty and fill again before the motors even have a chance to slow ?

                Jeff

                Duet WiFi Powered FFCP with E3D legends hotend system. BLTouch grid leveling.

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

                  No, the motors will come to a standstill because the move scheduler won't know that a new move is about to arrive.

                  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 0
                  • dc42undefined
                    dc42 administrators
                    last edited by

                    No, the motors will come to a standstill because the move scheduler won't know that a new move is about to arrive. However, I've thought about it some more, and I don't believe the M400 is necessary after all. The situation in which you get a delay is if you are printing from SD card and you send the M201 command from another channel e.g. the web interface.

                    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 0
                    • InSanityundefined
                      InSanity
                      last edited by

                      @dc42:

                      No, the motors will come to a standstill because the move scheduler won't know that a new move is about to arrive. However, I've thought about it some more, and I don't believe the M400 is necessary after all. The situation in which you get a delay is if you are printing from SD card and you send the M201 command from another channel e.g. the web interface.

                      Makes sense, so more or less the speed change from the SD card just falls inline with the normal queue and nothing else is needed. Got it.

                      Jeff

                      Duet WiFi Powered FFCP with E3D legends hotend system. BLTouch grid leveling.

                      1 Reply Last reply Reply Quote 0
                      • botundefined
                        bot
                        last edited by

                        I was wondering, that, too. So if it's inline with the gcode, it will be picked up just like any other move gcode and put in the queue?

                        Also, would it be easy to implement a "dwell" term to the jerk rate? As in, a period of time in ms that would be waited after hitting the jerk rate, before acceleration begins? This might make it easy to tune the ringing out of corners while maintaining a high acceleration.

                        *not actually a robot

                        1 Reply Last reply Reply Quote 0
                        • deckingmanundefined
                          deckingman
                          last edited by

                          @bot:

                          I can't understand at all why accelerating fast, for slow moves makes sense. Maybe that is what deckingman is thinking. What is the point of variable acceleration, if not to improve visual print/surface finish quality? If the point is to improve surface finish, I don't see how accelerating FASTER during slow moves and slower during fast moves is going to help at all. This is why I proposed the opposite – which would be useful to everyone, including those with ballscrews instead of belts for motion.

                          Why would it be useful to accelerate faster during slow moves, and slower during fast moves?

                          That was exactly my point - well one of them.

                          Back to basic physics. The first derivative of position with respect to time is velocity. The second derivative is acceleration. So variable acceleration would be the third derivative - i.e the rate of change of acceleration. Now go look up the definition of the third term of position - I'll save you the time, it's variously known as jerk, jolt, lurch, or surge. This is what you want to introduce?

                          Ian
                          https://somei3deas.wordpress.com/
                          https://www.youtube.com/@deckingman

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

                            Ian, yes that would appear to be what is being asked for. but I am still not sure its required to maintain the desired velocity curve.

                            The velocity is actually the variable we are trying to control.

                            www.duet3d.com

                            1 Reply Last reply Reply Quote 0
                            • deckingmanundefined
                              deckingman
                              last edited by

                              @T3P3Tony:

                              Ian, yes that would appear to be what is being asked for. but I am still not sure its required to maintain the desired velocity curve.

                              The velocity is actually the variable we are trying to control.

                              That is my point. The rate of change of velocity is acceleration and it should be linear for smooth motion. The moment you start varying it, i.e putting a curve on to it, you introduce jerk (in the physics sense). It is unavoidable.

                              A couple of simple illustrations. When you are driving your car and you break to a standstill, it may sop with jerk. Learner drivers do this all the time. Some of us adapt and just before the car actually stops we ease off the brake, very slightly (my wife doesn't and all the passengers nod their heads). You probably do it subconsciously but next time you are out driving, think about how you come to a stop. What happens is that as the breaks heat up, they become more efficient and the rate of deceleration actually increases for the same pedal pressure, so you come to stop with jerk. When you ease off the brake pedal ever so slightly, you maintain a linear deceleration and come to a smooth stop. It is very important to know that you are NOT slowing the rate of deceleration when you do this, otherwise you would never actually come to a stop at all, you are merely maintaining linear deceleration.

                              We see it in engineering all the time. Camshaft profiles are designed to give linear acceleration to the valve stem. When they don't, valves bounce off their seats instead closing smoothly. In extreme circumstances the torsional vibration will strip the teeth of the belts or pulleys and wreck the whole valve train. Have you ever driven a car with severe turbo lag? It's awful and another example of non-linear acceleration. Designers and engineers spend hours and hours designing throttle linkages so that you get nice progressive, linear response to the movement of the pedal. If they didn't you'd find either the first 1/16 of the pedal movement gave you half the acceleration and the remaining 15/16th gave you the other half (or vica versa) which would make the car un-driveable.

                              So having spent half a lifetime dealing with various manifestations of non-linear acceleration and deceleration, you can maybe begin to understand why I think it a bad idea.

                              Ian
                              https://somei3deas.wordpress.com/
                              https://www.youtube.com/@deckingman

                              1 Reply Last reply Reply Quote 0
                              • InSanityundefined
                                InSanity
                                last edited by

                                If my driving had a jerk setting it would be around 150 🙂 It best start fast and stop sudden, I rarely have passengers.

                                Duet WiFi Powered FFCP with E3D legends hotend system. BLTouch grid leveling.

                                1 Reply Last reply Reply Quote 0
                                • deckingmanundefined
                                  deckingman
                                  last edited by

                                  @(In)Sanity:

                                  If my driving had a jerk setting it would be around 150 🙂 It best start fast and stop sudden, I rarely have passengers.

                                  Yes, I've come across quite a few drivers with high jerk settings.

                                  Ian
                                  https://somei3deas.wordpress.com/
                                  https://www.youtube.com/@deckingman

                                  1 Reply Last reply Reply Quote 0
                                  • botundefined
                                    bot
                                    last edited by

                                    This is a great explanation. I used to drive for business a lot, with passengers who were important to the company, so I got good at "limousine stopping" as they called it. You couldn't even tell precisely when we stopped, it was so smooth.

                                    *not actually a robot

                                    1 Reply Last reply Reply Quote 0
                                    • InSanityundefined
                                      InSanity
                                      last edited by

                                      So now we need hot end assemblies that float in a magnetic field and perfectly brake when slowing down via precisely controlled magnetic force. Lol, a magnetic shock absorber if you would.

                                      Jeff

                                      Duet WiFi Powered FFCP with E3D legends hotend system. BLTouch grid leveling.

                                      1 Reply Last reply Reply Quote 0
                                      • botundefined
                                        bot
                                        last edited by

                                        I want that very much: linear stepper motors.

                                        http://www.intellidrives.com/AppNotes_Linear_actuators_LinearSepperMotorsHowLinearStepperWorks.htm

                                        *not actually a robot

                                        1 Reply Last reply Reply Quote 0
                                        • deckingmanundefined
                                          deckingman
                                          last edited by

                                          Also guys, don't forget that the amount of extruded filament has to follow what the axes movements are doing. Even if you could persuade the head to move in the manner that has been suggested, do you seriously think that the filament would do likewise? All you'd get are pressure pulses adding even more unpredictability into the system.

                                          Ian
                                          https://somei3deas.wordpress.com/
                                          https://www.youtube.com/@deckingman

                                          1 Reply Last reply Reply Quote 0
                                          • InSanityundefined
                                            InSanity
                                            last edited by

                                            @deckingman:

                                            Also guys, don't forget that the amount of extruded filament has to follow what the axes movements are doing. Even if you could persuade the head to move in the manner that has been suggested, do you seriously think that the filament would do likewise? All you'd get are pressure pulses adding even more unpredictability into the system.

                                            Your no fun 🙂

                                            Duet WiFi Powered FFCP with E3D legends hotend system. BLTouch grid leveling.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA