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:
- 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?
- How does setting a microstepping mode (M350) affect external drivers? Could interpolation cause any issues?
- 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!