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

Pressure Advance Calibration

Scheduled Pinned Locked Moved
Tuning and tweaking
52
187
60.3k
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.
  • undefined
    dc42 administrators
    last edited by 14 Oct 2018, 16:04

    They should both be treated exactly the same.

    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

    undefined 1 Reply Last reply 14 Oct 2018, 18:40 Reply Quote 0
    • undefined
      LHelge @dc42
      last edited by 14 Oct 2018, 18:40

      @dc42 That's a little bit contradictory to what's written in the feedrate part of G0/G1 documentation: https://duet3d.dozuki.com/Wiki/Gcode#Section_G0_G1_Move

      G1 F1500
      G1 X50 Y25.3 E22.4
      In the above example, we set the feedrate to 1500mm/minute on line 1, then move to 50mm on the X axis and 25.3mm on the Y axis while extruding 22.4mm of filament between the two points.
      G1 F1500
      G1 X50 Y25.3 E22.4 F3000
      However, in the above example, we set a feedrate of 1500mm/minute on line 1, then do the move described above accelerating to a feedrate of 3000 mm/minute as it does so. The extrusion will accelerate along with the X and Y movement, so everything stays synchronized.
      Feedrate is treated as simply another variable (like X, Y, Z, and E) to be linearly interpolated. This gives complete control over the acceleration and deceleration of the printer head in such a way that ensures that everything moves smoothly together, and the right volume of material is extruded at all points. The feedrate specified may not be reached due to a lower feedrate limit being configured, or the move being too short for the axis to accelerate and decelerate in time.

      1 Reply Last reply Reply Quote 0
      • undefined
        RCarlyle @dc42
        last edited by 15 Oct 2018, 01:38

        @dc42 Why doesn’t RRF use jerk in those cases?

        undefined 1 Reply Last reply 15 Oct 2018, 10:17 Reply Quote 0
        • undefined
          dc42 administrators @RCarlyle
          last edited by 15 Oct 2018, 10:17

          @rcarlyle said in Pressure Advance Calibration:

          @dc42 Why doesn’t RRF use jerk in those cases?

          The reason for having jerk is so that if you print a curve made up form short line segments, the print head can maintain a constant speed. Without jerk it would have to stop at the boundaries between segments, to avoid an instantaneous change in X or Y speed due to the small change in direction. Jerk is not required in other cases.

          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

          undefined 1 Reply Last reply 16 Oct 2018, 01:37 Reply Quote 1
          • undefined
            RCarlyle @dc42
            last edited by 16 Oct 2018, 01:37

            @dc42 If jerk benefits you on extrusion-extrusion corners, it will also benefit you on starts, stops, travel-extrusion changes, and extrusion-travel changes. From a speed standpoint at least, if not so much blobbing. I could see it affecting performance of coast, as well, if you slow to a stop between the last print segment and the start of the first coast segment. What’s the downside of doing it?

            Another question if you don’t mind, since we’re talking about it... does RRF ever use different entry/exit speeds at the same corner? For example, if two colinear segments have different feedrates, will RRF decel all the way to the new speed, or will it jerk at the corner?

            undefined 1 Reply Last reply 16 Oct 2018, 08:27 Reply Quote 0
            • undefined
              deckingman @RCarlyle
              last edited by 16 Oct 2018, 08:27

              @rcarlyle said in Pressure Advance Calibration:

              @dc42 If jerk benefits you on extrusion-extrusion corners, .....................

              But does it offer a benefit? My take on it is that "jerk" or instantaneous speed change is just horrible (as it's name implies). As David has pointed out, it is necessary for segmented curves otherwise the print head would have to decelerate to a complete stop at the end of every segment, before starting the next so the time to complete a segmented arc move would be just too long. The same could be said for any situation where there are a series of very small moves. The only "benefit" is that it saves time in those situations but in terms of motion control, it's just horrible. I just think of "jerk" as a necessary evil that we have to put up with.

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

              undefined 1 Reply Last reply 16 Oct 2018, 15:34 Reply Quote 0
              • undefined
                dc42 administrators
                last edited by dc42 16 Oct 2018, 14:30

                Using XY jerk on starts/stops etc. would require intentional extruder jerk too. In order to apply pressure advance to a move that requires extruder jerk, it would be necessary to instantaneously advance or retract the filament by the appropriate amount (the amount of extruder jerk required multiplied by the pressure advance time). That's even more impossible than changing the speed instantaneously.

                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

                undefined 1 Reply Last reply 17 Oct 2018, 22:13 Reply Quote 0
                • undefined
                  DigitalVision @deckingman
                  last edited by 16 Oct 2018, 15:34

                  @deckingman said in Pressure Advance Calibration:

                  I just think of "jerk" as a necessary evil that we have to put up with.

                  Based on some experimentation I theorize that some "jerk" might actually be advantageous and make the motion smoother. Consider the motion platform a dynamic system (difference in actual vs commanded nozzle position). This can be modeled as a spring-damper system, which models e.g. ringing artifacts. "jerk" effectively puts some pre-tension on the spring in this system which in some of my tests seems to lead to a more faithful adherence to a linear acceleration profile, and in turn make the assumption pressure advance is based on more accurate.

                  1 Reply Last reply Reply Quote 0
                  • undefined
                    RCarlyle @dc42
                    last edited by 17 Oct 2018, 22:13

                    @dc42 other firmwares use extruder jerk with no issues. High E jerk is commonly used to improve retraction performance with geared 3mm filament extruders. Sailfish even allows small instant position jumps with E axis pressure advance. It works great!

                    Remember, there’s a “torsion spring” torque/error relationship between the stepper driver’s coil energization angle and the physical rotor angle. A position jump of a few microsteps just rapidly changes the instantaneous torque on the rotor. There’s absolutely nothing wrong with doing that on an extruder which is highly damped. In fact, I would say it’s highly desirable since it lets you unload the built-up pressure/compression a lot faster.

                    Imagine an extruder pushing right up near stall (one full step of load angle) and you want to retract. Why would you gradually accelerate through the ”dead travel” of >1 full step of coil energization angle between peak forward torque and applying reverse torque?

                    1 Reply Last reply Reply Quote 0
                    • undefined
                      dc42 administrators
                      last edited by 18 Oct 2018, 09:02

                      @RCarlyle, I understand what you are saying, especially in regard to using extruder jerk or position jump to increase initial retraction speed. Maybe I will implement that. However, the movement in 3D printer firmware seems to be in the opposite direction, towards using S-curve acceleration. Once we have S-curve acceleration it becomes possible to compensate for elasticity in the motion system.

                      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

                      undefined 1 Reply Last reply 20 Oct 2018, 14:43 Reply Quote 0
                      • undefined
                        Synapsis
                        last edited by 18 Oct 2018, 21:48

                        After going from rods to lineat Hiwin guides I tried your test print. This is the results I get.
                        I'm no expert so I would like to know what could be done to better the print.
                        alt text

                        Thanks for the info and any help

                        undefined 1 Reply Last reply 20 Oct 2018, 16:28 Reply Quote 0
                        • undefined
                          RCarlyle @dc42
                          last edited by 20 Oct 2018, 14:43

                          @dc42 what’s the thinking on how you improve elasticity compensation with S-curve motion? (Not disagreeing; just don’t know what the approach is)

                          undefined 1 Reply Last reply 20 Oct 2018, 17:11 Reply Quote 0
                          • undefined
                            DigitalVision @Synapsis
                            last edited by 20 Oct 2018, 16:28

                            @synapsis, it's a bit hard to see from that photo, but here's roughly what I think you see:

                            0_1540052464500_test_print.jpg

                            It's a bit weird that the four different bands look so different from each other. What are your jerk and acceleration settings? What type of extruder?

                            For the right setting here, I'd try the orange arrow location. Above it pressure advance is too aggressive leading to under-extrusion during deceleration.

                            1 Reply Last reply Reply Quote 0
                            • undefined
                              dc42 administrators @RCarlyle
                              last edited by dc42 20 Oct 2018, 17:11

                              @rcarlyle said in Pressure Advance Calibration:

                              @dc42 what’s the thinking on how you improve elasticity compensation with S-curve motion? (Not disagreeing; just don’t know what the approach is)

                              My thinking is this. Let's assume a Cartesian printer for now. In order to accelerate (say) the X axis, the motor and belt have to impart a force to the head given by F=ma. But the belt and the motor are springy, so in order to really impart force F to the mass of the print carriage, the motor must move by an additional amount S=ma/k where k is the spring constant. If the acceleration changes abruptly, then this requires instantaneous changes in motor position, which are impossible; but if we use S-curve acceleration then the required changes in motor position are gradual and should be achievable.

                              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
                              • undefined
                                Synapsis
                                last edited by 20 Oct 2018, 17:26

                                Thanks for the reply. my setting at the moment are
                                M92 X160 Y160 Z3200 E837 ; Set axis steps/mm Set extruder steps/mm
                                M350 X16 Y16 Z16 E16 I1 ; Set 16x microstepping with interpolation
                                M566 X500 Y500 Z150 E500 ; Maximum jerk speeds mm/minute
                                M201 X1200 Y1200 Z18 E800 ; Accelerations (mm/s^2)
                                M203 X12000 Y12000 Z120 E12000 ; Maximum speeds (mm/min)
                                M906 X1200 Y1200 Z1800 E1200 I30 ; Set motor currents (mA)extruder current just enough will click not strip

                                I have a Titan Aero and have set my pressure advance to the settings that are in the first post. Opps just seen that in fact there are 0 and not 0.074 I try and take a better picture in day light.

                                1 Reply Last reply Reply Quote 0
                                • undefined
                                  DigitalVision
                                  last edited by 20 Oct 2018, 19:07

                                  Here are measurements from three different step functions in extrusion rates:

                                  0_1540059384616_85c38dae-b378-4696-a943-91d89c25ebb5-image.png

                                  And here they are individually:

                                  0_1540058967869_b0c174c6-e88f-4796-9d51-0df9f0d30e5b-image.png

                                  I'd not completely trust these measurements. There is some hysteresis in the measurement jig that makes these values not perfectly repeatable (probably varies by up to ±5 % when remeasured), and the lower speed extrusions suffer from some extrusion pulsing that makes a width measurement more questionable. That being said – the general shape and trends should be fairly accurately captured.

                                  Let's try to create a simple model: Assume there is a property p that roughly corresponds to what one could call 'pressure' inside of the hot end, and let's assume the rate of change of this property with time corresponds to

                                  p'(t) = i(t) - o(t),

                                  where i is the input rate (feed rate) of filament into the hot end, and o is the output or extrusion rate of molten plastic from the nozzle. We then assume that the extrusion rate is a function of this property p: o = f(p). The simplest possible function is a simple linear correspondence:

                                  o = k*p

                                  for some k. Substituting this function into the change rate p'(t) gives:

                                  p'(t) = i(t) - k*p(t),

                                  Which gives a simple differential equation. Fitting this to the data to find the model parameter k yields the following results:

                                  0_1540060832165_5f6e6cad-44a4-4fb6-aa8c-a4eab1e16b9a-image.png

                                  The optimal model parameter found was k = 6.507 (the unit for i and o is mm^3/s). While this extremely simple model is obviously not a perfect fit (there seems to be some second order lagging extrusion), it still seems to explain most of the observed behavior.

                                  @dc42, would this model be similar or even identical to the one currently used?

                                  undefined 1 Reply Last reply 7 Nov 2018, 15:04 Reply Quote 0
                                  • undefined
                                    dc42 administrators
                                    last edited by dc42 24 Oct 2018, 10:32

                                    Yes, that's the same model as assumed by the pressure advance algorithm.

                                    Have you tried repeating the measurements with pressure advance of about 0.2sec applied?

                                    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

                                    undefined 1 Reply Last reply 1 Nov 2018, 04:09 Reply Quote 0
                                    • undefined
                                      DigitalVision @dc42
                                      last edited by DigitalVision 11 Apr 2018, 16:43 1 Nov 2018, 04:09

                                      @dc42 said in Pressure Advance Calibration:

                                      Yes, that's the same model as assumed by the pressure advance algorithm.

                                      Cool. Thanks for confirming!

                                      Have you tried repeating the measurements with pressure advance of about 0.2sec applied?

                                      Yes, but in short it doesn't work. Pressure advance doesn't seem to be applied when doing extruder feedrate-only changes like I do here. E.g.

                                      G1 X40.000 Y100.000
                                      G1 X140.000 Y100.000 E2.4945 F3600
                                      G1 X200.000 Y100.000 E3.4923 F3600
                                      G1 X260.000 Y100.000 E1.4967 F3600
                                      

                                      Outside of this test – running pressure advance with a time constant of 0.2 leads to severe under-extrusion during deceleration moves. It is a direct drive non-bowden extruder where I get best results with pressure advance of around 0.08s.

                                      Here's another more precise measurement with a corresponding linear model fit. 0_1541041730586_678c21bc-b37f-417b-b7db-59d53d123116-image.png

                                      The lagging extrusion compared to the model on the last positive impulse is curious and consistently repeatable. My only hypothesis so far is that the extruder melt pool cools down during the high rate impulses sufficiently to increase the viscosity and slow down the response – but that's far fetched. It shouldn't be related to deceleration since the acceleration ramp should be much much shorter (0.03 s) than the scale here.

                                      1 Reply Last reply Reply Quote 0
                                      • undefined
                                        dc42 administrators
                                        last edited by 1 Nov 2018, 10:44

                                        I'm sorry, I forgot that pressure advance won't be applied to changing extrusion feed rates, if the change in feed rate is within the extruder jerk setting so no deceleration and acceleration is needed. This is because applying pressure advance would need an instantaneous movement of the extruder stepper motor. Changes in extrusion per unit travel without a speed change are fortunately not usual when 3D printing.

                                        Can you do a similar test with the extrusion amount per XY distance moved kept constant but the speed changed? That will cause normal acceleration/deceleration profiles to be used and pressure advance to be applied.

                                        I am surprised that your model appears to show an extruder time constant of about 0.2sec, when 0.08sec works better with your printer (and is a more reasonable value to use with a non-Bowden extruder). Are you sure you have computed the time scale correctly?

                                        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
                                        • undefined
                                          garis @LHelge
                                          last edited by 2 Nov 2018, 22:51

                                          @lhelge Re Zesty Nimble: Yes!

                                          The E acceleration and jerk settings are an issue, perhaps other settings.

                                          No words of wisdom to help except I am in an endless loop of iterations of tuning !! (Variations of) the advance_cal.py script is proving useful to me for testing other settings including Zesty jerk and acceleration and my PETG prints have crossed the threshold of being acceptable. My settings are for a Volcano 0.6mm and are possibly not transferrable.

                                          undefined 1 Reply Last reply 3 Nov 2018, 20:31 Reply Quote 0
                                          • First post
                                            Last post
                                          Unless otherwise noted, all forum content is licensed under CC-BY-SA