Bl-touch and distance printing nozzle
-
I have the exact same problem with an inductive probe and wasted the better part of last evening with it (instead of trying this: https://forum.duet3d.com/topic/18223/auto-adjust-z-offset).
To successfully get a print going, I always had to re-adjust Z=0 after the homing and bed probing, or the nozzle will be .35mm too high. This value is pretty much consistent 90% of the time, so I didn't check the height after a while and just addedM564 S0 G1 Y-0.35 G92 Z0
To the homez.g file...
Varying the Z-offset (set with G31 in config.g) doesn't affect the outcome and the Z=0 error is always consistent. The offset only affects values in the bed compensation map and seems to be subtracted from those values for Z=0, so no matter what Z-offset I use (positive or negative and even absurd values like 10mm); the nozzle always is .35mm too high at Z=0.
Even when disabling bed compensation the Z-error is persistent and always is present immediately after homing Z with G30, so I suspect there's a bug with calculating/setting Z=0 via that command.
I've printed a bracket for a Z-endstop switch to set Z=0 by triggering that switch with the nozzle (as I was already planning to do), so I can completely avoid depending on some calculation for Z=0 and use the Z-probe only for bed leveling and compensation. -
G31 most certainly will work .... have you checked your config-overwrite.g file to see if there is maybe a different G31 command there that overwrites the value in config.g ?
I am sure other people will chime in with other suggestions. -
So am I, I'm getting crazy with this Z=0
I double checked the config-overwrite.g file and I don't have such a command. -
The way I handled this issue in the past is to use babysteps (on the Duet web interface) to bring the nozzle down to the perfect height (while printing the first layer). This would give me the amount that my Z offset was off by. I would then add/subtract (invariably I would pick the wrong procedure when choosing between adding or subtracting) this offset to the G31 Z offset in config.g. You then need to reset the board to activate the new setting and you should be golden.
There is a macro available for doing that but I think at this point you are better off doing it manually. No sense in adding more complications to an already confusing/frustrating situation. -
@jens55
Yes indeed I use babystepping on my Sparklab (Repetier) and it goes perfect. -
Hi,
What is the sequence of commands do you execute to start a print?
Frederick
-
@fcwilt
SD card (from Panel Due) , I click on the file and it prints.
I use Simplify 3D to export my gcode file.I noticed that I had a bad steps/mm for my z motors. Now I have 800 steps/mm
-
Not saying it's wrong but I have 80 steps per mm for my printer ....
-
I just wired the Z-endstop switch and did some testing...
The Z-switch is mounted 10mm next to the bed (bedsize 330x330, probing position 341,310) and is adjusted to exactly match the bed height in that corner. Homing Z is 100% accurate now and after probing I can reliably lower the nozzle to 0 and it is exactly just touching the bed surface in that corner.
BUT: as soon as I run mesh compensation (G29) I get an error of ~0.5mm (higher) for that corner. I've checked the trigger height manually and it is at 1.44-1.46mm height, but no matter what I set in the config.g via G31, e.g.
G31 P500 X0 Y0 Z1.45
; the .5mm error is always present after running G29. I also tried absurd values like 5 or 10mm and even negative ones, the nozzle is now always ~.45-.5 over the bed after running G29.The Tool doesn't have any offsets set (
G10 P0 X0 Y0 Z0
) and in config-override.g only the heater parameters are present (M307)Here's my 'homez.g':
M558 P1 C"!zprobe.in" H15 A5 F600 T25000 ; increase dive height G90 G30 P0 X50 Y165 Z-99999 ; probe near a leadscrew G30 P1 X350 Y165 Z-99999 S2 ; probe near a leadscrew M558 P1 C"!zprobe.in" H5 A5 F600 T25000 ; reduce dive height after adjusting the bed G90 ; absolute positioning G1 X340.8 Y310 F18000 G1 H1 Z-350 F600 ; move quickly to X axis endstop and stop there (first pass) G1 Z5 F1200 ; go back a few mm G1 H1 Z-6 F300 ; move slowly to X axis endstop once more (second pass) G92 Z0 ; G1 H1 sometimes doesn't set Z=0??? G1 H2 Z15 F1200 ; lower Z again G90 ; absolute positioning G1 X0 Y330 F18000 ; move printhead to the back
and config.g:
; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"x5sapro" ; set printer name M669 K1 ; select CoreXY mode ; PanelDue M575 P1 S1 B57600 ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 F12 ; XY 1 physical drive 0 goes forwards M569 P1 S1 F12 ; XY 2 physical drive 1 goes forwards M569 P2 S0 F12 ; invert Z1 M569 P3 S0 F12 ; invert E0 M569 P4 S0 F12 ; invert Z2 M584 X0 Y1 Z4:2 E3 ; set drive mapping M671 X-90:410 Y165:165 S50 ; set X and Y offsets of lead screws M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E393.88 ; set steps per mm M566 X300.00 Y300.00 Z300.00 E600.00 M203 X48000.00 Y48000.00 Z3000.00 E3000.00 ; set maximum speeds (mm/min) M201 X8000.00 Y8000.00 Z250.00 E1000.00 ; set accelerations (mm/s^2) M906 X1050 Y1050 Z950 E650 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y-8 Z0 S1 ; set axis minima M208 X350 Y329 Z400 S0 ; set axis maxima ; Endstops M574 X1 S1 P"!xstop" ; configure active-high endstop for low end on X via pin xstop M574 Y1 S1 P"!ystop" ; configure active-high endstop for low end on Y via pin ystop M574 Z1 S1 P"!zstop" ; Z-Probe M558 P1 C"!zprobe.in" H20 A5 F600 T18000 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X0 Y0 Z1.85 M557 X50:350 Y15:315 S75 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4100 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 C"Part Cooling" S0 H-1 ; set fan 0 name and value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 C"Hotend" S0.5 H1 T45 ; set fan 1 name and value. Thermostatic control is turned on M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency M106 P2 C"Board" S0 H-1 ; set fan 2 name and value. Thermostatic control is turned off ; Tools M563 P0 S"CR-10 Hotend" D0 H1 F0 ; define tool 0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue M501
-
(I couldn't edit my previous post b/c it was tagged as spam!?)
I compared the manually determined trigger height to the one reported by
G30 S-1
and it is always off by ~.45
Actual trigger height at the point where Z is homed (and the probe is above the bed) as said is ~1.4mm If I run aG30 S-1
at the same position it reports ~1.8-1.9mm trigger height... -
Did you run a new bed mesh once you had adjusted your z zero ?
I don't know this for sure but it sounds like the additional offset is because you applied bed mesh compensation. -
As soon as I ran a bed mesh compensation, the error was introduced into the height map and the nozzle was ~0.4mm above the bed when moving to "Z=0"
I now reverted to using
G30 S-3
directly next to the Z-endstop. This fixes the mysterious ~.4mm error that was consistently introduced when usingG30
and a fixed offset in the config.g. So I removed all probe offsets from the config.g and now set the offset during Z-homing:; homez.g ; called to home the Z axis M561 ; cancel all bed mesh compensations M558 P1 C"!zprobe.in" H15 F300 ; increase dive height to prevent crashing into a tilted bed ; probe and adjust the bed tilt G90 G30 P0 X50 Y165 Z-99999 ; probe near a leadscrew G30 P1 X350 Y165 Z-99999 S2 ; probe near a leadscrew M558 P1 C"!zprobe.in" H5 ; reduce dive height after adjusting the bed ; move over endswitch to set Z=0 G1 X341 Y310 F18000 G1 H1 Z-350 F600 ; move quickly to Z axis endstop and stop there (first pass) G1 Z5 F1200 ; move up a few mm G1 H1 Z-6 F300 ; move slowly to Z axis endstop once more (second pass) G92 Z0 ; set Z=0 G1 Z15 F1200 ; lift printhead ; calibrate probe trigger distance G1 X341 Y313 F18000 ; move directly next to the switch to calibrate the probe G30 S-3 ; set probe trigger height G1 Z15 F1200 ; lift printhead G1 X0 Y330 Z20 F18000 ; move printhead to the back
afterwards I can run bed mesh compensation and am getting plausible results (with an error of ~0.015-0.02mm over multiple mesh compensation runs) and the compensation is properly working. I.e. I can move to any point on the bed and when moving the Z-axis to 0 the nozzle actually touches the bed, even if I deliberately introduce an error somewhere.
-
I am now officially lost ....
In your homez.g macro you are adjusting bed tilt but you only run the tilt routine once. Normally this is a successive approximation so it would make more sense to run this several times (the tilt compensation)
Then you run close to where the limit switch is located and set z=0. Never mind the fact that ideally z should be set to zero when it is in the middle of the bed .... you are now using the z limit switch and not the probe.
You then run the probe and over-ride the previous z=0 setting which was set with the end limit switch rather than the probe.There is a good possibility that I do not completely understand what is happening here but it looks to me like the probe triggering point is different from the endstop trigger point and you are seeing weirdness because of that.
I think I would like to bow out from this discussion as I feel I am over my head.
-
@jens55 said in Bl-touch and distance printing nozzle:
I am now officially lost ....
In your homez.g macro you are adjusting bed tilt but you only run the tilt routine once. Normally this is a successive approximation so it would make more sense to run this several times (the tilt compensation)I wasn't aware of that. The reported adjustment is usually <0.2mm, but I will try to rewrite it to repeat until the deviation is even lower.
Then you run close to where the limit switch is located and set z=0. Never mind the fact that ideally z should be set to zero when it is in the middle of the bed .... you are now using the z limit switch and not the probe.
Z=0 is set at the position where the limit switch is triggered. I confirmed this several times by checking the nozzle height after this step.
You then run the probe and over-ride the previous z=0 setting which was set with the end limit switch rather than the probe.
G30 S-3 doesn't set the Z=0 value but only the trigger height:
G30 S-3 ; Probe the bed and set the Z probe trigger height to the height it stopped at
There is a good possibility that I do not completely understand what is happening here but it looks to me like the probe triggering point is different from the endstop trigger point and you are seeing weirdness because of that.
I am aware that the endstop trigger is different from the probe trigger height.
My problem was, that when using G30 to home Z using the probe, there was an offset of ~0.4mm added somewhere. This led to Z=0 being off by the same value when I tried to home Z by only using the probe and the trigger distance defined via G31 in config.g -
I followed this process and it seems to work :
-put z=0.0 in config.g G31 line- homing all axes
G30 (be careful and be ready to press emergency button) - manually jog nozzle to touch the bed
G92 Z0 - manually jog 10mm z axes away from nozzle
- G30 S-1 (2 times)
- insert the z value in the G31 line
- Start mesh process from the PanelDue
I did it 2 times and if you want to modify the z, you have to redo the all process (in my case)
- homing all axes
-
@jens55
Thanks I have to control. I have now layers problems and it could be this step/mm that causes it.
But 80 steps/mm is very low... -
It all depends on your mechanics .... it works for me but there are many reasons why it might not be right for you. The appropriate thing is to measure things and adjust until the Duet and real life agree
-
@jens55
Ok, I'll check -
This thread is very confusing to follow because there are 2 people with problems posting in the same thread.
Best way to get accurate and timely help on a problem is to post a good description of the problem and include all of your config files. RRF is configured with gcode, so showing what gcode you are using is critical to helping others understand what's actually happening with the printer.
@Touchthebitum @sko if you want some more help getting your z offset correct, start new threads and include your files. It's usually a fairly simple fix to methodology.