How is feedrate calculated when multiple axes are involved?
Note: this question is around "how stuff works" in the software (or printer firmware).
I understand that if I send these commands:
G91 ; Relative positions
G1 F600 ; Set speed to 600mm/min or 10mm/sec
G1 X40
Then my print head will travel 40 mm on the X axis, and it will take 4 seconds (let's ignore acceleration, I'm sure it complicates things even more).
What if (for some bizarre reason) I want to travel 30mm on the Y axis during those 4 seconds? Do I need to calculate the total distance passed (50 mm) and up the speed? (In this case to 12.5mm/sec).
And if while doing that I want to extrude 2mm of filament, do I need to take into account the extruder distance and calculate a 3D distance? (the new distance is 50.0399 mm)
Thanks,
Barak
RE: How is feedrate calculated when multiple axes are involved?
[...] I understand that if I send these commands:
G91 ; Relative positions
G1 F600 ; Set speed to 600mm/min or 10mm/sec
G1 X40Then my print head will travel 40 mm on the X axis, and it will take 4 seconds (let's ignore acceleration, I'm sure it complicates things even more).
Specifically, it will move the X position 40mm from the current position (relative position). If using absolute positioning, it would move X to position 40.
What if (for some bizarre reason) I want to travel 30mm on the Y axis during those 4 seconds? Do I need to calculate the total distance passed (50 mm) and up the speed? (In this case to 12.5mm/sec).
You can specify X, Y, & Z distances independently. They will occur concurrently. As one axis move completes, the others continue.
And if while doing that I want to extrude 2mm of filament, do I need to take into account the extruder distance and calculate a 3D distance? (the new distance is 50.0399 mm)
Now you're into the tricky slicer stuff. The slicer would identify the appropriate amount of filament to extrude based on your other slicer settings. The E parameter specifies how much filament to extrude, but something has to determine how much. Other things like acceleration, jerk, coasting, retractions, etc. are usually all done by the slicer.
and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan
RE: How is feedrate calculated when multiple axes are involved?
Thanks for the information, but I'm not sure it makes sense.
If I want to be able to move diagonally, I need to move a different distance in X and Y over the same time. For this, I either need to specify speed (feedrate) per axis, or the feed rate needs to take into account all participating axes. E.g. if I want to move 40mm on the X axis and 30mm on the Y axis, and want this to take 10 seconds, what G-code command(s) should I send?
What I definitely not want is the same travel speed in both X and Y, as this means the head will travel at 45deg for the first part and then continue the last 10mm only on the X axis - I want a straight line.
Thanks.
RE: How is feedrate calculated when multiple axes are involved?
FTR, it seems that moving diagonally, I need to increase the speed to complete the move at the same time.
This is usually not needed, as you don't care how much time the move takes, just that the rate is consistent. For me, I wanted to have constant time (I hacked my 3D printer into some kind of motorized dolly), where this is important.