independant z axis steppers, for bed leveling
-
i can not connect my z stepper to E0, they are external drivers:
from my original config : M584 X6 Y5 Z7:8 E3 ; set drive mapping
example from the guide : M584 X0 Y1 Z2:3 U3 E4 P3
should mine be :
M584 X6 Y5 Z7:8 U8 E3 P3
; Endstops
M574 X1 Y2 Z1 U1 S0 ; set active high -
It doesn't really matter what your M584 is, but you do need an M671 to tell it where the lead screws are, and they need ot be in the same order as you've used in M584. So you're using 7 and 8, so your M671 order should use the coordinate of the lead screw at 7 first, and then the one at 8.
You must use the M671 command to define the X and Y coordinates of the leadscrews. The M671 command must come after the M584 command and must specify the same number of X and Y coordinates as the number of motors assigned to the Z axis in the M584 command; and these coordinates must be in the same order as the driver numbers of the associated motors in the M584 command. The M671 command must also come after any M667 or M669 command.
https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors
-
@Phaedrux
i have tried 3 different tutorials, and most makes sense cause i can see it, when i try it either i see it working or it doesn't work at all.
for the life of me i can not make this work.
but i am getting great at backing up the SD,with all the modding. lol and making damn sure i have a copy of my original working set asidethe table is x440xy535mm z is 900mm
can someone help me out a bit and show me what i am missing:
; Drives
M569 P5 S0 T5 R1 ; physical drive x axis goes forwards
M569 P6 S1 T5 R1 ; physical drive y axis goes forwards
M569 P7 S1 T5 R1 ; physical drive z axis goes forwards
M569 P8 S1 T5 R1 ; physical drive z2 axis goes forwards
M569 P3 S1 ; physical drive 3 goes forwards
M584 X6 Y5 Z7:8 U8 E3 P3 ; set drive mapping
M350 X16 Y16 Z16 U16 E16 I1 ; configure micro stepping with interpolation
M92 X200.00 Y200.00 Z800.00 U800.00 E138.23 ; set steps per mm
M566 X200.00 Y200.00 Z12.00 U12.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X25000.00 Y25000.00 Z1000.00 U1000.00 E2400.00 ; set maximum speeds (mm/min)
M201 X400.00 Y400.00 Z20.00 U20.00 E400.00 ; set accelerations (mm/s^2)
M906 X300 Y300 Z300 U300 E800 I30 ; set motor currents (mA) x,y,z,u are external stp/dir drivers
M84 S30 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 U0 S1 ; set axis minima
M208 X440 Y535 Z900 U900 S0 ; set axis maxima; Endstops
M574 X1 Y2 Z1 U1 S0 ; set active high endstops 1= minimum 2=maximum end, S1 = normally closed and S2 = normally open; Z-Probe
M307 H7 A-1 C-1 D-1 ; disable heater on PWM channel for BLTouch
M950 S0 C"exp.heater7" ; create servo pin 0 for BLTouch
M558 P9 C"^zprobe.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds
G31 P500 X0 Y40.9 Z.445 ; set Z probe trigger value, offset and trigger height
M557 X50:400 Y50:400 S100 ; define mesh grid x50:400 starts at 50, ends at 400 SXX moves by what its set to between points
; homeall.g
; called to home all axes
;
M280 P7 S90
G91 ; relative positioning
G1 H2 Z5 F800 ; lift Z relative to current position
G1 H1 X-445 Y540 F1800 ; move quickly to X or Y endstop and stop there (first pass)
G1 H1 X-445 ; home X axis
G1 H1 Y540 ; home Y axis
G1 X5 Y-5 F800 ; go back a few mm
G1 H1 X-445 F200 ; move slowly to X axis endstop (second pass)
G1 H1 Y540 F200 ; move slowly to Y axis endstop (second pass)
G1 H1 Z-905 F400 ; home Z axis
G1 Z5 F200 F800 ; go back a few mm
G1 H1 Z-905 F100 ; move slowly to Z axis endstop (second pass)
G90 ; absolute positioning
G92 Z0 ; set Z position to axis minimum (you may want to adjust this)
G91 ; relative positioning
G1 Z5 F800 ; lift Z relative to current position
G90 ; absolute positioning
; homez.g
; called to home the Z axis
;
M280 P7 S90
G91 ; relative positioning
G1 H2 Z5 F800 ; lift Z relative to current position
G1 H1 Z-905 F400 ; home Z axis
G1 Z5 F200 F800 ; go back a few mm
G1 H1 Z-905 F100 ; move slowly to Z axis endstop (second pass)
G92 Z0 ; set Z position to axis minimum
G91 ; relative positioning
G1 Z5 F400 ; lift Z relative to current position
G90 ; absolute positioning
-
You're missing the M671 command.
You need to give it the coordinates of your lead screws as close as you can estimate (relative to your 0,0 position).
If driver 7 is on the left side, list that one first. Then list driver 8.
I don't know where your lead screws are, so you're going to have to measure that one.
Then you need to edit your bed.g file to probe two points as close as you can get to your lead screws.
There are examples in the link provided. Where exactly are you getting stuck?
-
@Phaedrux
stuck on modding the homeall.g and homez.g and bed.g now m671 arghhhhhh, lolthe original z (7) is on the right
my table is 440(x) and 535(y) all MM
0:0 is the front left corner
left leadscrew is at x0 ,y267.5 closest to (Z8 leadscrew)
right leadscrew is at x440, y267.5 (Z7 leadscrew) -
Your homing files don't really need to change if you don't want to. Everything can be done in the bed.g file which is called with G32.
So if your lead screws are at those locations in that order..
M671 X440:0 Y267.5:267.5 S5
Now is the lead screw actually at X0? that would mean in line with the endstop position. Is it maybe actually a bit off to the left more? Remember, this is relative to the 0,0 point on your bed, which is the front left corner of the printable area. Your leadscrew is outside of that area. And same on the right side, its probably a bit more than 440. Anyway I'll use your numbers as an example.
So that lists two X coordinates and two y coordinates, one for each lead screw. Starting with the x440 lead screw since it's connected to the 7 driver which is listed first in M584.
The S5 at the end increases the amount of correction per run to 5mm since you have such a large bed.
So add that M671 command below your M584 in config.g
In bed.g you'd want something like this to set z0 using the probe (since the homeall is using an endstop) and probe as close to the lead screws as possible taking your probe offset into account.
M561 ; clear all bed compensation G28 ; home all axis G90 ; absolute positioning G1 X220 Y250 Z25 ; move probe to center of the bed G30 ; set Z0 position with the probe G1 Z20 ; return to 20mm height G30 P0 X430 Y226.6 Z-99999 ; probe near a leadscrew, half way along Y axis G30 P1 X10 Y226.6 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors G1 X220 Y250 Z25 ; move probe to center of the bed G30 ; set Z0 position with the probe
Note that it might take a few runs of G32 to correct for the tilt entirely.
Note that if you run your G28 homeall again after doing this it will reset the Z0 position with the endstop and you'll have some amount of offset from the actual bed surface. (unless you've perfectly nailed the endstop position to match the nozzle touching the bed.) So best to use G28 before G32, and then start the print, or add a single G30 to the center of the bed into your slicer start gcode.
-
@Phaedrux
the printable area is 440 by 535. the leadscrews are 50mm out from the printable area on both the right and left side both at y 267.5and YES Z0 is right on with the bed and the nozzle, well a papers width
im more into setting things up mechanically first , rather than relying completely on software to fix things, less chance of errors lateri get what your saying . the left leadscrew will actually be, x-50 /Y2267.5 and the right will be x490/y267.5
-
@Phaedrux said in independant z axis steppers, for bed leveling:
M671 X440:0 Y267.5:267.5 S5
Alright, so then we'd need to add/subtract 50mm
And just to confirm since the previous thread we now have 0,0 in the front left corner, correct? We want a right hand coordinate system and since everything is relative to the 0,0 point based on that it kind of matters.
@tracar said in independant z axis steppers, for bed leveling:
i get what your saying . the left leadscrew will actually be, x-50 /Y2267.5 and the right will be x490/y267.5
Yes, exactly.
-
@Phaedrux
yes 0.0 is front left -
Alright, so with all that in place, I suggest reducing motor currents a bit, and trying the bed.g with a hand near the power switch.
-
@Phaedrux
motor current is irrelevant here as it is all external driver, but for fun i have the external drives set to 300ma -
@Phaedrux said in independant z axis steppers, for bed leveling:
G32
Error: Probe points P0 to P1 must be in clockwise order starting near minimum X and Y
-
Ah k. Just change the order of the p1 and p2 points in bed.g.
Move the p2 line above the p1 line and then change p2 to p1 and p1 to p2.
The m671 has to follow the order of the drivers. But the points don't.
-
i got this far:
; bed.g
; called to perform automatic bed compensation via G32
;
; generated by RepRapFirmware Configuration Tool v3.1.4 on Sun Aug 02 2020 19:54:07 GMT-0600 (Mountain Daylight Time)
M561 ; clear any bed transform
G29 ; probe the bed and enable compensationM561 ; clear all bed compensation
G28 ; home all axis
G90 ; absolute positioning
G1 X220 Y290 Z5 ; move probe to center of the bed
G30 ; set Z0 position with the probe
G1 Z10 ; return to 20mm height
G30 P1 X10 Y295 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
G30 P0 X0 Y295 Z-99999 ; probe near a leadscrew, half way along Y axis
G1 X220 Y267.5 Z10 ; move probe to center of the bed
G30 ; set Z0 position with the probe
-
@tracar said in independant z axis steppers, for bed leveling:
Y295
i changed it a bit so center of the bed is exactly in line with the leadscrews, changed it to 295..
-
@Phaedrux said in independant z axis steppers, for bed leveling:
p2 to p1 p1 to p2 ?
Error: Probe points P0 to P1 must be in clockwise order starting near minimum X and Y -
still:
Error: Probe points P0 to P1 must be in clockwise order starting near minimum X and Y
it probes 50mm infront of the bed on the first probe.
i think i changed stuff to suit this bed.. i may be incorrect....Z50 y9.1 is the very first g32 probe point
-
@Phaedrux said in independant z axis steppers, for bed leveling:
M561 ; clear all bed compensation
getting somewhere now
had to disable mesh compensation. then it does stuff8/28/2020, 5:51:16 AM G32
Leadscrew adjustments made: 0.547 -1.117, points used 2, deviation before 0.843 after 0.000i intentionally set the left side of the table lower than the right anf run g32 again. it says it adjusted but the table remains tilted . is this right?
looks like its getting more out of tilt when another g32 is called
-
@tracar said in independant z axis steppers, for bed leveling:
i have the right dimensions added.
it probes 3 places,
it adjusts the bed, (but adjusts reversed so gets more of a tilt)
then sets zo 7mm below the nozzle.we are so close !!!
; bed.g
; called to perform automatic bed compensation via G32
;
; generated by RepRapFirmware Configuration Tool v3.1.4 on Sun Aug 02 2020 19:54:07
M561 ; clear all bed compensation
G28 ; home all axis
G90 ; absolute positioning
G1 X220 Y330 Z25 ; move probe to center of the bed
G30 ; set Z0 position with the probe
G1 Z25 ; return to 25mm height
G30 P0 X440 Y330 Z-99999 ; probe near a leadscrew, half way along Y axis
G30 P1 X0 Y330 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
G1 X220 Y330 Z25 ; move probe to center of the bed
G30 ; set Z0 position with the probe+++++++++++++++++++++++++++++
; Drives
M569 P5 S0 T5 R1 ; physical drive x axis goes forwards
M569 P6 S1 T5 R1 ; physical drive y axis goes forwards
M569 P7 S1 T5 R1 ; physical drive z axis goes forwards
M569 P8 S1 T5 R1 ; physical drive z2 axis goes forwards
M569 P3 S1 ; physical drive 3 goes forwards
M584 X6 Y5 Z7:8 U8 E3 P3 ; set drive mapping
M671 X-50:490 Y330:330 S5 ; x leadscrew position left to right from o,o on y axis , S5 means can adjust up to 5 mm
M350 X16 Y16 Z16 U16 E16 I1 ; configure micro stepping with interpolation
M92 X200.00 Y200.00 Z800.00 U800.00 E138.23 ; set steps per mm
M566 X200.00 Y200.00 Z12.00 U12.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X25000.00 Y25000.00 Z1000.00 U1000.00 E2400.00 ; set maximum speeds (mm/min)
M201 X400.00 Y400.00 Z20.00 U20.00 E400.00 ; set accelerations (mm/s^2)
M906 X300 Y300 Z300 U300 E800 I30 ; set motor currents (mA) x,y,z,u are external stp/dir drivers
M84 S30 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 U0 S1 ; set axis minima
M208 X440 Y535 Z900 U900 S0 ; set axis maxima; Endstops
M574 X1 Y2 Z1 U1 S0 ; set active high endstops 1= minimum 2=maximum end, S1 = normally closed and S2 = normally open; Z-Probe
M307 H7 A-1 C-1 D-1 ; disable heater on PWM channel for BLTouch
M950 S0 C"exp.heater7" ; create servo pin 0 for BLTouch
M558 P9 C"^zprobe.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds
G31 P500 X0 Y40.9 Z-2.703 ; set Z probe trigger value, offset and trigger height
M557 X50:400 Y50:400 S100 ; define mesh gridwhat is needing adjustment?
-
updated changes
; bed.g
; called to perform automatic bed compensation via G32
;
; generated by RepRapFirmware Configuration Tool v3.1.4 on Sun Aug 02 2020 19:54:07
M280 P7 S160 ; Alarm Release and Push-Pin UP
M561 ; clear all bed compensation
G28 ; home all axis
G90 ; absolute positioning
G1 X220 Y330 Z25 ; move probe to center of the bed
G30 ; set Z0 position with the probe
G1 Z25 ; return to 25mm height
G30 P0 X440 Y330 Z-99999 ; probe near a leadscrew, half way along Y axis
G30 P1 X0 Y330 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
G1 X220 Y330 Z25 ; move probe to center of the bed
G30 ; set Z0 position with the probe
M280 P7 S90
M671 X-50:490 Y330:330 S5 ; x leadscrew position left to right from o,o on y axis , S5 means can adjust up to 5 mm
G31 P500 X0 Y0 Z4.247 ; set Z probe trigger value, offset and trigger height
i believe it works as intended now with the above changes
but since both z steppers (Z and U) are independant with each its own endstops, how can i configure homeall /homez to do this independantly to bring z and u Up at the same time and stop when both endstops are triggerd ?