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

Add extruder axis to kinematics matrix

Scheduled Pinned Locked Moved
Firmware wishlist
3
7
626
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
    Marius Breuer
    last edited by 22 Sept 2021, 23:18

    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!

    undefined undefined 2 Replies Last reply 23 Sept 2021, 06:22 Reply Quote 0
    • undefined
      deckingman @Marius Breuer
      last edited by deckingman 23 Sept 2021, 06:22

      @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

      undefined 1 Reply Last reply 23 Sept 2021, 11:55 Reply Quote 0
      • undefined
        o_lampe @Marius Breuer
        last edited by 23 Sept 2021, 06:57

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

        undefined 1 Reply Last reply 23 Sept 2021, 12:03 Reply Quote 0
        • undefined
          Marius Breuer @deckingman
          last edited by 23 Sept 2021, 11:55

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

          undefined 1 Reply Last reply 23 Sept 2021, 12:45 Reply Quote 0
          • undefined
            Marius Breuer @o_lampe
            last edited by 23 Sept 2021, 12:03

            @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
            • undefined
              deckingman @Marius Breuer
              last edited by 23 Sept 2021, 12:45

              @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

              undefined 1 Reply Last reply 23 Sept 2021, 15:44 Reply Quote 0
              • undefined
                Marius Breuer @deckingman
                last edited by 23 Sept 2021, 15:44

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