Advice for art installation
-
I am planning a huge art installation using multiple steppers. It would be great to get some feedback if this sounds doable using Duet3d.
It basically can be described as three room sized XYZ robots. Each robot has a XY belt driven system mounted from the ceiling that transports a winch. Each winch can lower a steel rope. And on the end of that rope is a sculpture. The idea is that the sculptures perform a prerecorded dance in the space.
Since the setup can be described like an inverted cartesian 3d printer I am planning to use GCode to record the dance. I created an animation in a 3d program and exported that as a list of timed G1 movements. Testing it on my 3d printer worked great. The print head moves exactly as I planned it.
The next step is to do it in large scale. Duet3D seemed like the perfect platform that solves many problems for me. The Duet 3 MB6HC with several Duet 3 EB3HC will have enough flexibility and power to run the up to the 15 steppers that I have planned.Precision is not important. I am thinking in the scale of cm. The max speed should be about 1m/s. I assume that I need to disable Microstepping.
My plan is that the automation repeats every 30 minutes. To have a smooth movement in curves I am thinking about a resolution of 4 fps (4 GCodes/s). That means that it will be a huge GCode file with 7.200 G1 instructions surrounded by one while statement. If I really build the installation in full size, these G1 statements will have positions for XYZUVWABC axes and 6 extruders in every line.
What do you think about this? Does this sound insane or doable?
I am additionally thinking about making a part interactive using a Raspberry Pi. I am imagining that a program checks inputs, generates the next coordinates and sends G1 commands over the dcs socket. This has to happen multiple times per second.
with open("dcs.socket", "w") as f: while True: time = time.monotonic() input = getInput() pos = calculateNextPositions(input) federate = (pos – old_pos).length() / (time – old_time) * 60 f.write(f"G1 X{pos.X} Y{pos.Y} ... F{feedrate} \n") old_pos = pos old_time = time
Would this work?
-
Movement at 1 m/s may be difficult with steppers, especially if there's any load on the motors. I tried to use NEMA-23 steppers in my corexy sand table and found I couldn't get it to move reliably at 500 mm/sec. I switched to NEMA-17 iHSV servomotors and can now easily run it up to 2000 mm/sec. Unfortunately, the servomotors cost about $100 each from China. They are quiet when they run, even at 3k rpm. In my sand table, most of the noise comes from the belts on the drive pulleys and the ball grinding through the sand.
The motors have integrated drivers so you have to give them step/dir/enable signals from the controller- the Duet 2 expansion board provides that and no level shifting is required. Nominal current drain is 3.4A by they can draw up to 10A from a 24V supply if you try to use high acceleration/jerk and are trying to drive a big load. At low acceleration/jerk with light loads you don't need a big power supply.
https://www.youtube.com/watch?v=bWoeSe8pZL0
https://vimeo.com/424381250 -
@mrehorstdmd Wow! Your table with a speed of 2,000mm/s is insane!
I do not need that much acceleration. My acceleration will be more in the realm of 250mm/s^2. Top speed should be high, but it can take time go get there. Still your advise on the needed power of the steppers is valuable. Thanks.
Apart from that. Does the plan to coordinate 15 steppers using multiple extension boards sound doable?
Would feeding G1 commands live into the system via the socket on a Raspberry Pi work? -
@jan12345 said in Advice for art installation:
Apart from that. Does the plan to coordinate 15 steppers using multiple extension boards sound doable?
Are all 15 steppers for a single installation or for the 3 of them? IT may not be possible to control all 3 installations from a single board. That would be like controlling 3 cartesian printers from a single board.
What does your processed gcode look like? Have you generated something to control 15 motors?
@jan12345 said in Advice for art installation:
Would feeding G1 commands live into the system via the socket on a Raspberry Pi work?
It depends. You could run the Duet by itself, it has a network connection and interface. You upload a gcode file over the network to the internal SD card on the Duet and it executes from the SD card. Or you could run the Duet 3 tethered to a Raspberry pi. It functions much the same way. You have a network connection to the Pi, and a web interface. You upload your gcode file to the SD card in the Pi and it executes from there.
-
@phaedrux said in Advice for art installation:
Are all 15 steppers for a single installation or for the 3 of them? IT may not be possible to control all 3 installations from a single board. That would be like controlling 3 cartesian printers from a single board.
What does your processed gcode look like? Have you generated something to control 15 motors?
Exactly this is my plan. 3 cartesian printers with 2 extruders each controlled by one MB6HC and three EB6HC. All connected through CAN-FD.
So the GCode would contain many lines similar to this:G1 F159 X3 Y3 Z4 U3 V3 W4 A3 B3 C4 E3:4:5:6:7:8
-
@jan12345 you should check out how Torbjørn is controlling the hangprinter. He is using Duet for the motion control, in turn controlling Odrives with BLDC motors. Although you have a different kinematics there are similar challenges with long cables. And the hangprinter works really well so it's a proven way of doing this.