Delta Z-carriage won't move down after homing
-
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 ; relativeG1 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~45mmNext 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!
-
@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.
-
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.
-
@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?
-
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
-
@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.
- 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.
- Use 'R1' to invert the enable signal (although this may be accomplished by switching the ENA+ and ENA- wires).
- 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:
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 -
@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
-
@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 -
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.
-
@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?