CoreXY diagonal moves slower than M203 limit
-
Sorry in case there is already a thread like this, but I do not know what exactly I should search for.
In my config.g I have set M203 X30000 Y30000.
In case I am at X0 Y0 and type “G1 X266 F30000” DWC will show 500mm/s for the move. Same if I type “G1 Y266 F30000”.
However if I type “G1 X266 Y266 F30000” DWC does only show about 353 mm/s as requested and top movement speed.
M201 is set to both 5000, so the speed should be reachable.
In case I Set M203 to 180000, then F30000 does result in 500 mm/s for diagonal moves too.Is this the expected behaviour? Does M203 limit the engine RPM instead of the tool head moving speed?
-
@lala Yes it is expected behaviour. When you ask for a G1 XY move, the actual length of that move is greater than each individual component. Think right angled triangle where the hypotenuse is greater than each side. In fact we can do that calculation. So if X and Y are 266 then the move length is sqrt(x^2 +y^2) which is sqrt (266^2 +266^2) =376.2 mm. So to move that diagonal length at 500mm/sec means that each X and Y component must run slower (because they are shorter but have to start and end together). We can check that. If we divide 500mm/sec by the move distance of 376.2mm and multiply it by 266mm which is the X component, we get 353.5mm/sec which, funnily enough, is exactly the speed you are seeing per axis.
In summary, the print head is moving at the requested speed but because a diagonal move length is greater than each individual axis travel, then the reported speed for each axis will be correspondingly lower.
-
@deckingman
Ok, thanks for the detailed explanation. That makes sense. So it means that the DWC does not show the tool head speed, but instead shows the speed of the fastest moving axis (If I move at a different angle than 45 degrees, the displayed speed is higher). So from functional point everything should be fine, only the display is not as expected (by me).Is it possible to adapt/configure the DWC so that it shows the tool head speed? Finally that is the more interesting part during a print.
-
@lala TBH, I've never really noticed nor thought about it. Most of the things I print are either circular or rectangular. Which means that the print head is either doing straight lines in X or Y, or circular moves which are very short segmented straight lines. So most of the time, the speed displayed by DWC is the actual print head speed. I've never taken much notice of the diagonal infill speed which is set lower in any case.
As I think about, I'm a bit surprised that DWC is not showing the actual print head speed. What version are you using?
-
@lala said in CoreXY diagonal moves slower than M203 limit:
@deckingman
Ok, thanks for the detailed explanation. That makes sense. So it means that the DWC does not show the tool head speed, but instead shows the speed of the fastest moving axis (If I move at a different angle than 45 degrees, the displayed speed is higher).No, DWC shows the combined speed of the linear axis components of the move if at least one linear axis is moving.
The M203 limits are the limits for single-axis moves. On a Cartesian printer, the maximum diagonal speed will be higher. On a CoreXY machine the diagonal speed will be lower, because only one motor is powering both axes. We implemented this several versions ago because one of our OEMs complained that we had got it wrong. However, I think there is a case for being able to specify a single maximum speed for any move in the XY plane; so we may revisit this.
A consequence of this is that on a CoreXY machine, the RRF M203 limits should be set higher than the corresponding limits for a machine running Klipper, by a factor of sqrt(2).
-
@lala, So I was only partly right. Taking DC's comments into account, you had set the maximum speeds for X and Y to 30000 (mm/minute) which is 500 mm/sec. So DWC is indeed reporting the head speed but that speed had to be reduced to keep each individual axis within it's 500mm/sec limit. To be able to achieve the desired head speed (and if your machine is capable of it), as DC pointed out you need to increase the limits by sqrt(2) or about 1.4 to say 42,300 or thereabouts for X and Y.
As a side note, by most people's standards, I use a fast travel speed of 300 mm/sec (18,000 mm/minute) with 1.8 Amp motor current - any higher than 350 and I start getting skipped steps. Are you sure your motors are capable of 500mm/sec?
-
Another thing you may encounter is that when the move starts, the print head needs to get up to speed. The time it takes to get to speed is determined by the max acceleration (M201) and also max instantaneous speed change (M566). Halfway through the move distance, the process reverses and the M201 settings are used to slow the print head down. It's possible you are not moving far enough to get up to speed before it starts slowing.
-
@deckingman
I am using LDO-42STH48-2504AC which can be run with 2.5 A. However I run them with 0.9 A (because they are quieter), 24 V and a 20 teeth pulley.
These are able to accelerate my 1.5 kg gantry to 600 mm/s with an acceleration of 8000 mm/s2 (Y direction). At 10000 mm/s2 I am loosing steps.
Diagonal I only tried 600 mm/s with 5000 mm/s2 (which worked, by setting the speed limit high enough).Most other steppers are not able to reach this speed due to higher inductance and resistance. Meanwhile LDO brought the 2804 which are capable of even more acceleration and speed.
https://youtu.be/szJ_krWbRaQ@mikeabuilder
My move is long enough according to the prusa/reprap calculator. With 8000 mm/s2 the 600 mm/s are reached after about 15 mm and I am moving 266 mm.