tldr; Backlash Test i made and a program to get rid of it when slicer, firmware and printer won't do the job. USE AT YOUR OWN RISK
Uneven circles, crappy Infill and gaps between walls. Thats what i dealt with.
After some time i realised: My printer suffers from Backlash (when the direction of an axis changes, the movement of the stepper isn't transfered to the nozzle directly and it loses some movement).
This caused that, when the angle of return on a 100% infill was "proper", the nozzle would extrude over the same line twice, then "skip" the next one. Circles didn't have uniform diameters and walls didn't bond in specific angles which caused airgaps.
There are already some good backlash tests here (i first used: thing:2256550 )
But when tightening all belts, pulleys and steppers won't help anymore, there has to be another option. Cura and marlin don't have the answer afaik so i looked out for another option: altering the gcode itself.
thing:979377 already tried this. But since it displays the gcode, it. takes. for. ever. (>1h to load a normal sized print)
It also has a problem with long straight extrusions (e.g. 100% infill lines). They still suffer from backlash (gaps between lines) and only get shiftet a bit in their angle.
Furthermore Start-/End-codes get messed up. If you want to try it, be warned that the nozzle doesn't run into your print when it is finished ;-)
Thats why i came up with my own code. After a lot of testing it works for me like a charm and i built in some safety options so i can share it. But still: As they say, the devil never sleeps. So be careful and visualize the new .gcode files befor uploading to your printer. (I use www.gcode.ws)
How to use it and how it works:
Your start code needs to contain G90 to signal Absolute Positioning, otherwise nothing will be altered.
Put the .exe in the same folder of your .gcode file. Copy the name. Start the .exe
Enter the desired backlash compensation for x and y, paste the name of the .gcode and watch it convert (takes a few seconds).
You will get a new file, so it won't alter the original one.
Antibacklash analyses the gcode and whenever X or Y makes a positiv movement it adjusts the coordinates with the selected backlash-value. When the nozzle makes a turn (from positiv movement to negativ or reversed) it adds an additional empty travel move to add/remove the backlash befor performing the actual move. The nozzle won't move in reality, it just compensates the backlash. That way even long parallel lines (100% Infill) get handled. Only G0 or G1 movements get changed.
The program will alert you if you have any G91 (Relative Positioning) moves in your code until it switches back to G90. These parts won't get touched. But since they are usual in the end-gcode for moving the nozzle away from the bed and retracting after the print finished, this won't affect us at all.
After that you should be good to go. To check the gcode i simply use gcode.ws to visualize and notepad++ to compare the old with the new version of the files.
Try it first with any backlash test to get the right values.
My workflow is displayed in the pictures. The first two are without and with too much backlash compensation to see if it works. After that i trimmed the settings until i got to the right values. How to print my test and interpret the results is explained later on.
I didn't have any problems with Antibacklash so far and don't expect it. If you come across any unexpected issues, feel free to share it.
But keep in mind, Antibacklash is a free program and it comes without any warranty. Use at your own risk!
This Test is meant to be printed with a 0.4mm nozzle but it can be adjusted by resizing it.
All walls are 0.8mm so a print at 100% should leave no gaps between walls when the backlash is eliminated.
Workflow (adjust for bigger/smaller nozzle):
Resize the test to 115% in X and Y. This way the walls become 0.92mm wide so we can get gaps in between. If you still have no visible gaps just up the size.
Slicer settings: 1 Outer Wall only, 0 Top Layers, No Infill. Don't print it too fast since this could lead to slight underextrusion at the beginning of some walls which can result in false results. I printed at 15mm/s Outer-Wall-Speed.
If you want you can resize in Z to save time. I started my first tests with 60% Z.
To make sure the backlash values are applied correctly check if your slicer draws the walls counterclockwise (cura does so). If it is reversed, the instructions are inversed (raise <-> lower)
Print one Test as it is. You should see gaps on the sides indicating backlash issues.
Print one with extreme backlash compensation to see how it changes the result.
(Picture 1: No BLC: Gap at bottom and right side. High BLC: gap at top and left)
To visualize i used a black permanent marker. With white PLA it works quite good to even see small gaps.
After that you can adjust the backlash settings until the gaps are gone or equal at opposing sides.
To better understand what to do i marked the sides. E.g. if you have a bigger gap at the bottom, you have to raise the Y backlash compensation. A bigger gap on the left means you have to lower the X BLC.
The 45° and 135° walls are mainly to see how angled walls behave in the final result. Gaps here result from a mixture of X and Y backlash combined, so don't mind them during evaluating your settings.
When you have your desired values (in my case X: 0.010, Y: 0.140) you can print the test once more at 100%. Now you shouldn't have any gaps in walls.
Happy printing and please share your results :-)