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

    Add extruder axis to kinematics matrix

    Scheduled Pinned Locked Moved
    Firmware wishlist
    3
    7
    636
    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.
    • Marius Breuerundefined
      Marius Breuer
      last edited by

      For an upcoming printer build I'm considering a belt driven direct drive extruder, which was proposed before in this forum.

      see https://forum.duet3d.com/topic/22383/new-rexy-kinematics-on-duet-firmware-possible/11?_=1632351328350

      Pressure Advance wouldn't be required in my case, as the "direct drive" extruder would have a miniscule distance from drivegear to hotend (based on e3d Hermera).

      As far as I know, this is not possible right now? Are there plans to include this kind of kinematic?
      Might a workaround be possible by either:

      A) "fake axis"
      create another Axis (U), which can be used in the kinematics matrix. Connect this axis to the same motor driver as the extruder axis. If both E and U axis steps are merged and applied to the drive, the X-Y compensation is archieved, while maintaining normal extruder gcode

      B) modify gcode
      if only A,B,C,U,V,W axis can be used alongside X,Y,Z in the matrix, then I'd have to replace any "G1 X.. Y.. E.." in the gcode with "G1 X.. Y.. U..". This would be a very simple script.
      Downside: cold extrusion warnings, extrusion buttons and extrusion factor in DWC and probably some other features wouldn't translate to the "U" axis.

      I've used something similar to A) in a robot, where two axis U and V are linked to the same stepper driver, allowing the U-homing to home towards a low end endstop and the V-homing to home towards a high end endstop.
      FYI the drive in question was a robot gripper, which should drive the motor (counter-)clockwise until the respective endstop is reached.

      This solution differs from A) in that it didn't use an extruder axis.
      Additionally mostly "G28 U" and "G28 V" are used in the robot, sometimes G1. However never simultaneously (ie G1 U10 V5), effectively eliminating the need to merge STEP/DIR in realtime.

      Any thoughts?

      As this topic was adressed before, is there an estimate, when such a feature would be implemented?
      I'm quite familiar with C/C++, but modifying the core motion code doesn't seem to be the best/quickest solution, amongst other reasons, because I don't know which other system components might be affected.

      Thanks for any input/feedback/opinion you might be able to provide!

      deckingmanundefined o_lampeundefined 2 Replies Last reply Reply Quote 0
      • deckingmanundefined
        deckingman @Marius Breuer
        last edited by deckingman

        @marius-breuer AFAIK, extruders are already treated as axes so it shouldn't matter what type of extruder you use, as long as you can set the steps per mm just like any other axis. With a G1 XYE move, XY and E will all start and end at the same point in time and their rate of change will also be synchronised.

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

        Marius Breuerundefined 1 Reply Last reply Reply Quote 0
        • o_lampeundefined
          o_lampe @Marius Breuer
          last edited by

          @marius-breuer said in Add extruder axis to kinematics matrix:

          Pressure Advance wouldn't be required in my case, as the "direct drive" extruder would have a miniscule distance from drivegear to hotend

          ...but what about the long belts needed to drive the gears? To me it has almost the same effect as Bowden tube.

          Marius Breuerundefined 1 Reply Last reply Reply Quote 0
          • Marius Breuerundefined
            Marius Breuer @deckingman
            last edited by

            @deckingman that's true, but when only X or Y axis moves (G1 X5 Y10 E0), the extruder stepper has to move aswell, to compensate for the change in distance between it's pulleys.
            This is done with a kinematics matrix

            see M669
            https://duet3d.dozuki.com/Wiki/Gcode#Section_M669_Set_kinematics_type_and_kinematics_parameters

            The kinematics matrix is necessary for CoreXY, H-Bot, Delta etc., where multiple stepper motors affect the position of one axis.
            This kinematics matrix doesn't include the "En" Extruder axis, probably due to pressure advance and because noone had a setup, where movement in X or Y affected the rotation of the extruder hobb gear.

            deckingmanundefined 1 Reply Last reply Reply Quote 0
            • Marius Breuerundefined
              Marius Breuer @o_lampe
              last edited by

              @o_lampe my main goal is weight savings.
              A Gates GT2 belt would be way stiffer, than flexible 1,75mm filament in a bowden tube of the same length.

              Additionally I consider upgrading to the Duet 3 controller and/or using an external stepper driver with an encoder at the extruder hobb gear, to compensate for belt elasticity.

              The latter would also be able to compensate for X, Y motion errors, caused by not using the kinematics matrix. I'm afraid, however, that the encoder control loop would be too slow to remove all noise from the system, even minor delay in the extruder positioning would likely result in printing artifacts.

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

                @marius-breuer said in Add extruder axis to kinematics matrix:

                @deckingman that's true, but when only X or Y axis moves (G1 X5 Y10 E0), the extruder stepper has to move aswell, to compensate for the change in distance between it's pulleys.
                This is done with a kinematics matrix

                see M669
                https://duet3d.dozuki.com/Wiki/Gcode#Section_M669_Set_kinematics_type_and_kinematics_parameters

                The kinematics matrix is necessary for CoreXY, H-Bot, Delta etc., where multiple stepper motors affect the position of one axis.
                This kinematics matrix doesn't include the "En" Extruder axis, probably due to pressure advance and because noone had a setup, where movement in X or Y affected the rotation of the extruder hobb gear.

                No, the extruder won't move when the "E" value is zero UNLESS you explicitly tell the firmware that extruder values in the gcode are absolute rather than relative AND the previous extruder move was to a non-zero absolute position.

                If you use relative extruder moves (which most people do), the extruder won't move when the "E" value is 0. It will only move if you use absolute extruder values (M82).

                If you think about it, the firmware has to convert all absolute values to relative so that the move will be "by" an amount rather than "to" a position. So even given a G1 Xn the firmware must first work out the relative distance that X has to travel based on where it ended up for the move prior to the one that it is about to make. The same applies to the E "axis" but duet firmware supports absolute extruder gcode because some old slicers still work that way.

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

                Marius Breuerundefined 1 Reply Last reply Reply Quote 0
                • Marius Breuerundefined
                  Marius Breuer @deckingman
                  last edited by

                  @deckingman you've misunderstood my idea.

                  Found the original (timestamp 2:35)
                  https://youtu.be/TQYYHrxIG90

                  See how the extruder motor is turning, despite not extruding?
                  The extruder motor turns even during G1 X5 Y5 E0 (E relative), to compensate the XY movement.

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