Backlash calibration still possible after installing BL Touch

After installing a BL Touch on a Workhorse, is the backlash calibration with the cube toast or does it still work?

Backlash calibration will no longer work with a BLTouch, this is because the sense line ordinarily used for the backlash calibration will now be connected to the BLTouch.

Lulzbot is now selling a Taz Pro S, which has the option of adding a BLTouch. They also sell a BLTouch that is mounted to a printed plate that inserts behind the single extruder and connects to the ports that the second extruder and servo on the dual head usually connect to (I think the Workhorse has these ports as well, in case a Workhorse owner wanted to add the dual print head).

Anyway, Lulzbot must be using separate pins for the BLTouch and the backlash cube (which I think is the same as the bed leveling washers).

I have not been able to find the pinouts in any literature provided or posted by Fargo Manufactoring (are they still supportive of open source?) However, the photos show approximate pin locations in the connector, allowing for some experimentation)

I would be fairly easy to hack the hardware to allow both backlash compensation and BLTouch to work, but my question is this…

Do those who use backlash compensation think it adds to print quality? From my recent reading, I’m not sure it does. If not, is it worth the effort to re-impliment it.

I can’t say I noticed any decrease in quallity after adding the BLTouch to my Taz Pro.

Still thoughts/opinions are appreciated, as I have been considering making the effort to re-impliment the backlash compensation so I can perform side by side comparisons.

Since I no longer work for LulzBot, I no longer have access to the kind of insider information I used to have. Thus, I’ve always felt that Drunken Octopus was meant for older printers and accessories, not newer generation releases from LulzBot. You are of course free to experiment, but this is not something I can feasibly do myself. Good luck!

When backlash compensation was originally implemented, it used the same pin in Marlin as the probe. For backlash compensation and the BLTouch to work simultaneously, it would be necessary for those features to use different pins. I do not know whether Marlin has been modified to allow this, or whether LulzBot is using some custom code to do this. In any event, the calibration cube is not necessary for backlash compensation. It is merely necessary to measure it. You could conceivably use the stock firmware to run the calibration cube routine, note down the backlash values, flash the BLTouch firmware, enter those values manually, and have the same effect.

1 Like

I can answer this for you, but it’s at your own risk and I’m not accepting liability for this not working for you and who knows, maybe I made a typo below, so this is entirely for information purposes only. Don’t modify your machine, it’ll void your warranty, and other such disclaimers :slight_smile:

You can actually find the changeset directly at the lulzbot marlin git source, but, it’s rather difficult to dig out. Regardless, the way they did it is not quite the way I did it, but I’ll avoid getting into why since it doesn’t further the conversation.

The key things you need to do (in terms of ā€˜wiring’) to use the BL touch in the same manner that their add-on uses it

#1. modify /src/pins/sam/pins_ARCHIM2.h

swap SERVO0_PIN and SERVO1_PIN’s values. I kinda hate this as it’s a hack, but if you don’t, you have two options - lie in the source code and tell Marlin that your single toolhead has two servos in order to pass the compilation sanity check, or, modify the sanity check to remove the Servo Number assignment exceeds Servos available. This is the lesser of the 3 evils, IMO. Anyways, the code should look like this:

#define SERVO0_PIN 21 // D21 PB13 (Header J20 19)
#define SERVO1_PIN 20 // D20 PB12 (Header J20 20)

#2. under ā€œTemperature Sensorsā€, add:

#define ZPROBE_AS_T2_PIN 63 // PB18/AD11

That’s it for your pin modifications. Now onto the configuration file for your single toolhead:

#3. Open and edit your Configuration.h; for these, there are already definitions in place in your config file. Find them and change them accordingly, either comment them out as noted, or modify the values as noted. The values as defined below here should leave your inductive touch probing in place, while also allowing BL Touch, but I haven’t tested that to validate it, since commenting out NOZZLE_AS_PROBE might create a conflict.

#define NUM_SERVOS 1
#define Z_PROBE_SERVO_NR 0

#define USE_ZMIN_PLUG
// #define NOZZLE_AS_PROBE // comment this out
// #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // comment this out

#define Z_MIN_ENDSTOP_INVERTING 1
#define Z_MIN_PROBE_ENDSTOP_INVERTING 0

#define Z_MIN_PROBE_PIN ZPROBE_AS_T2_PIN
#define BLTOUCH

In your Configuration_adv.h file, you will need to update the PROBING_MARGIN_LEFT, FRONT, RIGHT, BACK to the correct values. You will also need, between the configuration and the configuration advanced file, to tweak the location and probing options to your liking. This is pretty important and I’ve kinda omitted the details here, but it’s just coordinate parameters and I figure if you’re in here modifying Marlin, you are hopefully comfortable doing this in the first place.

As far as the Wiring of their add-on device is concerned, that allows it to work on the Taz Pro series of printers:

The BL Touch 3 wire servo leads (Brown, Red, Yellow) - these will be connected to the 3 pin connector on the top of the interface board for E2. The Brown wire goes to Pin 1 as marked on the 70400 connector you’ll be wiring up (the triangle on the bottom of the connector), Red goes to Pin 2 (middle wire), Yellow goes to Pin 3. Red pin is +5V, Brown wire is GND, Yellow is signal. Get your ground and 5V wrong, the magic smoke will probably appear.

The BL Touch 2 wire switch wire (White, Black) - that goes to the Extruder 2 interface 20 pin connector. On a new 20 Pin Male MicroFit 3 connector, wire Black goes to Pin 2, and White goes to Pin 12.

On a completely unrelatedly related side rant:

There are 3 open pins on the Taz Pro extruder interface board. Why on earth they didn’t run even a single extra wire (the IGUS wiring they use is available in all sorts of configurations, it would have been moot for them to pick a wire configuration that had an extra couple strands), to support future expansion, rather than forcing this hack down an analog thermistor line is beyond me, but here we are. At least this works without having to re-do the wiring and create a new rev of the interface board, so >shrug<.

If this is all gibberish to you, welp, sorry about that; not much I can do in that instance as following Marlin code around is a bit of a task. Otherwise, hope it helps.

If you want to see exactly how Lulzbot did it (though my code changes above are really all you need), here’s the changeset (at least until they remove it :P). There’s a lot of unrelated crap in this changeset, so, personally, if I were me (and I am!), I’d just use the info I provided above, but to each their own!

Cheers.
-magdong.