Let's define some variables for our calculation:
dD = diameter difference between bowden ID and filament OD
Rb = center radius of bowden tube
Lf =length of filament during a forward push
Lr = length of filament during a retraction
dL = Lf - Lr = backlash
Lf = pi * (Rb + dD/2)
Lr = pi * (Rb - dD/2)
dL = pi * (Rb + dD/2) - pi * (Rb - dD/2) = pi * dD
Interestingly, we find that Rb drops out, so the backlash is independent of the length of the bowden tube. It is related only to the difference in diameter between the bowden tube ID and the filament OD. Using a longer bowden tube under these assumptions does not increase the backlash.
I use 1.75mm filament with a 2mm ID bowden tube. Since dD is 0.25mm, I can expect that the backlash is about 0.8mm. On a non-bowden extruder, I use 1.5mm retraction. Unless there are other sources of backlash, I should increase this number to 2.3mm. I have seen that most people use much more retraction (up to 10mm) for bowden. I can't yet find a reason why this is necessary.
Perhaps an equally important thing to consider is the time it takes to retract the initial backlash amount. If we (for now) neglect acceleration and jerk, the time required to overcome the backlash is:
time = backlash / retract speed
If I use 20mm/s retraction speed, then 0.8mm/(20mm/s) = 40ms. That 40ms, the filament is being allowed to ooze out the hotend and create a blob on your part. Ideally, we want to retract as quickly as possible! If we use 100mm/s retraction, the wait time is reduced to 8ms. This should significantly reduce the amount of blobbing. At the moment, I can only qualitatively say that with 20mm/s retraction is far too slow.. 60mm/s is better.
Keep in mind that for retraction speeds around 60mm/s or above, acceleration time becomes comparable to the backlash retraction wait time. Accelerating from zero and using 9000mm/s^2, we find (60mm/s)/(9000mm/s^2) = 6.7ms. We can use e_jerk settings to reduce this. If we set e_jerk to 40mm/s, then the acceleration time is reduced to about (60mm/s - 40mm/s)/(9000mm/s^2) = 2.2ms... but for larger retraction speeds, e_jerk has to be increased to maintain effectiveness.
Another thing to consider is how quickly your stepper motor can actually retract. If we assume a step rate of 40kHz, 200 steps per revolution, microstepping factor M, gear ratio G, and hobbed diameter D, our max speed is:
Smax = (40,000*3.14*D)/(200*M*G*2)
Let's use the following as an example:
M = 16 (1/16th microstepping)
G = 1.67 (it's the gear ratio I've been using 36T small, 60T large)
D = 7mm (approx hobbed bolt diameter)
we find Smax = 165 mm/s. For a typical wade's gear ratio of G = 45:11 = 4.1, Smax = 67 mm/s. Calculate this number for your setup and do not exceed it in your retraction settings. If you are getting close to Smax, then decrease your microstepping to 1/8th to double Smax.
Bottom Line:
The goal is to reduce the wait time caused by backlash. Start by calculating your backlash, then increase your (theoretical) retraction speed. Calculate how long it will take to retract the backlash amount based on that speed. Increase acceleration and/or e_jerk until the time to accelerate becomes comparable to the backlash retraction time. At some point, your motor will stall... keep your settings less than this amount.
Next on my to-do list is to actually test this. Increased retraction speed has helped my prints significantly so far. Unfortunately, I broke my pushtofit connector and I didn't have a backup... so that's why I'm stopping to think about things while I'm waiting for new ones to arrive :)
If you have advice to add, I'd like to hear it. I think that great prints should be possible with the right settings and adjustments.