UNSOLVED Clearpath Servos with 1XD Expansion

  • So ive got the clearpaths with 1XD "Printing"

    I have them homing to hard stops, and all is good, until I print, then I am getting periodic layer shifts. And I am 99.9% confident that it the servos are not loosing position.

    When I run a M122 B40 I get the following:

    Moves scheduled 1925, completed 1924, in progress 1, hiccups 27422

    im thinking hiccups isnt a good thing, My other 1XD gives a similar read out.

    Ive tried various timings, starting at T2.7:2.7:2.7:2.7 playing around all the way to 50 to see if that fixes it, and it doesnt (it does make for some interesting corners on the prints though)

    My config file has them setup as such:

    ; Axis and motor configuration
    	M669 K1												; set CoreXY mode
    	M569 P40.0 S1 R0 T5:5:5:5
    	M569 P41.0 S0 R0 T5:5:5:5				
    	M569 P2 S1                          								; Drive 2 backwards	Right Z
    	M569 P5 S1                          								; Drive 5 backwards	Left Front Z
    	M569 P4 S1                          								; Drive 4 backwards	Left Rear Z
    	M569 P1 S1											; Drive 1 Extruder
    	M584 X41.0 Y40.0 Z2:5:4 E1									; Map Z to drivers 2, 3, 4, XY are on 1XD boards X can address 41 Y is at 40
    	M350 Z16 E16 I1	    										; set 16x microstepping for Z axes& extruder, with interpolation														
    	M671 X405:-44.5:-44.5  Y160:7:290 S7.5  							; Right, Left Front, Left Rear  S7.5max correction
    	M906 Z1000 E800 I60	    									; Set motor currents (mA)
    	M201 X4000 Y0500 Z100 E3000          								; Accelerations (mm/s^2)
    	M203 X75000 Y75000 Z900 E6400      								; Maximum speeds (mm/min)
    	M566 X400 Y400 Z250 E2000            								; Maximum jerk speeds mm/minute
    	M208 X300 Y300 Z300                 								; Max Pos
    	M208 X0 Y0 Z-0.5 S1                 								; Min Pos
    	M92 X200 Y200 Z414.0785 E4123.7113	    							; steps/mm

    I theorize that they may be getting out of phase with each other, Im not sure if that is happening on the Servo driver or at the 1xd board.

    How would I diagnose this further?

  • @jballard86 at Duet 2 the limit would be about 120 kHz for every driver (120,000 steps per second). I don't know the limit for Duet 3.
    Steps per second are calculated from the steps of stepper (eg 200), the microstepping (eg 16) and how many rotations per second (depends on the speed), all multiplied, should be below 120,000 for a Duet 2, Duet 3 a bit different.

    So your steps/s may be too high for the external driver, try reducing the microsteps and/or the maximum speed setting. Microsteps are set at the external driver box or some external drivers set it by RS232/484 interface. Maximum speed is set in config, 75000 is very high, try 6000 (100 mm/s) as a test.
    If you are not sure how your microstepping setting is, please post an image of the switches of the external driver box. If you use iHSV or similar, microstepping is set by software and RS232/485.

  • administrators

    @jballard86 said in Clearpath Servos with 1XD Expansion:

    Ive tried various timings, starting at T2.7:2.7:2.7:2.7 playing around all the way to 50 to see if that fixes it

    Layer shifts are usually caused by one of the last two values being too low. So try 2.7:2.7:50:50. But you shouldn't need values as high as 50. Have you a link to the specification on step pulse timing for those servos?

  • @dc42 the pulse timing is stated as a minimum of 1us.

    I tried 5:5:100:100 as an extreme test, still got the layer shifts.

    While my max speeds are set high, I'm testing at 60mm/s and 100mm/a travel.

    Servos are set up at 8000 ticks per rotation.

  • Maybe some progress, I noticed that when the extruder does a retraction, that there is a dip in "Position error" blue line, and that for some reason during every retraction event the servo drives go idle, and for the same amount of time Channel B has a slight pause that coincides with the idle state and the retraction event.

    The vertical green line is the start of the retraction event. I'm going to attempt a print with no retraction next.

    Servo goes Idle.jpg

  • Im printing a simple spline type object in order to get many oscillating tool paths, hince the retract only happening once per layer, during layer change.

    With retract off, the same dip happens when the layer change happens.

    As far as I know the duet and 1xd boards have a buffer and should still be processing moves during the layer change correct?

  • @dc42 After pausing the machine after some slight layer shifts I did a G0 X0 Y0 to take the printer carriage to where the print believes is home. I also looked at the counts on the Servos. Lastly I compared those numbers to actual home after homing.

    After Homing
    Duet (0,0)
    Servos ( 3574, -426)

    After a few layer shifts
    Duet (0,0)
    Servos (3500, -417)

    The servos are not the issue here, there is an issue with either the Duet 3 or the Expansion 1XD boards, Could be in the config I guess, but I dont see how.

    The issue does go away if I slow the print down to 20mm/s, but that is an unreasonable solution.

    X 8000 counts/ rev (40x microstepping equivalent)
    Y 8000 counts/ rev (40x microstepping equivalent)
    Z 16x microstepping (414 steps/rev)
    E 8x microstepping (2061 steps/rev) has a 10:1 reduction
    interpolation = 1

    This should not be enough to reach the limit of the Duet 3, correct?

    Im open for more ideas on how to test this issue.

  • @jballard86 said in Clearpath Servos with 1XD Expansion:

    This should not be enough to reach the limit of the Duet 3, correct?

    I don't think you reach the limit. But in your initial information you wrote about high hiccups, there must have a reason.

    You should recheck hiccups after reducing the speed and make sure the hiccups are low or 0.

    ClearPath has nice test programs!

    But back to the problem: I saw various reasons for layer shifts, and it is important to know the exact nature of the layer shift, especially in which direction (which axis direction, sometimes diagonal), always same shift distance. Best would be you post an image. Layer shifts can have different reasons like slipping pulleys, it is not necessarily the stepper.

  • @JoergS5

    at low speeds, no retractions, no fan the hiccups are minimal: 0-2.

    Ive also reduced the servos to an 18x microstepping equivalent (3600 counts/rev), with no change.

    Ill also have to say that even at low speeds im still getting a shift on every layer its just significantly less pronounced.

    Ive also tested without the bed heater on, no change. I thought there may be interference.

  • @jballard86 so see my post addition (our posts crossed), there could be a different reason, if possible please post an image of the shift.

    When you have less shift with lower speed, a slipping pulley at the stepper could be the reason. You can mark pulley-shaft position with a marker to verify it is not slipping. I mean like:

  • @JoergS5 20200726_135227.jpg

    Here is one example, the shifts are sporadic in direction, they can be along axis lines, and then diagonally.

    A real simple shape such as a cube has no issues, but if you add any features it becomes problematic.

  • @JoergS5 ill mark the pulleys and retest.

  • @JoergS5 I milled shallow flats in my servo shafts, they are still lined up with the set screws, however I marked them just in case.

    Ran file, marks still line up.

  • @jballard86 your layer shifts look interesting...

    One remarkable detail is that the shift is of the kind if it shifts, left and right shift to the same direction. So the shift is not due to a lower print distance.

    One reason for layer shifts are print bed shifts, but when you get less shifts with lower speed, so this is unprobable. Can you exclude this possibility? (how good is your Z movement system?)

    The next possible reason is that the nozzle touches the object while layer change and moves it. There is something called Z-hop in the slicer to take the nozzle away.

    One possible reason, not probably not in your case but I want to mention it, is that something is in the way for the actuators, like cables, which disturb the movement.

    One intersting detail in your image is that there are multiple layers shifting into one direction, then multiple layers shifting into the other direction, but different number of shifts for every direction. There must be a reason for this. If we found the reason, we know the solution!

    It would be interesting to make a test at layer change, whether the coordinates are still correct, but testing the values at the endstops.

  • Z axis is remarkably stiff, z rails, kinematic mounts, all aluminum, mounted to 1"x2: aluminum bar for increased rigidity.

    Never had good luck with zhop in the 10+ years ive used 3d printers. so Zhop is disabled.

    Nothing is disturbing movement, besides the clearpath software would give me an error if there was an over torque situation, which would indicate that there was a collision of some sort in this type of scenario.

    but you are right, the shifts are interesting. Ive taken everything out of the question that is unnecessary for a print to print (albeit ugly), Ive verified that the servos are not missing steps, ive modified accelerations, jerks, speeds, etc with no change.

    I know that for some reason there is a pause on the 1XD boards when there is a layer change where the servos actually go into an idle mode.

    ive deactivated the bed heater (110v) encase it is causing interference, ive checked that all cables are not ran next to a cable that would cause issues with interference.

    This problem is firmware, hardware, or interference related.

  • @JoergS5

    I have tested after a series of layer shifts:

    After Homing
    Duet (0,0)
    Servos ( 3574, -426)

    After a few layer shifts
    Duet (0,0)
    Servos (3500, -417)

    The servos know where they are and the Duet thinks it knows where it is, but it has had something happen in communication or elsewhere that causes it to loose its actual location (im thinking it has to do with the 1XD boards)

  • @jballard86 I have thought about why the direction of the layer shifts is different. Maybe it is because the fast movement to the begin of the new layer is from left to right or right to left. Did you check that the steps/mm are all correct? And if layer changes, is there something special in the G-Code like using G0 instead of G1, different speeds or something other special?

    You can insert a macro at layer change to verify if the coordinate system is still correct, testing the positions at the endstops. There is a thread somewhere in the forum to test endstop at every layer.

    => our posts crossed again 😉 Our thoughts are in the same direction, that the coordinates change at the layers.

  • @JoergS5
    Its a core xy setting steps/mm is irrelevant, you use the Mcode to scale the x and y

    Testing at later change could give some interesting results but I'm using hard stops, so not viable if the shifts are in the wrong direction. And as I can't log both servos count position at the same time and have to swap cables it could take an afternoon or longer to run and rerun tests.

    Do you think the servos are loosing position or the duet? Im 100% confidant that it's the duet as I've already shown that.

  • @JoergS5 Post crossing is happening often 😅

  • @JoergS5 I'm adding a g4 s.5 on layer change, I predict it may stop the shift, but is also not an acceptable solution. Results in a few min.

  • @jballard86 M400 before layer change would be a test also. Maybe XY throws a movement away when Z move starts.

  • @JoergS5

    g4 reduced a lot of the shifts, trying:

    g4 s.5

    results in a few

  • @JoergS5
    still shifting with m400 and g4 s.5

  • @jballard86 at the moment I don't have additional ideas. I will think about and tell you when I have a new one.