Bed levelling using endstops
-
Is it possible to level bed with 4 independent Z-axis motors using 4 endstops?
I want to put an end stop at the bottom on each motor. To mechanically adjust them, I need some kind of assistant. I also have a probe on the head and with it I can do the leveling when the bed is in the top position.
But I want to have homing down to use the resume print function after power loss.
Suppose I have level the bed at the top with the G30. Next, I want to lower it down to the endstops and find out how I need to move these endstops in order to maintain the correct bed position when homing down. How do you think this can be done?
(Sorry for my English, I use google translate)
-
Well homing with multiple endstops is quite easy in RRF3.
In order to have them positioned correctly, I would first get the bed level with the probe/g30 and then move the bed down and physically move the endstops into position to trigger where they should. I use optical endstops for this because the flags can be easily adjusted for trigger position.
Does that make sense?
-
@Phaedrux thanks for the answer.
Yes, that's understandable.
But manually adjusting the end stops will be a little inaccurate.
Maybe after manual adjustment it is possible to find out the distance from the bed to each endstop in order to adjust more accurately? Something like G30 S-1 but for endstop.
It's just that my table is large (1x1x1 meters) and it takes a long time to drive it up and down.
-
@Dep said in Bed levelling using endstops:
But manually adjusting the end stops will be a little inaccurate.
In the case of optical endstops it's very clear when manually adjusting the flag when the beam is broken because of the LED on the endstop PCB itself. It is very easy to get it accurate beyond the point of noticing. However you could use G30 S-1 at each location to get an exact measurement to see how close they are.
This is also why using the probe for automatic leveling after the fact is preferable. It's only a single device to calibrate instead of 4 switches and it can move to all points that matter for leveling and can even map the surface of the bed itself. So I wouldn't worry too much about the endstops being spot on.
-
@Phaedrux thanks for the answer! Optical endstops are an interesting solution.
But the question is how to use the resume print function after power loss if homing is carried up? After all, the extruder will drive into the model on the table.
-
For power loss recovery I use an endstop at Z max. Optical on one machine and normal switch on another.
Here is an example macro used to measure the exact height of the z axis and set it.
; 0:/macros/Bed Leveling/0_Measure Zmax trigger.g ; Automates measuring the Zmax trigger for optical endstop at 305mm ; M291 P"This will set Z0 and calibrate Zmax height to 305mm" R"Proceed?" S3 M291 P"Homing all axis" T5 G28 ; Home all G90 ; Absolute positioning M291 P"Bed will now drop to Z305" S3 G1 Z305 ; Move bed down 305mm M291 P"Adjust optical endstop flag until light just turns off" R"Set Zmax=305mm" S3 M291 P"ZMax homing will now be tested, starting with homing Zmin" S3 M291 P"Homing to Zmin" T5 G28 M291 P"Ready to test Zmax homing?" R"Proceed?" S3 M291 P"Homing to Zmax" T5 G1 Z350 H3 F400 ; home to z max and set the trigger height as the M208 Z maxima M500 ; save the measured M208 Z maxima to config-override.g M291 P"ZMax homing test complete. Printer will now home all." R"Proceed?" S3 G28 ; Home all M291 P"ZMax calibration complete." S3
And another method for setting the actual length of the Z axis in M208 to match whatever the endstop distance is from the probe trigger.
; 0:/macros/Bed Leveling/0_Set Zmax height.g ; Automates measuring the Zmax height for optical endstop at ~300mm ; M291 P"This will set Z0 and calibrate Zmax height" R"Proceed?" S3 M291 P"Homing all axis" T5 G28 ; Home all G90 ; Absolute positioning M98 P"0:/macros/0_Center Nozzle.g" ; Move nozzle to bed center M291 P"Adjust nozzle height until it's touching bed" Z1 S3 G92 Z0 ; set Z0 M291 P"Bed will now drop to Z300" S3 G1 Z300 ; Move bed down 300mm G1 S3 Z300 F200 M500 ; save m208 value for z axis to config override M291 P"Adjust optical endstop flag until light just turns off" R"Set Zmax=300mm" S3 M291 P"ZMax homing will now be tested, starting with homing Zmin" S3 M291 P"Homing to Zmin" T5 G28 Z M291 P"Ready to test Zmax homing?" R"Proceed?" S3 M291 P"Homing to Zmax" T5 M98 P"0:/macros/2_HomeZMax.g" ; Test Zmax homing M291 P"ZMax homing test complete. Printer will now home all." R"Proceed?" S3 G28 ; Home all M291 "ZMax calibration complete." S3
-
@Phaedrux wonderful! Thank you.
It would be great to also see your resurrect-prologue.g file and the M911 command.
-
It's nothing fancy. On my machines homez is used to home to zmax, so it's just a G28 Z, and homez just has a G1 H1 Z move to the endstop.
Though to be honest I rarely use it. Don't get a lot of power outages here. On the occasions I've had to resume a print it's usually more complicated and I've had to just set the Z position manually and restart a print using an edited gcode file rather than resuming after a power fail.
; resurrect-prologue.g ; ; Called by resurrect.g after a resume from powerloss. ; G28 XY ; Home X and Y ;g92 Z87.2 ; force current z to the manually measured height ;M558 P0 ;G30 ;M98 P"/macros/2_HomeZMax.g" ; Call Home Z Max macro G28 Z ; home z max M116 ; Wait for temps M83 ; Relative Extrusion G1 E2 F1000 ; Undo retraction and prime nozzle M98 P"ZSpeedsPrint.g" ; Return Z speeds to print speeds M98 P"CurrentsPrint.g" ; return motor currents to print values ; Returns to resurrect.g to resume print
As you can see I have a few options for homing commented out.
-
@Phaedrux Got it.
I also don't have any power outages. But I want to try to configureThanks a lot for your answers!