Improving auto-calibration.
-
Hello,
I think i have gotten the auto-calibration as good as I can by myself, however im sure there is more to do. As you can see in the pictures the nozzle ends up too high in between X and Y to the Y carriage.
Currently I am running auto-calibration every time i start the print by sending a G32 command. I am printing on a 1/8" sheet of PEI painted black on the bottom, glued to 1/8" glass, on top of an aluminum heats spreader and an onyx heater.
Here are is my config.g
; Configuration file for Mini Kossel kit from Think3DPrint3D for testing Duet WiFi ; Communication and general M111 S0 ; Debug off M552 S1 M550 Mr. Green Romax ; Machine name and Netbios name (can be anything you like) M551 turdliwink ; Machine password (used for FTP) ;*** If you have more than one Duet on your network, they must all have different MAC addresses, so change the last digits M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ; MAC Address ;*** Wifi Networking M555 P2 ; Set output to look like Marlin M575 P1 B57600 S1 ; Comms parameters for PanelDue G21 ; Work in millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Axis and motor configuration M569 P0 S1 ; Drive 0 goes forwards M569 P1 S0 ; Drive 1 goes forwards M569 P2 S1 ; Drive 2 goes forwards M569 P3 S0 ; Drive 3 goes forwards M569 P4 S0 ; Drive 4 goes forwards M574 X2 Y2 Z2 S1 ; set endstop configuration (all endstops at high end, active high) ;*** The homed height is deliberately set too high in the following - you will adjust it during calibration M665 R141.729 L290.8 B170 H376.166 ; set delta radius, diagonal rod length, printable radius and homed height M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them M350 X16 Y16 E16 I1 ; Set 16x microstepping with interpolation M92 X82.5 Y82.5 Z82.5 ; Set axis steps/mm M906 X950 Y950 Z950 E1200 I60 ; Set motor currents (mA) and increase idle current to 60% M201 X1000 Y1000 Z1000 E1000 ; Accelerations (mm/s^2) M203 X20000 Y20000 Z20000 E3600 ; Maximum speeds (mm/min) M566 X1200 Y1200 Z1200 E1200 ; Maximum instant speed changes mm/minute ; Thermistors M305 P0 T100000 B5500 R4700 H30 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction M305 P1 T100000 B3800 R4700 H30 L0 ; Put your own H and/or L values here to set the first nozzle thermistor ADC correction M305 P2 T100000 B6000 R4700 H30 L0 ; Put your own H and/or L values here to set the second nozzle thermistor ADC correction M307 H1 A310.1 C147.3 D15 B0 S0.60;PIbD setting for hot end M307 H0 A45.7 C917.2 D32.7 B0 S1 ;PID settting for heat bed M570 S180 ; Hot end may be a little slow to heat up so allow it 180 seconds ; Fans M106 P1 T45 H1 ; disable thermostatic mode for fan 1 ; Tool definitions M563 P0 D0 H1 ; Define tool 0 G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures ;*** If you have a single-nozzle build, comment the next 2 lines ;M563 P1 D1 H2 ; Define tool 1 ;G10 P1 S0 R0 ; Set tool 1 operating and standby temperatures M92 E0492.45 ; Set extruder steps per mm ; Z probe and compensation definition ;*** If you have a switch instead of an IR probe, change P1 to P4 in the following M558 command M558 P1 X0 Y0 Z0 ; Z probe is an IR probe and is not used for homing any axes G31 X0 Y-8 Z2.5 P500 ; Set the zprobe height and threshold (put your own values here) ;*** If you are using axis compensation, put the figures in the following command M556 S78 X0 Y0 Z0 ; Axis compensation here M208 S1 Z-20 ; set minimum Z ; T0 ; select first hot end
and my bed.g
; Auto calibration routine for delta printers ; Before running this, you should have set up your zprobe Z offset to suit your build, in the G31 command in config.g. M561 ; clear any bed transform, otherwise homing may be at the wrong height G31 X0 Y0 ; don't want any probe offset for this G28 ; home the printer ;*** Remove the following line if your Z probe does not need to be deployed ;M98 Pdeployprobe.g ; deploy the mechanical Z probe ; The first time the mechanical probe is used after deployment, it gives slightly different results. ; So do an extra dummy probe here. The value stored gets overwritten later. You can remove this if you use an IR probe. ;G30 P0 X0 Y0 Z-99999 ; Probe the bed and do 6- or 7-factor auto calibration G30 P0 X0.00 Y110.00 Z-99999 G30 P1 X70.71 Y84.26 Z-99999 G30 P2 X108.33 Y19.10 Z-99999 G30 P3 X95.26 Y-55.00 Z-99999 G30 P4 X37.62 Y-103.37 Z-99999 G30 P5 X-37.62 Y-103.37 Z-99999 G30 P6 X-95.26 Y-55.00 Z-99999 G30 P7 X-108.33 Y19.10 Z-99999 G30 P8 X-70.71 Y84.26 Z-99999 G30 P9 X0.00 Y55.00 Z-99999 G30 P10 X47.63 Y27.50 Z-99999 G30 P11 X47.63 Y-27.50 Z-99999 G30 P12 X0.00 Y-55.00 Z-99999 G30 P13 X-47.63 Y-27.50 Z-99999 G30 P14 X-47.63 Y27.50 Z-99999 G30 P15 X0 Y0 Z-99999 S6 M665 M666 ;*** Remove the following line if your Z probe does not need to be retracted ;M98 Pretractprobe.g ; retract the mechanical Z probe G1 X0 Y0 Z150 F15000 ; get the head out of the way of the bed
-
What deviation values do you get after auto calibration? I can get 0.006 but still my nozzle to bed gap over 330mm is not exactly right. Now using grid levelling and its perfect can print anywhere on the bed with a very nice first layer.
I notice you don't have any H values, you're using an IR probe, yes? Are you sure there is no effector tilt affecting trigger points?
Grid levelling might be worth a try. David is going to enable a load height map function so you wont have to probe every time. The probing is a bit tedious if you add it to your bed.g as it takes longer than my hot end takes to heat up.
-
What are H values, and no, I'm not sure about the effector tilt, it seeks like it would be very difficult to put a level on the effector…
It says my deviation is .03
-
So H values are used to compensate for effector tilt. Unless your mechanicals are very, very precise you'll get some effector tilt at some x,y coordinates.
The further from the nozzle your IR sensor is mounted the more exaggerated this will be. H values are derived by going to each of your probing points and manually measuring the distance between probe trigger point and the bed. They are then added to each of your G30 commands to compensate for tilt.
You might see your auto calibration jump up a bit in accuracy by doing this, or you might have no effector tilt. I just mounted my IR very close to the nozzle, as close as I dare.
If this isnt the issue then try grid levelling by installing the beta of 1.17 firmware.
-
The trigger height should be the same at each location, correct?
Am I measuring the distance between the nozzle and the bed, of the irprobe and bed?
My ir probe is situated 5mm away from my heat block.
-
How can I get the probe to stop at its trigger?
-
So the trigger height will be the same distance above the bed at each location but if your effector has tilted the nozzle to bed distance at the trigger height will be different. This difference is what you are measuring relative to the trigger height at bed centre where effector tilt should be zero. Your IR probe according to your config.g is pretty close to your nozzle so these will be small values.
You are measuring the distance between the trigger height and the nozzle hitting the bed. So go to a coordinate, send G30 the head will descend and stop when triggered OR lower the head manually until the LED comes on, on the IR sensor board. Then manually lower until you grip a piece of paper or actually make contact with the bed whichever is easier to measure. Do this at bed centre, and each of the autocalibration probing points.
H = (trigger height measured at the point) - (trigger height at the bed center)
So enter for each of your points in bed.g the H value i.e.
G30 P0 X0.00 Y110.00 Z-99999 H0
G30 P1 X70.71 Y84.26 Z-99999 H0.3
G30 P2 X108.33 Y19.10 Z-99999 H-0.4
G30 P3 X95.26 Y-55.00 Z-99999 H-0.6See how you get on with that.
-
I too likely need to add H values to my probe points. My main issue is with the variability of the test for when the nozzle is gripping a sheet of paper. There's some subjectivity there.
What increments are you moving when you're calibrating those H values? 0.1mm, or lower?
I'm also a bit confused about how you determine the H value. Do you do a paper test like is outlined for configuring Z0 in the IR Probe setup? (Move to that point, lower the head until it grips a sheet of paper, set that as Z0, move up 5mm, then probe and then subtract the height at the bed center from that new value?
-
I too likely need to add H values to my probe points. My main issue is with the variability of the test for when the nozzle is gripping a sheet of paper. There's some subjectivity there.
What increments are you moving when you're calibrating those H values? 0.1mm, or lower?
I'm also a bit confused about how you determine the H value. Do you do a paper test like is outlined for configuring Z0 in the IR Probe setup? (Move to that point, lower the head until it grips a sheet of paper, set that as Z0, move up 5mm, then probe and then subtract the height at the bed center from that new value?
I use 0.025mm increments on my delta with 160 steps/mm. If you have 100 or 200 steps/mm then you should use 0.020mm instead. The procedure I use is:
1. Move the head to over the probe point.
2. Lower the head until it just grips a sheet of paper (this is where I use 0.025mm increments near the end).
3. Send G92 Z0.
4. Raise the head 5mm.
5. Send G30 S-1 to lower the probe until it triggers.
6. Read off the Z height in the web interface.
I usually repeat steps 4-6 a few times to make sure the trigger height is consistent. The H parameter for each point is (trigger height at that point) - (trigger height at centre of bed).
HTH David
-
David, that's exactly what I was looking for - thank you!
(You might consider adding those steps to the wiki for clear instructions on setting an H value for each point)
Is there a way to set the web interface to jog at 0.020? I have the "half move rate" checked, which took it down to 0.05mm
-
You could make a macro with a relative move. Something like this for going down:
G91 ; relative moves
G1 Z-0.020 ; go down a bit
G90 ; absolute moves -
You could make a macro with a relative move. Something like this for going down:
G91 ; relative moves
G1 Z-0.020 ; go down a bit
G90 ; absolute movesThat's exactly what I do, except I use 0.025mm because that is an exact number of microsteps on my printer.
-
Mine's at 80 steps/mm
As an aside, I'm only calibrating down to 0.06 now, so hoping this makes a big improvement
-
When you say, "just gripping a piece of paper, is that until the paper can't move, or until we feel some resistance?
-
One thing i found out while doing this was that my endstops were loosely goosey… i tightened them up and now at least i can get repeatable results
-
When you say, "just gripping a piece of paper, is that until the paper can't move, or until we feel some resistance?
I lower the nozzle until i can feel a significant resistance. The important thing is to be consistent.
-
What do you guys think about my H-values… most of them are negative... i'd expect for them to be centered around zero, not mainly negative?
-
Qdeathstar, in what way does the auto calibration got worse?
Your H values seems ok to me, I am probing 32 points and my H values add up to 1.6
I don't think the effect of the end effector tilt would simply make them center around 0 -
Sorry, i did not find the real trigger height, i subtracted z-values (which made the h-values the inverse of what they needed to be)… I think i have the issue fixed, im testing now. The z-height overall was a little low on the first go.
-
Glad to hear you got it solved