Auto-leveling accuracy w/ BLTouch
I've been browsing the forum looking for a thread with similar symptoms to my own, but haven't seen anything discussed thus far.
I have a Wanhao i3 v2.1 that I've done a fair bit of modifications to. Most notably it's been upgraded to a RAMPS 1.4 controller, TMC2100 stepper drivers, and a BlTouch Z-Probe. I've also moved the Z-endstop so that the printer homes to X,Y-min and Z-max. I'm using Repetier-Server v0.83 as my host, and Repetier-Firmware v1.0dev as my firmware.
I've been following the Z-Probing guide located here: https://www.repetier.com/documentation/repetier-firmware/z-probing/
As far as I can tell, everything is "working" correctly. I have carefully set my Z-Probe height and offsets. I am using a 5x5 grid for bed_leveling_method, and a 7x7 grid for distortion_correction_points. My bed_correction_method = 0. When I issue a G32 S2 command the probe measures the 25 points as expected, and then the console reports "Autoleveling enabled". Then I issue a G33, it measures the appropriate 41 points, and reports Distortion Correction Enabled. All measurements are performed with the bed and nozzle heated to printing temperatures.
My problem is that this whole process doesn't seem to have any effect! I seem to have a slight 1mm high crown in my print bed, where the edges are a bit lower than the centre. Even after auto leveling and enabling distortion correction, my extruder is 1mm or more above the bed at the edges, and it presses into the bed in the centre. When I start a print with a .1mm first layer, that's about 60mm wide, the left side of the print has adhesion problems, and the right side is pressed into the glass firmly enough that it takes 2 or 3 layers before there is enough clearance for the PLA to start extruding.
Also, just to note, I'm aware that modifications to configuration.h doesn't modify EEPROM-stored parameters unless you change the value of EEPROM_MODE, so things like probe height and P1,P2,P3 X/Y coordinates I've been updating directly in the EEPROM using repetier-server.
What am I doing wrong? Can Z-Probing really not compensate for a 1mm crown? Am I doing something out of order? Would it be helpful for me to provide you with my configuration.h?
Your advise would be greatly appreciated.
-A
I have a Wanhao i3 v2.1 that I've done a fair bit of modifications to. Most notably it's been upgraded to a RAMPS 1.4 controller, TMC2100 stepper drivers, and a BlTouch Z-Probe. I've also moved the Z-endstop so that the printer homes to X,Y-min and Z-max. I'm using Repetier-Server v0.83 as my host, and Repetier-Firmware v1.0dev as my firmware.
I've been following the Z-Probing guide located here: https://www.repetier.com/documentation/repetier-firmware/z-probing/
As far as I can tell, everything is "working" correctly. I have carefully set my Z-Probe height and offsets. I am using a 5x5 grid for bed_leveling_method, and a 7x7 grid for distortion_correction_points. My bed_correction_method = 0. When I issue a G32 S2 command the probe measures the 25 points as expected, and then the console reports "Autoleveling enabled". Then I issue a G33, it measures the appropriate 41 points, and reports Distortion Correction Enabled. All measurements are performed with the bed and nozzle heated to printing temperatures.
My problem is that this whole process doesn't seem to have any effect! I seem to have a slight 1mm high crown in my print bed, where the edges are a bit lower than the centre. Even after auto leveling and enabling distortion correction, my extruder is 1mm or more above the bed at the edges, and it presses into the bed in the centre. When I start a print with a .1mm first layer, that's about 60mm wide, the left side of the print has adhesion problems, and the right side is pressed into the glass firmly enough that it takes 2 or 3 layers before there is enough clearance for the PLA to start extruding.
Also, just to note, I'm aware that modifications to configuration.h doesn't modify EEPROM-stored parameters unless you change the value of EEPROM_MODE, so things like probe height and P1,P2,P3 X/Y coordinates I've been updating directly in the EEPROM using repetier-server.
What am I doing wrong? Can Z-Probing really not compensate for a 1mm crown? Am I doing something out of order? Would it be helpful for me to provide you with my configuration.h?
Your advise would be greatly appreciated.
-A
Comments
Then you must be aware that it only covers the area where you measured with probe. If the crown is outside it will be neglected since printer does not know about it.
G33 reduces correction over height so make sure it corrects high enough.
G32 returns a rotation matrix after measuring, so you see if it has any effect for your bed or is already level. Then only z is corrected to average height.
My guess is not using dev, right?
I did mention in my previous message that I am actually using 1.0dev. It was a long message though, you might have missed it Originally I was using the checkin from April 19th. Last night I did a repo pull just to be sure I had the latest, but it doesn't seem to have made a difference.
The crown is definitely within the area that I'm probing. My 3 points are P1:20,55; P2:180,55; P3:20,190. My minimum Y probe point is 55 because I have the z-probe attached to the X-axis carriage bearing, so I can't completely reach the front of the build surface. Even considering that, the crown is basically in the centre of the build surface, well within that grid.
I expect to get about 5 layers of full distortion correction before it starts to degrade. Slicer layer height is 0.1mm, DISTORTION_END_HEIGHT is set to 1, and DISTORTION_START_DEGRADE is set to 0.5. However, I have been watching the Z-axis steppers while the first few layers are printing, and I don't see them moving at all.
Both G32 and G33 return the expected output. Based on what I understand from reading your "Z-probing with repetier" guide, and some online research, the G32 rotation matrix seems to have calculated a slight correction. Certainly, after the command has completed the printer updates its Z-height to a slightly different value which seems to be the average of the measured points. (e.g. 126.33mm instead of the pre-configured 125mm). I'm not currently in front of my printer, but when I'm home this evening I can run both commands and provide you with the output, if that would be helpful.
Cheers,
-A
G33 L0
returns the stored correction matrix so you see if it mimics what you expected to be stored.
What I did for testing was setting 100% correction to 10mm and added 5mm bump by hand (G33 X<pos> Y<pos> Z5) and then at Z=5 i moved over that spot to see it move up/down. I do this because correcting in wrong direction would damage bed so better start higher with correction enabled there and use values I see easily.
After digging into it, I think it's a problem with my setting for Z-Axis max acceleration. As I mentioned, this Wanhao i3 has been upgraded quite a bit. When I replaced the original Melzi board with a RAMPS 1.4, I set most of the acceleration, jerk, and feedrate values the same as the stock Melzi settings since I wasn't replacing the steppers. HOWEVER, one of the things I also changed was I replaced the 4988 stock drivers with TMC2100s. If you're not familiar, these things take as input the same 1/16 microstepping input as the 4988s, so the steps/mm configuration in the firmware is the same. However they internally interpolate from 1/16 to 1/256 on the motor output. It makes for VERY smooth and quiet operation. However, I suspect it also significantly reduces the torque of the motor!! I changed the Z-Axis max acceleration in the EEPROM from the stock setting of 100mm/s/s to 60mm/s/s and I don't hear any more binding on the Z-Axis when jogging back and forth across my 5mm "test bump".
I'm going to re-flash with my normal distortion correction settings, re auto-level and remeasure the distortion map, and see how things are behaving. I'll post an update tomorrow.
Cheers,
-A
I adjusted accelerations as I mentioned above, and then I redid the z-probe height calibration procedure you discuss in your "Z-Probing with Repetier" guide. Then I preheated bed and extruder, issued a G32 S2 command, home all once complete, then a G33 command. Even after all that, when I attempt to print a part with a layer height of 0.1mm, the right side of the bed seems to be pretty accurately leveled, but the left side of the bed (especially in the back, Y>~90mm) is about half a mm too high, which obviously causes layer adhesion problems.
You can find the log of my most recent auto-leveling and distortion calibration, my current configuration.h file, and the table I used for calculating z-probe height here:
https://drive.google.com/open?id=0B9q71FqFqOGqZDVVOTk5ZmtzMm8
Do you have any suggestions for how to proceed? Does anything look strange in the confg or logs?
Appreciate all your assistance,
-A
I'm experiencing simalar problems like you, also on DEV version.
Region of the bed are pretty good levelled, other are to low or to high
It is quite frustating ...
One thing often seen is that a hot bed has different shape then cold, so it is important to measure under printing conditions if that is the case for you.
Even cold, I know there's >0.1mm of distortion on my bed, so I'm scratching my head as to why the distortion measurement isn't picking it up.
Perhaps it's a problem of reproducibility? I'm using a BLTouch as a Z-probe. I have no reason to suspect that it's inaccurate, but do you have any thoughts regarding their use? As a test, I could heat up the bed and run (say) 3 distortion measurements in a row and we could compare the results of each. Ideally, each distortion correction map would be exactly the same. Or maybe the problem is something like the depth at which the probe triggers varies a little bit? As I mentioned above, I've used your recommended procedure for calibrating the Z-probe, so I expect it's as accurate as I can make it...
https://drive.google.com/open?id=0B9q71FqFqOGqZDVVOTk5ZmtzMm8
(the text files "sequential measurements x of 4.txt" are the console logs I'm referring to)
Thanks,
-A
Having said that, I don't really know where to go from here. I still can't reliably print, what with my first layer being half a mm up in the air. Do you have any suggestions as to how I can proceed? Since we've determined that distortion correction seems accurate, is there maybe a problem with the way distortion correction is interacting with auto-leveling? Honestly, assuming you have a print surface without an extreme tilt to it, I'm not really sure what auto-levelling accomplishes that couldn't be corrected for with distortion correction.
Can you give me any more direction regarding next troubleshooting steps I could take?
-A
With only autolevel make sure z moves up down according tilt. a and b are tilt for x and y direction so a = 0.007 means over 200mm it will change z for 200*0.007 = 1.4mm.
When G32 works continue with G33 but set full correction to 30mm and max. correction also accordingly. With it enabled go to Z=10 and test G30 at several points. Since correction is enabled it should be pretty precise since we have corrections set for that z height it is included. G30 will also show how much z correction got used at that point. This is the same as height map with host. I'm just only a bit unsure about double correction since we are in correction height when we start, so that might need to get subtracted once from output.
With deltas there is another problem that also causes extra error/distance. Geometric errors can cause the extruder head to change direction a few ° and that causes also some extra gap that no z probe will measure, also eventually the z probe does the same rotation being fixed on the same platform. So that would equalize the measured error with reality more or less.
Your recommendation regarding an extra thick first layer was a good one though, at least until I figure out this leveling/distortion problem. I've set up a multi-process profile in Simplyfy3D with the first layer being 0.3mm thick, and a second process at 0.1mm for layers above 0.3mm. It's not ideal, but at least I can resume printing.
Since you have ALWAYS_CHECK_ENDSTOPS 0 (i hope) the z probe should not interfere here when using G33, so I would normally also expect it to correct bending at least in the range where it had measurememnt points.
No, I just checked my configuration (linked above) and ALWAYS_CHECK_ENDSTOPS = 1. I didn't see any reference to this parameter in your Auto-leveling guide that I was following. Why would I want to disable this? It sounds risky... what impact would it have on G33, given that I home to Z-Max, not Z-Min?
Normally 0.5mm correction is no problem as long as the part is inside measured distortion correction area. You should see 0.5mm then with G33 L0 output at these coordinates. If not you can set them manually
G33 X<pos> Y<pos> Z<correction>
Also I would then wonder why printing gets an other offset as the z probe also this might happen with hardware related errors where the xy offset is enough for the error. Anyhow try manually correcting the area and check if it gets closer then.
Your advise would be greatly appreciated.
Thanks