independant z axis steppers, for bed leveling
-
@tracar The config you've posted above is for RRF3. See @dhusolo's link for setting up independent Z motors.
G31 P500 X0 Y40.9 Z.445
With those offsets, is the BLTouch hanging off the front of the X carriage? Be aware that any rotation, tilt or droop in the X carriage may give a false probe reading. Think of a lever, where the pivot is connected to the X carriage, the hot end is half way along, and the BLTouch is at the end. Any movement in the lever has a smaller effect on the hot end nozzle, but a large effect on the BLTouch. It's better to mount the probe inline with the nozzle in the Y direction, and have an X offset.
Ian
-
@droftarts
completely understand lever action, its placement is rock solid, and temporary. it will be moved closer to the x axis rail later -
@droftarts said in independant z axis steppers, for bed leveling:
ouch hanging off the front of the X carriage? Be aware that any rot
the above link to Bed leveling using multiple independent Z motors. is confusing as im using external step/dir drivers plugged into an expansion board
my extruder is on E0
my x,y,z pins are different:
; Configuration file for Duet WiFi (firmware version 2.03)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.1.3 on Sat Jun 27 2020 12:25:17 GMT-0600 (Mountain Daylight Time); General preferences
G31 X0 Y0 Z0 P25
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"Duet2" ; set printer name
M669 K1 ; select CoreXY mode; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet; Drives
M569 P5 S0 T5 R1 ; physical drive x axis goes backwards
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 E3 ; set drive mapping
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
M92 X200.00 Y200.00 Z800.00 E138.2316760023409 ; set steps per mm
M566 X200.00 Y200.00 Z200.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X25000.00 Y25000.00 Z2500.00 E2400.00 ; set maximum speeds (mm/min)
M201 X400.00 Y400.00 Z400.00 E400.00 ; set accelerations (mm/s^2)
M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X440 Y535 Z900 S0 ; set axis maxima; Endstops
M574 X1 Y2 Z1 S0 ; set active high endstops; Z-Probe
M307 H7 A-1 C-1 D-1 ; disable heater on PWM channel 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; Heaters
M305 P0 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M305 P1 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 1
M143 H1 S280 ; set temperature limit for heater 1 to 280C; Fans
M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
M106 P0 S0 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; Tools
M563 P0 D0 H1 F0 ; define tool 0
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C; Custom settings are not defined
; Miscellaneous
;M575 P1 S1 B57600 ; enable support for PanelDue
; homeall.g
; called to home all axesM280 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 F800 ; move Z down until the endstop is triggered
G92 Z0 ; set Z position to axis minimum (you may want to adjust this); Uncomment the following lines to lift Z after probing
G91 ; relative positioning
G1 Z5 F400 ; lift Z relative to current position
G90 ; absolute positioning -
But it should be no Problem! What confuses you?
-
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