@engikeneer said in Bed levelling with 3x independent Z motors issues:
@exerqtor I notice that you are running a bunch of macros I'm there to reduce the motor currents etc. Could it be that you're reducing the motor currents too much so that one of the motors can't actually turn? Might be one of them has a little more friction now there's three of them in your system.
To try and test it and narrow down your issue, I would go for as simple a script as possible. Maybe even manually send the commands and see what happens?
@peirof I think OP's bed.g is much more complex than most because he has to pick up his 'klicky' probe and is doing a few other things. It can be as simple as 3 lines to probe the bed in three places 🙂 Read the docs link that the others have posted and you should be okay
@engikeneer
Yeah i was running the same motor current etc. macros before before the 3x Z motor conversion too, so i figured they wouldnt cause any issues now either, but apparently they did.
Turns out the issue was that i dropped the XY currents to 30% of1400mA, DESPITE that workring without an hitch when running homeall.g that moves the same number of axis. Bumped it up to 45% of 1400mA and it fixed the issue.
Thankfully it works now, now on to the next step/potential issue 😅
@peirof said in Bed levelling with 3x independent Z motors issues:
@engikeneer
Well ... you reassure me, when I saw the @Exerqtor bed.g, I almost felt sick to die ....
I got scared, I thought: "Thank goodness the printer still took a long time to come. I have a LOT to study ... "
Yeah i'm doing alot more than what's needed to get started, my first build was ALOT simpler than this. More or less what the RRF configurator spews out with only a couple tiny changes done to it 😃 Take it step by step and learn as you go, and don't give up (even tho it feels like the only sane thing to do at times 😂 )
_ _
And for those who might end up searching or refering to this post to solve their problem this is what everything ended up looking like(when it comes to this specific issue, everything else is intently left out)
config.g
; General setup
M669 K1 X-1:-1:0 Y1:-1:0 Z0:0:1 ; select CoreXY mode and set kinematics matrix
; --- Z drive map ---
; _______
; | 0 |
; | ----- |
; | 2 | 1 |
; -------
; front
; Drives for Z
M569 P0 S0 ; Z1 (physical drive 0) goes backwards
M569 P1 S0 ; Z2 (physical drive 1) goes backwards
M569 P2 S0 ; Z3 (physical drive 2) goes backwards
; Drives for XY
M569 P3 S0 ; X (physical drive 3) goes backwards
M569 P4 S0 ; Y (physical drive 4) goes backwards
; Motor mapping and steps per mm
M584 X4 Y3 Z0:1:2 ; set drive mapping
M350 X16 Y16 Z16:16 I1 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z400.00:400.00:400.00 ; set XYZ steps per mm (1.8deg motors)
; Drive currents
M906 X1400 Y1400 Z1200:1200:1200 ; set XYZ motor currents (mA)
M906 I30 ; set ide current percentage
M84 S30 ; set idle timeout
; Accelerations and speed
M98 P"/macros/System/Speed/speed_printing.g" ; set normal speed & accel
; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X347.5 Y358 Z300 S0 ; set axis maxima
; Endstops
M574 X2 S1 P"xstop" ; configure active-low endstop for low end on X via pin xstop
M574 Y2 S1 P"ystop" ; configure active-low endstop for low end on Y via pin ystop
M574 Z0 P"nil" ; no endstop
; Z microswitch (nozzle probe)
M558 K1 P8 C"zstop" I1 H2 F350:60 T18000 A10 S0.01 R0.2 ; set Z probe type to switch and the dive height + speeds
G31 K1 P500 X0 Y0 Z-0.17 ; set Z probe trigger value, offset and trigger height -0.8 (higher Z value = nozzle closer to bed)
; Z-probe (klicky probe)
M558 K0 P8 C"^zprobe.in" H5 F350:120 T10000 A5 S0.03 R0.2 ; set Z probe type to switch and the dive height + speeds
G31 K0 P500 X0 Y21 Z6.42 ; set Z probe trigger value, offset and trigger height (higher Z value = nozzle closer to bed)
; Bed leveling
M671 X175:388:-38 Y416.6:1.5:1.5 S10 ; leadscrew locations (Rear, Right, Left)
M557 X25:315 Y25:325 P5:5 ; define mesh grid ( positions include the Z offset!)
bed.g
; bed.g
; called to perform automatic bed compensation via G32
;
; --- prepare to level bed ---
;M291 S3 R"Leveling bed" P"Do you want to level the bed?" S3 ; want to probe or not
M291 R"Leveling bed" P"Please wait..." T0 ; leveling bed
M561 ; clear any bed transform
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; axles homed ?
;M291 P"Axles not homed! Perform homing?" R"LevelAssist" S3
G28 ; home all axes
M98 P"/macros/System/Home/get_klicky.g" ; pick up the klicky probe
M98 P"/macros/System/Speed/speed_probing.g" ; set low speed & accel
M98 P"/macros/System/Current/z_current_low.g" ; set low z currents
M98 P"/macros/System/Current/xy_current_low.g" ; set low xy currents
; --- leveling bed ---
while true
; run leveling pass
; --- probe near lead screws -
M98 P"/sys/bed_probe_points.g" ; probe the bed
; check results - exit loop if results are good
if move.calibration.initial.deviation < 0.02
break
; check pass limit - abort if pass limit reached
if iterations = 5
M291 P"Bed Leveling Aborted" R"Pass Limit Reached"
abort "Bed Leveling Aborted - Pass Limit Reached"
; --- finish up ---
M98 P"/macros/System/Home/leave_klicky.g" ; put the klicky probe back in the dock
; --- set Z=0 datum which can be affected by leveling ---
M98 P"/macros/System/Home/move_over_microswitch.g" ; move above the Z endstop switch
G30 K1 Z-99999 ; home Z by probing the bed
G90 ; absolute positioning
G1 Z10 F1500 ; lower Z(bed) 10mm from Nozzle
M98 P"/macros/System/Speed/speed_printing.g" ; restore normal speed & accel
M98 P"/macros/System/Current/z_current_high.g" ; restore normal z currents
M98 P"/macros/System/Current/xy_current_high.g" ; restore normal xy currents
M291 R"Leveling bed" P"Done" T5 ; bed leveling done
bed_probe_points.g
; bed_probe_points.g
; called to define probing points when traming the bed
;
G1 X175 F6000 ; move to X center
G30 P0 X175 Y315 Z-99999 ; probe near center rear leadscrew
G30 P1 X325 Y25 Z-99999 ; probe near front right leadscrew
G30 P2 X25 Y25 Z-99999 S0 ; probe near front left leadscrew and calibrate all motors
get_klicky.g
; get_klicky.g
; Called before Z probing
; Used to pick up the klicky probe
;
G1 X36.0 Y338 F6000 ; move up in front of the klicky dock
G1 X36.0 Y358 F1500 ; pick up the klicky probe
G1 X36.0 Y338 F1500 ; move out of the dock with klicky attached
; leave_klicky.g
; leave_klicky.g
; Called after Z probing
; Used to put the klicky probe back in the dock
;
G1 X36.0 Y338 F6000 ; move up in front of the klicky dock
G1 X36.0 Y358 F1500 ; dock the klicky probe
G1 X76.0 Y358 F1500 ; move out of the dock without klicky attached
G1 X76.0 Y338 F6000 ; move towards the buildplate
The move_over_microswitch.g, current and speed macro's are quite self explanatory so i won't bother putting them in here.
And again, thanks again to everyone for the input and pointers with the troubleshooting ❤