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

Printhead jerks when moving.

Scheduled Pinned Locked Moved Solved
General Discussion
4
17
681
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
    tkln
    last edited by tkln 7 Jun 2023, 09:32 6 Jul 2023, 09:31

    Hello,

    When I let the print head move with the gcode, it jerks a lot.
    What can I tune to make it better?

    G1 X Y Z U V W H2
    

    Here is a video for a better understanding:

    Printhead_jerk_movment.mp4

    1 Reply Last reply Reply Quote 0
    • undefined
      droftarts administrators @tkln
      last edited by 12 Jul 2023, 11:34

      @tkln As @jay_s_uk says, when using H2 you're not moving as a delta any more. Without H2, it reverts to delta motion on X, Y and Z. I think you're going to need to modify the firmware to either allow H2 moves to be added to the motion planning queue (so it doesn't come to a stop after each one - at least I think that's what's happening), or amend the kinematics to control the axes correctly (trickier).

      Ian

      Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

      undefined 1 Reply Last reply 12 Jul 2023, 11:46 Reply Quote 1
      • undefined
        dc42 administrators
        last edited by 6 Jul 2023, 09:41

        @tkln usually this is caused by using mesh bed compensation and having the Z jerk set too low in the M566 command, so that the print head has to slow down when the Z movement needs to change speed or reverse.

        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 7 Jul 2023, 14:27 Reply Quote 0
        • undefined
          tkln @dc42
          last edited by 7 Jul 2023, 14:27

          @dc42
          I set the jerk value very high but nothing changed.
          I steer the motors directly with the H2 command.
          Can it be that it has something to do with the G1 H2 command?

          1 Reply Last reply Reply Quote 0
          • undefined
            dc42 administrators
            last edited by dc42 7 Jul 2023, 14:55 7 Jul 2023, 14:54

            @tkln said in Printhead jerks when moving.:

            I set the jerk value very high but nothing changed.

            How high?

            Please share your config.g file.

            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 7 Jul 2023, 15:21 Reply Quote 0
            • undefined
              tkln @dc42
              last edited by tkln 7 Oct 2023, 09:59 7 Jul 2023, 15:21

              @dc42

              I set the value for M566 up to 9000 but it didn't help.

              So if I move with coupled axes

              M584 X0.4:0.5 Y0.2:0.3 Z0.0:0.1 E1.0
              

              everything works fine with a value of M566 1200.
              As soon as I decouple the motors like this , the movement jerks a lot.

              M584 X0.4 Y0.5 Z0.0 U0.1 V0.2 W0.3 P6 ; Motoren entkoppeln
              M350 X16 U16 Y16 V16 Z16 W16 E16 I1 ; configure microstepping with interpolation (*)
              M92 X160.00 U160.00 Y160.00 V160.00 Z160.00 W160.00 E690.00 ; set steps per mm (*)
              M566 X1200.00 U1200.00 Y1200.00 V1200.00 Z1200.00 W1200.00 E300.00 ; set maximum instantaneous speed changes (mm/min) (*)
              M203 X18000.00 U18000.00 Y18000.00 V18000.00 Z18000.00 W18000.00 E7200.00 ; set maximum speeds (mm/min) (*)
              M201 X1000.00 U1000.00 Y1000.00 V1000.00 Z1000.00 W1000.00 E3000.00 ; set accelerations (mm/s^2) (*)
              M906 X1600 U1600 Y1600 V1600 Z1600 W1600 E1200 I80 ; current (A)
              G92 X0 Y0 Z0 U0 V0 W0
              G91
              M83 ; use absolute distances for extrusion

              This is the config. file:

              ; Drives
              M569 P0.0 S0 ; physical drive 0.0 goes forwards (y1)
              M569 P0.1 S1 ; physical drive 0.1 goes forwards (y2)
              M569 P0.2 S0 ; physical drive 0.2 goes forwards (x1)
              M569 P0.3 S1 ; physical drive 0.3 goes forwards (x2)
              M569 P0.4 S0 ; physical drive 0.4 goes forwards (z1)
              M569 P0.5 S0 ; physical drive 0.5 goes forwards (z2)
              M569 P1.0 S0 ; physical drive 1.0 goes forwards (Extruder 1)
              M584 X0.4:0.5 Y0.2:0.3 Z0.0:0.1 E1.0
              M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation FUNKTIONIERT!
              M92 X160.00 Y160.00 Z160.00 E690.00 ; set steps per mm FUNKTIONIERT!
              M566 X1200.00 Y1200.00 Z1200.00 E600.00 ; set maximum instantaneous speed changes (mm/min) FUNKTIONIERT!
              M203 X18000.00 Y18000.00 Z18000.00 E7200.00 ; set maximum speeds (mm/min) FUNKTIONIERT!
              M201 X1000.00 Y1000.00 Z1000.00 E3000.00 ; set accelerations (mm/s^2) FUNKTIONIERT!
              M906 X1600 Y1600 Z1600 E1200 I80 ; set motor currents (mA) and motor idle factor in per cent FUNKTIONIERT!
              M84 S30
              M208 Z0 S1
              M574 X2 S1 P"io5.in+io6.in" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin 1.io1.in
              M574 Y2 S1 P"io3.in+io4.in" ; configure switch-type (e.g. microswitch) endstop for high end on Y via pin 1.io2.in
              M574 Z2 S1 P"io1.in+io2.in"
              M558 P8 R0.4 H10 C"io8.in+io8.out" F1200
              G31 P100 X0 Y0 Z-0.1 ; set Z probe trigger value, offset and trigger height
              M557 R85 S20
              M308 S0 P"temp0" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin temp0
              M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0
              M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit
              M140 H0 ; map heated bed to heater 0
              M143 H0 S120 ; set temperature limit for heater 0 to 120C
              M308 S1 P"1.temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin temp3
              M950 H1 C"1.out0" T1 ; create nozzle heater output on 1.out0 and map it to sensor 1
              M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
              M143 H1 S280 ; set temperature limit for heater 1 to 280C
              M950 F0 C"1.out7" Q500 ; create fan 0 on pin 1.out7 and set its frequency
              M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
              M950 F1 C"1.out6" Q500 ; create fan 1 on pin 1.out6 and set its frequency
              M106 P1 S1 H1 T45
              M563 P0 S"SIX" D0 H1 F1 ; define tool 0
              G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
              G10 P0 R0 S0
              1 Reply Last reply Reply Quote 0
              • undefined
                tkln
                last edited by 11 Jul 2023, 08:26

                @dc42
                Or do I have to consider something else when I use the G1 H2 command?

                undefined 1 Reply Last reply 11 Jul 2023, 11:56 Reply Quote 0
                • undefined
                  droftarts administrators @tkln
                  last edited by droftarts 7 Nov 2023, 12:01 11 Jul 2023, 11:56

                  @tkln I don't know if this will help, but I think it may be related to how the axes are paired. You have

                  M584 X0.4 Y0.5 Z0.0 U0.1 V0.2 W0.3 P6
                  

                  and

                  M584 X0.4:0.5 Y0.2:0.3 Z0.0:0.1 E1.0
                  

                  When you change to 6 axes, the Y axis changes from driver 0.5 to driver 0.2 and 0.3. The other axes are similar: X adds on the Y driver 0.5 (rather than U) and Z adds the U driver. This seems strange to me, and may be causing the firmware issues. You should try defining the axes in pairs such that X:U, Y:V and Z:W. Then when you change to 6 axes, X, Y and Z stay as X, Y and Z. I'd also define all axes in config.g, and then you only have to reconfigure X, Y and Z when you change. eg, in config.g try:

                  M584 X0.4:0.1 Y0.5:0.2 Z0.0:0.3 U0.1 V0.2 W0.3 E1.0 P3 ; Motoren entkoppeln
                  M350 X16 U16 Y16 V16 Z16 W16 E16 I1 ; configure microstepping with interpolation (*)
                  M92 X160.00 U160.00 Y160.00 V160.00 Z160.00 W160.00 E690.00 ; set steps per mm (*)
                  M566 X1200.00 U1200.00 Y1200.00 V1200.00 Z1200.00 W1200.00 E300.00 ; set maximum instantaneous speed changes (mm/min) (*)
                  M203 X18000.00 U18000.00 Y18000.00 V18000.00 Z18000.00 W18000.00 E7200.00 ; set maximum speeds (mm/min) (*)
                  M201 X1000.00 U1000.00 Y1000.00 V1000.00 Z1000.00 W1000.00 E3000.00 ; set accelerations (mm/s^2) (*)
                  M906 X1600 U1600 Y1600 V1600 Z1600 W1600 E1200 I80 ; current (A)

                  Then to swap to 6 axes, just send

                  M584 X0.4 Y0.5 Z0.0 P6
                  

                  To swap back, send:

                  M584 X0.4:0.1 Y0.5:0.2 Z0.0:0.3 P3
                  

                  This will change which axis moves the effector in which direction, but I think this should be more consistent for the firmware. I'm not entirely sure what this will do to homing; eg if you home X, Y and Z as normal in 3 axis mode, whether U, V and W are marked as homed as well, and what happens when you change over, ie if they all become unhomed (I don't think they will).

                  Ian

                  Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                  undefined 1 Reply Last reply 11 Jul 2023, 22:14 Reply Quote 0
                  • undefined
                    tkln @droftarts
                    last edited by 11 Jul 2023, 22:14

                    @droftarts
                    Thanks for your answer but unfortunately that didn't work either.
                    My gcode looks like this:
                    Do I have to add something else so that the movement is not so jerky

                    G1 X11.7164 Y12.161 Z0.26626 U0.26626 V-9.91903 W-10.3636 E1.6307 F3000 H2
                    G1 X6.65954 Y6.65946 Z-12.2144 U-12.2144 V6.65778 W6.65786 E0.8963 F3000 H2
                    G1 X-11.5935 Y-11.5935 Z-0.579091 U-0.579091 V10.2774 W10.2774 E0.1618 F3000 H2
                    G1 X-6.76609 Y-6.76601 Z12.2234 U12.2234 V-6.56607 W-6.56615 E0.8963 F3000 H2
                    G1 X0.402068 Y0.402067 Z-0.17198 U-0.17198 V-0.0989229 W-0.0989218 E0.0 F3000 H2
                    G1 X-0.027972 Y-0.0279724 Z-0.070774 U-0.070774 V0.0934805 W0.093481 E0.0126 F3000 H2
                    G1 X0.0696473 Y0.0696465 Z-0.111242 U-0.111242 V0.0675966 W0.0675973 E0.0152 F3000 H2
                    1 Reply Last reply Reply Quote 0
                    • undefined
                      tkln
                      last edited by 12 Jul 2023, 09:50

                      I have now also tested moving the motors in the coupled state with the G1 H2 command and the movement is just as jerky as when it is uncoupled.

                      ....
                      G1 X0.0583302 Y0.0583302 Z-0.0881923 E0.0135 F500.0 H2
                      G1 X0.112918 Y0.112918 Z-0.171268 E0.0263 F500.0 H2
                      G1 X0.00815441 Y0.00815441 Z-0.0123959 E0.0019 F500.0 H2
                      G1 X-0.580933 Y-0.580933 Z0.353199 E0.0769 F500.0 H2
                      G1 X-0.155603 Y-0.155603 Z-0.000999434 E0.0244 F500.0 H2
                      G1 X-0.110898 Y-0.110898 Z-0.000845101 E0.0173 F500.0 H2
                      ...

                      Config.file:

                      M584 X0.4:0.5 Y0.2:0.3 Z0.0:0.1 U0.1 V0.2 W0.3 E1.0 P3
                      M350 X16 U16 Y16 V16 Z16 W16 E16 I1 ; configure microstepping with interpolation (*)
                      M92 X160.00 U160.00 Y160.00 V160.00 Z160.00 W160.00 E690.00 ; set steps per mm (*)
                      M566 X5000.00 U5000.00 Y5000.00 V5000.00 Z5000.00 W5000.00 E300.00 ; set maximum instantaneous speed changes (mm/min) (*)
                      M203 X8000.00 U8000.00 Y8000.00 V8000.00 Z8000.00 W8000.00 E7200.00 ; set maximum speeds (mm/min) (*)
                      M201 X2000.00 U2000.00 Y2000.00 V2000.00 Z2000.00 W2000.00 E3000.00 ; set accelerations (mm/s^2) (*)
                      M906 X1800 U1800 Y1800 V1800 Z1800 W1800 E1100 I80 ; set motor currents (mA) and motor idle factor in per cent (*)
                      M84 S30
                      undefined 1 Reply Last reply 12 Jul 2023, 10:34 Reply Quote 0
                      • undefined
                        droftarts administrators @tkln
                        last edited by 12 Jul 2023, 10:34

                        @tkln I think maybe an H2 move is seen as a complete move, and motion stops after each H2 move. @dc42 will need to confirm this. I'm not sure what the workaround would be.

                        Is there any particular reason to use an H2 move rather than a normal move, without any H parameter? You have split the axes already, so they should move independently when you want them to.

                        Ian

                        Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                        undefined 1 Reply Last reply 12 Jul 2023, 11:23 Reply Quote 0
                        • undefined
                          tkln @droftarts
                          last edited by tkln 7 Dec 2023, 11:27 12 Jul 2023, 11:23

                          @droftarts Unfortunately that does not work. When I use H2, the correct movement is performed, but when I don't use H2, the system moves incorrectly.
                          Or if I omit the H2 do I need to add something else?

                          When I enter this, the effector moves -140 mm along the y-axis:

                          G91
                          G1 X14.7126 Y14.7126 Z-51.0191 U-51.0191 V14.7126 W14.7126 E0 F1000 H2 ; move y -140 mm

                          With the command, the effector moves in the y and z directions:

                          G91
                          G1 X14.7126 Y14.7126 Z-51.0191 U-51.0191 V14.7126 W14.7126 E0 F1000

                          Without the H2 command, the Z0.0 and U0.1 axes do not move
                          b93e44c5-e45d-44f0-b8db-80e662aef6df-image.png

                          jay_s_ukundefined undefined 2 Replies Last reply 12 Jul 2023, 11:29 Reply Quote 0
                          • jay_s_ukundefined
                            jay_s_uk @tkln
                            last edited by jay_s_uk 7 Dec 2023, 11:30 12 Jul 2023, 11:29

                            @tkln thats probably the difference in the way H2 works.
                            e.g. with a delta at 0,0,0 coordinates, G1 Y10 would move the effector to Y10 on the same plane. G1 Y10 H2 would move the Y tower by 10mm
                            So by extension, when at 0,0,0 coordinates, G1 Y10 Z10 would move the effector up 10mm and to X0 Y10, where as G1 H2 Y10 Z10 would move the towers up by 10mm

                            in your example you're trying to move to Z-51 which will be outside the axis maxima and minima (its typically Z-1 on a delta)

                            Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

                            1 Reply Last reply Reply Quote 1
                            • undefined
                              droftarts administrators @tkln
                              last edited by 12 Jul 2023, 11:34

                              @tkln As @jay_s_uk says, when using H2 you're not moving as a delta any more. Without H2, it reverts to delta motion on X, Y and Z. I think you're going to need to modify the firmware to either allow H2 moves to be added to the motion planning queue (so it doesn't come to a stop after each one - at least I think that's what's happening), or amend the kinematics to control the axes correctly (trickier).

                              Ian

                              Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                              undefined 1 Reply Last reply 12 Jul 2023, 11:46 Reply Quote 1
                              • undefined tkln has marked this topic as solved 12 Jul 2023, 11:38
                              • undefined
                                tkln @droftarts
                                last edited by tkln 7 Dec 2023, 11:47 12 Jul 2023, 11:46

                                @droftarts @jay_s_uk Can I free the extruder command E from the H2 command and run it normally?

                                G1 X14.7126 Y14.7126 Z-51.0191 U-51.0191 V14.7126 W14.7126 E0.594 F1000 H2```
                                1 Reply Last reply Reply Quote 0
                                • undefined
                                  droftarts administrators
                                  last edited by 12 Jul 2023, 13:26

                                  @tkln No, I don't think you can remove the E axis from the H2 and still have coordinated motion.

                                  However, I did have another idea. If you aren't using delta kinematics when using all 6 axes, because you are solving for the delta movement beforehand in the Gcode (which is the reason you use G1 H2 moves), there's no real reason to run the 6 axes with delta kinematics. In which case, when you switch to 6 axis mode, switch to regular cartesian movement. Then regular G1 moves will move each axis linearly, and they will be in the move queue.

                                  One problem is homing, as when switching kinematics, axes are marked as unhomed (I think). You could copy the actual axis positions (available in the Object Model, I think) into variables before changing kinematics, then apply them after switching with G92.

                                  There may be other problems I haven't thought of, but I think you would then have smooth movement between lines of Gcode.

                                  Ian

                                  Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                                  undefined 1 Reply Last reply 12 Jul 2023, 13:47 Reply Quote 1
                                  • undefined
                                    tkln @droftarts
                                    last edited by 12 Jul 2023, 13:47

                                    @droftarts Oh I like the idea very much. ❤
                                    Is there a G-code command that switches motion from delta to cartesian
                                    Or do I have to create a new config. create file?

                                    undefined 1 Reply Last reply 12 Jul 2023, 14:57 Reply Quote 0
                                    • undefined
                                      droftarts administrators @tkln
                                      last edited by 12 Jul 2023, 14:57

                                      @tkln to switch kinematics see https://docs.duet3d.com/User_manual/Reference/Gcodes#m669-set-kinematics-type-and-kinematics-parameters

                                      There is no Object Model value that holds the 'actual' axis position, rather than the XYZ position. So it is going to be necessary to home the machine once you have switched kinematics. At this point things start to get complex, as you'll need to remap the endstop pins as well, and provide M208 limits for each axis, amongst other things. It might be easier to treat it as two separate machines, and have separate configuration sets for each. To make this easier, and then switching between them more easy, use M505: https://docs.duet3d.com/en/User_manual/Reference/Gcodes#m505-set-configuration-file-folder

                                      Ian

                                      Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                                      1 Reply Last reply Reply Quote 1
                                      5 out of 17
                                      • First post
                                        5/17
                                        Last post
                                      Unless otherwise noted, all forum content is licensed under CC-BY-SA