Close

Progress in DIY flip dots!

A project log for Dot flippers

or "flip dotters" if you want. Let's just talk about flip-dot/flip-disc displays and projects using them :-)

Simon MerrettSimon Merrett 07/07/2017 at 11:179 Comments

UPDATE 11/07/17
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.


Background

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:

  1. 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.
  2. 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
  3. 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.

It worked!

So, now we have the potential for:

  1. 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
  2. Minimal driver components (no H bridge yet)
  3. Minimal IOs potentially 1 per pixel but with a very cheap microcontroller that could be insignificant - see later for potential issues
  4. 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

Potential issues:

  1. 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.
  2. 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:


Way forward

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.

Top of the list would be the driver and control electronics can be kept simple, i.e.minimise IOs and components per dot. Any thoughts?



Discussions

Dylan Brophy wrote 07/07/2017 at 18:06 point

Perhaps to use less pins you could use something like a 74138 with some transistor circuit to select 0, 1, or hi-Z.   Or a 74595 shift register to use 3 pins for an unlimited number of outputs, then 1 pin for the select of 0, 1, or hi-Z.  Basically a single output pin going to a transistor to expand GPIO, going from a chip like the ones I mentioned above.  

here, I made a simulation for you: http://tinyurl.com/y8nl3w7y

  Are you sure? yes | no

Simon Merrett wrote 07/07/2017 at 20:52 point

Thanks! That's really considerate. I'll admit that I need to have a good long think about it before I understand but I will return your efforts and make the time to. 

  Are you sure? yes | no

Yann Guidon / YGDES wrote 07/07/2017 at 15:18 point

Cool log, thank you Simon !

  Are you sure? yes | no

Simon Merrett wrote 07/07/2017 at 16:03 point

You're welcome, let's hope it scales up!

  Are you sure? yes | no

sjm4306 wrote 07/07/2017 at 15:08 point

sjm4306 here! Great progress. One other potential issue with using the logic rails with a half rail "virtual ground" to simulate a split rail would be standby current when either resting at high or low but luckily switching the gpio to high impedance inputs will fix that. If this method work reliably mechanically then driving an array of these dots will be as simple as using a mcu with enough pins and forming a simple matrix of motors and flipping them sequentially. I'll definitely be keeping an eye on this project to see how it works out.

  Are you sure? yes | no

Simon Merrett wrote 07/07/2017 at 16:03 point

Yes, I used high impedence "INPUT" mode for at rest. It would be great if we can use an ATMEGA328P but we just need to explore whether it will scale up with the pin and port current source/sink limits. Stay tuned!

  Are you sure? yes | no

Simon Merrett wrote 07/07/2017 at 15:07 point

Ted, you know I've been thinking too along that vein. The magnetic coupling of my first prototype was cool because a small amount of movement rotated the magnetic field until the coupled magnet flipped with a much greater motion than that required at the input. I observed a similar effect with the latest (not yet logged) version of Yapolamp with the hall effect switch. It was latching but pole-sensitive (unipolar?). I plan to use a magnet in the charging dock for Yapolamp to keep the charging circuit off until a magnet in the lamp with reverse field polarity is inserted and switches the charging circuit on.

What about a "wiper" comprising multiple electromagnets that slides across the back of a dot array, like a cartesian gantry, and flips a whole row at a time? Like you say, it would be slower but could be more frugal in components and perhaps there would be some charm in the etch-a-sketch style update swipe...

  Are you sure? yes | no

Ted Yapo wrote 07/07/2017 at 13:56 point

I would like to see a matrixed mechanical drive for flip-dots.  There must be some way to address a matrix of dots with row and column rods/axles so that you can flip one dot by turning/sliding one row control and one column control.  It would be slower than one actuator per dot, but maybe that doesn't matter.

I'm just not sure how to do it.

  Are you sure? yes | no

Simon Merrett wrote 07/07/2017 at 15:11 point

@Ted Yapo, you know I've been thinking too along that vein. The magnetic coupling of my first prototype was cool because a small amount of movement rotated the magnetic field until the coupled magnet flipped with a much greater motion than that required at the input. I observed a similar effect with the latest (not yet logged) version of #Yapolamp with the hall effect switch. It was latching but pole-sensitive (unipolar?). I plan to use a magnet in the charging dock for #Yapolamp to keep the charging circuit off until a magnet in the lamp with reverse field polarity is inserted and switches the charging circuit on.

What about a "wiper" comprising multiple electromagnets that slides across the back of a dot array, like a cartesian gantry, and flips a whole row at a time? Like you say, it would be slower but could be more frugal in components and perhaps there would be some charm in the etch-a-sketch style update swipe...

  Are you sure? yes | no