How to make linear actuator matrix display?


I would like to make a linear actuator matrix to make an animated pinhead 3D display. For this I would need tons of small PWM controlled linear actuators to specify the exact location of each pin. I was thinking of building many small coils using gauge 30 magnet wire and control the pins inside with PWM signals but I have some concerns about the precision, power consumption and heating of this approach and if coils next to each other would influence each others. Originally I thought of using servos but that would be very expensive, noisy and take lots of space. Any ideas what might be a good way to implement linear actuator matrix for such a project?

Thanks, Jarkko

JarkkoL: Any ideas what might be a good way to implement linear actuator matrix for such a project?

Here's how I would implement it - it's going to be expensive, no matter how you look at it (even your idea would be expensive in terms of overall time, if not money).

  • For every pin, use a micro-servo that can rotate at least (or close to) 180 degrees.
  • Attach to the output shaft of the micro-servo a grooved wheel or pulley with a circumference equal to 2x the distance you want the pins to be able to move.
  • On each pulley, attach a length of large-gauge fishing line (or small steel cable, or some other stiff-but-thin line) to the outer edge of the pulley at one point, such that when the pulley moves, it can pull in or push out the line.
  • Route the line using stiff but thin-walled plastic tubing (made of nylon or similar material - even lubricated thin-wall steel tubing could work) to each pin.

The servos will need to be mounted on a board away from the pin-sculpture, all bends in the tubing need to be fairly gradual (not sharp) to allow smooth movement and prevent binding.

To gain a better understanding of how this would look and work, check out how the cables that connect bicycle hand-brakes are worked and routed, as well as how the cables from an automobile's accelerator pedal are routed and control the air-flow mechanisms in a carburetor or intake of the engine.

I'm not sure I can describe this better than I have; it should suffice to say that you're going to have an extreme mess on your hands, no matter how you decide to implement it, simply because of the sheer number of components involved. The only way around the mess (well, lessening to an extend) would be to scale the size of the "pin board" to something much larger, so that you could mount the servos (or other mechanisms) behind the board and still have enough room to work. Your only other option would be to purchase or manufacture custom linear-motion mechanisms (with position feedback) in the quantity needed for the resolution of the display. Either option will either cost a ton of money (have you priced miniature linear actuators with position feedback lately?), or a ton of money and a ton of time and engineering expertise.

I guess ultimately, it will all depend on your budget, experience, space for the installation, and patience... $7.99 Maybe arrange them in layers, so for example 3x3x3 to control 27 pins, to keep overall dimension down. Many others available there too.

Some small even less expensive servos at also For $5, I don't think I'd mess with trying to wind my own actuators and developing control circuitry.

Use with the software servo library

I have a good idea for actuators that beats 5 bucks.

Trade you, I need help getting a tinyduino (or the smaller one from the same company rather, I like that the ftdi is not on the pcb) to control a matrix of 8x3 actuators, with pwm precision. Sounds like we are thinking of similar things, pm me.

