Cartesian robot
-
I am thinking of building cartesian robot arm to load and unload build plates. As i am noob in these things, would like to ask if following would be possible.
My printers running marlin. I have a end gcode for specific machine to move robot and do the task. Would it be possible for marlin printer to send endcode or via ocroprint to duet and duet to execute it? This has to be multiple feeds from many printers. Or perhaps i am thinking in the wrong direction and there is better way?
Say there are 9 printers, printer 2 sends a command(haven't figured this part yet how) duet receives that command and executes printer 2.gcode. Queing is not a problem i think.
Would duet drive nema 23 motors on larger robot? I am designing one that is 3m long 2m heigh with a reach of 1 meter.
I intend to use extruder output for the claw.
Its mostly mechanical i want so there will be conveyor belt or plate feed. Most will be gravity, springs and mechanics. -
@agniusm What first comes to my mind is using endstop-triggers to activate certain commands. Each endstop can be configured to run a custom trigger via M581 but this would limit you to (currently) a maximum of 8 different macros due to the range for paramter
T
of this command is0..9
with 0 and 1 being reserved and only2..9
are available to be customized.EDIT: Regarding you Nema 23 question: it depends on their current requirement. If you can drive them with a maximum of 2.4A Duet will be able to directly control them. Otherwise an external driver would be necessary with Step/Dir interface which would then be controlled by the Duet.
-
@agniusm If you are using octoprint to send a gcode command to the Duet (over network for example) then you can have as many macros as you like and call them via M98.
-
@t3p3tony That's a lot more flexible than my idea, indeed.
-
Thanks guys. Can i invoke a execution of a gcode file on duet?
Say printer 1 completes the task, it or octoprint sends Gcode command to duet, say Mxxx printer1.gcode and duet goes and executes that printer1.gcode file?
Also would that work through a network or doet it has to be usb? I will be getting duet ethernet for this for reliability of the network.
Anyone knows if octoprint has such plugins?What would be that command on duet? I have duet wifi on my cartesian printer but have not researched that yet.
-
@agniusm There are multiple ways to do that. Start with what command to use, I would suggest you use
M98 P/location/of/macro/to/execute
This command can run any file on the SD card. See M98 for more details.
And it does not have to be via USB. You could also use the HTTP interface that DWC (Duet Web Control) is also using to issue any command to RRF.
http://duet-address:duet-port/rr_gcode?gcode=<URL-encoded Gcode command>
The latter expects either to have not set a password for the web interface or to provide the required authentication data (as I do not use a password, I do not know right now how to do this but it should not be too hard).
Not sure on the Octoprint plugin but I doubt that something like this exists.
EDIT: You could also use telnet to issue the command.
-
OK, so the duet side is more than doable.
I wander if octoprint push notifications would work for this?
I will also need duet to send the command after unload and load of build plate was complete to start another print.Just thinking out loud and it might be stupid question. Would usb hub work for this? multiple printers plugged in to usb hub and output connected to duet ethernet? That will save me money on raspberries and printer end script could be used. That would be great
-
@agniusm said in Cartesian robot:
I wander if octoprint push notifications would work for this?
I think you would need an intermediate layer except if Octoprint push notifications can do an arbitrary HTTP call (in that case the HTTP interface would be working). No clue if that can be configured, though.
I will also need duet to send the command after unload and load of build plate was complete to start another print.
This one might a little bit harder but still doable. Here is how I would do it (but there might be other ways, too):
Use telnet as communication protocol. Some small program e.g. in python or something similar running an the RPi where Octoprint also runs would probably required. This (let's assume from now on that it is a) python script would receive (somehow) the Octoprint command that a build plate needs to be changed and issues the appropriate command to the Duet. At the end of the macro running on the Duet there would be aM118 P4 S"Build plate X changed"
that needs to be read by the python script that then would notify Octoprint to start the next print on the printer that has its build plate exchanged now.
Just thinking out loud and it might be stupid question. Would usb hub work for this? multiple printers plugged in to usb hub and output connected to duet ethernet? That will save me money on raspberries and printer end script could be used. That would be great
I don't think that this would work as either your Marlin printers or the Duet in that case would need to take the role of a USB client and AFAIK they only support being USB host. Please, somebody correct me, if I am wrong here.
-
There is oxtoprint voxel8 automation script uses python:
https://github.com/Voxel8/OctoPrint-Automation-Scripts -
@wilriker said in Cartesian robot:
@agniusm said in Cartesian robot:
I wander if octoprint push notifications would work for this?
I think you would need an intermediate layer except if Octoprint push notifications can do an arbitrary HTTP call (in that case the HTTP interface would be working). No clue if that can be configured, though.
I will also need duet to send the command after unload and load of build plate was complete to start another print.
This one might a little bit harder but still doable. Here is how I would do it (but there might be other ways, too):
Use telnet as communication protocol. Some small program e.g. in python or something similar running an the RPi where Octoprint also runs would probably required. This (let's assume from now on that it is a) python script would receive (somehow) the Octoprint command that a build plate needs to be changed and issues the appropriate command to the Duet. At the end of the macro running on the Duet there would be aM118 P4 S"Build plate X changed"
that needs to be read by the python script that then would notify Octoprint to start the next print on the printer that has its build plate exchanged now.
Just thinking out loud and it might be stupid question. Would usb hub work for this? multiple printers plugged in to usb hub and output connected to duet ethernet? That will save me money on raspberries and printer end script could be used. That would be great
I don't think that this would work as either your Marlin printers or the Duet in that case would need to take the role of a USB client and AFAIK they only support being USB host. Please, somebody correct me, if I am wrong here.
You are right, the Duet is a USB client not a host.
-
@t3p3tony said in Cartesian robot:
@wilriker said in Cartesian robot:
I don't think that this would work as either your Marlin printers or the Duet in that case would need to take the role of a USB client and AFAIK they only support being USB host. Please, somebody correct me, if I am wrong here.
You are right, the Duet is a USB client not a host.
Is that a typo? First you say I am right and then state the opposite of what I said.