Controlling 300 stepper motors

Hello, we are doing a project similar to Kinetic Sculpture in the BMW museum.We have to make a simulation of a DNA chain using 300 balls that are controlled by the 300 stepper motors. Does anyone know how to make these 300 motors work using Arduino?

Kinetic sculpture at the BMW Museum (audio swap) - YouTube -- "Kinetic sculpture at the BMW Museum"

You can use a number of small Arduinos, to control a few motors each. That's the easy part of you project, I think. Next come the strings and the power supplies for that many motors. Finally you need a master controller and a clever distribution of the move commands, for synchronized moves of all motors.

The master controller may be a PC or equivalent, with sufficient bulk memory and processing power for the computation of the moves, and a couple of communication channels for parallel transmission of the move commands to the slaves. I'd start at this end, find a suitable software for the computation of the moves, then determine the capacity of the communication channels for distributing the commands.

another thought would be to have distributed groups, could be linear or cubes.
have say, 10 (250?) set patterns.
then your master just sends 'pattern 7' and each group moves at the correct speeds to the correct locations.

think of a drill team, the master at arms calls the pattern, the individuals go to their designated spots.

I believe that this would be easier for the general operation, however, adding another pattern could be tedious if you have to program each group one at a time, and have say, 8 motors per Arduino.... roughly 40 Arduinos ?

I would start that route to get a 1x8 matrix, then just make 40 more copies. each with it's own power supply.

now if you want to take this to the next level.... steppers make noise, frequency based on speed of steps. you could play a tune by having them move at speeds in unison.

I would love to work on a project like this, but my first concerns would be managing the 'other' end of the suspension lines to endure fluid acceleration and movement, the movement of the balls in a draft, and not using stepper motors.

My second concern would be communications and power, followed by choreography.
Finally building a rig (probably mechanically offset) that is strong enough to support all those drive assemblies without any vibration being visible in the motion.

I see that UNI-STRUT would be the perfect frame. easy to assemble and very secure.
the weight of the frame would atenuate a lot of the vibration. mounting each motor with some form of isolation would not be hard to do either.

From the youtube video's I have seen, the weights are lifted up and down, so there is no mechanical aspect that would cause them to move. as for drafts, that would be a simple matter of air distribution. grills can be changed very easily to accommodate.

lastchancename:
I would love to work on a project like this, but my first concerns
.......and not using stepper motors.

my thoughts would be to make a row of 8, or two that would be 16x1.
you could make waves, angles, etc. test it and watch it without too much effort.

in my mind a stepper with program would know where it is all the time and easily be able to go to a point.
getting there gracefully, artistically, that is in the hands of the software artist.

steppers are simple outputs to a driver.

the other option, DC motors, would require that each has an encoder, so that means feedback and control.
your H-bridge would need two pins, speed and direction. plus your encoder inputs. that would reduce the number of motors per micro and might add the complexity of interrupts for the encoder. ?

ultimately, there are benefits to each way. 300 steppers WILL make noise. no doubt about that. sound proofing or using sound as part of the art is up to the artist.

I can clearly see a simple rail of 8 steppers with reels, 8 stepper drivers, a power supply and a micro on one rail.
a modular approach, one that would be easy to make and easy to duplicate to scale up.

changing motors to a different type would not alter the project in any significant way, it may require going to a larger board (MEGA? TEENSY ? even the ESP8266 ? ) for the speed of both inputs and outputs.

Mechanically, I could see one larger motor, a long shaft, 8 (16?) drums, each with a rotating clutch and just engaging each drum as needed. in unison, individually, etc. the drawback is that all drums on that run would need to move the same direction. that would limit the look of the movement of the art.

OK, fishing reels, cheap ones. easy to drive. check.
alternatively. a row of drums, solenoids to engage, either forward or reverse. possible high and low speed.......

Our plan was this:

To use 22xArduino Mega 2560, and they would communicate in-between with Arduino Xbee shields(Bluetooth). Maybe use 300x stepper drivers for 300 stepper motors. We would use 300x optocouplers to recieve feedback when are the balls at their max down point in case of loss of energy. Can this work?

We need to achieve an effect like this: After Effects DNA Chain v2 - YouTube

amir007:
Our plan was this:

To use 22xArduino Mega 2560, and they would communicate in-between with Arduino Xbee shields(Bluetooth). Maybe use 300x stepper drivers for 300 stepper motors. We would use 300x optocouplers to recieve feedback when are the balls at their max down point in case of loss of energy. Can this work?

We need to achieve an effect like this: https://www.youtube.com/watch?v=wBKr4xFBUeI

I do not see how you can use balls on strings to represent a rotating movement like that if their movement is all up and down.

however, if you want to rotate in a manner like that, you could use one ball, one motor and move the ball up and down and also back and forth. it would mean that the balls could not be on the exact same plain, but have to allow for the strings to pass.

as for end of travel, I would suspect that up would be easier to use as the home point.

We will be using up and down movement of the balls to create an illusion of a dna chain rotating. Only thing that we can't decide on is the components that we will use...

amir007:
We need to achieve an effect like this: https://www.youtube.com/watch?v=wBKr4xFBUeI

Maybe... If you have the balls close together, all in one plane, and they have lights with adjustable brightness so you can use brightness cues for 'depth' you MIGHT be able to get something close to that image for a limited range of viewing angles. That video was generated in a CGI program and can't be duplicated with a grid of balls that go up and down.

