Using bed leveling screws with independent z motors
-
@jay_s_uk Maybe you're right however I think its an interesting discussion. I'll draw a schematic tomorrow which will hopefully show my point more clearer. I appreciate the help nonetheless!
-
@ofliduet said in Using bed leveling screws with independent z motors:
@Piet Right. I'm not a big fan of leaving bed edges unsupported with only 3 mounting points. You might be able to tell my bed isn't that stiff. I therefore actually have 2 screws and 2 fixed points. The two screws are there so I can adjust twist in the bed. One might be theoretically enough, but two allows me to make opposing adjustments that don't move the probe point in the middle near the lead screw. Probing all 4 in the script gives me the output I need to even everything out."
That is the only real use-case to have both: Have the screws to "undistord" a non-planar plate you begin with (so you activly overconstrain it by purpose to make "a banana" to a "flat-toast"/"pizza". And then when that thing is flat like a pizza (or so, of which MBL can take care) you auto-level-home from there on with your I-Z-M.
Did I get your intention right? If yes, an interesting survival-point for analog hand-dialed screws just came up here But then I would not use them vertical but rather pull diagonal horizontal the whole metal-plate flat by pulling... just thinking for myself...
-
Hi All,
I've skimmed over this topic a little, but having just figured out this problem I thought I would add my 2c.
I have a very large bed - roughly 800x800, with 16 manual adjustment screws (4x4 arrangement), and 4 independent Z motors.
In my case, I have (at some point) needed to manually level both the lead screws, and the manual adjustment screw - I have also used G32 and G29 bed levelling.
I partially agree that there is a hierarchy to bed levelling, which needs to be done after assembly, maintenance or a component failure (like a loose screw on a Z motor coupling for example?). With so many components there's plenty of opportunity for something to go wrong, so the correct procedure helps.
I manually adjust the Z screws with the hot end close to the screws first - this gets the nozzle within a reasonable range for G32 to work its magic. Then I run G29 to do a mesh bed levelling - now that all 4 motors are coplanar this gives me a good idea on the flatness of the bed. If the min/max deviation of the mesh bed levelling is less than 1mm (an arbitrary number I've decided to use), then I'll leave it be - otherwise, I'll adjust the manual levelling screws...
A more thorough method would be to look for a deviation greater than Xmm (some number) between any two neighboring points in the mesh bed levelling, but for now I'm satisfied with maximum deviation...
On smaller printers like your typical 300x300 size, then I think a similar approach is easy enough to do, so it doesn't really matter whether it's necessary - do what ever you feel works best for you.
-
@Piet said in Using bed leveling screws with independent z motors:
@fcwilt I understand the functions of either but don't you agree that manually adjusting the bed to be parallel to the print frame initially is a better way to go.
By "print frame" do you mean something that surrounds and supports the bed?
If so, yes, it is best to have the bed properly aligned to that frame but the solution is to design it such that it does not need manual adjustment.
If you mean something else by "print frame" please explain.
Thanks.
Frederick
-
@Piet said in Using bed leveling screws with independent z motors:
For example in an extreme case where one point of the bed is 10mm off. If I were to level that initially using the ABL it would torque the entire Z-axis assembly and would put a lot of strain and resistance on the leadscrews.
Whether you're using manual levelling assistant or auto bed levelling, the process is taking the measurements from probing the bed surface.
I think your concern is that the bed is not level with the z-gantry (e.g. because one of the manual adjustment screws is way off). So you want to get the bed close to level to the z-gantry (and so level with the lead screws) so that they aren't kinked over later. The trouble is the Duet has no idea where the lead screws are as it is still only probing the bed surface. Only exception/caveat is if you are using independent endstops on them as well (and somehow worked out the offset for them all).
One option could be to remove the bed and try probing the z-gantry to get that near level (so the leadscrew are all level) using auto bed levelling. Then put the bed back on and use the manual assistant to get the manual screw right, then use auto levelling again to actually get it all tuned in fine (assuming you didn't with manual). Might work, but probably will end in tears trying to probe aluminium extrusions....
Alternatively, just try making sure your bed is level to your z-gantry when building the printer. Simplest way is to use fixed spacers (i.e. no manual adjustment). Or just a spirit level/your eyes? The lead screws should take a little misalignment. Unless you have a massive bed, if you build your printer 10mm out and don't see it, you're probably gonna have a bunch of other problems in there too...
-
The optimum configuration for leadscrews is 3 in a triangle configuration, a triangle being the optimum shape for stability which is why it is used, anything else is sub-optimal.
As long a the bed plate is flat (and any frame it is mounted to) are both assembled parallel to each other then no further manual levelling is required, the 3 independently operated lead screws will do the rest, as long as the mounting points between the leadscrews and bed/bed frame are not too constrained.
end of story.My bed and frame on my most recent core-xy printer is rose jointed and has short linear rails to allow full articulation for a degree of non-planer printing
-
There's no reason you can't use both methods right now, though it's a bit redundant.
You'd need to modify your M671 depending on which you wanted to do at the time.
For the manual way you'd need to include the P parameter to define the thread pitch of the screws.
-
@Gerrard This is basically what i was going for indeed, an initial setup and a fallback procedure if something goes wrong (in shipping for example). The bed of this printer will be 800x500 so it is quite large.
-
@engikeneer That is my concern, i do also have independent z sensors so i know where every Z-motor is before probing. I think there is something to be said that with a good construction it is most likely redundant but the printer isn't build yet so im just speculating about the best approach to take to make sure it goes well anyways. Thanks for the feedback!
-
@Phaedrux That's how i figured it worked too however i have 3 Z motors defined in my M584. When i add the P parameter it still automatically adjusts the leadscrew instead of giving feedback on how much to turn the screws. Maybe it has to do with my S parameter?
-
@Piet said in Using bed leveling screws with independent z motors:
@engikeneer That is my concern, i do also have independent z sensors so i know where every Z-motor is before probing. I think there is something to be said that with a good construction it is most likely redundant but the printer isn't build yet so im just speculating about the best approach to take to make sure it goes well anyways. Thanks for the feedback!
The best approach is to build/design the printer properly and allow the printer to do everything else automatically, as you admit this is a machine for resale, one less step for the end user to have to carry out is a plus point, this makes it easy for the customer to set things up and achieve the end goal of getting printing and not spending time carrying out unnecessary adjustment put in place due to paranoia.
-
@CaLviNx "Best approach" is subject to perspective. I agree with @Piet here - you build the most light weight frame that you can (because it's cheaper) and you let the software/hardware smarts take care of the rest for you - because it can. It's very normal for machines to require commissioning before being ready for use.
Remember that 3 points is the most stable, only if you assume a rigid body. In real life "rigid" doesn't exist. All bodies are elastic to some extent.
-
You might build with the most lightweight/cheapest but not everyone does.....
Some of us build using quality components for as high a quality & rigidity as is possible.
And I dont "assume" a rigid body, If you build in rigidity using quality components then it will be as close to rigid as possible, so it DOES exist, also you design the elasticity to be in the place YOU decide it to be.
If designed & built properly the printer should self align and then the only "commissioning" required is to run the leveling sequence
An awful lot of over thinking in the wrong place is going on.
-
@Piet said in Using bed leveling screws with independent z motors:
@Phaedrux That's how i figured it worked too however i have 3 Z motors defined in my M584. When i add the P parameter it still automatically adjusts the leadscrew instead of giving feedback on how much to turn the screws. Maybe it has to do with my S parameter?
That's a complication then. I wonder if you split the Z axis into separate letters if it would allow you to use the manual adjustment.
Though at that point since you have the motors why not just let them adjust?
Look at it this way, if you're adjusting the plate on the frame to be level, the carriages carrying the frame will still be out of sync and eventually may bind. It just doesn't make sense to stack adjustment points like that.
-
@Phaedrux Thanks for the help. This thread has got me thinking and for the production run I'll most likely use a different solution (less constrained so motors can do its thing). For the prototype I will see if it is helpfull if necessary at all.
Right now I have it working with 4 adjustment points using the following script:
M561 ; clear any bed transform
M98 P"homexyu.g" ; home the x, y and u axis
T0 P0 ; select tool 0
G1 X51.3 Y75 F5000 ; move to first probe coordinates
G91 ; relative positioning
G30 K0 Z-9999 ; probe bed with tool 0 and set Z=0G90 ; absolute positioning
T1 P0 ; select tool 1
G1 X51.3 Y75 Z12.5 U-7.5 F2000; ; move the bed 7.5mm, and the U axis 15mm down
G91 ; relative positioning
G38.2 Z-9999 P1 ; probe bed with tool 1 and stay at Z=0
M400
G10 L1 P1 X0 Y0 Z{-move.axes[2].machinePosition} ; set Z-offset
M500 P10 ; save offset
M400
G1 Z5 ; move the bed 5mm down
G90 ; absolute positioning
M400
M117 "Z offset for tool 1 is set and saved"T0 ; select tool 0
G30 P0 K0 X51.3 Y75 Z-9999 ; probe above leadscrew
G30 P1 K0 X400 Y448.7 Z-9999 ; probe above leadscrew
G30 P2 K0 X748.7 Y75 Z-9999 S3 ; probe above leadscrew and run compensation