Different XY speed for probing moves
-
I have a DIY CoreXY printer with 3 independent Z-axes. My Z lead-screws are M10, and they move slower than XY axis. Thus, in my M558 command, I had to define a speed F500 so that the Z axis doesn't dive faster than the hardware can handle. But that also means that my XY moves are super slow. Is there a way to set different speeds for Z vs XY moves? Below is my bed.g file.
M561
G28 ; home all axis
G30 P0 X300 Y290 Z-9999
G30 P1 X76 Y162.5 Z-9999
G30 P2 X300 Y30 Z-9999 S3
G1 X0 Y0 Z10 F2400 ; Move extruder back to corner -
@nahsiro said in Different XY speed for probing moves:
M561
G28 ; home all axis
G30 P0 X300 Y290 Z-9999
G30 P1 X76 Y162.5 Z-9999
G30 P2 X300 Y30 Z-9999 S3
G1 X0 Y0 Z10 F2400 ; Move extruder back to cornerYou could add a G1 X... Y.... line between all the G30 lines
M561 G28 ; home all axis G1 X300 Y290 F15000 G30 P0 X300 Y290 Z-9999 G1 X76 Y162.5 F15000 G30 P1 X76 Y162.5 Z-9999 G1 X300 Y30 F15000 G30 P2 X300 Y30 Z-9999 S3 G1 X0 Y0 Z10 F2400 ; Move extruder back to corner
-
@o_lampe Thanks this solved it, I can't believe I did not think of that. My only question is, how to do something similar for mesh conpensation moves? I came across M558, but I have firmware 3 and I don't think I can use that.
-
@nahsiro
I only do mesh compensation and the moves between the probe points are much faster than the probing move. You can define both speeds separately in the M558 z-probe definition: F= probe speed; T= travel speed.
It also works in RRF3.x -
@o_lampe Thanks, I'll try that.
-
@o_lampe It's not working completely as intended. Sure I can set the speeds to be different but what's happening is that I'm able to get the fast XY "T4000 "moves and when the bed lift to the probe it uses the good feed speed F600. But then when the bed pulls away from the probe, it uses the XY speed again.
M558 P9 C"^zprobe.in" H6 R0.1 F600 T4000 A4 S0.02
-
@nahsiro said in Different XY speed for probing moves:
I have a DIY CoreXY printer with 3 independent Z-axes. My Z lead-screws are M10, and they move slower than XY axis. Thus, in my M558 command, I had to define a speed F500 so that the Z axis doesn't dive faster than the hardware can handle.
In your M203 command you should have specified the max feed rate for each axis.
So you should be able to specify the desired travel speed in M558 based on the XY axes settings.
The Z axis should not be able to exceed it's max feed rate even if requested.
-
@fcwilt I have that, but I think it's ignoring it. Here is my config.g
; Configuration file for Omnicore ; Communication and general M111 S0 ; Debug off M550 POmnicore ; Machine name and Netbios name (can be anything you like) ;M551 Pmyrap ; Machine password (used for FTP) ; Wifi Networking M552 S1 ; Enable WiFi M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet G21 ; Work in millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves ; Axis and motor configuration M669 K1 ; _RRF3_ change M667 to M669 ; set CoreXY mode M584 X0 Y1 Z2:5:6 E3:4 ; Map Z to drivers 2, 5, 6. Define unused drivers 3,4 as extruders M569 P0 S1 ; physical drive 0 goes forwards (X-motor) M569 P1 S1 ; physical drive 1 goes forwards (Y-motor) M569 P2 S1 ; physical drive 2 goes forwards (Right Z-motor) M569 P3 S1 ; physical drive 3 goes forwards (1st extruder) M569 P4 S1 ; physical drive 4 goes forwards (BLTouch) M569 P5 S1 ; physical drive 5 goes forwards (Front Z-motor) M569 P6 S1 ; physical drive 6 goes forwards (Left Z-motor) ;Leadscrew locations M671 X262:-85:262 Y390:180.5:-70 S25 ;Front left, Rear Left, Right S7.5 is the max correction - measure your own offsets, to the bolt for the yoke of each leadscrew ; Endstops M574 X1 S1 P"!xstop" ; configure active-high endstop for low end on X via pin xstop M574 Y1 S1 P"!ystop" ; configure active-high endstop for low end on Y via pin ystop M574 Z0 ; configure Z-probe as endstop M564 H0 ; Limit Axes M557 X80:300 Y30:295 P7:7 ; Define mesh probing grid M350 X16 Y16 Z16 E16 I1 ; set 16x microstepping for axes& extruder, with interpolation M906 X1000 Y1000 Z1000 E1000 I30 ; Set motor currents (mA) M201 X3000 Y3000 Z100 E1500 ; Accelerations (mm/s^2) M203 X24000 Y24000 Z700 E3600 ; Maximum speeds (mm/min) M566 X800 Y800 Z80 E800 ; Maximum jerk speeds mm/minute M92 X80.00 Y80.00 Z1600.00 E98.00 ; set steps per mm ; Axis Limits M208 X300 Y345 Z375 ; set axis maxima and high homing switch positions (adjust to suit your machine) M208 X0 Y0 Z-1.0 S1 ; set axis minima and low homing switch positions (adjust to make X=0 and Y=0 the edges of the bed) ; Thermistors M308 S0 P"bedtemp" Y"thermistor" A"bed_temp" T100000 B3950 R4700 H0 L0 ;_RRF3_ Bed thermistor, connected to bedtemp on Duet2 ;If you have a Slice Engineering thermistor, comment out the next line M308 S1 P"e0temp" Y"thermistor" A"Extruder_temp" T100000 B4725 R4700 C7.06e-8 H0 L0 ;_RRF3_ duet3 e3d ;Additional Temperatures/heater settings M308 S3 Y"mcu-temp" A"MCU" ; configure sensor 3 as thermistor on pin e1temp for left stepper M950 H0 C"bedheat" Q25000 T0 ;_RRF3_ define Bed heater is on bedheat M950 H1 C"e0heat" T1 ;_RRF3_ define Hotend heater is on e0heat M140 H0 ; Configure bed heater M143 H0 S120 M307 H0 R1.099 C332.207:332.207 D1.97 S0.50 V12.2 B0 ; Bed Heater M307 H1 R2.473 C159.682:159.682 D6.35 S1.00 V12.1 B0 ; Nozzle heater M570 H0 P5 S180 T10 ; detect bed heater fault after 180 seconds M570 H1 P5 S180 T15 ; detect end heater fault after 180 seconds M143 S285 ; Max hot end temperature ; Fans M950 F1 C"fan0" Q25000 ; create fan 1 on pin fan1 and set its frequency (Part Cooling) M106 P1 S0.5 H-1 T45 C"Part_Cooling_Fan" ; set fan 1 value. Thermostatic control is turned on ; Tool definitions M563 P0 S"E3Dv6" D0 H1 F1 ; Define tool 0 G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures ;BLTouch - comment out the following 3 lines if using a IR Probe M558 P9 C"^zprobe.in" H4 R1 F600 T2400 A4 S0.02 ; _RRF3_ BLTouch connected to Z probe IN pin M950 S3 C"duex.pwm1" ; _RRF3_ Define BLTouch Servo (S0) on duet pwm1 G31 X31.225 Y10.5 Z2.6 P25 ; Customize your offsets appropriately - do a paper test, and put the probed value in the Z value here T0 ; select first hot end M501 ; Read stored parameters
-
You mentioned that the F parameter in M558 did control the speed of the actual probing but when lifting the probe it appeared to be using a faster speed.
Is it faster than the max Z speed set in M203?
How is the faster speed causing problems?
Frederick
-
I have noticed this behaviour too. I think it uses the max z speed from the M203 when lifting the z axis after a probe. The dive speed correctly follows what is in M558. As long as your max z speed is set within the machine's limits you should be ok.
-
@tekkydave @Nahsiro what firmware version are you running?
Ian
-
@droftarts I'm on 3.3RC2
-
@droftarts I'm on 3.2.
@tekkydave @fcwilt You're right actually, turns out I was doing it wrong. 700 mm/min is too much for my Z axis using 600 mm/min is working fine. -
@nahsiro said in Different XY speed for probing moves:
@droftarts I'm on 3.2.
@tekkydave @fcwilt You're right actually, turns out I was doing it wrong. 700 mm/min is too much for my Z axis using 600 mm/min is working fine.Glad to hear you got it sorted.
I'm surprised that when homing the Z axis that the excessive speed wasn't apparent.
Frederick
-
@fcwilt when homing it uses the Fxxx value in the G1 command which is usually much lower than the max. I think there needs to be another speed parameter in M558 or G30 to cover the G30 lift speed. Or it should use the dive speed for the lift. Maybe this is a bug?
-
G30 dive speed is controlled by the M558 F parameter. The speed the probe then lifts in Z, and moves to the next probe point, is controlled by the M558 T parameter. If this is higher than the max Z speed set in config.g, then max Z speed is used. Make sure your Z is capable of actually running at the max Z speed you have set! So, not a bug.
If you want slower lift speeds, you could reduce max Z speed (and/or jerk and acceleration) before probing, and revert afterwards. If repeated probing shows the gap getting smaller, or is inconsistent, your Z axis is probably skipping steps, and you need to tune jerk, acceleration and max speed until it doesn’t.
Ian
-
@droftarts Surely the T parameter is for the X & Y axis speeds. Why would it be applied to the Z axis at all? It assumes the Z axis has the same speed capabilities as X & Y. Only the Z max speed is stopping it from moving too fast. If that is set correctly then all is good but it may not be for someone setting up RRF for the first time.
Whilst I agree this isn't a bug as it is probably designed to work that way I think its something that needs looking at.
I would rather see the lift speed being set by the F parameter (the first one if there are two as in the most recent releases). Either that or a new parameter for lift speed in M558. -
@tekkydave if the Z max speed isn't set up correctly, users will have other issue besides this one. I'm sure that your suggestion of using the F speed would annoy many users, because it would slow down probing.
-
@dc42 Fair point and I suppose it depends on the system. On my D-Bot I probe at 6mm/s (F param). It moves between probes at 150mm/s (T param). On each probe it only lifts 3mm. It tries to do it at 150mm/s which is way beyond the capabilities of the Z axis which has a max speed of 10mm/s set.
Therefore it probes at 6mm/s & lifts at 10mm/s. To a raw beginner it may not be obvious what is going on. In my case it would only have a minor impact on probing speed but if a system was lifting say, 20mm between probes then it would.
Maybe just a note in the M558 gcode documentation to clarify that it will attempt to move all 3 axes at the Tnnn speed to avoid any future confusion. -
@tekkydave I have added note to the description of the M558 T parameter.