I'm not so sure steppers could get the required speed in this application, and would need recalibration in each home cycle to remain close to synchronised. Servos with encoders appeals a lot more to me, but that's just my thought.

I also wouldn't spool the lines onto a drum, but would use a capstan style drive, with the tails hanging over/down the adjacent wall - with tiny counterweights to balance the push & pull movements of the ball objects.

Budget will not be trivial

The video shows a real installation, at the BMW Museum in Munich. One of its biggest miracles to me is, how they prevent the balls from swinging, and the cords from twisting. The balls look like Christmas tree balls, which are very light and thus susceptible to any air flow, and perhaps to discrete steps of a stepper motor.

Here I'd go with a grid of e.g. 9 balls, which can be controlled by an Arduino Pro Mini or Micro, when the analog pins are used for digital outputs as well. But when sensors for the home position of each ball are added, port extenders may be needed as well, or the grid size has to be shrunk to 2x2 balls. One such grid is sufficient to find out how to make everything work, before mass production of the grids can start.

No, wrong video. The second one posted definitely says that it was made in After Effects.

Here's a question: when the power is turned off at night, do all the balls fall? If they're direct-drive steppers then yes. If they are DC motors with gears, then probably no. If there's a hidden counterweight, then no.

I suspect that the balls are quite heavy. They could be solid steel, or about 1kg each. That means a lot of power will be used to accelerate them. Multiply by 300 and you've got a lot of kilowatts heating up your crawlspace. They need to be significantly heavier than the cable, otherwise they won't keep the cable taught when accelerating downwards. Max acceleration down might be 0.5g, even with heavy balls, since you need to keep a small minimum tension on the line. That will restrict the patterns that can be made.

Position sensing (for zeroing steppers) might be nice but if there's a good up-stop then it's not required. When power comes on, drive all motors up for a distance just greater than the length of the cable. As each ball hits its stop, that motor will stall and now we know exactly where it is.

Another argument for servo capstans vs bobbin drive...

The bobbin+line diameter will change over the extended line length, making extra calculation for speed etc necessary... capstan with (say 2 turns) can be smallest viable diameter that matches the motor speed to deliver max ball speed == less torque & power.

Both systems need an easy recalibration strategy if a motor, line or ball is replaced or the line stretches iver time.

An encoder on the capstan shaft for run-time positioning would be fine, but a simple interrupter and flag on the counterweight side would offer an easy means to recalibrate the encoder.

My guess is a single Arduino or similar would handle 8 balls, encoders and opto comfortably, with a serial command protocol to set up the next 'frame', and a synchronous 'single wire' 'event start' pulse across all the controllers to eliminate any Comms latency when initiating the move to a new key frame.

dave-in-ni said...

I do not see how you can use balls on strings to represent a rotating movement like that if their movement is all up and down.

That's been bothering me too, but I think it may be feasible with the right effects design.

lastchancename:
My guess is a single Arduino or similar would handle 8 balls, encoders and opto comfortably, with a serial command protocol to set up the next 'frame', and a synchronous 'single wire' 'event start' pulse across all the controllers to eliminate any Comms latency when initiating the move to a new key frame.

dave-in-ni said...That's been bothering me too, but I think it may be feasible with the right effects design.

I am not getting how you can do 8 channels. you have 2 outputs for the motor, speed and direction.
you have 2 channels on an encoder, more if it is a grey scale.

that starts one off at 4 lines per motor before any comm values for what to. the master signal can be slow, dead slow, because you are not going to change from a relief of a starfish to a shamrock in seconds.

MorganS:
I suspect that the balls are quite heavy. They could be solid steel, or about 1kg each. That means a lot of power will be used to accelerate them. Multiply by 300 and you've got a lot of kilowatts heating up your crawlspace.

I am thinking hollow glass globe like christmas tree ornimante
sliver or gold color inside and all is good.

So amir007,

Several people have discussed and proposed a variety of strategies, but you're not responding...

Which direction are you leaning, what sort of budget are you aiming for? (in USD)

dave-in-nj:
I am not getting how you can do 8 channels. you have 2 outputs for the motor, speed and direction.
you have 2 channels on an encoder, more if it is a grey scale.

that starts one off at 4 lines per motor before any comm values for what to. the master signal can be slow, dead slow, because you are not going to change from a relief of a starfish to a shamrock in seconds.

dave-in-nj,

OP mentioned using MEGA boards.

I only chose 8 per cell controller at this early stage due to the convenience of byte-aligned logic. That could most likely be 8-in-a-row, or maybe 4x2
A multiple greater than 8 may impose limits on speed / Comms etc, but certainly could stretch out further after performance testing.

Well I'm thinking about using around 18 MEGAS, connecting driver and an encoder for every motor, we will make an costum platform made from aluminium designed in autocad, another thing is that we will be using bobbins to coil the wires, that small difference in speeds are not important.

dave-in-nj:
I do not see how you can use balls on strings to represent a rotating movement like that if their movement is all up and down.

about this, if you look in the video i gave you, there is a nice representation of rotation movement we are after:

there is a nice flow to it, and we are thinking about something like that, but maybe slower, also we are thinking about bringing up the number of balls/motors to have more capability to show things

Anyone here knows if Xbee is good idea to use for communication between master and all slave arduino's, and if it is affordable (if anyone know the price for one of these, and if you can please provide me with the link on ebay)