Delta - Can't get first layer flat
-
Cupping or domeing is almost always a sign that diagonal rod length (M665 L) and/or delta radius (M665 R) don't match the physical reality of the printer.
Rod length is measured "joint center to joint center" preferably to 0.01 MM accuracy, and/or marked on the rods by the manufacturer. In particular, Hayden Huntley's mag-ball-end rods have correct markings. Delta Radius is VERY difficult to physically measure, and is therefore set by auto-calibration, or by making small changes and iterating until you get a "flat looking" mesh map.
There are many ways to auto-calibrate. Personally, I use 16 points and 8 factors, and perform this before EVERY print (slicer start code). But then again, I have a 600mm (24") bed. Also, I perform auto calibration several times in a row after any physical changes (even just removing and re-installing the bed). Calibrations will "converge" when repeated.
Again, if you can't get auto to work, for now, just change M665 R in small increments, re-run mesh, and see if the cup/dome increased or got better. Iterate until flat.
Either auto or manual, be sure and store calibration with an M500 when you are happy with it, and be sure there is an M501 near the end of your config.g to load the stored calibration.
-
Ooooh! Welcome to my world of the past few days.
So, people are going to tell you about adjusting delta radius, but duet should figure that out automatically when you do auto calibration. Then they'll tell you about arm length, but I'm convinced that the duet auto calibration will give you a reasonable flat build plane (via adjustment of the delta radius) regardless of your arm length. Sure, your prints will be dimensionally inaccurate, but your first layer will be good. (@dc42, is that a true statement?)
However, as I've been finding out, the duet auto-calibration makes it's calculations of the delta radius (and other things) based on probing. If the probing results give bad data, you'll get bad data out.
The very low deviation values you are seeing don't tell you that the data is good - it only tells you that it's consistent. Even if there's no deviation at all, it just suggests that you're getting consistently bad data. It is my current understanding that in most (but not all) cases, bad probing data that is consistent is the result of something related to probing being misconfigured.
Based on what your experiencing, and that your zprobe mechanism is a set of FSR's under the build plate, I suspect that your problem is either that you haven't checked the z trigger height AT EACH PROBE LOCATION, or that that data needs to be updated. For that information, check here: https://duet3d.dozuki.com/Wiki/Calibrating_a_delta_printer#Section_Adding_trigger_height_corrections_to_the_bed_g_file (You want the section for adding trigger height corrections to the bed.g file.)
Good luck and please update us on how things work out.
-
@danal said in Delta - Can't get first layer flat:
Cupping or domeing is almost always a sign that diagonal rod length (M665 L) and/or delta radius (M665 R) don't match the physical reality of the printer.
Rod length is measured "joint center to joint center" preferably to 0.01 MM accuracy, and/or marked on the rods by the manufacturer. In particular, Hayden Huntley's mag-ball-end rods have correct markings. Delta Radius is VERY difficult to physically measure, and is therefore set by auto-calibration, or by making small changes and iterating until you get a "flat looking" mesh map.
There are many ways to auto-calibrate. Personally, I use 16 points and 8 factors, and perform this before EVERY print (slicer start code). But then again, I have a 600mm (24") bed. Also, I perform auto calibration several times in a row after any physical changes (even just removing and re-installing the bed). Calibrations will "converge" when repeated.
Again, if you can't get auto to work, for now, just change M665 R in small increments, re-run mesh, and see if the cup/dome increased or got better. Iterate until flat.
Either auto or manual, be sure and store calibration with an M500 when you are happy with it, and be sure there is an M501 near the end of your config.g to load the stored calibration.
Rod length is 290.8mm, since they are SeeMeCNC's injection moulded rods, and lots of other people are using them successfully. And I have verified that measurement.
@garyd9 said in Delta - Can't get first layer flat:
Ooooh! Welcome to my world of the past few days.
So, people are going to tell you about adjusting delta radius, but duet should figure that out automatically when you do auto calibration. Then they'll tell you about arm length, but I'm convinced that the duet auto calibration will give you a reasonable flat build plane (via adjustment of the delta radius) regardless of your arm length. Sure, your prints will be dimensionally inaccurate, but your first layer will be good. (@dc42, is that a true statement?)
However, as I've been finding out, the duet auto-calibration makes it's calculations of the delta radius (and other things) based on probing. If the probing results give bad data, you'll get bad data out.
The very low deviation values you are seeing don't tell you that the data is good - it only tells you that it's consistent. Even if there's no deviation at all, it just suggests that you're getting consistently bad data. It is my current understanding that in most (but not all) cases, bad probing data that is consistent is the result of something related to probing being misconfigured.
Based on what your experiencing, and that your zprobe mechanism is a set of FSR's under the build plate, I suspect that your problem is either that you haven't checked the z trigger height AT EACH PROBE LOCATION, or that that data needs to be updated. For that information, check here: https://duet3d.dozuki.com/Wiki/Calibrating_a_delta_printer#Section_Adding_trigger_height_corrections_to_the_bed_g_file (You want the section for adding trigger height corrections to the bed.g file.)
Good luck and please update us on how things work out.
One thing that's not very clear is if I should run the trigger heights before or after a few initial calibration runs? Or does it not matter very much?
Right now I am probing on a 130mm circumference on a ~270mm build plate, which is inside the triangle formed by the towers, but I'm not sure if i get better results by probing a larger or smaller circumference.
-
@jrjones88 said in Delta - Can't get first layer flat:
One thing that's not very clear is if I should run the trigger heights before or after a few initial calibration runs? Or does it not matter very much?
Right now I am probing on a 130mm circumference on a ~270mm build plate, which is inside the triangle formed by the towers, but I'm not sure if i get better results by probing a larger or smaller circumference.
You get better results by probing more points over a larger area. (You'll also likely get a higher deviation, but that doesn't mean it's a bad calibration - it just means there's more data to deviate from.)
The calibration depends on the probe points, so you can't get a good calibration without properly configured probe points (including the H parameters.) You can, however, get a "kind of close" calibration.
You might consider using 13 probe points. 6 towards the edge, 6 between the edge and center, and 1 dead center.
Go to the following website and configure it for 6 peripheral, and 6 halfway probe points. (It'll add one to the center for a total of 13.) Set the factor to 6. Put in a probing radius of 250 - which should cover the majority of the build plate. You're using FSR's, so the offset is 0. Do NOT check "home towers at start" or "deploy/retract probe".
That will generate a list of 13 probe points for you. Backup your existing bed.g file and put those new probe points in instead. (If the generated probe points are too close to the edge of the build plate, you can go back to the webpage and put in a smaller probing radius.)
Do a single auto-calibration, and then go back and follow the directions linked earlier for setting the trigger heights. You need to do the trigger heights for the center point and all 12 other probe points. Do the center first, and put that trigger height into the G31 command in config.g. Now do the trigger points for the remaining 12 probe points, modify each (as explained in the instructions I linked in an earlier post) and change the H parameters in the new G30 lines in bed.g
-
So I probed over a radius of 125mm, with 6 factor calibration, got these results:
Calibrated 6 factors using 13 points, deviation before 0.066 after 0.063 Diagonal 290.800, delta radius 140.517, homed height 671.828, bed radius 140.0, X 0.109°, Y -0.077°, Z 0.000° Endstop adjustments X0.79 Y-1.22 Z0.43, tilt X0.00% Y0.00%
Then I applied the trigger heights as in the guide to my bed.g file with the Z probe offset being 0.004:
; 13 points, 6 factors, probing radius: 125, probe offset (0, 0) G30 P0 X0.00 Y125.00 Z-99999 H0.077 G30 P1 X108.25 Y62.50 Z-99999 H-0.111 G30 P2 X108.25 Y-62.50 Z-99999 H0.037 G30 P3 X0.00 Y-125.00 Z-99999 H-0.111 G30 P4 X-108.25 Y-62.50 Z-99999 H0.022 G30 P5 X-108.25 Y62.50 Z-99999 H-0.131 G30 P6 X0.00 Y62.50 Z-99999 H-0.037 G30 P7 X54.13 Y31.25 Z-99999 H-0.047 G30 P8 X54.13 Y-31.25 Z-99999 H-0.059 G30 P9 X0.00 Y-62.50 Z-99999 H0.006 G30 P10 X-54.13 Y-31.25 Z-99999 H0.013 G30 P11 X-54.13 Y31.25 Z-99999 H0.04 G30 P12 X0 Y0 Z-99999 S6
And ran auto calibration again:
Calibrated 6 factors using 13 points, deviation before 0.010 after 0.007 Diagonal 290.800, delta radius 140.560, homed height 671.817, bed radius 140.0, X 0.098°, Y -0.103°, Z 0.000° Endstop adjustments X0.80 Y-1.22 Z0.41, tilt X0.00% Y0.00%
And ran the mesh grid compensation to map the bed again, but I'm still having the same issues:
heightmap (after 6 factor w height comp).csv -
That's not a "cup" shape, really. You have lows and highs mixed together. On the other hand, it does look better overall.
Have you tried... just printing? The ultimate test isn't mesh compensation, but how the filament prints. (I'm not sure mesh compensation can accurately test on a machine using FSRs under the bed.)
I don't know how @dc42 does mesh compensation on a machine when that machine has different trigger heights for different parts of the build plate (such as a FSR system), but I can't imagine there's any accurate way to know the exact trigger height for an exact location without specifically testing it. That's what you did with all the H parameters on the G30 commands in bed.g. Each one of those specific points has a specific offset. You have NOT done the same (and I don't think there is a way to do the same) for mesh compensation trigger heights.
If your build plate is truly flat, you should be able to heat up the machine, run the auto-calibration, and then (using g1 commands) move the nozzle around the bed at height 0.1mm and test random locations with a piece of paper. (Assuming the paper you test with is 0.1mm thick.)
Another alternative is to disable the probe (set the probe to 0) and run mesh compensation, MANUALLY jogging the nozzle down and testing with a piece of paper for each and every spot. I'd imagine that would take hours...
Finally, the best solution would be to change your bed z-probe to something that is physically located in/on the effector (smart effector, piezo - or IR probe if you have zero effector tilt) so that you don't get different probing offsets for different locations on the bed.
-
I disagree with @garyd9 statement: so you can't get a good calibration without properly configured probe points (including the H parameters.)
Trigger heights are highly optional... it is quite possible to get excellent calibration without them (unless there is something really exotic going on in your printer; rare on a delta).
Delta with 600MM glass bed. Notice all the Zeros. I have never run anything in the H field (trigger heights). Let's see if my calibration is OK.
; 16 points, 8 factors, probing radius: 280, probe offset (0, 0) G28 G30 P0 X0.00 Y280.00 Z-99999 H0 G30 P1 X140.00 Y242.49 Z-99999 H0 G30 P2 X242.49 Y140.00 Z-99999 H0 G30 P3 X280.00 Y0.00 Z-99999 H0 G30 P4 X242.49 Y-140.00 Z-99999 H0 G30 P5 X140.00 Y-242.49 Z-99999 H0 G30 P6 X0.00 Y-280.00 Z-99999 H0 G30 P7 X-140.00 Y-242.49 Z-99999 H0 G30 P8 X-242.49 Y-140.00 Z-99999 H0 G30 P9 X-280.00 Y-0.00 Z-99999 H0 G30 P10 X-242.49 Y140.00 Z-99999 H0 G30 P11 X-140.00 Y242.49 Z-99999 H0 G30 P12 X0.00 Y140.00 Z-99999 H0 G30 P13 X121.24 Y-70.00 Z-99999 H0 G30 P14 X-121.24 Y-70.00 Z-99999 H0 G30 P15 X0 Y0 Z-99999 S8 G29 S1
Two successive G32 commands:
8:01:10 PM G32 Calibrated 8 factors using 16 points, deviation before 0.104 after 0.069 8:00:10 PM G32 Calibrated 8 factors using 16 points, deviation before 0.164 after 0.052
And mesh grid:
-
Looking a @jrjones88 map, there are deviations over 1MM? 2MM? A few tenths or hundredths of trigger height is not going to fix this (his largest value in the supplied bed.g is 0.131). Something else is going on.
Have you actually checked the bed? Straightedge with light behind it to show hair fine gaps? Etc? Because the auto-calibration deviations and the individual probe test deviations (and/or means) look pretty good.
-
Just noticed: 277 probe points for mesh on a 140mm radius bed!!!!! Highly, highly overkill.
Increase your spacing on M557 S. Note: This won't fix anything, but it will make it MUCH faster and therefore less frustrating to run, and experiment, and debug.
-
@danal said in Delta - Can't get first layer flat:
I disagree with @garyd9 statement: so you can't get a good calibration without properly configured probe points (including the H parameters.)
Trigger heights are highly optional... it is quite possible to get excellent calibration without them (unless there is something really exotic going on in your printer; rare on a delta).
Danal, what are you using as a z-probe?
He's using FSRs. As someone who is ALSO using FSRs, I can tell you that the trigger height very close to a FSR can be very different from a trigger point farthest from all the FSRs (such as the center of the bed.) As an example, I can measure a difference of 0.09 between my bed center trigger height and the trigger height directly over a FSR. (That's almost a full layer when printing at 0.1mm) (That's probably an extreme example, but not really an "exotic" one with FSRs.)
If the heights aren't set up properly, the duet will "see" a curved build plate shaped like... a cup. What do you suspect the auto-calibration will do with that? Probably it'll "fix" the delta radius so it's flat....
Of course, the delta radius will then be wrong and you'll end up with a dome shaped build plane.
If you ignore the outer edges of the build plate in the mesh images he shows (which I address below), you might notice that the bed is much flatter after the trigger heights were configured.
As well, as I mentioned, I believe that mesh compensation probing can't be entirely useful without the duet knowing the trigger height at each specific mesh compensation probing point. How can it know where the build plate is when the point of z-probe contact is variable?
@danal said in Delta - Can't get first layer flat:
Looking a @jrjones88 map, there are deviations over 1MM? 2MM? A few tenths or hundredths of trigger height is not going to fix this (his largest value in the supplied bed.g is 0.131). Something else is going on.
Those seem to be limited to the outer edges of the bed. With FSRs, again, that isn't completely unusual. The bed is "floating" on whatever is between the FSRs and the bed, and depending on the actual location of the FSRs, the entire bed can tilt when the nozzle presses against it.
-
FSRs, Got it. Some bed movement, which varies across radius and/or proximity to FSR mount point; proper action is to compensate with H. Understood, and I stand corrected.
Still... does not seem to make much sense that the probe point in the "back", shown as very red, measures about 1.5 to 2 mm different, that the FSR allows the bed to move that a full 1.5mm or more at that point, and the point that is literally adjacent "inward" is green, meaning less than .1 movement caused by the FSR.
I would expect a series of probe points at different distances to vary in a linear fashion (or a trig function, maybe). The fact that a given set of points is flat, and "jumps" to being way off... that seems very odd, and like something else might be going on.
And to directly answer about my printer: Probe is a Smart Effector.
-
@garyd9 said in Delta - Can't get first layer flat:
If you ignore the outer edges of the build plate in the mesh images he shows (which I address below), you might notice that the bed is much flatter after the trigger heights were configured.
Actually, no.
Take off the red edges, and the "after H" map has quiet a bit less green and more blue... including a really deep trough at upper left.
Without H (ignore the red edge)
With H
-
@danal said in Delta - Can't get first layer flat:
Still... does not seem to make much sense that the probe point in the "back", shown as very red, measures about 1.5 to 2 mm different, that the FSR allows the bed to move that a full 1.5mm or more at that point, and the point that is literally adjacent "inward" is green, meaning less than .1 movement caused by the FSR.
The FSRs are typically placed in a triangle under the bed. Inside that triangle, there's not a big problem, but outside the triangle the nozzle pressing down can cause the entire bed to actually lift off one FSR mount, pivoting on the other two. There are some FSR mounting systems that try to offset that problem by adding a large plate under the build plate and over the FSRs - which can allow moving the FSRs outside the radius of the build plate. I don't know if the OP has such a system.
I still believe that the best test isn't mesh compensation images (which can't be accurate with a system like FSRs.) The best test for a 3D printer is to print a layer. Print a giant asterisk that's one layer high. Let the build plate cool off, peel off the asterisk, and then measure the height of the print at various locations.
Here's a good article that talks about configuring the duet board to use FSR's - including trigger heights, bed.g adjustments, etc: http://www.sublimelayers.com/2016/01/fsr-auto-calibration-setup-for-duet.html.
-
So I changed a few things, and I found that adding a small delay before probing seemed to help quite a bit.
UnderM558 Rnnn Z probe recovery time after triggering, default zero (seconds) (RepRapFirmware 1.17 and later)
And then I was probing for a bit without a hotend and using a dial indicator instead, and that gave me better results. How I had the hot end mounted was causing a slight interference with the delta arms at the outside of the bed that I did not see. Changing how my hotend was mounted produced the same results as with the dial indicator.
I did do some test prints, and using the probe offsets didn't really help too much. The nozzle still goes low in front of the Y and Z tower, but with the probe offsets its too high in front of the X tower.
For now I'll leave the probe offsets at zero.Picture before I changed the hot end mounting.
Picture after I changed the hot end mounting.
Although it looks worse in the picture, it's much more even, except the spots by the Y tower, and then the large part by the Z Tower. Its still better than before, since before in those areas the nozzle would drag on the build plate, and now it is at least depositing some filament in those areas.
I got similar calibration results before and after changing the hot end mounting.
Calibrated 8 factors using 13 points, deviation before 0.049 after 0.020 Diagonal 290.800, delta radius 126.528, homed height 598.400, bed radius 140.0, X -0.209°, Y -0.254°, Z 0.000° Endstop adjustments X0.05 Y-0.08 Z0.03, tilt X0.39% Y-0.11%
This is the heightmap without probe offsets:
heightmap (after hot end change).csvMy build plate is pretty flat, its a 3/8" cast aluminum tool and jig plate, specced to a Mic6 equivalent (thickness tolerance of +/- 0.005" or 0.127 mm,) plus a glass plate on top of it.
Yes I've read Mhackneys posts before, while helpful they didn't solve my issues.
My FSR's are setup similar to his, so rocking should be minimized. -
That second test print looks odd. It appears as if the system just stops (or starts - depending on direction) suddenly as it moves past the Z tower.
Bed tilt?
In your most recent bed.g, are you using S8 on the last G30 command, or S6? If you're using S6, go into config-override.g and take a look at the M666 command in there. Are the A and B parameters set to non-zero? If so, the duet is using bed tilt parameters, but not calibrating them. You can copy the values someplace and then change them both to 0. (Reboot and test again.) This will remove the tilt "corrections" that aren't being re-calibrated.
Or, just change your last G30 in bed.g to use S8 instead of S6 . (which will cause the duet to recalculate tilt each time you calibrate.)
On the other hand, if you ARE using S8 already, try to switch to S6 and set the A/B parameters on M666 in config-override.g to 0. (Perhaps it's getting the bed tilt computations wrong.) (which will turn off calibrating for bed tilt and remove any older value being used.)
The whole idea here is: Something isn't working right, so try different things (one at a time) to get them working. If you keep backups of each thing you change, you can always go back.
-
I had similar bad results with my first Smart Effector on a Rostock Max V2 (converted to Trick Laser Max Metal).
Replaced almost everything and used an old set of JohnSL's FSR Kit which worked pretty well.
So I dug deeper and found a spot on the Smart Effector where it has a mechanical defect.
Anyhow the new Smart Effector works well, but still have the John SL Board in place.... Got another one of my other Delta.Anyhow, when I was experimenting with the stuff, especially the Belt Tension, I realized, the damper used for the Nema 17 Steppers was one of the things effecting a layer in the way you have shown.... but should not be the case with the Max V2 as the mount of the Nema 17 is different than the Max Metal (have both here).
Anyway, it is worth a look. Are you using Stepper Dampers?
-
-
In respect to the flatness of the bed--perhaps the aluminum plate is flat, but the glass top is not. Do you get the same readings doing a measurement without the glass directly on the plate?