It's very late here so I'll just show the picture - a nibble of pager motor flip dots, driven by a single pin each from an Arduino Uno, with a 2.5V rail provided by a low value (and hot) resistor divider:
Not perfect by any means but nice to see the beginnings of an array.
I'm a new member on this team but have been following the project for a while. My goal is purely for interest, rather than a specific project I need to make. I'd love to see these displays accessible for more people. So far I see three barriers to wider adoption that I think we can reduce:
- Mechanical. To make these, you usually need to wrap a lot of wire coils. You need a decent low friction pivot and you need to make dots and frame elements repeatably and in quantity. When you scale all that up, making a usable array becomes hard work and not really worth the effort.
- Electronic. These displays often need positive and negative voltages. They also need control circuitry that can handle these rails and this can result in H bridges, mosfets and optoisolators, not to mention multiple IOs from the controller IC for each dot or pixel. Multiply that by the pixel count of your array and the control electronics
- Price. This is perhaps a consequence of the first two problems but often time is less critical to hobbyists and non-professionals, who are perhaps more sensitive to price.
So I've been trying to think of a way to improve in these three areas. The main idea I had was to use a micro servo (cheap, single 5V rail) to drive four dots or two dots (minimum IO pins per pixel) by rotating a notched wheel underneath the grid of dots. These notches would engage with a lever for each dot that would rotate 180° and magnetically couple to the disc of the dot itself. Like this: The lever pivots on the paperclip axel you can see in the bottom left. The motion of the "flip" and short settling oscillations are not conveyed well in this GIF but I found the action very pleasing and it produces a quiet fluttering sound which is a nice benefit.
The problem I was struggling to overcome with this arrangement was that to make this work with one servo creating all possible combinations for four dots, the 180° range of servo rotation would be have to divide into 16 to provide every possible permutation of four dots' settings (2^4) or divide into 4 (2^2) for two dots per servo. I couldn't get over this stumbling block as two dots per servo didn't really seem worth the effort to make each mechanism and four dots seemed too hard; the for a 25mm dot the radius of the notched wheel would be 50mm and resulted in around 4-5mm circumference between settings. That's not much distance to transition the lever mechanism from one position to the other and I put the idea on hold.
Someone else's bright idea
A few days ago @Benchoff posted on the HAD blog about [sjm4306] using pager motors for a mechanical segment display (for a clock in this case). He encounters an issue of segments not being able to be arranged near each other without careful planning of the layout to ensure motors didn't end up being inserted and clashing. I immediately ordered some of the pager motors he used as I thought they could produce the magnet rotation that the lever of my first design provided.
Then I couldn't wait. I have some small pager motors already but they are the flat round type which are fully enclosed: I decided to see if I could break out access to the rotor and using small pliers prised off the cover (the sides and top surface in the picture above). I forgot to take a picture of the inside before I glued stuff onto the rotor but there is a cam-shaped rotor (eccentric mass to produce vibration) with two tiny copper wire coils mounted in it. On the underside of the rotor there is a commutator with around 6 plates (looked like more than 4). A pair of "brushes" or spring contacts supports the rotor from the stator and there's a tiny pin of an axel that keeps the rotor in place. There is also what I presume is a diametrically polarised magnetic disc that occupies most of the face of the inside of the stator. Then there are the two wires that break out through the casing from the commutator. Phew - sorry for the lack of pictures this time.
OK, so access to the rotor is there. Does it still work without the casing and what about the control electronics; will I need an H bridge to control direction? The answer to the first question is YES! However, the rotor isn't being held onto the axel by the casing any more, so you need to orient the motor to allow gravity to help here. As [sjm4306] notes, there's very little torque here.
What about the controls? I attached the rotor to an Arduino's 3.3V pin and instantly got good rotation. These motors are designed for 1-3V and that got me thinking - would an Arduino pin be able to source sufficient current to drive one? And if it could, what about providing a 2.5V rail on one motor terminal and use the Arduino pin to provide 0V, 5V or tristate to produce CW rotation, CCW rotation and OFF, respectively? I don't know if this counts as GuGaplexing but that's the closest description I could find.
So, now we have the potential for:
- Low profile flip dots - no need to hide the depth of a servo wheel or electromagnetic coils behind the dots - even "see through" arrays may be possible
- Minimal driver components (no H bridge yet)
- Minimal IOs potentially 1 per pixel but with a very cheap microcontroller that could be insignificant - see later for potential issues
- Minimal mechanical complexity - maybe just a pivot on the opposite side of the dot to the motor, to prevent the commutator and brushes losing contact
- The total current sourcing and sinking ability of the mictrocontroller could limit the number of dots controlled by one IC. In the case of the Arduino I'm using, it's based on the Port total and the details can be found here. There may be ways around this - e.g. a bit like time division multiplexing. I didn't measure the motor current but to get it to turn 180° took about 100-300 ms of applied current. This is where the drive circuitry may need to get a little more complicated.
- Reliability. I didn't use a stop for my test to limit rotation to 180° in each direction like [sjm4306] but I did try holding a paperclip in the way. Sometimes the reverse direction wouldn't engage. Can't tell if this is a commutation issue or whether without a force greater than the weight of the pink PLA dot frame, the rotor was hopping off the brushes but remaining on the axel. Needs more looking into.
Close-up of the assembly:
I have purposely posted this log as soon as I can, rather than once I had a pretty array manufactured and all the kinks ironed out, as I want to spread the idea so others can develop quickly. I hope to build a small array and explore the driver/control electronics and frame/dot manufacturing options, geared towards affordable and relatively easy to make arrays.
I'm submitting this to the HAD tips line because there must be some excellent ideas about how to scale this approach up for flip dot arrays.