Advice on implementing variable feedrate extrusion
-
Hi,
As part of my master's project, I'm using a Fanuc 6-axis robot to print parts. I'd like to control the print heads using a Duet 3 controller. So far heater & fan control from the robot via the serial port works fine, but I need to sync extrusion commands to the robot's motion. The robot can output an analog signal proportional to it's current speed, so I'd like to use that to modulate the extrusion speed. Our current proprietary printhead controller uses the same method and it works pretty well.
Unless I'm mistaken, the Duet doesn't have a way of doing that right now (unless meta commands can do this?), so I've been looking at modifying the firmware to do so. I took a quick look at the code and was thinking of defining a new gcode command similar to G1 and make it work with a modified version of DoStraightMove. I noticed M594 and M951 do something similar to modify the z height real-time and use the auxDDAring, so I thought I might take a look at that as well.
Do you have any advice on how to implement this? Am I on the right track or is there a much better (easier) way?
Thanks for your help.
-
-
@soccerpaul nonlinear extrusion does not work??
-
@pcr Unless there's something I haven't seen, I don't think so. Nonlinear extrusion allows you to compensate for back pressure in the nozzle but doesn't allow you to actively modify your extrusion speed to match an input. The 6 axis robot moves pretty differently to a printer, acceleration/jerk values vary based on the printed geometry and it typically slows down in curves more than a printer would. I couldn't predict any of that ahead of time. I've also tried sending short extrusion commands over serial at a reasonably high frequency with different feedrates to match the robot's speed but (as expected) it doesn't work particularly well.
-
@dc42 Do you have any recommendations for this? Ideally I'd like to implement this in a way that's coherent with the rest of the code and potentially useful for other applications.