Bed levelling with 3x independent Z motors issues
-
@exerqtor you are running true bed levelling in a loop. Before you do that, you need to establish that true bed levelling is working; so that if you run is several times, the corrections it makes reduce with successive runs, or at least don't increase.
If you find that the corrections increase with subsequent runs, the usual reason is that the order in which you listed the Z motor drivers in your M584 command does not match the order in which you list the coordinates in the M671 command.
The order in which you probe the points using G30 does not matter.
-
Forgot to mention it, updated first post now. But yeah I've read everything i can find about the subject in the dozuki and as far as i can see i everything should be up to snuff =/
Yeah i know, i ran the same printer with 2x independent Z motors and that same loop without an issue. So i just adjusted the config.g, bed_probe_points.g to reflect the new setup thinking it wouldn't generate any new problems.
I'll slap together a new routine for testing purposes without the loop after work and see what that yelds.
-
-
Same issue with this bed.g, it picks up the klicky. And then when it comes to the G30 the Z steppers (and XY) starts to do a faint humming and stuff goes slowly everywhere and i have to cut the power.
; 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 G30 P0 X175 Y325 Z-99999 ; probe near center rear leadscrew G30 P1 X325 Y5 Z-99999 ; probe near front right leadscrew G30 P2 X25 Y5 Z-99999 S0 ; probe near front left leadscrew and calibrate 3 motors 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 M98 P"/macros/System/Home/leave_klicky.g" ; put the klicky probe back in the dock M291 R"Leveling bed" P"Done" T5 ; done
-
I am very interested in this post, since my future printer will also have 3 Z motors, and I guess you can also configure the bed leveling with 3 Z motors.
I have been looking at the 3 files a bit, and the truth is that there are things in the bed.g that I do not understand.
Since I am VERY "green", before asking nonsensical questions.
Where can I find information on how to configure a CoreXy printer to stop leveling the bed with 3 independent Z motors?
Thanks
-
-
@exerqtor thx
-
@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
-
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 ... "
-
@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:
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
-
-
This post is deleted!