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

    Rotary axis feedrate calculation

    Scheduled Pinned Locked Moved
    General Discussion
    3
    4
    293
    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.
    • RockBundefined
      RockB
      last edited by RockB

      Hello, I am working on a project to deposit filament along length of a rod. Currently I only have two axes: Axis A for rotation of the rod about its axis and Axis X for moving the extruder head along the length of the rod. The z height distance between tip on the nozzle and rod dia is adjusted manually. I have configured the rotary axis A as follows: (Using Duet3 mainboard 6HC with RRF 3.4.4)

      ; Drives
      M569 P0.0 S0                                          ; physical drive 0.0 goes backwards
      M569 P0.1 S1                                          ; physical drive 0.1 goes forwards
      M569 P0.2 S1                                          ; physical drive 0.2 goes forwards
      M569 P0.3 S1                                          ; physical drive 0.3 goes forwards
      M569 P0.4 S0                                          ; physical drive 0.4 goes backwards
      M584 X0.0 Y0.1 Z0.2 E0.3 A0.4                         ; set drive mapping
      M350 X16 Y16 Z16 E16 A16 I1                           ; configure microstepping with interpolation
      M92 X1280.00 Y80.00 Z400.00 E397.00                   ; set steps per mm
      M92 A43.3086419                                       ; set steps per deg for rotational A axis (0.9deg motor = 400 steps/rev; 16x microstepping = 400*16/360 = 17.7778 steps/deg; 2.436 gearing ratio) 
      M566 X900.00 Y900.00 Z60.00 E120.00 A120.00           ; set maximum instantaneous speed changes (mm/min)
      M203 X6000.00 Y6000.00 Z180.00 E1200.00 A12000.00     ; set maximum speeds (mm/min)
      M201 X500.00 Y500.00 Z20.00 E250.00 A500.00           ; set accelerations (mm/s^2)
      M906 X1500 Y800 Z800 E1000 A1500 I30                  ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                               ; Set idle timeout
      
      ; Axis Limits
      M208 X0 Y0 Z0 S1                                   ; set axis minima
      M208 X230 Y210 Z200 S0                             ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"io0.in"                                  ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in
      
      

      The documentation says for rotary axis, M92 uses "steps per degree" units.

      Questions:

      1. For a rotary axis, What are the units for M201, M203 and M566? deg/min?
      2. To set rotary axis for infinite rotation, I can either use large value in M208 or use G92 A0 before each move. What is max number I can use for M208 command?
      3. For an example linear interpolation command including linear, extruder and rotary axes: G1 A14400 X32.0 E80.0 F130
        What is the speed of rotation of rotary (A) axis in this case? (based on my configuration)

      Just trying to understand how feed rates work when linear and rotary axes are used in same G1 command.

      Update:
      After some experimentation, I noticed that changing feedrate (F) in the above G1 command involving A,X and E axes had NO effect on speed of rotation of A axis. This seems like feedrate parameter only affects linear axes. This makes me wonder how is A axis rotation speed calculated by Duet?

      o_lampeundefined JoergS5undefined 3 Replies Last reply Reply Quote 0
      • o_lampeundefined
        o_lampe @RockB
        last edited by o_lampe

        @RockB said in Rotary axis feedrate calculation:

        What is max number I can use for M208 command?

        IIRC it was +/- 2^31 = 2.147.483.648 mm. Divide that by the circumfence of your rod and you have the number of turns.

        the above G1 command involving A,X and E axes had NO effect on speed of rotation of A axis.

        Maybe you have to define a tool which replaces the Y-axis with A-xis? Just guessing here...

        1 Reply Last reply Reply Quote 0
        • JoergS5undefined
          JoergS5 @RockB
          last edited by JoergS5

          @RockB hello, about your questions about rotary axes I have some information:

          • the threads https://forum.duet3d.com/topic/21880/g1-feedrate and https://forum.duet3d.com/topic/21816/rotational-axis-abc-limits-behaviour have some information. There are specifications (coming from CNC, NIST: https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=823374 e.g. 2.1.2.5) which specify the feedrates if you have mixed rotary and linear axes
          • the mm/s and mm/s² are degrees/s and degrees/s² respectively for rotary axes each
          • axes XYZUVW are linear axes by default and ABCD are rotary ones. This can be changed by the M584 R parameter. This influences some internal calculations like distance calculations
          1 Reply Last reply Reply Quote 0
          • JoergS5undefined
            JoergS5 @RockB
            last edited by JoergS5

            @RockB said in Rotary axis feedrate calculation:

            set rotary axis for infinite rotation

            The M208 is the smaller problem. M208 XYZ uses print area limits in mm traditionally (because they were used for linear axes). M208 A is then e.g. in degrees, but it's not possible to set XYZ degree limits for XYZ rotary axes. This is solved for kinematics with XYZ rotary axes by other means, e.g. dedicated angle limit parameters. Not specifying A limits will probably solve the problem.

            But as said, this is the smaller problem. Main problem, if you plan to have an actuator which runs all the time, is, that RRF is not designed this way. Every stepper needs to be planned in a fixed time frame, i. e. needs to end. So an unlimited movement is not possible.

            There is a thread discussing whether RRF can be extended to support unlimited movements. Another possibility is to install a stepper outside of RRF with unlimited movement and control start/stop with RRF.

            If you meant turning an axis more than 360 degrees with infinite, there was the thread https://forum.duet3d.com/topic/17169/what-s-the-best-way-to-set-up-a-continuous-rotation-for-an-axis?_=1592982351701
            This movement will however stop after the time frame, however.

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