Nozzle misses wiper pad and gcode adjustment not applied

Since I first got my Workhorse printer the nozzle never touched the wiper pad and I had to adjust the position myself in the gcode by adjusting the wipe positions. Now with Cura LE 4.13.10 I see that G12 is used to wipe. The gcode has the following:

; Use M206 below to adjust nozzle wipe position (Replace "{machine_nozz1e_z_offset}" to adjust Z value)
; X ~ (+)left/(-)right, Y ~ (+)front/(-)back, Z ~ (+)down/(-)up
M206 X0 Y0 Z{machine_nozzle_z_offset}

I replaced X0 with X-3 (which should make the alignment perfect) but it makes no difference on the printer and the nozzle still misses. I checked the .gcode file that was saved and it does indeed contain the changed line.

I’ve updated the printer firmware. Not that it matters (the issue is the same between toolheads) but I just replaced the toolhead with the Meteor 285.

What gives?

I recommend the usage of discrete gcode to do the wipe. You can pull out the G12 commands from the firmware:

#elif ENABLED(Workhorse)
#define WIPE_SEQUENCE_COMMANDS “G28O\nM117 Wiping nozzle\nT0\nG1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nM117 Wipe Complete”

Take those commands, replace the G12 with these commands, and adjust the x position there from -17 to -20.

I will add that barring any issues with homing the x axis, it would seem the printer’s bed has moved from the factory position. They use jigs to position the four bed mounting points precisely so it’s a little strange this would need to be done.

Thanks, I will try the suggestion to go back to manual wiping coords.

The printer has always been like this from day one, and it’s an early Workhorse. I have been slowly reading through the factory assembly and calibration guide to see what adjustments possibly need to be made, although I would expect this just to be down to the positioning of the X axis limit switch (which does not appear to have 3mm of movement available).

Edit: I should also say that I understand you said the bed was positioned in the factory using a jig to adjust the four mounting points. The odd thing is that there’s no sign that these moved, so I initially suspected that the limit switch would have moved instead - nope.

I was having that issue recently and it turned out that I had tpu wrapped around my drive gear on the Y axis. I cleaned it off and that fixed it. Just something you might check.

Print this out:

The Workhorse OHAI is missing this step, but it’s the same as the Taz Pro. Wedge the jig here on both sides and confirm it’s snug with no play. If you have play or it doesn’t fit they assembled it wrong, used the wrong jig, or it moved. When I say both sides, I mean the front left and back left positions. The rightmost mounts are not positioned in this way as they use the other positions to get them in alignment.

1 Like

Interesting! I printed this and measured that it is spot-on at 161mm in length. It fits perfectly in the gap at the front and back, no wiggle at all.

So, you flashed the Meteor firmware for the Workhorse, and it’s still off?

Then the homing could be off, I’m out of ideas honestly.

Yes, that’s correct (latest Cura LE, latest machine firmware). The wiper pad is missed by 3mm in the x axis with both toolheads. I am now wondering if there was a change to one of the parts in the machine that would account for this difference, possibly in the limit switch mounting area. I will take a look at the production parts to see if I can find any differences.

It’s now wiping correctly by re-applying manual changes to the gcode. Annoyingly, I’ve just noticed that one of the bed-levelling washers is being probed in just the wrong place right now - the nozzle slightly descends into the hole in the hex screw!

You might still have the M206 in your start code. Set it back to 0,0,0.

Well, this is odd. After much playing around with the console, I have determined that M206 does not apply offsets to coordinates unless directly followed by G28 (auto home). So executing G12 (wipe nozzle) after M206 X3 and G28 works (it shifts the nozzle left 3mm).

Take a look at the following:

G28 # auto home
M114 # report position
X:-48.00 Y:-15.00 Z:295.00 E:0.00 Count X:-4800 Y:-1500 Z:147500
M206 # report home offset
  M206 X0.00 Y0.00 Z0.00

So home position is X=-48 and zero offset.

G0 X0 # move to X=0
M114 # report position
X:0.00 Y:-15.00 Z:295.00 E:0.00 Count X:0 Y:-1500 Z:147500

Head moves right 48mm to X=0.

M206 X-10 # set home offset to X-10
M206 # report home offset
  M206 X-10.00 Y0.00 Z0.00
M114 # report position
X:0.00 Y:-15.00 Z:295.00 E:0.00 Count X:0 Y:-1500 Z:147500

Home offset is now X-10, nozzle does not move (as expected).

G0 X0 # move to new X0
M114
X:0.00 Y:-15.00 Z:295.00 E:0.00 Count X:0 Y:-1500 Z:147500

Unexpected: head does not move. Offset is not applied.

G28 # auto home
M206 # report home offset
  M206 X-10.00 Y0.00 Z0.00
M114 # report position
X:-58.00 Y:-15.00 Z:295.00 E:0.00 Count X:-5800 Y:-1500 Z:147500

Now the offset is applied following an auto-home!

Firmware bug?

I reread the Marlin definition for M206 and that makes total sense that it doesn’t do anything until you rehome since what that changes is the homing position. I honestly didn’t know this either and good on you figuring that out. I guess it’s just obvious so the documentation just doesn’t mention that G28 would be needed for it to take effect.

I haven’t used Marlin on any of my Lulzbots in a long time so I’m not sure if they fixed the start gcode to put the commented out M206 command before or after the G28.

Yeah, the Marlin definition could certainly be clearer, although I’ve seen otherLulzbot printers use the new home location immediately rather than wait for rehoming (there was a thread somewhere on this forum showing a dump from the console). Edit: found it.

In the end I did M206 X3 and then M500 to store the new position (I checked, and previously it had X=0). This also centres my print correctly for the first time. It’s like my printer geometry is off a little.

M206 is working as intended, it’s adjusting the home offset, so that if you re-home it will adjust accordingly.

If you want to adjust “current” position correction instantaneously, you would use G92.

G28 ; home
G0 X0Y0
G92 X-10
G0 X0Y0 ; nozzle moves 10mm to the right

Thanks for the further explanation - I think that makes sense, but then that means the default start gcode in Cura LE is incorrect - the instructions to move the wipe location omit that a rehome is needed after setting the home offset. The console output I linked to in my previous post from a Taz 6 is also showing different behaviour (does not require a rehome).

I’m shocked.

Not that shocked, actually. Since the workhorse is still a supported model, a bug report would probably help them put the M206 on the correct side of the G28.

I had a similar problem i just adjusted my steps/mm and it fixed it all.