Dual Z stepper problem

Please Login to Comment

I have a dual stepper Z axis setup on a Hypercube driven by a Duet Ethernet board. The only problem I have with it is after finishing a print, I have a script in Simplifiy3D that lowers the build platform and homes the X and Y axes. Every time it does this, if I home the Z axis, the right side is a few mm higher and the build plate hits the extruder nozzle when it raises to the home position. I can manually turn the actuator rod a few steps and lower that side back to the correct position, but I can't understand why it does this. The platform isn't binding as I have taken it loose from the follower nuts and it slides up and down the entire range of travel freely.
Now if it use the Panel Duet and manually move the platform up and down, even over the full 300mm range, it never gets out of alignment.

Any ideas what might be going on?

Okay, I got it figured out.
The brackets that hold the vertical guide rods don't seem to hold the bed level when the stepper motors are disabled, and the weight of the bed overcomes the static resistance of the stepper motor and it sags on one side. This is not a problem as long as the power is on and the motors are receiving holding current.

After loosening all the rod mounts and carefully retightening them, it was no better.

So, what I did was to put a 60 tooth GT2 pulley on each Z-axis actuator shaft above the flexible coupling and tied them together with a GT2 belt and idler to keep tension on the belt and keep both actuators in time. Since then, the bed has remained level and have only had to make minor tweeks to the leveling adjusters.

I get the same thing you do.
S3D disables motors by default. It's possible your bed frame isn't exactly straight and you have to compensate.
That's why I do G32 before each print to be sure the bed is exactly straight. I've done it this way for months and never had an issue.

I'm not sure how that would cause the problem. If S3D disables the motors, it's going to have to disable both at the same time, since they are both connected to the same driver port.

Two things then. And bear with me as I am making some assumptions here.

  1. Imagine your bed gantry is not even and one side pulls down a bit. When you turn the rod - with the motors on - you turn the rod and get level again, while even the idle current applied to the motor holds the whole thing stable - despite the pressure from one side of the gantry pushing downwards. Then, when you disable motors via the code in S3D - the rod should be much easier to move and the force of the side of the bed pushes down hard enough to make a difference.
  2. Are all your stepper ports used up? If not, why not use Duet in all it's awesomeness and put one motor on Z, the other on a free port (like E1 for example) and then use true bed leveling, where the duet will probe near both screws and then automatically adjust the offset to make the bed even. :)

How fast is it trying to drop the bed in your slicer end gcode? It's possible it's going too fast or maybe accelerating too quickly. Would need to see your settings to know more.

I have tried several speeds, from 8000 down to 1000, and it doesn't make any difference.

Here is the starting script.
G28 X0
G28 Y0
G28 Z0
G92 E0
G1 X100 Y250.0 F6000 :go to front of bed
G1 Z0.3 F2000 ;set noxxle .3 mm high
G1 X200 E25.0 F2000 :extrude a line 100mm long
G1 X210 F180 ;wait for ooze
G1 X220 F6000 ;fast wipe
G1 Z5.0 F1000 ;lower bed 5 mm
G92 E0

Here's the ending script.
M104 S0 ; turn off extruder
M140 S0 ; turn off bed
G91 ; use relative coordinates
G1 Z100 F4000 ; Lower 100mm
G90 ; use absolute coordinates
G28 X0 ; home X axis
G28 Y0 ; home y axis
M84 ; disable motors
M107 ; turn off fan
M300 S2000 P1000 ; beep to signal end

What's the max speed and acceleration set to for your Z axis? Are your motor currents set to 85% of the rated max for the motors?

Here is the config.g file. I'm not an expert, but it looks like the motor currents are set to 800ma and the idle currents are set at 30%.
Those figures would seem to be pretty close to normal.
The Z axis acceleration is set for 250 mm^2. Maybe that is too fast?

After some searching, I found the specs for the stepper motors, and the max current is 1.7 amps, so it looks like I could bump the motor current up, to maybe 1200 ma?

; Configuration file for Duet Ethernet (firmware version 1.21)
; executed by the firmware on start-up
; generated by RepRapFirmware Configuration Tool on Sat Feb 09 2019 18:14:01 GMT-0500 (Eastern Standard Time)

; General preferences
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves

M667 S1 ; Select CoreXY mode

; Network
M550 PHypercube EVO ; Set machine name
M552 P0.0.0.0 S1 ; Enable network and acquire dynamic address via DHCP
M586 P0 S1 ; Enable HTTP
M586 P1 S0 ; Disable FTP
M586 P2 S0 ; Disable Telnet

; Drives
M569 P0 S1 ; Drive 0 goes forwards
M569 P1 S1 ; Drive 1 goes forwards
M569 P2 S1 ; Drive 2 goes forwards
M569 P3 S1 ; Drive 3 goes forwards
M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
M92 X80 Y80 Z4000 E420 ; Set steps per mm
M566 X900 Y900 Z12 E120 ; Set maximum instantaneous speed changes (mm/min)
M203 X6000 Y6000 Z180 E1200 ; Set maximum speeds (mm/min)
M201 X500 Y20 Z250 E250 ; Set accelerations (mm/s^2)
M906 X800 Y800 Z800 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout

; Axis Limits
M208 X0 Y0 Z0 S1 ; Set axis minima
M208 X300 Y300 Z300 S0 ; Set axis maxima

; Endstops
M574 X1 Y1 S1 ; Set active high endstops

I don't see anything in there that would cause going out of sync. Though I notice your Y axis acceleration is very low.

Dual lead screws going out of sync is quite common though. When the motors power down they snap to the nearest full step, and not always in the same direction, so eventually they can go out of sync. This can be even more exacerbated if your bed is heavy and the lead screw lead is aggressive. You need to mitigate it in some way. Some people add a continuous loop belt between the two shafts to keep them locked together. Some switch to a single motor belted to the lead screws. Or you can use some sort of routine to adjust the motors independently and level the bed before every print. This requires moving one motor to it's own driver like E1.