Persistence of Vision (POV) Displays

32 Red LEDs (2009)

32 Red LEDs (2009)

32 RGB LEDs (2011)

Comms (2014)

Comms (2020)


I completed the first version of this project back in 2000. Based off of Bob Blick’s propeller clock, it was a simple vertical column of 8 LEDs that spun in a circle, displaying a “Happy Birthday” message. A few years after that I stumbled on a Youtube video that had the LEDs on top of a spinning prop, instead of perpendicular. The version shown in the far left pic is actually the device I used to propose to my wife. See it in action here. I then went on to make many more versions, each one more sophisticated and with better wireless communication to my computer for easy upload and management of pictures/frames for video.

Powering a rotating circuit board

The above pic is from my latest version, which uses 63 Red-Green-Blue LEDs, offset slightly from each other to form a virtual row of 114 pixels. Each of the 63 LEDs actually contains three separate LED elements (for the red, green and blue). So the power transfer mechanism needs to pump over 63*3*.01 = 1.89, or almost 2 amps!

To do this, I steal a commutator mechanism from a similar motor that rotates the PCB. I flip it over and mount it on top of the motor. Then wire up positive voltage to the brushes, and the ground is sent through the motor casing/armature. It’s pretty dirty, but it has worked for me.


A propeller display like this one relies on a phenomenon called Persistence of Vision, or POV. If the display is rotating fast enough (at least 25 rotations per second), the circuitry can turn on and off certain LEDs at certain times throughout the rotation to produce a static picture. Our brains trick us into thinking the image is actually static, when in reality it is not. See one of my propeller displays when I’m featured in a Smarter Every Day episode.

Timing is critical in order to know when to turn on a particular LED in the rotation. Three pieces of information are required: 1) How long does it take to make a single rotation, 2) What is the position of the propeller at any particular time during the rotation, and 3) What is the position of the LED along the length of the rotating arm.

That first piece of information is pretty easy to compute. There is a hall-effect magnetic sensor mounted at the tip of the circuit board. This sensor digitally “closes” a switch whenever a strong enough magnetic field is passing through it. This field is provided through a small stationary magnet mounted on the frame of the display. The microcontroller measures the time between switch closures using an internal timer, and saves this value.

The second piece of information is fairly straightforward if we know the answer to #1 above. In my design, I update the row of LEDs 128 times per revolution. So let’s simply divide the answer to #1 by 128, and update the arm at that interval.

The third bit of information is the trickiest. But, after writing a small program that has some trigonometric magic in it, we can create a huge lookup table that stores the positions in a bitmap array (our image we want to display) based on what iteration of revolution we are in and position of the LED on the arm. Then we can simply look up those values very quickly every time we need to update the entire arm (every 312 microseconds given 25 rotations per second and 128 slices around the circle).

Here are closeups of the PCB. 11 Pulse Width Modulated LED driver chips light all the LEDs. On the flip side of the PCB is where the voltage regulation and RF comm components live.



%d bloggers like this: