Ender 3 RRF v1.1 setting up BLtouch
-
@gixxerfast Yeah, about that, I already did that.
Here's my homez.g:; ################# Home Z Preparation ################ G91 ; Relative mode G1 H2 Z5 F6000 ; Lower the bed G90 ; Back to absolute positioning G1 X117.5 Y117.5 F10000 ; Move to the center of the bed. Adjust to the co-ordinates required for the centre of your bed ; ################# Home Z Preparation ################ M558 F250 ; Set the probing speed G30 ; Probe a single point M558 F30 ; Set a slower probing speed G30 ; Probe a single point
and my homeall.g:
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.3.1-LPC-STM32+2 on Tue Dec 28 2021 01:07:55 GMT+0100 (közép-európai téli idő) G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-240 Y-240 F1800 ; move quickly to X and Y axis endstops and stop there (first pass) G1 H2 X5 Y5 F6000 ; go back a few mm G1 H1 X-240 Y-240 F360 ; move slowly to X and Y axis endstops once more (second pass) G1 H1 Z-265 F360 ; move Z down stopping at the endstop G90 ; Back to absolute positioning G1 X117.5 Y117.5 F10000 ; Move to the center of the bed. Adjust to the co-ordinates required for the centre of your bed ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z5 F100 ; lift Z relative to current position ;G90 ; absolute positioning
Problem is I don't know what I did wrong. It could be the order or something.
-
@re_tour
Your homeall.g is missing stuff but this is how I do it and it's not perfect and my Ender so modified now I don't really know what it is any longer but it should work fairly OK:homeall.g:
; homeall.g ; called to home all axes ; M98 P"/sys/homex.g" M98 P"/sys/homey.g" M98 P"/sys/homez.g"
homex.g:
; homex.g ; called to home the X axis ; G91 if !move.axes[1].homed ; raise Z a bit G1 H2 Z5 G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-240 F3000 ; move quickly to X axis endstop and stop there (first pass) G1 H2 X5 F6000 ; go back a few mm G1 H1 X-240 F240 ; move slowly to X axis endstop once more (second pass) G90 ; absolute positioning
homey.g:
; homey.g ; called to home the Y axis ; G91 if !move.axes[0].homed ; raise Z a bit G1 H2 Z5 G1 H1 Y-240 F3000 ; move quickly to Y axis endstop and stop there (first pass) G1 H2 Y5 F6000 ; go back a few mm G1 H1 Y-240 F240 ; move slowly to Y axis endstop once more (second pass) G90 ; absolute positioning
and finally homez.g
; homez.g ; called to home the Z axis ; do nothing if XY is not homed yet if !move.axes[0].homed || !move.axes[1].homed echo "XY are not homed yet. Aborting" abort ;end if G91 G1 H2 Z5 F6000 G90 G1 X130 Y160 F6000 G30 K0 Z-99999 ; Probe the Z pin at the back G1 Z10 F9000
Also you cab define two speed probeing with this in your config.g:
M558 P9 C"io2.in" H5 F300:120 A3 T6000 ; See the F300:120 first speed 300 second 120
When all this is done do a, in order, to test:
g28 x g28 y g28 z g28
-
@gixxerfast Okay, after doing everything, during the testing all axises find their homes and the Z homing does 3 probing and then stays in place, in the middle. bltouch red led is on constantly.
-
@re_tour Good, then all works as expected.
What you want to do now is calibrate your Z offset.
I usually do the paper friction thing and just home z and then lower it slowly by G1 Z-0.2 (DON'T FORGET THE G91 before that) (or less) until it's right. Then I adjust the offset in the G31 in config.g
-
@gixxerfast said in Ender 3 RRF v1.1 setting up BLtouch:
by G1 Z-0.2 (DON'T FORGET THE G91 before that)
So like
G1 Z-0.2 *axis moves* G91 G1 Z-0.2 *axis moves* G91 G1 Z-0.2
this?
-
@re_tour G91 set's RRF in realtive coordinates mode so you only need to do that once AFAIK. G90 sets it back to absolute coordinates mode.
So it's like:
G91 G1 z-5 G1 z-.2 G1 Z-.1 ... until you're happy then look at the Z offset in DWC (or some gcode command I don't remember right now) and remember it G90
Take it down until the nozzle touches the paper and you can feel the friction some when moving the paper. You may need to correct this when printing later but then you can baby step it up and down until it looks fine.
I think you do almost the same in Marlin and Klipper. Maybe there's some automated method you can use in RRF but I don't know about it.
-
@gixxerfast Okay, I have a new problem: despite my Z being at 0, there's still about 50-60mm space between the bed and the extruder tip.
-
@re_tour Can you take a screen dump of DWC Dashboard.
and also add your latest config.g and homez.g
-
@gixxerfast
Dashboard:
config.g:
; Configuration file for SKR-RFF-E3-v1.1 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.1-LPC-STM32+2 on Tue Dec 28 2021 01:07:55 GMT+0100 ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Ender3" ; set printer name ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S0 ; physical drive 0 goes backwards using TMC2209 driver timings M569 P1 S0 ; physical drive 1 goes backwards using TMC2209 driver timings M569 P2 S1 ; physical drive 2 goes forwards using TMC2209 driver timings M569 P3 S1 ; physical drive 3 goes forwards using TMC2209 driver timings M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E93.00 ; set steps per mm M566 X1200.00 Y1200.00 Z60.00 E360.00 ; set maximum instantaneous speed changes (mm/min) M203 X9000.00 Y9000.00 Z1800.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z100.00 E5000.00 ; set accelerations (mm/s^2) M906 X1000 Y1000 Z1000 E1000 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X235 Y235 Z260 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop M574 Y1 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop M574 Z1 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin zstop ; Z-Probe M950 S0 C"servo0" ; create servo pin 0 for BLTouch M558 P9 C"^probe" H5 F300:120 A3 T6000 ; set Z probe type to bltouch and the dive height + speeds,the F300:120 first speed 300 second 120 G31 P500 X117.5 Y117.5 Z0 ; set Z probe trigger value, offset and trigger height M557 X15:215 Y15:195 S20 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bed" T0 ; create bed heater output on bed and map it to sensor 0 M307 H0 B0 R0.365 C296.6 D3.97 S1.00 V24.0 ; disable 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 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4092 ; 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 R2.845 C121.4:119.4 D5.71 S1.00 V24.0 ; disable bang-bang mode for heater and set PWM limit M143 H1 S245 ; set temperature limit for heater 1 to 245C ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 C"Part Cooling Fan" 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 Fan" S0.01 H1 T45 ; set fan 1 name and value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Custom settings are not defined M918 P1 E4 E1000000
homez.g:
; homez.g ; called to home the Z axis ; do nothing if XY is not homed yet if !move.axes[0].homed || !move.axes[1].homed echo "XY are not homed yet. Aborting" abort ;end if G91 G1 H2 Z5 F6000 G90 G1 X130 Y160 F6000 G30 K0 Z-99999 ; Probe the Z pin at the back G1 Z10 F9000
-
@re_tour
OK, a few things. I assume you want to replace any old z endstop switch with the probe. Then you need to remove this:M574 Z1 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin zstop
Also I don think you want to set your Z offset in the G32 to 0 (zero). It should reflect the distance between the probe (when triggered) and the nozzle.
-
@gixxerfast
I took out this line from config.g:M574 Z1 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin zstop
So to calibrate offset I need to extend the probe with the M280 P0 S10 and watch when the probe touches the bed and then write the value of Z into config?
Sorry, this offset thing is a bit unclear to me. -
@re_tour No, you home z and then you try to lower it to zero. If it's not at zero. you lower it some more manually until "the paper thing". Then you see what actual offset yo have by looking at the z coordinate in, for example, DWC. Then adjust your z offset value in G31 using this value.
Be careful here, it's the other way around the way many thinks of this. A large offset will try to move the nozzle closer to the bed and a small will keep it away.
Anyhow, I'm not very good at this so there is probably a write up about this in the duet documentation.
-
@gixxerfast Gotcha.
Okay so now I set the offset in config.g to this:
G31 P500 X117.5 Y117.5 Z5 ; set Z probe trigger value, offset and trigger height
Then I started lowering the nozzle to do the paper scraper test thingy. Right now I think that the height of the nozzle is optimal. On the dashboard the value of Z at this time is 1.45
So now I have to add that or subtract that from the offset which I wrote in config.g?
-
@re_tour Try adding it (I always mess upp here). Just be close to the breaker
-
@re_tour Then again my offset is Z4.370 and I think my probe is as close to the bed as it could really be
-
@gixxerfast Stupid question I know, but how will I know that my offset is correct?
-
@re_tour Same way, just lower slowly to zero and see if your paper feels right.
Then when printing you will probably see that you're to close and you will want to lift it a bit. But all do it differently I think. I just go for a lot of paper friction, it's easier to adjust every corner.
Also, on the Ender. Don't put too much work into this cause you will do the bed screws anyway with the paper method I guess. Then when it's fairly flat (ish) you'll do a bed mesh.
-
@gixxerfast Wait, so if I set up the offset correctly, how do I get from here to be able to do the bed mesh?
-
@re_tour
You have something like this in your config.g:;mesh_min: 30, 15 ;mesh_max: 190, 220 ;probe_count: 5 M557 X30:190 Y15:220 P5 ; define mesh grid
Then you have a file called mesh.g in your /sys directory with something like this in it:
G29 S2 ; move to the center of the mesh with the PROBE (mind affset in Y is 25 above noozle) G90 var xoffset = 37.1 var yoffset = 9.25 var xpos = {110 - var.xoffset} var ypos = {117.5 - var.yoffset} G1 X{var.xpos} Y{var.ypos} Z15 F6000 echo "Setting Probe Offset now" G30 K0 G1 Z15 F3000 G29 S0
The offsets of course depends on where you have your probe mounted.
-
@re_tour Home all, then mesh.
G28
G29or
G28
G32 ; call bed.gIn bedg.g I have:
; bed.g ; called to perform automatic bed compensation via G32 M561 ; clear any bed transform if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed G28 M290 R0 S0 ; clear baby stepping G29 S1 ; load heightmap.csv if result > 1 ; if no heightmap.csv, make one G29 S0