BL Touch
-
-
@droftarts said in BL Touch:
; or G29 S1 - create or load bed compensation mesh
So then how do I do the independent leveling? Here is my config:
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Sep 28 2020 07:45:49 GMT-0600 (Mountain Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"A.C.E." ; set printer name M918 P1 E4 F2000000 ; configure direct-connect display ; Network M551 P"SpaceForceHu2020!!" ; set password M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; X physical drive 0 goes backwards M569 P1 S1 ; Y physical drive 1 goes backwards M569 P2 S0 ; Z One physical drive 2 goes forwards M569 P3 S0 ; E physical drive 3 goes backwards M569 P4 S0 ; Z Two physical drive 2 goes forwards M584 X0 Y1 Z2:4 E3 ; set drive mapping M671 X-23:523 Y0:0 S0.5; M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E415.00 ; set steps per mm M566 X1200.00 Y1200.00 Z24.00 E300.00 ; set maximum instantaneous speed changes (mm/min) M203 X9000.00 Y9000.00 Z180.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z100.00 E5000.00 ; set accelerations (mm/s^2) M906 X800 Y1200 Z800 E1000 I50 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits ;M208 X30:470 Y0:250 ; X carriage moves from 30 to 470, Y bed goes from 0 to 250 M208 X0:500 Y0:500 Z0:500 ; set axis minima ;M208 X500 Y500 Z500 S0 ; set axis maxima ;Filiment Out Sensor M591 D0 P1 C"e0stop" S1 ; filiment out sensor ; 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 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M950 S0 C"exp.heater7" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H5 F600 T9000 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X37 Y0 Z2.150 ; set Z probe trigger value, offset and trigger height M557 X30:470 Y30:470 S25 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4092 ; 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 A340.0 C140.0 D600 S1.00 B1 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S72 ; set temperature limit for heater 0 to 72C M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; 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 S1 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency M106 P2 S1 H1:0 T45 ; set fan 2 value. Thermostatic control is turned on ; Tools M563 P0 S"Hot end" H1 D0 F1:2 ; define tool 1 G10 P0 X0 Y0 Z0 ; set tool 1 axis offsets G10 P0 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ; Custom settings are not defined ; Miscellaneous M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
bed:
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Sep 28 2020 07:45:49 GMT-0600 (Mountain Daylight Time) M561 ; clear any bed transform G29 S2 ;probe the bed and enable compensation G28 ; home all G30 P0 X30 Y250 Z-505 ; probe near a leadscrew, half way along Y axis G30 P1 X470 Y250 Z-505 S2 ; probe near a leadscrew and calibrate 2 motors G29 ; or G29 S1 - create or load bed compensation mesh
home all:
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Sep 28 2020 07:45:49 GMT-0600 (Mountain Daylight Time) G91 ; relative positioning G1 H2 Z5 F9000 ; lift Z relative to current position G1 H1 X-505 Y-505 F21600 ; move quickly to X and Y axis endstops and stop there (first pass) G1 H2 X5 Y5 F9000 ; go back a few mm G1 H1 X-505 Y-505 F7200 ; move slowly to X and Y axis endstops once more (second pass) G90 ; absolute positioning G1 X250 Y250 F9000 ; go to first bed probe point and home Z G30 ; home Z by probing the bed G1 Z10 ; raise Z 10mm ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z5 F150 ; lift Z relative to current position ;G90 ; absolute positioning
home z:
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Sep 28 2020 07:45:49 GMT-0600 (Mountain Daylight Time) G91 ; relative positioning G1 H2 Z5 F9000 ; lift Z relative to current position G90 ; absolute positioning G1 X15 Y15 F9000 ; go to first probe point G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z5 F150 ; lift Z relative to current position ;G90 ; absolute positioning
-
There is a x limit switch at 0, a y limit switch at 0, and the z porbe as the 0.
-
So then how do I do the independent leveling?
First, understand the difference between 'bed (plane) levelling' and 'Bed mesh compensation'. Levelling the bed plane to the nozzle is trying to get the bed square to the XY axis, and has to be done mechanically; using the independent levelling takes some of the hassle out of this, by doing it automatically. However, mesh bed compensation is NOT levelling; it's to account for anomalies in the bed, though it can be used to show that the bed (or X axis) is not level.
As you have a 'bed slinger', with bed moving in Y, and X mounted on Z (rather than any other layout eg CoreXY or Cartesian with bed moving in Z, eg Ultimaker), you actually need to do five things to get everything square:
-
Build the machine square, so that XY, XZ and YZ linear rails are perpendicular with each other (three degrees of freedom - axis skew), and any dual linear rails (X, Y and Z) are parallel (three more degrees of freedom - rotation around axis). This, in itself, is so important and often overlooked. There are some good videos online.
-
Level the X gantry to the frame: you need to do this at least once, so you can reference the bed from the frame.
-
Mechanically level the bed to the nozzle: I expect your bed has levelling screws at the corners, so you have to do this manually. There is a method to do this with the Z probe, or you can do this manually by moving the nozzle to various points on the bed and adjusting the bed adjusters, like everybody did in the 'old' days.
-
Create a bed mesh to account for anomalies in the bed.
-
If printed parts are still not orthogonal (square), see M556, though you've probably not done step 1 right.
You can swap 2 and 3 around, and level the bed to the frame, then level the X axis to the bed, though it's generally more accurate to level the X gantry to the frame.
Steps 1, 2 and 3 should be your initial commissioning, and once done, shouldn't need redoing too often if you don't move the printer. Be aware you really want the printer on something flat, so it doesn't twist the frame. Steps 4 should only need redoing if you're using a different temperature, or you want to check the bed is still level. Step 5 would be if you moved the printer, and didn't want to go back to step 1 again!
Then, each time you turn the printer on:
-
With the bed square to the frame, you can use the independent levelling of the X gantry each time you turn on the printer, to make sure it stays level with the bed.
-
Load the saved bed mesh.
Well, that's the process I use anyway, though rarely even bother with the bed mesh as I have a small bed with 4mm glass on it.
Ian
-
-
@droftarts I appreciate the in depth Exploration. All the axis are level and square. I'm simply trying to keep the x gantry level on the z axis in relation to the bed to make sure it is perfectly level to the bed. What more gcode would I have to incorporate into my config/home all/home z to make this apart of the homing process?
-
@Gost101 is it that it’s not working? Any error message? My guess is that:
G31 P500 X37 Y0 Z2.150
Because of your probe X offfset...
M208 X0:500 Y0:500 Z0:500
And your bed limits...
G30 P0 X30 Y250 Z-505
X30 is not reachable by the probe. Try X40.
Ian
-
@droftarts It's homing as normal. It goes to the x&y endstops then to the center of the bed to probe for z. It is not probing near X30 Y250, X470 Y250. It's only probing the center of the bed. No errors are given. I've tried replacing X30 with X40 as you instructed and no fuzzy dice.
-
@Gost101 what are you running? Homeall.g? You need to run bed.g, with either G32 or M98 P”bed.g”
Ian
-
-
M98 P"bed.g" is not working when called within homeall.g
If you want to call bed.g from anywhere you can just use G32.
Your bed.g file uses both M516 and G29 S2. According to dc42 M561 does the same as G29 S2 (which has an incorrect comment) so you don't need both.
Your homez.g uses the point 15,15 for G30 but homeall.g uses 250,250 - I would use 213,250 for both files - the 213 takes the X offset of the Z probe into account so the probe ends up and 250,250.
In your config.g file the G31 P parameter is 500 but as I recall for a BLTouch it should be 25.
Frederick
-
We've reached 121 posts in this thread and I think the original issue is no longer present. Do you think you could start a new thread with a restatement of the current problem? Please include all of your config files in one post. That way we can take a fresh look at everything.
-
@Phaedrux sure thing. I agree.
-
@fcwilt I appreciate it, I will try that now.
-
We've reached 121 posts in this thread and I think the original issue is no longer present. Do you think you could start a new thread with a restatement of the current problem? Please include all of your config files in one post. That way we can take a fresh look at everything.
Well that explains why I've had this feeling of answering the same question multiple times.
Frederick