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

    Scara Setup

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    4
    101
    13.6k
    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.
    • dc42undefined
      dc42 administrators
      last edited by

      If you delete the homeproximal.g, homedistal.g and homez.g files then it will use homeall.g when you send any homing command. That is what I did on my SCARA printer, because the homing order is critical on that too.

      G1 S2 X moves should move both motors if you use the correct C parameter, so that the distal joint angle (not the arm angle) remains constant. For example, if the arms are in line initially, they should remain in line when you do a G1 S2 move. Is that not happening? I'll check the code when I am back in the office.

      The XY position when you have both arms in line sounds wrong to me. If you had both joint angles at zero and no X or Y offset in the M669 command, you should have Y=0 and X= sum of the arm lengths.

      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

      1 Reply Last reply Reply Quote 0
      • Billhc83undefined
        Billhc83
        last edited by

        The arms are not staying inline when I do a x move. I have tried a number of values for c.

        My M669 has a xy offset. I will remove that when I get back to it and see what it says.

        1 Reply Last reply Reply Quote 0
        • Billhc83undefined
          Billhc83
          last edited by

          After removing XY offset the web interface reports x11 y13 when the arm is rotated to the 0 angle( both arms in line in the middle of the movement range)
          Here is a video of the behavior of a g1 s2 x move after homing. as you can see the distal angle does not remain the same. I believe the C parameter in the video was set to -1 I have tried a variety of values without any change.
          https://youtu.be/vuMC6BDucdE)

          Another video showing homing behavior and crash after using jog button
          https://youtu.be/8wLSmmAf0dg

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

            I was wrong about G1 S2 moves. These moves are defined as raw motor moves. So it is correct that the distal joint arm angle changes when you do a G1 S2 X move.

            During proximal homing, to avoid the possibility of the distal joint reaching the end of its travel, I suggest you command both motors. For example:

            G91 ; relative movement
            G1 S1 X300 Y-300 F3000 ; home proximal joint

            One possible issue I can see with this is that the distal endstop switch will be active too, so if the distal arm is at the end of its travel against the endstop switch when you start the homing move, then the proximal homing move will not be completed. You could command a small anticlockwise movement of the distal arm first to avoid this possibility.

            In the second video, you pressed the Z-10 button. So it tried to move the arm down into the bed. However, any software axis limits you set with M208 ought to be obeyed.

            The x11 y13 position reported after homing is obviously wrong, so I think this explains the unwanted distal arm movement in your second video. Please share your config.g file. Also, please can you home all axes, check that the homing buttons are all blue at the end, and report the output of M114.

            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

            1 Reply Last reply Reply Quote 0
            • Billhc83undefined
              Billhc83
              last edited by

              After homing all buttons do indeed turn blue. This is the positions of the axis when sitting at the endstops after homing:

              11:18:24 AM
              M114
              X:95.221 Y:-58.365 Z:0.000 E0:0.0 E1:0.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 Count -5695 -2401 0 User 95.2 -58.4 0.0

              The second video was not great At the end when I press the z-10 the arms also moved quickly as well and crashed.

              Config:

              ; General preferences
              M111 S0 ; S0 Debugging off S1 Debugging on
              M550 scara ; Machine name (can be anything you like)
              M551 Preprap ; Machine password (used for FTP)
              M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0x42 ; MAC Address
              ;*** Adjust the IP address and gateway in the following 2 lines to suit your network
              M552 P192.168.1.118 ; IP address (0 = use DHCP)
              M554 P192.168.1.254 ; Gateway
              M553 P255.255.255.0 ; Netmask
              G21 ; Work in millimetres
              G90 ; Absolute moves
              M83 ; Relative extrusion
              ;Limits
              M208 X0 Y0 Z0 S1 ; Min
              M208 X100 Y100 Z150 S0 ; Max

              ; Endstops
              M574 X1 Y1 Z1 S1 ;

              ; Drives - Axis and motor configuration
              M569 P0 S0 ; Drive 0 (X) goes forwards
              M569 P1 S1 ; Drive 1 (Y) goes forwards
              M569 P2 S0 ; Drive 2 (Z) goes forwards
              M569 P3 S0 ; Drive 3 (E0) goes forwards
              M92 X67 Y28.25 ;Steps per degree
              M92 Z400 E550 ; Steps per mm
              M566 X300 Y300 Z15 E75 ; Set maximum instantaneous speed changes (mm/min)
              M203 X2000 Y2000 Z300 E1500 ; Set maximum speeds (mm/min)
              M201 X300 Y300 Z250 E800 ; Set accelerations (mm/s^2)
              M906 X1000 Y1000 Z1000 E1000 I60 ; Set motor currents (mA) and motor idle factor in per cent
              M84 S30 ; Set idle timeout
              M669 K4 P111.4 D100.4 A-85:85 B-85:85 C-1:0:0 S150 T0.1 X0 Y0;

              1 Reply Last reply Reply Quote 0
              • Billhc83undefined
                Billhc83
                last edited by

                Davis is machinePos the coordinates reported in the web interface? Trying to work through the math….

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

                  Hi Bill,

                  One problem I have spotted is that the crosstalk factors must currently be specified in motor steps, not amounts of movement. In other words, your proximal to distal crosstalk factor of -1 means that each forward step of the proximal motor needs to be countered by one reverse step of the distal motor. As you are using different steps/mm for your proximal and distal arms, -1 is not correct for your machine. I think the correct value is -67/28.25 instead.

                  Thinking about it, it would be more logical to make the crosstalk based on amount of movement instead so as to be independent of the steps/mm. I'll make this change in the next 1.20 beta version.

                  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

                  1 Reply Last reply Reply Quote 0
                  • Billhc83undefined
                    Billhc83
                    last edited by

                    Ok thanks I'll give it a shot

                    I think I will try this on my duet Wi-Fi just to make sure it is not just a problem with using the 0.6 board

                    1 Reply Last reply Reply Quote 0
                    • Billhc83undefined
                      Billhc83
                      last edited by

                      I agree that cross talk based on movement would be better.

                      I think there may be a issue with the minRadius calculation (I could be wrong of course). When I input my values into the calculation I come up with a number that I do not believe is correct. Since my scara has limited movement (everything forms a right angled triangle at the limits because it can only rotate 90 degrees from 0) it is very easy to calculate some of the values. For instance the minRadius of my arm I believe is just the hypotenuse of the triangle it forms. I have a value of 150 or so for min radius based on this. When i put my numbers into the code I get a value of 211 or so(I may have done this wrong who know's just trying to pick away at things). My max radius is only 210.8. Let me know what you think about this.

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

                        You are right, the minimum radius calculation is wrong. Thanks for pointing this out. I've just corrected it in the source code and the next 1.20 beta will include the fix. I've also changed the way the crosstalk factors work, to relate the distances moved instead of the motor steps - in degrees for the arms and in mm for Z.

                        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

                        1 Reply Last reply Reply Quote 0
                        • Billhc83undefined
                          Billhc83
                          last edited by

                          So I have switched everything over from the v0.6 to my wifi and I won't say everything works as expected but everything works. So there is definitely something that doesn't work with the v0.6. Jogging buttons on the web interface do not result in crazy movements, but still not the movements I would expect. Are the jog buttons going to arm move angles or coordinates? I still have not been able to get the proper movements I am expecting. Homing coordinates still do not seem right to me. Homing now reports the same numbers as before

                          2:38:58 PM
                          M114
                          X:95.221 Y:-58.365 Z:0.000 E0:0.0 E1:0.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 E6:0.0 E7:0.0 E8:0.0 Count -5695 -2401 0 User 95.2 -58.4 0.0

                          I am running all the latest firmware and web control files. When I try to print a test file I get a bunch of errors from DWC, and cannot connect until the file is finished. Is there a way to see what the errors say? They seem to go away before I can copy them.

                          I will keep playing with this now that I can get some movements.

                          Thanks again

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

                            The error messages that pop up in DWC can be viewed on the GCode Console page. You can also configure how long they remain as popups before they time out.

                            The jog buttons should jog the XY coordinates.

                            SCARA support is currently working well on at least 2 printers that do not require crosstalk parameters in the M669 command.

                            As you are now running on a Duet WiFi, I'll make a pre-release 1.20beta7 release available for you to try when I am back in the office.

                            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

                            1 Reply Last reply Reply Quote 0
                            • Billhc83undefined
                              Billhc83
                              last edited by

                              As my arms only turn 90 degrees i would expect my home position to be something like x -110 (proximal arm length)y -100(distal arm length). Does this make sense to you?

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

                                With zero X and Y origin offset in the M669 command, X0 Y0 is the location of the proximal joint, and +X is the direction that the proximal arm points at angle zero. So if both arms home to 90 degrees clockwise, then X= -distal arm length and Y= -proximal arm length sounds right to me. This is assuming that you don't have any other arm movement commands in homeall.g after the homing move, and that you have corrected the crosstalk factor to allow for the different steps/mm as we discussed previously.

                                Please try the following:

                                1. With power off, set both arms at 0 degrees. This is the position that the firmware assumes at power on.

                                2. Power on. The web interface should report the position as X= sum of arm lengths, Y= 0. Does it? M114 should report the step counts as zero.

                                3. Send G91 followed by G1 S2 Y90 to move the distal arm clockwise 90 degrees. Does the web interface report the correct position?

                                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

                                1 Reply Last reply Reply Quote 0
                                • Billhc83undefined
                                  Billhc83
                                  last edited by

                                  With the arms at 0 the printer turns on and reports x = 210.7 y = 0. Lengths of the arms would be 211.8 as defined in config.

                                  I think this happens on this command

                                  maxRadius *= 0.995; Which gives the 210.741

                                  M669 K4 P111.4 D100.4 A-85:85 B-85:85 C-2.37:0:0 S150 T0.1 X0 Y0;

                                  7:52:36 PM
                                  M114
                                  X:210.741 Y:0.000 Z:0.000 E0:0.0 E1:0.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 E6:0.0 E7:0.0 E8:0.0 Count -365 -41 0 User 210.7 -0.0 0.0

                                  Sending g91 followed by g1 s2 y90 rotates the distal arm clockwise 90 degrees. The web interface reports x = 100.3 y=89.3. I would expect x=111.4 y=100.4 or something close to this?

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

                                    I can see what's happened. The original position is outside maxRadius, so the firmware has "corrected" it to be within maxRadius as if it were a position commanded by the user, by assuming the distal arm is rotated clockwise a few degrees (hence the motor step count of -41) and the proximal arm is rotated the same number of degrees clockwise. That's why the reported position doesn't agree exactly with the actual position.

                                    When you home the printer, what is the reported position now?

                                    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

                                    1 Reply Last reply Reply Quote 0
                                    • Billhc83undefined
                                      Billhc83
                                      last edited by

                                      11:18:00 AM
                                      M114
                                      X:95.221 Y:-58.365 Z:0.000 E0:0.0 E1:0.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 E6:0.0 E7:0.0 E8:0.0 Count -5695 -2401 0 User 95.2 -58.4 0.0

                                      This is with the printer sitting at the homing switches, same as before.

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

                                        Your config says the homing positions are at -85deg for each arm. So by my calculations the position should be:

                                        X = P * cos(85) + D * cos(85+85) = -89.17mm
                                        Y = P * sin(85) + D * sin(85+85) = -128.41mm

                                        Do you agree?

                                        I think I see what is happening. When the distal homing switch is triggered, the firmware is setting the distal motor position without allowing for the effect that the proximal motor has on the distal joint position. I'll fix this in the next beta.

                                        As a temporary workaround, try this in your homeall.g file:

                                        1. G1 S1 X… move to home the proximal joint.

                                        2. G2 S2 X85 move to put the proximal joint at zero degrees.

                                        3. Then home the distal joint.

                                        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

                                        1 Reply Last reply Reply Quote 0
                                        • Billhc83undefined
                                          Billhc83
                                          last edited by

                                          There is a point where the crosstalk parameter starts to cause erratic movement. I will wait till I try your new release for further testing.

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

                                            OK, I've just built the new version, so I'll test it with a view to releasing it shortly.

                                            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

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