Importantance of bed leveling.
-
So… I have the IR bed level sensor on order, but it's backordered for the moment. I'm migrating the rig from RAMPS 1.4 electronics to the Duet3dWifi. How important (to the firmware application) is bed leveling? Can I proceed to use the rig without bed leveling until it arrives, or do I need to wait?
-
Firmware wise you can proceed without bed levelling. Hardware wise, if the bed is flat and level and stays that way, you don't need firmware compensation - ever.
-
Automatic bed leveling should be considered a convenience, and specifically should NOT be relied upon until you've done your best to level the bed manually. I printed for years without any automated bed leveling setup and had great success - though a significant amount of time was spent on the manual leveling process.
So yes, you can proceed to use a 3d printer without automatic bed leveling - and the duet works without relying on one as well.
-
Let's differentiate calibration vs leveling.
Bed leveling = having the bed mechanically level so anywhere the nozzle is at z=0 it is just touching the bed.
Bed calibration = work around, via software, for when bed leveling isn't perfect
You can mechanically level your bed, by hand, by physically adjusting your printer, and this should be your first goal before relying on calibration. If you do well enough, calibration won't do a lot lot for you.
True automatic bed leveling (such as using 3 steppers to physically level the bed for you) is combining the two. The duet can do this as well, if your printer is capable of it.
-
Honestly if you have a solid machine with sturdy axes, and a bed that's actually flat, and a mechanism to level it you don't need any z probes. Level the bed by turning screws and don't move the machine around or change anything and it stays level.
If your machine is a bit more flimsy and doesn't consistently stay level (or in tram) then sensors and firmware ABL helps to get that first layer down more consistently.
If your bed isn't actually fiat, and there are some good reasons why this happens using a sensor to grid level enables printing on a non-flat bed. Tapering off compensation minimises the artefact in the print to just a few mm of the base.
However probes are super useful for deltas as they make automatic calibration actually a pleasure, just hit a button and it sets itself up. Providing its mechanically correct and the probe accurate.
Honestly despite being in the probe business I'm honest enough to say that they aren't always necessary. I recently got a cr10 to play with, used a piece of paper to check gap and turned a few screws and I can print anywhere on the bed.
Also the manual calibration routine which now runs if you have no probe configured, actually works quite nicely. I used it on my XL machine when I was having a wiring issue with the probe. Just jog up and down, use piece of paper and show the firmware the probe heights at each point and you're done.
-
Totally agree with last two comments, my dinky little RF100 Cartesian with a magnetic mounted glass bed (+PEI'alike surface) and three manual leveling screws has now been untouched since before Christmas when I last had the nozzle out to clean. I set it up once with feeler gauges, and that was it.
I can pop the plate on-off as much as I like and I get a perfect layer/adhesion first time, every time! Set and forget is lovely.
My delta however… endstop jitter and a looser bed fitting makes my IR42 probe very much in demand, and calibration every print a prerequisite. One of my long-term goals to to make this set and forget too if I can find a accurate enough endstop mechanism.
-
I run five deltas and a cartesian FT5 and don't use a touch probe on any of them anymore. I had an IR sensor on a couple of them, but ditched it when I started using nice thick glass plates a couple of years ago.
Spend the time to set the printer up properly and you'll never need a probe/sensor/etc,
-
Also the manual calibration routine which now runs if you have no probe configured, actually works quite nicely. I used it on my XL machine when I was having a wiring issue with the probe. Just jog up and down, use piece of paper and show the firmware the probe heights at each point and you're done.
Does the Duet have a manual calibration routine?
-
You can create some macros to make it easier.
-
Does the Duet have a manual calibration routine?
Yes: https://duet3d.dozuki.com/Wiki/Using_the_manual_bed_levelling_assistant
-
Also the manual calibration routine which now runs if you have no probe configured, actually works quite nicely. I used it on my XL machine when I was having a wiring issue with the probe. Just jog up and down, use piece of paper and show the firmware the probe heights at each point and you're done.
Does the Duet have a manual calibration routine?
I don't have multiple Z axis motors to use the leveling assistant so I created a macro that takes me through a manual bed leveling, calibrates the Zprobe trigger height, and gets everything ready for a G29 detailed probe.
[c]
; Helps guide leveling the bed mechanically, and calibrate the ZProbe trigger height before running a grid bed compensation routine..
;; Preamble to tell the user to prepare the printer before continuing
;
;M291 P"Before proceeding make sure the printer is mechanically sound and properly functioning." R"Prepare printer for leveling routine" S3 ; User must click OK
;M291 P"ZProbe should be configured and working. Clear the print bed of any obstacles or debris." R"Prepare printer for leveling routine" S3 ; User must click OK
;M291 P"This routine will take about 10-20 minutes and heat both the bed and nozzle." R"Prepare printer for leveling routine" S3 ; User must click OK
;M291 P"You will need a screwdriver and piece of paper. Filament will be unloaded." R"Prepare printer for leveling routine" S3 ; User must click OK
;M291 P"Make sure you have successful Gcodes logged to the console before proceeding." R"WARNING" S3 ; User must click OK or cancel
;M291 P"Make a note of your M558 Z value and backup current heightmap before proceeding." R"WARNING" S3 ; User must click OK or cancel; Clear compensation map and Zprobe trigger height
;
M291 P"Grid bed compensation map and ZProbe trigger height will be cleared. Ok or Cancel?" R"WARNING" S3 ; User must click OK or cancel.
M561 ; Disable any current bed compensation
G31 Z0 ; Reset zprobe trigger height; Heat up bed and nozzle to PLA temps in prep for filament removal and probing
;
M291 P"Bed and nozzle will preheat and home all axis." R"Preheat and Home" S3 ; User must click OK or cancel
M104 S130 ; Set nozzle to 130 and release
M140 S55 ; Set bed to 55 and release; home all axis
;
G28 ; Home all axis
G90 ; Absolute positioning
T0 ; Activate first tool; Set lower speeds for Z homing and lower Z motor current
;
M566 Z10 ; Set maximum instantaneous speed changes (mm/min) (Jerk)
M203 Z400 ; Set maximum speeds (mm/min)
M201 Z100 ; Set maximum accelerations (mm/s^2)
M906 Z900 ; Drop motor current to prevent damage in case of head crash; Move nozzle forward for filament removal
;
M291 P"Moving nozzle to the front for filament removal and cleaning."
G1 X50 Y5 Z100 ; Moves print head to front left and drops the bed down for easy access
M109 S130 ; Set nozzle to 130 and wait; Tone to get user attention
;
M400 ; Clear movement buffer so tones play reliably
M300 S666 P500
G4 P501
M300 S1111 P300
G4 P301; Unload filament and clean nozzle
;
M291 P"Unload filament if loaded and clean nozzle, then press OK to continue" R"Unload Filament" S3 ; User must click OK or cancel; Preheat to probing temps
;
M291 P"Preheating to bed to 60 and nozzle to 210 for accurate probing"
M104 S210 ; Set nozzle to 210 and release
M190 S60 ; Set bed to 60 and wait
M109 S210 ; Set nozzle to 210 and wait; Tone to get user attention
;
M400 ; Clear movement buffer so tones play reliably
M300 S666 P500
G4 P501
M300 S1111 P300
G4 P301; Move nozzle to center of bed at Z10 and drop to Z1
;
M291 P"Nozzle will now move to center of bed and move close to the bed"
G1 X155 Y140 Z3 F4000 ; move to bed center; Reset z to 5 to allow jogging up to touch bed to nozzle
;
G92 Z5; Dialog to allow user to job z to touch nozzle to bed gently and then move Z down 10
;
M291 P"Carefully Jog the Z Axis until the bed and nozzle are touching and click OK" R"Setting Z=0" Z1 S3
G92 Z0 ; set z = 0; Move nozzle to leveling points and prompt user to level bed at each
;
M291 P"Nozzle will now move to the 3 leveling points twice." S2; Move to leveling point 1
G1 Z1 ; move to z1 for travel
G1 X60 Y285 F6000 ; Move to rear left corner
G1 Z0 ; Move to Z0 for adjustment
M400
M291 P"Adjust point 1 using a piece of paper and screw driver. Use the jog buttons if needed." R"Adjustment Point 1" S2 Z1; Move to leveling point 2
G1 Z1 ; Move to Z1 for clearance
G1 X275 Y285 F6000 ; Move to rear right corner
G1 Z0 ; Move to Z0 for adjustment
M400
M291 P"Adjust point 2 using a piece of paper and screw driver. Use the jog buttons if needed." R"Adjustment Point 2" S2 Z1; Move to leveling point 3
G1 Z1 ; Move to Z1 for clearance
G1 X158 Y15 F6000 ; Move to front middle
G1 Z0 ; Move to Z0 for adjustment
M400
M291 P"Adjust point 3 using a piece of paper and screw driver. Use the jog buttons if needed." R"Adjustment Point 3" S2 Z1; Repeat to verify
;
M291 P"The adjustment sequence will now repeat for fine adjustment." S2; Move to leveling point 1
G1 Z1 ; move to z1 for travel
G1 X60 Y285 F6000 ; Move to rear left corner
G1 Z0 ; Move to Z0 for adjustment
M400
M291 P"Adjust point 1 using a piece of paper and screw driver. Use the jog buttons if needed." R"Adjustment Point 1" S2 Z1; Move to leveling point 2
G1 Z1 ; Move to Z1 for clearance
G1 X275 Y285 F6000 ; Move to rear right corner
G1 Z0 ; Move to Z0 for adjustment
M400
M291 P"Adjust point 2 using a piece of paper and screw driver. Use the jog buttons if needed." R"Adjustment Point 2" S2 Z1; Move to leveling point 3
G1 Z1 ; Move to Z1 for clearance
G1 X158 Y15 F6000 ; Move to front middle
G1 Z0 ; Move to Z0 for adjustment
M400
M291 P"Adjust point 3 using a piece of paper and screw driver. Use the jog buttons if needed." R"Adjustment Point 3" S2 Z1; Move nozzle to center of bed at z10
;
M291 P"Nozzle will now move to center of bed to reset Z0 and calibrate probe" S3
G1 Z1 ; Drop bed for nozzle clearance
G1 X155 Y140 Z2 F4000 ; Move to bed center; Reset z to 5 to allow jogging up to touch bed to nozzle
;
G92 Z5; Dialog to allow user to jog z to touch nozzle to bed gently and then move Z down 10
;
M291 P"Jog the Z Axis until the bed and nozzle are touching and click OK" R"Setting Z=0" Z1 S3
G92 Z0 ; Set z = 0; Move probe to center of bed and get probe trigger heights
;
M291 P"Probe will now move to center of bed and measure trigger height 10 times" R"ZProbe Trigger Height Calibration" S3
G1 Z1 ; Drop bed for nozzle clearance
G1 X200 Y140 F4000 ; Move to bed centerM291 P"Heights will be found in gcode console if logging successful gcode is enabled" R"Did you remember to enabled gcode logging?" S3
; G30 S-1 10 times
;
; 1
G1 Z10
G30 S-1; 2
G1 Z10
G30 S-1; 3
G1 Z10
G30 S-1; 4
G1 Z10
G30 S-1; 5
G1 Z10
G30 S-1; 6
G1 Z10
G30 S-1; 7
G1 Z10
G30 S-1; 8
G1 Z10
G30 S-1; 9
G1 Z10
G30 S-1; 10
G1 Z10
G30 S-1M291 P"Probing complete. Turning off heaters and homing axis. Check log for trigger heights and enter into config.g" S2
; Turn off heaters
;
M104 S0 ; Set nozzle to 0 and release
M140 S0 ; Set bed to 0 and release
M906 Z1500 ; Return Z motor current to normal
G28 ; Home all; Tone to get user attention
;
M400 ; Clear movement buffer so tones play reliably
M300 S666 P500
G4 P501
M300 S1111 P300
G4 P301; Tell user to take values from gcode console log and average the Z height and use that as the new Z probe trigger height
;
;M291 P"Average the 10 Z height values in the console and round to 2 decimal places" S2
;M291 P"The resulting value is the ZProbe trigger height value (M558 Zn)" S2
;M291 P"Either set the value in config.g and reboot, or send M558 Zn in the console before running G29." S2
;M291 P"The bed is now mechanically leveled and probe height calibrated." R"Congratulations!" S2
;M291 P"You may now run a Grid Bed Compensation Detailed Probe. (G92)." S2
;
; Run bed grid compensation routine
[/c]