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

    Delta Z-carriage won't move down after homing

    Scheduled Pinned Locked Moved Solved
    General Discussion
    delta homing external stepper drivers
    4
    15
    1.0k
    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.
    • pelz135undefined
      pelz135
      last edited by

      I have rewired the servo cables following your guide so that PUL+, DIR+ and ENA+ for all three tower servo motors connect to the +5V pin on the H6_PMW header, while PUL-, DIR-, and ENA- are still connected to the respective pins on the E2, E3, and E4 headers. This changes seems to have fixed my first problem, so I can now move in the negative z-direction after homing. It also seems to have fixed the 'struggling' motion I noted in the above post. Woohoo!

      HOWEVER, movement still does not work properly! Here's what happens:

      G28 ; home
      G90 ; absolute
      G1 Z0 ; try to go down to bed
      This should be a ~640 mm movement, but only goes about 270 mm. The towers do each seem to move in sync for the same distance. The tool position numbers react appropriately, and for this case show a position of 0,0,0, which is correct for my command but not what happens.

      G1 Z100;
      G91 ; relative

      G1 Z100 ; all carriages move up ~43 mm (no difference observed using a ruler)
      G1 Z-100 ; all carriages move down X ~44 mm, Y ~44mm, and Z~45mm

      Next I tried going up 100 mm and then down 100 mm five times. End positions were: X +5 mm, Y +5 mm, Z +18 mm the starting position.

      Next I tried going up 100 mm and then down 100 mm ten times. End positions were: X +8 mm, Y +8 mm, Z +34 mm the starting position.

      For the final repeatability test, I repeated this 5 times and noted the different in end position:
      G28
      G90
      G1 Z100
      End position varied by about 1mm, both above and below the average position.

      My conclusion from this inconsistent motion is that I must be missing steps (open to other suggestions of course). A few thoughts/questions:

      1. In the servo motor manual, it says maximum communication speed is 250,000 Hz. Could the duet board be sending more commands per unit time than the servo's driver can handle?
      2. How does setting a microstepping mode (M350) affect external drivers? Could interpolation cause any issues?
      3. My timing could be off. This seems likely, except that I am using the same timing values that I successfully tested these motors with the MKS SGEN controller board. Copied from the servo manual:
        t1: ENA must be ahead of DIR by at least 5μ s. Usually, ENA+ and ENA- are NC
        (not connected).
        t2: DIR must be ahead of PUL active edge by 6μ s to ensure correct direction;
        t3: Pulse width not less than 2.5μ s;
        t4: Low level width not less than 2.5μ s.

      At this point, I'm fairly stumped as to what to try next. Any thoughts or suggestions are highly appreciated!

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

        @pelz135 said in Delta Z-carriage won't move down after homing:

        My apologies for the very long post. If it is poor etiquette to post something this long please let me know.

        Not a problem at all. The more info the better.

        Z-Bot CoreXY Build | Thingiverse Profile

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

          From your config.g

          M569 P5 S1 R1 T3:3:6:6                             ; physical drive 5 goes forwards
          M569 P6 S1 R1 T3:3:6:6                             ; physical drive 6 goes forwards
          M569 P7 S1 R1 T3:3:6:6                             ; physical drive 7 goes forwards
          

          It's these timings that are going to be the key. I don't know how transferable the values will be from the MKS board. Apparently not very.

          As far as I understand the microstepping on the board itself is irrelevant, since it's based on the timings and the settings of the external servos.

          Z-Bot CoreXY Build | Thingiverse Profile

          pelz135undefined 1 Reply Last reply Reply Quote 1
          • pelz135undefined
            pelz135 @Phaedrux
            last edited by

            @Phaedrux Am I correct in understanding that M569 P5 S1 R1 T3:3:6:6 will set motor 5 to forward, driver to active HIGH, pulse width to 3 us, step pulse interval to 3 us, direction setup time to 6 us, and direction hold time to 6 us?

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

              Any understanding I have of M569 is derived from here: https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M569_Set_motor_driver_direction_enable_polarity_and_step_pulse_timing

              😉

              Z-Bot CoreXY Build | Thingiverse Profile

              pelz135undefined 1 Reply Last reply Reply Quote 1
              • pelz135undefined
                pelz135 @Phaedrux
                last edited by

                @Phaedrux haha, fair enough.

                I have solved my issue, finally! I will give a quick rundown of my findings here, with the hope it helps someone in the future.

                Basic issue: the servo motors controlling my delta printer towers were not moving correctly. These motors have external drivers that I am controlling using the Duet Expansion Breakout Board. This includes no movement, stuttering movement, incorrect distances, and incorrect speeds.

                Solution: I believe all of these steps were necessary, but if I could go back and do it again I would definitely try the timing adjustments first.

                1. Use 5V logic by connecting the PUL+, DIR+ and ENA+ for all three tower servo motors to the +5V pin on the H6_PMW header of the Duet Expansion Breakout Board.
                2. Use 'R1' to invert the enable signal (although this may be accomplished by switching the ENA+ and ENA- wires).
                3. Increase timing values. The tricky part here is that the values stated in the servo motor manual did not work! I had to increase the values well above what they stated was necessary. More details below:

                Screen Shot 2021-03-20 at 3.39.09 PM.png Screen Shot 2021-03-20 at 3.39.01 PM.png

                Based on these figures, I believed that setting the timing to T3:3:6:6 using the M569 command would be sufficient. HOWEVER, after testing I found that the minimum values I can use are T4:4:10:6 meaning a 4 microsecond step pulse width, 4 microsecond step pulse interval, 10 microsecond direction setup time and 6 microsecond direction hold time. To be safe, my final values are as follows:

                M569 P5 S1 R1 T5:5:12:6 ; physical drive 5 goes forwards (x-tower), enable signal inversion, timing:3,3,6,6
                M569 P6 S1 R1 T5:5:12:6 ; physical drive 6 goes forwards (y-tower), enable signal inversion, timing:3,3,6,6
                M569 P7 S1 R1 T5:5:12:6 ; physical drive 7 goes forwards (z-tower), enable signal inversion, timing:3,3,6,6

                droftartsundefined 1 Reply Last reply Reply Quote 2
                • droftartsundefined
                  droftarts administrators @pelz135
                  last edited by

                  @pelz135 if you send M569 P5 to view settings, you may notice that the timing used is actually slightly longer, as it has to fit the MCU clock rate.

                  Ian

                  Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                  pelz135undefined 1 Reply Last reply Reply Quote 0
                  • pelz135undefined
                    pelz135 @droftarts
                    last edited by

                    @droftarts Good to know, thanks. Here is what I get:

                    M569 P5
                    Drive 5 runs forwards, active high enable, timing 5.3:5.3:12.8:6.4us

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

                      In theory you should be able to use T2.5:2.5:6:xx for those drivers. The diagram doesn't show the minimum value needed for the fourth value (which I called xx) but it may well be zero. But I see from your earlier post that 3:3:6:6 didn't work.

                      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

                      pelz135undefined 1 Reply Last reply Reply Quote 0
                      • pelz135undefined
                        pelz135 @dc42
                        last edited by

                        @dc42 Yes, that is what I thought as well.

                        Do you have any idea why timing is so far off? Like I mentioned above, I successfully tested these motors with the same power supplies and a MKS SGEN controller board with timings of 3:3:6:6. The MKS SGEN board provided 3.3V logic, so if anything I would have assumed it would need more time to activate the opto-isolators due to the underpowered signal.

                        One concern I have is these motors are supposed to run at a maximum pulse frequency of 250 kHz. Is there a way for me to set that for the Duet board?

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