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

    Available memory for kinematics

    Scheduled Pinned Locked Moved
    Firmware developers
    3
    9
    347
    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.
    • JoergS5undefined
      JoergS5
      last edited by JoergS5

      A question maybe especially for @dc42 : I want to try implementing some correction parameters into kinematics like between a stepper and the xy position, to correct stepper position erros. How many memory is available for e.g. a floating point array to hold such correction values, for Duet2 wifi and Duet3? A wish would be for one for every step, so 200 or 400, better would be for microsteps also, but I expect that not so much memory is available. An alternative is storing it as differential values like the TMC chips store ramp up values, so some numbers about storing an integer array would be nice also.

      Please tell me floating point and integer array sizes which are secure, taking into account that future firmware developement will diminish available memory. A rough number is sufficient of course (100, 1000, 100000?)

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

        You can find out how much free RAM you have on a Duet by running M122 and looking for the "Never used RAM" in the report.

        My Kossel (Duet WiFi, 3 axes, single extrusion) has about 8.5Kb and my tool changer (Duet 3, 4 axes, 3 extruders and 3 tools) has nearly 75Kb.

        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

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

          @dc42 ok thank you, I'll take this as a reference.

          1 Reply Last reply Reply Quote 0
          • botundefined
            bot
            last edited by

            I'm curious what you mean here. You want to correct stepper position errors by commanding the stepper to a different spot? Basically, you want to create a "correction grid" to compensate for errors in positions at specific spots?

            But, if the error is from the stepper's error (ie, within 5% tolerance) how will you correct the error? Sending a few step pulses extra? That doesn't seem to me to correct for stepper error, but other positional errors due to mechanics.

            *not actually a robot

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

              @bot basically yes, that was the idea. If I target xy 100,100 e.g. and know that it's not stepper positon 45° but 5 microsteps right of it, I could correct that. And it's not 5% wrong, because I measured the specific stepper exactly. But it is only an idea now and I don't know whether it's worth it. Other possibilities like correcting uneven tooth distribution of GT2 belts or odd (ogging) wheels may be better examples. The parameter array could be filled by G-Code on-the-fly, which makes a nice testing scenario (a print with different settings e.g.). But the first challenge is to first measure everything exactly.

              botundefined 1 Reply Last reply Reply Quote 1
              • botundefined
                bot @JoergS5
                last edited by

                @JoergS5 right, I get what you mean. I think it's impossible to correct for "stepper error" by commanding the stepper to a different position. You're essentially just rounding off microstepping. Reducing microstepping might help you there.

                But I agree, you could have some luck correcting position for other mechanical errors, as long as they are within your stepper motor's reliable resolution.

                This is like ballscrew compensation for CNC machines: they map the error of the screw at certain points, and then correct it in the logic somewhere.

                *not actually a robot

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

                  @bot Another topic what I miss in the firmware is backlash compensation. I thought about to add steps when a stepper changes direction (there is a single place in the code where direction changes), but I expect that the timings of all axes will not match then. So I try to find constructions which avoid backlash.

                  Microstepping: I often forget that they are very inaccurate (primarily used to reduce noise/vibration), so you will be right.

                  botundefined 1 Reply Last reply Reply Quote 0
                  • botundefined
                    bot @JoergS5
                    last edited by bot

                    @JoergS5 With microstepping, the more you microstep, the worse each microstep gets. By that I mean, 16x microstepping has "weaker" microstep holding torque than 8x microstepping, and 8x is "weaker" than 4x. (To a very small degree).

                    So, if you find that your steppers can not reliably hit their target position with 16x microstepping, you could try 8x microstepping.

                    I could imagine there is a point right on the threshold of reliability, where 8x microstepping will actually improve your overall repeatability compared to 16x microstepping, if with 16x there was just not quite enough power to hit the 1/8th position, or even 1/4 position while 16x is enabled.

                    I heard once, and use for reference in my mind, that 1/4 microstepping position is the most we should ever consider to be accurate. That is to say, ignore the 1/8th and 1/6th positions, because they will likely never reliably hit their marks. However, running 4x microstepping is loud and annoying.

                    *not actually a robot

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

                      @bot Thank you, I will try your information.

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