Correcting Horizontal Banding by Processing gcode

  • Hello,

    I've been commissioning a homebrew large format printer for a couple months now, pulling my hair out with redesigns to fix various mechanical issues as I go, but the Duet and Duex2 I'm using are great and I just ordered the Duex 5 (underestimated my needs), but all good.

    Anyway, this isn't Duet specific but I thought people might be interested.

    This machine is large (24" square build surface) and I went with a 4 linear shaft + 4 leadscrew arrangement belted to 2 motors. Learning an alignment/setup process has been painful and hindsight is 20/20, but long story short I have a periodic error in the Z movement which is likely due to eccentricity of the pulleys. Using a digital drop indicator revealed a periodic deviation of -.013mm to .042mm from the nominal Z movements with a period exactly equal to the leadscrew pitch.

    This causes a fairly extreme degree of horizontal banding in my test prints and needed to be corrected.

    I had already redesigned the Z motion system once, and considering the error is predictable, I wrote a simple Python script to post-process any gcode I run to imprint a negating deviation, being sure not to exceed the Z step resolution (5um in my case). This also required that I clock the leadscrew pulleys to be synchronized.

    Anyway, here's a print without correction:

    And with:

    See here for a couple more photos:

    For me this is a temporary solution, but if anyone has a need I went ahead and put the code on GitHub:


  • WOW!!!! Just wow….. So cool. Been there with the same problem. It is tricky with the large machines get the Z working well. This is a very clever way to deal with it, if it is mechanically hard to correct.

  • Ah cool, thanks PropellerHat!


Looks like your connection to Duet3D was lost, please wait while we try to reconnect.