Hi everyone,
I am an architecture student in Master's and my current project is about creating kinetic textile spaces that are informed by the people within it. The project analyzes spatial and social relationships between architecture and its inhabitants by forming different functional and aesthetic qualities under a continuous piece of stretchy fabric.
I won't go into too much detail as I feel this might be irrelevant for some but the idea is to have a kinetic textile model that would move the textile up and down using micro servos (currently looking into Tower Pro MG90D) which would be controlled by the arduino (I'm attaching a simple diagram below to explain the movement). The problem is that I'm planning on having around 50 servos, half of them responsible for moving the textile down and the other for moving it up (using pulleys attached to the gears and weights to force the textile down where needed). I don't know if that's the right solution to such problem and if having so many individual servos will be any consistent but maybe somebody has worked with a grid/network of servos working in a system and has a general advice before I dive into this.
Thanks!
I am an architecture student
Yes forgive me but phrases like:-
The project analyzes spatial and social relationships between architecture and its inhabitants by forming different functional and aesthetic qualities under a continuous piece of stretchy fabric.
Could only have been written by an architect, it surpasses "arts bollocks speak" by a long way.
Form the scale of the sketch it looks like it is a big project. Servos will do small angular movement, typically 120 degrees. I would have thought that you needed something much bigger and capable of moving over many full rotations. I would suggest you look at stepping motors to do this as they have way more torque.
planning on having around 50 servos
That is a lot of motors requiring a lot of current. As you try and scale up anything things become more complex and require more than just making things bigger, as I am sure you will know from your training. Electronics is exactly the same you soon get to a stage where the interference generated by motors gets into the electronics and stops them working. Chasing this down is difficult and there is not always an easy solution.
That's a lot of servos, meaning you need a lot of power. Each of those servos needs about 2A of current (not using it all the time, it just needs to be available), so you're going to need about 100A worth of power supplies. 5V ones are easiest to find, 6V makes them turn faster and increases torque.
Wiring design is going to be important. Very important will be to connect the Arduino point at just one point, right at one of the power supplies. Then also only the control wire from Arduino to the respective servos, not also a ground wire. That's going to be a separate path.
At these currents you need appropriate wire thickness. Maybe 5x20A power supplies, with 2.5mm2 power wires, each to a group of 10 servos, wired in parallel. The grounds of the power supplies connected, the 5V not.
To control the servos themselves, you're going to need servo breakout boards, such as this 16-channel one.
After that, there's the programming. That's going to add a whole new dimension to this project, choreographing 50 servos to work together is not going to be an easy job. You're really going to have to think really hard on how to pull that off.
Grumpy_Mike:
Could only have been written by an architect, it surpasses "arts bollocks speak" by a long way.
Well, that's a very arrogant opinion on a project that you only know 2 sentences about. I will gladly explain the rest to you over private chat and let's try to keep this thread on-topic.
The model itself would obviously be scaled and rough dimensions of it would be around 30x60cm (the actuated piece would be even smaller). In my opinion, that is fully feasible although certain challenges will be of a problem. I understand the need for external power supply which I don't see as a difficulty. The torque needed to lift textile is minimal, thus I don't see why would I need a stepping-motor. The better question might be reliability of mentioned MG90 servos and whether I should go for something like MG996's as they look more stable and could withstand the model being in use, let's say, a week while it's on exhibition.
Also, I know that smaller servos lose their precision over time which might break the whole model as everything would kind of relate on each other.
wvmarle:
That's a lot of servos, meaning you need a lot of power. Each of those servos needs about 2A of current (not using it all the time, it just needs to be available), so you're going to need about 100A worth of power supplies. 5V ones are easiest to find, 6V makes them turn faster and increases torque.
Wiring design is going to be important. Very important will be to connect the Arduino point at just one point, right at one of the power supplies. Then also only the control wire from Arduino to the respective servos, not also a ground wire. That's going to be a separate path.
At these currents you need appropriate wire thickness. Maybe 5x20A power supplies, with 2.5mm2 power wires, each to a group of 10 servos, wired in parallel. The grounds of the power supplies connected, the 5V not.
To control the servos themselves, you're going to need servo breakout boards, such as this 16-channel one.
After that, there's the programming. That's going to add a whole new dimension to this project, choreographing 50 servos to work together is not going to be an easy job. You're really going to have to think really hard on how to pull that off.
Thank you for an extensive reply.
Electronics part is definitely my weak spot as I have least experience in here so having you mentioning all these tips is really helpful.
On the other hand, programming shouldn't be too difficult because I have already experimented with controlling 4 servos at once from Grasshopper definition. The script runs on several plugins that simulate the textile being pulled up and down and then I just extract top and bottom vertices and calculate distances to servos to get the amount of pull/push they need to perform.
Thank you again for sharing these tips!
I just skipped that first sentence as such gobbledygook is indeed worse than what comes from most artists, where I usually at least get the feeling I understand what they're saying, and it doesn't seem all too important to me anyway.
Anyway, back to your servos. The MG996 at least has a datasheet of sorts. Stall current 2.5A, running current 0.5-0.9A. That 20A for 10 servos starts to look rather minimal. Note that servos will draw up to stall current when they have to work hard to stay in position! And that's not a good idea.
That servo is 54x20 mm. Your display 300x600. That's pretty packed; 50 servos would require a bare minimum of 270x200mm of space if placed vertical, but you want to push things up so you have to place them horizontal. Then you need 50x55mm per servo - that only just fits in a single layer on your display. Very little space to manoeuvre them around. Very little wiggle room to get them at the correct location to push whatever you want to push, unless they have to be in a regular grid. You're going to have a hard time making that even smaller.
Then there's heat. Those servos use 2-4W of power when moving freely and very little when idle; in your case it can easily go to 8-10W when moving and 2-3W when idle. Times 50 that's 100-200W of heat you have to get rid of, heat that's produced in a very cramped space. The cloth above it stops natural convection, you're going to need fans to help you out.
martynasse:
On the other hand, programming shouldn't be too difficult because I have already experimented with controlling 4 servos at once from Grasshopper definition. The script runs on several plugins that simulate the textile being pulled up and down and then I just extract top and bottom vertices and calculate distances to servos to get the amount of pull/push they need to perform.
I don't think that math scales well. Going to be complex, fast, if you do it that way. Arduinos are microcontrollers, not microprocessors.
More sensible: have a precalculated timed script, place that on an SD card, and have the Arduino just play the script.
wvmarle:
That servo is 54x20 mm. Your display 300x600. That's pretty packed.
The focus point of model is underneath the actuated textile, therefore everything that's above can be solved by having multiple floors for servos or simply increasing the scale of the model (it is not definite yet). Having said that, MG90 servos are more preferable simply because I don't think I will need the torque of MG996R (I'll try to run through numbers to check this).
wvmarle:
Then there's heat. Those servos use 2-4W of power when moving freely and very little when idle; in your case it can easily go to 8-10W when moving and 2-3W when idle. Times 50 that's 100-200W of heat you have to get rid of, heat that's produced in a very cramped space. The cloth above it stops natural convection, you're going to need fans to help you out.
Valid point, something that I haven't considered yet. Do you think having an open top would be enough for the heat to dissipate? Otherwise, I will have to look into cooling options
wvmarle:
I don't think that math scales well. Going to be complex, fast, if you do it that way. Arduinos are microcontrollers, not microprocessors.
More sensible: have a precalculated timed script, place that on an SD card, and have the Arduino just play the script.
I see your point. I guess this might introduce lag which might lead to other issues. A timed script sounds like a good idea.
martynasse:
Valid point, something that I haven't considered yet. Do you think having an open top would be enough for the heat to dissipate? Otherwise, I will have to look into cooling options
This very much depends on the overall design of your system: if you get sufficient air flow, you're good. It's a lot of heat to deal with, that's for sure.
Maybe design hoping natural ventilatino is enough while keeping the option of adding a fan open.
wvmarle:
This very much depends on the overall design of your system: if you get sufficient air flow, you're good. It's a lot of heat to deal with, that's for sure.
Maybe design hoping natural ventilatino is enough while keeping the option of adding a fan open.
This is exactly the reason why I am discussing this before initial design stages. Thank you for your input and useful tips.
Coming back to servo breakout boards, what else is relevant when choosing between different ones, besides the number of channels? Never used these but I see they're not that complicated.