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

    Printhead jerks when moving.

    Scheduled Pinned Locked Moved Solved
    General Discussion
    4
    17
    680
    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.
    • tklnundefined
      tkln
      last edited by tkln

      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
      • droftartsundefined
        droftarts administrators @tkln
        last edited by

        @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

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

          @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

          tklnundefined 1 Reply Last reply Reply Quote 0
          • tklnundefined
            tkln @dc42
            last edited by

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

              @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

              tklnundefined 1 Reply Last reply Reply Quote 0
              • tklnundefined
                tkln @dc42
                last edited by tkln

                @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
                • tklnundefined
                  tkln
                  last edited by

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

                  droftartsundefined 1 Reply Last reply Reply Quote 0
                  • droftartsundefined
                    droftarts administrators @tkln
                    last edited by droftarts

                    @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

                    tklnundefined 1 Reply Last reply Reply Quote 0
                    • tklnundefined
                      tkln @droftarts
                      last edited by

                      @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
                      • tklnundefined
                        tkln
                        last edited by

                        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     
                        
                        droftartsundefined 1 Reply Last reply Reply Quote 0
                        • droftartsundefined
                          droftarts administrators @tkln
                          last edited by

                          @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

                          tklnundefined 1 Reply Last reply Reply Quote 0
                          • tklnundefined
                            tkln @droftarts
                            last edited by tkln

                            @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 droftartsundefined 2 Replies Last reply Reply Quote 0
                            • jay_s_ukundefined
                              jay_s_uk @tkln
                              last edited by jay_s_uk

                              @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
                              • droftartsundefined
                                droftarts administrators @tkln
                                last edited by

                                @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

                                tklnundefined 1 Reply Last reply Reply Quote 1
                                • tklnundefined tkln has marked this topic as solved
                                • tklnundefined
                                  tkln @droftarts
                                  last edited by tkln

                                  @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
                                  • droftartsundefined
                                    droftarts administrators
                                    last edited by

                                    @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

                                    tklnundefined 1 Reply Last reply Reply Quote 1
                                    • tklnundefined
                                      tkln @droftarts
                                      last edited by

                                      @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?

                                      droftartsundefined 1 Reply Last reply Reply Quote 0
                                      • droftartsundefined
                                        droftarts administrators @tkln
                                        last edited by

                                        @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
                                        • First post
                                          Last post
                                        Unless otherwise noted, all forum content is licensed under CC-BY-SA