Thanks for the replies. The regular pinhead impression device has ~2000 pins so using servos isn't really an option. It would cost like $10k just for servos and I have one of those small servos and even one makes lots of noise so can't even imagine what 2000 would make! My budget is more in the range of few hundred $, but I have lots of time and patience to spare (:

Only remotely feasible option I have is to use coil and moving metal pin inside, and drive the movement with PWM (backwards movement handled by gravity). I built a proto coil which works ok to move the pin inside but when I plugged it in Arduino PWM (via transistor) and connected 9v battery staight to the coil it heated up the transistor very hot without any impact in the coil. The coil worked fine when I connected it to the battery straight though and a LED I used in place of coil (with a resistor) worked fine as well to control the brightness so I know the circuit is ok. Any idea how should I setup the coil instead?

Thanks, Jarkko

Can you make one of those in 5 minutes and have it connectorized ready to mate with a connector on a board, and then reliably repeat that 2000 times? (167 hours). If you buy 2000, I am sure you can quite a nice price break too. The other problem with your approach, besides needing 2000 custom drivers too, is that you will have a hard time with any 3D effect - the pins will be all in or all out.

What you're really describing is a solenoid. Try a google search for mircosolenoid

Too early to estimate how quickly I could build them since I'm not sure if this could even work. Once I know what to do, I need to figure out the process how to do it in reasonable amount of time. I googled for microsolenoid and stores I was able to find that sell them in bulk (eg 100/lot) seem to still get price of around $5/piece, which is way above my budget.

For the coil I was hoping to control the position with PWM, but that's probably too inaccurate and each coil would need to be calibrated separately. I guess I need to try to figure out a better way to do it.

Thanks, Jarkko

Do they all have to change at one time? Maybe you could make a carriage that moves vertically or horizontally, and has enough servos or other means to move the pins of a row or column (respectively) - then move on to the next. It would be more complex mechanically (and I am not sure how you could do it with servos, but there is probably a way), but probably cheaper to build (and likely fewer overall parts).

Do they all have to change at one time?

Not necessarily as long as the refresh rate is high enough to give the impression of continuous movement i.e. ~20Hz. Not sure if you could build a carriage that moves fast enough for that kind of update speed

I would think a mechanically multiplexed carriage would also not meet this goal: "Originally I thought of using servos but that would be very expensive, noisy and take lots of space."

If I would hook the coil via MOSFET transistor and control it via Arduino PWM shouldn't that enable partial movement of the plunger? I thought this was the way solenoids work. I think the challenge would be to know how different PWM duty cycles would map to the position of each plunger since there will be some difference between the solenoids. So I was thinking that each should have some kind of way to measure the position and then I could automatically calibrate each solenoid.

For the cheap position measurement I was wondering if there is some kind of "resistance wire" I could attach to the bottom of each plunger and then measure the resistance with analogRead() to find out the exact plunger position? I.e have 0% duty cycle and measure resistance, keep incrementing the duty cycle and measure the resistance. This of course assumes that the "resistance wire" increases resistance linearly.

Wow, you are just gettting more & more complicated! Its gonna take you forever to build up these modules.

I think for partial movement, you would need a spring pushing the plunger back, else the PWM would tend to just make it move max position and then maybe just jitter there against the stops.

Why not order a couple of solenoids and see whats involved? Try driving it different ways, try it with AC, DC, etc. They have high power consumption, medium, low power, quiet operation, etc.

I think for partial movement, you would need a spring pushing the plunger back, else the PWM would tend to just make it move max position and then maybe just jitter there against the stops.

I was just thinking that the gravity would deal with the return movement. I would have these pins standing upright and the electromagent would pull them up. You are right that for sudden change in pin position there would probably be some kind of oscillating movement, but that might actually make it look nice (:

It doesn’t sound very complicated to make these solenoids yet, particularly with the position measuring system in place for calibration. It should be fast to make the coils since they don’t all need to be exactly the same due to the calibration. The plunger itself is basically piece of iron wire and with piece of resistance wire hanging from the bottom & wire soldered to the bottom of the plunge for calibration. I haven’t yet figured out how to connect resistance wire to the body though for position measurement so that it doesn’t resist plunger movement. There is probably other issues I don’t see yet, but at least it seems to fit the budget (bunch of iron wire, magnet wire and resistance wire, MOSFET + flyback diode for each solenoid and some other components like shift registers for PWM control).

For sure this won’t be a weekend project but hopefully something I could complete in few months of sparetime work. First I like to make a proto solenoid though to know that the idea is doable and would like to know am I thinking straight (: I have lots of software dev experience (~3 decades) so that side won’t be an issue, but I’m complete newbie in the HW & EE side so need someone experienced to point out obvious flaws and oversights in that area!

Suppose you have a plate with many holes drilled in it with a pin in each hole. Behind the plate there is enough air pressure to push the pins out. Then you need some mechanism to stop them going out. You could have small springs to retract them. The mechanism to stop them going out might not need much power (and therefore not much heat).


I think you would have the same problem of how to precilely position each pin, right? Also how would you move the pins backwards since the pressure is just pushing them out?

You are quite right. It occurred to me last night that it was stupid to imagine that air pressure would push the pins out and springs bring them back in. BUT ... it might be easier to control the air pressure in each tube than to use another power source to move the pins.

Is this project feasible at all?

I doubt if the sort of actuation you want is acheivable at any reasonable cost.

Even if you conceive of a practical method to make the pins move precisely and quickly, how will you generate commands for 2000 separate devices. How many Arduinos would you need?


I was doing some research on micro DC motors, and it might be possible to get those for ~30c/piece, and the ones I found are tiny enough for the project (4mm diameter). By attaching a screw shaft to the drive shaft of the motor the rotation could be changed to linear to move the pins in & out, though I'm not sure if it would be fast enough. It would still be in the upper side of my budget, but I could start with ~1000 pins and make it extensible, so if it works out and looks good I could add more with extra cost.

I don't think driving the motors would be that difficult as I should be able to use daisy chained shift registers to control the forward/backward movement of the pins, and maybe distribute the work to some number of microcontrollers. I would need to monitor the pin positions though because DC motors are not accurate like servos or stepper motors, and I don't know yet how to do that exactly. For passing pin animation data from PC to the controller I was thinking of using USB, but it seems that Arduino doesn't quite have the performance required for it. I was looking to Teensy 3.0 which seems to have much better USB transfer speed, and also higher clock speed for driving & monitoring the motors. I need to look into these details once I figure out how the pin movement should be done exactly.

I think the best way to implement this would be to use this stepper motor. I can get these for ~40c/piece and then it doesn't require any mechanism for measuring the position of each pin. Any idea what would be the best way to turn these stepper motors to linear actuators for this type of project? The stroke length should be ~10cm and the speed ~100cm/sec. Since I just want to move a pin, there isn't much load. I have thought of using either gear rail or acme screw, but would like to get opinion from someone more experienced. I don't have the speed or torque specs for this motor yet though.

To reach 1m/sec you will have a significant acceleration. Can the motors manage that? It looks like the circumference of the gear is about 4mm so it would take 250 rotations to move 1m or 15,000 rpm if my maths is correct.