The goal of this project was to develop 3D spinning mechanism capable of displaying smooth video or static images. The device uses a spinning ring with tri-color LEDs inside, and relies on precise angular sensing and persistance-of-vision and to create the effect of a spherical display surface. Although the system consists of only a single ring of LEDs, the high rotational speed makes it possible to display any combination of red, green, or blue pixels along the surface of the resulting sphere. (3-bit color depth!)
This 'beach ball' pattern to the left represents the extent of my artistic abilities. Any arbitrary image could be displayed, given the right data. Since I'm not exactly great at ASCII art, the next step would probably be to build a utility to convert JPGs to the appropriate format for the microcontroller to process. Videos could also be played back on this system just as easily, which is another interesting possibility.
The images are created by looping through a lookup table of pixel values about 15 times a second, which is well within the capabilities of a normal microcontroller. Increasing the color depth by adding grayscale was something I contemplated, but would require individual PWM control over each LED. This would require either a much faster processor or dedicated hardware to control the duty cycle of each LED. This would certainly allow for some pretty cool effects.
Positiniong feedback is provided by a 2500 pulse-per-rotation optical encoder with an additional sync pulse for absolute positioning. This was way more than I needed (I got it from a friend), and actually more than the processor could theoretically handle. So I had to use a hardware divider before feeding it into the microcontroller to provide angular position information.
In case you couldn't tell from the photos, the entire assembly spins -- including both circuit boards.
This was necessary since otherwise I'd have to deal with tons of rotating wires. Power (several amps) is
transmitted from the base onto the rotary component. This posed a bit of a problem, since I needed to send
electricity through a rotating connection. This is a common issue with motor design, but I don't know much
about carbon brush design and didn't want a finicky electrical connection, so I considered other options.
My next idea was to supply power wirelessly through an inductive charging coil, like the way some electric toothbrushes are charged. I actually prototyped that option, but as it turned out my transformer prototype was barely efficient enough to power the system, and got hot enough that I could probably use it to heat my room in the winter. So I looked for other options.
I searched around McMaster car, and surprisingly found a pretty nifty component -- a rotating mercury-based connector (Yay environment). This thing was a marvel of engineering, and was comprised of two seperately sealed mercury wells which could rotate and transmit up to ~5 amps at rotational speeds up to 3600 RPM. It worked perfectly, and it's something I'd highly recommend in this sort of application. Just don't drop it!
As you can see, the wire bundles got pretty thick at the top, after aggregating the signals for 48 seperate LEDs. Using flat ribbon cable worked out pretty well though, and the piano wire tires kept anything from coming loose at 1800 rpm. On the rear edge of the ring the copper power rail is visible. Each led taps power off it to reduce the mass of wiring needed. I tried to isolate that line from the rest of the system as best I could, since I imagine the noise on it is pretty substantial with lots of current spikes from the leds occuring at different times in the rotation cycle.
I assembed the board in one sitting... but man that was a lot of sitting. Luckily it went pretty quickly, since I was able to make use of the soldering microscope in my old lab.
Inputs from the microcontroller are at the bottom, power outputs to the LEDs are at the top. The four DIP sockets buffer the signal states, and the twelve SOIC packages above are high speed power latches which directly drive the LEDs. There's several a few other small things on the board -- multiplexors, regulators, capacitors, etc. And a ton of resistors.
I sure was glad to be finished soldering! All the electronics worked on the first try, which was a pleasant suprise for me, and certainly a relief since I had been running on about 2 hours of sleep at the time.