I came up with a new method for doing the tower rotations. It takes a lot longer than the ad-hoc method of trying different combinations on different towers, but you get better data and (hopefully) a better calibration. It takes at least an hour to step through all of this. You will need the following:
- Depth gauge, accurate to 1/1000th inch or better
- Depth gauge holder (you can 3D print one, or get one from http://tricklaser.com)
- Some G-code scripts
- Repetier firmware
- Loads of time and patience
In the normal "three-point" calibration routine, you adjust the endstop screws on all three towers, then do a printer radius adjustment. We will expand on this in two phases. In phase 1, we'll change the rotation of each tower individually by a small amount (1/4 degree at a time), re-do the three-point calibration, verify the printer radius, and then record the amount of dip or lift relative to zero in all four quadrants.
We have to have clean data, so we only change one tower rotation at a time. At the end of this phase, we'll have lots of measurements. In phase 2, we'll bring these measurements together to try altering the rotation of two towers at the same time.
Also, after you do your initial calibration,
DO NOT ADJUST THE ENDSTOP SCREWS. Use the "Tower X/Y/Z endstop offset" variables in the EEPROM instead. This will streamline your work, and you won't have to continuously adjust the tower height.
G-code scripts:
Code: Select all
; Script 1, Z tower
G1 Z50 F12000
G1 X0 Y90
G1 Z5
G1 Z0 F500
; Script 2, Y tower
G1 Z50 F12000
G1 X77.94 Y-45
G1 Z5
G1 Z0 F500
; Script 3, X tower
G1 Z50 F12000
G1 X-77.94 Y-45
G1 Z5
G1 Z0 F500
; Script 4, Bed center
G1 Z50 F12000
G1 X0 Y0
G1 Z5
G1 Z0 F500
; Script 5, Fast Home
G1 Z275 F12000
G28
EEPROM settings:
Code: Select all
Acceleration [mm/s^2]: 1000 (less is OK too)
Tower X endstop offset [steps]: 30
Tower Y endstop offset [steps]: 30
Tower Z endstop offset [steps]: 30
Alpha A(210): 210
Alpha B(330): 330
Alpha C(90): 90
Delta Radius A(0): 0
Delta Radius B(0): 0
Delta Radius C(0): 0
Delta Radius is zeroed because I've never had anything but evil results from messing with it. The prints tend to shift a little each layer, so the output looks slanted. Alpha A/B/C = your X/Y/Z tower rotations. The endstop offsets are so that we can mess with the print center without having to constantly readjust the Z height. (Constantly tightening/loosening the endstop screws means you have to adjust the tower height as well - why bother?) We set these each to 30 steps so we have some wiggle room to either increase or decrease a tower's offset relative to the other two.
There are some high travel speeds in these scripts because you'll run each one of them
dozens of times and I hate having to wait an unnecessarily long time for the printer to move. I've never made my belts jump over any teeth with these speeds, and I doubt you'll have trouble with them either, unless your belts are really loose. Repeatability is very good on these printers due to their high-torque motors, so don't waste time babying your printer with excruciatingly slow moves. However, I recommend setting acceleration to 1000 or less.
For each tower, the rotation is set to factory default (X=210, Y=330, Z=90). A standard tower calibration,
including printer radius, is done per the manual. (Remember, after this you must leave the endstop screws alone, changing the values in EEPROM instead.) The scripts will make this easy because all you have to do is hit Ctrl+Alt + 1/2/3/4/5.
The purpose of the three-point calibration is to tell the printer where the center of the print surface is. Those test points are perfect for that purpose, but as the problem we're trying to fix occurs
between the towers rather than next to them, we can't very well use those test points to figure it out. So, we switch to a
quadrant system in which we test points in all four quadrants. As Repetier has only five hotkey scripts, and we're using all five, we will use the big movement arrows on the Manual Control tab instead. (This is a little clunky at first, but you'll get the rhythm down after you've done it several times.)
The quadrant test works like this:
- Fast home, then move head to 0,0,0 (Ctrl+Alt+5, Ctrl+Alt+4)
- Test quadrant 1: +Z arrow to lift 10mm, +Y and +X to move the head to (50, 50), -Z arrow to drop to 0mm; record reading
- Test quadrant 2: +Z to 10mm, -X twice to move the head to (50, -50), -Z to 0mm; record reading
- Test quadrant 3: +Z to 10mm, -Y twice to move the head to (-50, -50), -Z to 0mm; record reading
- Test quadrant 4: +Z to 10mm, +X twice to move the head to (-50, 50), -Z to 0mm; record reading
I raise to 10mm and then descend to 0 each time because I don't want the probe tip dragging across the surface. That can nudge it out of alignment in the mount.
Anyway, after you do a tower alignment and printer radius, do your first quadrant test. You should have some notes like these:
Code: Select all
REFERENCE
X=210, Y=330, Z=90
-----------------------
Q1: 5
Q2: -3.5
Q3: -3.5
Q4: -6
That tells you the deflection in thous. 0.1mm is a hair under 4 thou, so you can see that with a 0.1mm layer height, the print nozzle will either dip down almost all the way to the print surface (blocking the nozzle) or lift more than one full layer height (ruining first layer adhesion) depending on which quadrant you're in.
I used a target deflection of <=2 thou. That way, a 0.1mm layer height (which is about 4 thou) should be able to print OK.
Now comes the long, laborious task of repeating the quadrant test with different tower rotations. For the first phase,
we will ONLY change ONE tower rotation at a time. This is because we need to start from the cleanest data possible, and we simply can't do that if we're changing more than one variable at a time. Each time we change a rotation, the change is small - I like to start with a value of 1/4 degree - and
you HAVE to redo the tower alignment and verify the print radius EACH TIME. This is because changing a tower rotation invalidates the printer's notion of where its center is. Thus,
you should expect each quadrant test to take 5-10 minutes.
This is what I got for my X tower:
Code: Select all
REFERENCE
X=210, Y=330, Z=90
-----------------------
Q1: 5
Q2: -3.5
Q3: -3.5
Q4: -6
X=209.75 Q1: 5.5 0.5 worse
Q2: -5 1.5 worse
Q3: -4 0.5 worse
Q4: -6 Same
------------------
B: 0
W: 2.5
------------------
Nope!
The "better/worse" evaluation is done in absolute values, or how close the Z deflection is to zero. If the reference deflection is -5, and you rotate a tower and find that the deflection is now +3, that's an improvement of 2. You then find the best and worst changes and record them below the measurements (in this case, none were better and the worst was 2.5 thou further away from zero). When this is done, record whether there was a net gain or not at the bottom of your figures. (I like "OK" and "Nope!" for easy scanning.)
The quadrant tests are done with the rotations like this:
- X=209.75
- X=210.25
- Y=329.75
- Y=330.25
- Z=89.75
- Z=90.25
You probably guessed that the point of this is to measure whether it's better for each tower if you increase the rotation a little, or decrease it a little. As you have to redo the tower calibration and verify the print radius each time, it will take awhile.
At the end of the first phase, this is what my notes looked like:
Code: Select all
REFERENCE
X=210, Y=330, Z=90
-----------------------
Q1: 5
Q2: -3.5
Q3: -3.5
Q4: -6
X=209.75 Q1: 5.5 0.5 worse
Q2: -5 1.5 worse
Q3: -4 0.5 worse
Q4: -6 Same
------------------
B: 0
W: 2.5
------------------
Nope!
X=210.25 Q1: 5 Same
Q2: -1 2.5 better
Q3: -5 2.5 worse
Q4: -7.5 1.5 worse
------------------
B: 2.5
W: 5
------------------
Nope!
Reset X to 210.
Y=329.75 Q1: 7 2 worse
Q2: -4 0.5 worse
Q3: -4 0.5 worse
Q4: -8 2 worse
------------------
B: 0
W: 5
------------------
Nope!
Y=330.25 Q1: 3 2 better
Q2: -4 0.5 worse
Q3: -3 0.5 better
Q4: -6 same
------------------
B: 2
W: 1
------------------
OK
Reset Y to 330.
Z=89.75 Q1: 2 3 better
Q2: -2 1.5 better
Q3: -4.5 1 worse
Q4: -7 1 worse
------------------
B: 4.5
W: 2
------------------
OK
Z=90.25 Q1: 7 2 worse
Q2: -6 2.5 worse
Q3: -4 0.5 worse
Q4: -7 1 worse
------------------
B: 0
W: 6
------------------
Nope!
Z=89.75 produced the best results for quadrants 1 & 2.
Y=330.25 produced the best results without making Q4 worse.
If you're lucky enough that a single rotation gets your printer well-aligned by itself, you're in luck. Set that rotation to your towers, redo the tower calibration/printer radius, verify with a quadrant test, and be on your way. If not, you can try either doing more aggressive rotations (in the directions measured to pay off the best) or try combining the most successful rotations:
Code: Select all
Reseting to reference.
REFERENCE
X=210, Y=330, Z=90
-----------------------
Q1: 5
Q2: -3.5
Q3: -3.5
Q4: -6
Trying Z=89.5 Q1: 0 5 better
Q2: 0 3.5 better
Q3: -3 0.5 better
Q4: -6 same Total: 9 better
Z=89.5
Y=330.25 Q1: -.5 4.5 better
Q2: 0.5 3 better
Q3: -3.5 same
Q4: -5 1 better Total: 8.5 better
Z=89.5
Y=330.5 Q1: -3.5 1.5 better
Q2: 1 1.5 better
Q3: -2.5 1 better
Q4: -4 2 better Total: 5 better
Z=89.5
Y=330.15 Q1: -1 4 better
Q2: 2 1.5 better
Q3: -4 0.5 worse
Q4: 6.5 0.5 worse Total: 4.5 better
I picked the third combination (Z=89.5, Y=330.5) because it had the lowest maximum deflection. Q4 was still a full 4 thou (one layer height) low, but the other quadrants were all better than that.
This still leaves significant slop, particularly in the 4th quadrant. To "band-aid" the problem, I opened KISSlicer, went to Printer->Hardware, and set the "Bed Roughness [mm]" to 0.2. This causes KISSlicer to produce a taller 1st layer. Bed Rougness is
not a panacea - all it does is make a thicker layer, meaning you get squished filament in some places and over-round filament in others. As a finishing touch, it does help, and may make the difference between getting a good 1st layer adhesion and not being able to print at all.