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

    CNC Screw Mapping

    Scheduled Pinned Locked Moved Unsolved
    Firmware developers
    4
    19
    972
    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.
    • markzundefined
      markz
      last edited by

      Ok, even this M802 line is too long. There seems to be a 200 character upper limit and mine are over 300. I guess I should allow an offset in the M802 command.

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

        @markz said in CNC Screw Mapping:

        Ok, even this M802 line is too long. There seems to be a 200 character upper limit and mine are over 300. I guess I should allow an offset in the M802 command.

        Is 200 characters not sufficient to describe the mapping for a single axis? A separate command for each axis seems reasonable to me.

        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

        markzundefined 2 Replies Last reply Reply Quote 0
        • markzundefined
          markz @dc42
          last edited by markz

          @dc42 Thanks for all the interest. I just ran it quickly doing the following...

          The worst axis is X so I copied the old lookup map from WinCNC to excel, converted to mm, then created a script file... which was too big. So, I added the O option and redid it. This worked.

          I set the cnc to 116,0 (left of table), set down my yardstick horizontally.. then I disabled screw map, went to 15",0 - a known bad area) took a screen capture of the microscope view, return to 0,0 and enabled screw map then went back to (15",0) and took another screen capture.

          I hadn't tried it before - and - first try with no edits. Here's the script and the comparison photo. I know it's a lot of digits, but I'm used to inches. Probably could shrink it a little.

          M801 R"X" A"XY" S116 I25.4 N36
          M802 R"X" X0.00000:-0.04064:0.00000:0.06350:-0.07112:-0.10922:0.02286:-0.04318:0.00508:0.10414:-0.02794:-0.09652:-0.22352:-0.40894:-0.37846:-0.47752
          M802 R"X" Y0.00000:0.01778:0.06858:0.11176:0.14732:0.18034:0.22606:0.29210:0.34544:0.36576:0.40640:0.43942:0.46228:0.51308:0.53594:0.57658
          M802 R"X" O16 X-0.49784:-0.27178:-0.25908:-0.29718:-0.15240:-0.24638:-0.26162:-0.05080:-0.08636:0.01524:0.14224:-0.00508:0.05588:0.09144:0.07366:0.24130
          M802 R"X" O16 Y0.60960:0.59944:0.55372:0.48514:0.40640:0.30480:0.22606:0.19304:0.15748:0.09144:-0.21082:-0.48768:-0.15748:-0.12954:-0.10160:-0.08890
          M802 R"X" O32 X0.25654:0.25146:0.41656:0.78994
          M802 R"X" O32 Y-0.12446:-0.09652:-0.04572:0.01270
          M800 S1
          

          Photo
          FirstDuetComparison.jpg

          1 Reply Last reply Reply Quote 1
          • markzundefined
            markz @dc42
            last edited by

            @dc42 I've forked and updated the github repo. You can see the code changes at: https://github.com/MZachmann/RepRapFirmware/tree/v3.2-screwmap

            and it forks from the 3.02-dev branch (3.2 retail).

            Let me know where you'd like to go from here. Implement (pull request)? Move to M-codes? Change syntax?

            The only thing I couldn't yet figure out from the code base was how to correctly have the ui update the user position when the screw map definition changes.

            Mark

            1 Reply Last reply Reply Quote 3
            • markzundefined
              markz
              last edited by

              Here's a doc file describing the current implementation of screw mapping.

              Screw Mapping in RRF.docx

              1 Reply Last reply Reply Quote 1
              • markzundefined
                markz
                last edited by

                I've posted a video showing a calibration run (in X). It took about 1/2 hour to gather X and Y error terms and improved the CNC accuracy from .033" to .002".

                here: https://youtu.be/wpUOaYwDrvI

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

                  Nicely done!

                  I just had a thought, though. Make sure your yard-stick is straight. You could be compensating for an error in the yard stick.

                  *not actually a robot

                  1 Reply Last reply Reply Quote 0
                  • markzundefined
                    markz
                    last edited by

                    Sorry, I should have posted that. You're absolutely right.

                    The yardstick is one of the most expensive hand tools I own since it's so important.

                    https://www.mscdirect.com/product/details/58700246

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

                      @markz Oh!!!! That's a nice "yard stick" lol!!!

                      *not actually a robot

                      markzundefined 1 Reply Last reply Reply Quote 0
                      • markzundefined
                        markz @bot
                        last edited by

                        @bot Yeah, Starrett would probably not be happy me calling it that.

                        1 Reply Last reply Reply Quote 1
                        • Phaedruxundefined
                          Phaedrux Moderator
                          last edited by

                          I also spit coffee on my laptop when I saw that price. 😳

                          Z-Bot CoreXY Build | Thingiverse Profile

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

                            I suddenly want a yard stick like that... but I couldn't even use such a large one! My print bed is only ~11" x 11". I'll look for it's younger sibling. And possibly metric, too.

                            *not actually a robot

                            markzundefined 1 Reply Last reply Reply Quote 0
                            • markzundefined
                              markz @bot
                              last edited by markz

                              @bot Yeah, I wish I had a metric one - if you watch the video I spend a lot of time converting inches. Kinda dumb.

                              backstory - when I first realized about 10 years ago my CNC had so much error I did this measurement with a normal yardstick, couldn't believe the results (especially the Y error), so in order to root-cause I had no choice.

                              1 Reply Last reply Reply Quote 1
                              • markzundefined
                                markz
                                last edited by markz

                                I've cleaned up the code so setting a screw map entry changes the DRO readout in real-time.

                                Here are a couple of plots of my CNC error curves with increment=25.4mm (1 inch). Note the 2d-ishness of the whole thing.

                                To put this in a worst case if I were just drilling holes the largest X error pre-compensation would be about 1.5mm (or 1/16th of an inch for US). Post-compensation error is 2*repeatability + test measurement error (~.03mm).

                                XAxis Compensation.jpg YAxis Compensation.jpg

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