A POV display aka propeller display/clock is a display that uses the
Persistence Of Vision (POV). By turning just a few LEDs on and off at a
specific position around a circle, a full display that would normally require
hundreds of LEDs can be created. This illusion of a still image is due to the
eye's slow refresh rate. Without this perk we would see moving pictures
instead of videos and obnoxious LED lights caused by PWM in daily life.
If you think about it is is an interesting and fun project to experiment with.
This will be more obvious in part 2 where we will discuss the code and the
basic principles. It can be used as a clock or display text from internet in
real-time or for image display.
Here is a video with the POV display controlled by an Android app. Needless to
say it looks better in person. The display can be styled by different LED
colors.
POV display construction overview
Part list
Power Transmitter board
- 1 x 92mm PC fan
- 4 x 4mm screws with nuts for fixing the board on the fan
- 1 x ATtiny13A microcontroller for controlling the main TX coil
- 1 x female (receptacle) header 1 row 6 pins (2.54 mm spacing) for programming the microcontroller
- 1 x DC jack. A panel mount one connected with wires is better than the one I use
- 1 x 12V to 5V linear voltage regulator
- 1 x 0,1uF ceramic capacitor 2,54mm (C4)
- 1 x 0,33uF ceramic 5mm (C5)
- 1 x 470uF/16V electrolytic capacitor 5mm (C1)
- 1 x 33nF film capacitor (important) (C2)
- 1 x IRFZ44N N-Mosfet or equivalent (Q4)
- 2 x BC337 NPN transistors (Q1 and Q3)
- 1 x BC327 PNP transistor (Q2)
- 1 x 10k resistor (R5)
- 2 x 47k (R2 and R4)
- 2 x 2.2k (R1 and R3)
- 1 x 100mm x 110mm double sided copper clad board
All resistors are normal size low power through hole with ~8 mm distance between pins.
Main (top) board
- 1 x EFM8BB31F32I-B-QFP32 microcontroller
- 1 x USB to Serial converter (UART) for programming the MCU
- 1 x ESP8266-01 module
- 1 x female header for ESP module 2 rows 4 pins 2.54mm. It can be made from 2 headers with 4 pins.
- 1 x female header 1 row 6 pins 2.54mm for programming the main microcontroller
- 16 x 0805 SMD LEDs with a desired color (yellow or white works better for text)
- 1 x red, 1 x green, 1 x blue 0805 SMD LEDs
- 1 x AH372-P-B Hall sensor (from Farnell) or equivalent
- 1 x AMS1117-3.3V voltage regulator
- 1 x 12V low power zener diode
- 1 x 33nF film capacitor (important)
- 1 x SK24A Schottky diode or equivalent
- 2 x 3mm x 24mm screws with 3 nuts for each screw
- 1 x 160mm x 50mm double sided copper clad board
- 1 x 80mm x 80 mm single or double copper clad board for making the circular receiver coil board. This can be integrated in the main board since a manufacturer can easily cut any board shape.
- other generic resistors and capacitors (see the schematic). Most are 0805 surface mount which is preferred for a spinning board.
The PCBs are not made for factory manufacturing because they are home made using the UV method. If you plan to order them from a manufacturer then carefully examine the gerber files that you will generate if the traces and holes are correct.
The brain of the display is EFM8BB31F32I-B-QFP32 microcontroller set to run
at 49MHz and it uses ESP8266-01 module to connect to internet and to local
LAN to communicate with an Android app. Under the ESP module is a piezo
diaphragm for producing alarm sounds.
On the left side there are two screws with nuts acting as a counterweight.
This must be tweaked until the vibration is reduced to the minimum. Is not
very elegant but I don't know of any other solution for now.
Between the two screws there are 3 LEDs red, green, blue used for the rim
color and then two sets of 16 LEDs. One yellow with 16 resistors and one set
blue with no resistors. After I tested the board I've noticed it was not a
good idea since the LEDs need to be perpendicular to the center otherwise
the display image will look skewed. In the schematic this is corrected.
The board is powered through the two screws in the middle. The two nuts on
top are used to press the board on other two nuts beneath the board that are
used to conduct power to the board. Under these second pair of nuts is a
circular board that captures the magnetic fields and it sits on two other
nuts for electrical connection and also for height adjustment.
The whole assemble is supported on two screws used also for powering the top
board. Pulling out the fan is achieved by removing a small ring connected to
the shaft on the other side where you normally put the oil. Removing the
ring is a bit tricky. Try using some curved tweezers.
Inductive wireless power transmitter
The 92mm PC fan used here has three main roles: to support the display inside
a case, to spin the top board and for cooling.
The board is powered with 12V through a DC jack (panel mounted ideally) and an
external power switch connected using wires. The fan wires are connected to
the board through another switch so the board doesn't spin during programming
of the top board microcontroller. U2 can be a generic 5V voltage regulator for
powering the U1 IC which is an ATtiny13A microcontroller that is used to
produce a 267 KHz square wave. A more elegant solution would be the use of a
ring oscillator using 3 Schmitt-triggered inverter gates, resistors and
capacitors.
Q1, Q2, and Q3 transistors form a gate driver for the power mosfet Q4. L1 is a
printed circuit board inductor with 7 turns, 2.5 mm trace width, 1.3 mm
clearance and together with C2 capacitor forms an LC tank oscillator. C2 must
be of a plastic film type.
I did measure the efficiency and output power but I forgot to take notes and I
can't redo it now in circuit. All I can remember is that the input power is
12V / 0.5A and that the efficiency is not very good. The mosfet and the
capacitor gets a bit hot without the board spinning. Maybe with a better
circuit that would measures the mosfet drain voltage and adjust the
oscillating frequency depending on the load the efficiency would be better.
Inductive wireless power receiver
The receiver coil is the same as the transmitter one and it could be
integrated in the main board.
POV display main board
Starting from the left power is coming through the two screws that are
connected to the printed inductor board beneath and together with C6 film
capacitor forms an LC tank oscillator. D1 is a Schottky diode to rectify the
AC voltage. C7 is a bulk capacitor and perhaps could be lower in value.
D5 is a 12V Zener diode to cap the input voltage. Unloaded voltage from the LC
oscillator is around 90V but will drop quickly under even a small load so the
Zener diode will not see much current.
Then a 3.3V voltage regulator provides voltage to the LEDs and microcontroller
which is a 3.3V type.
C1 is a decoupling cap for the micro, R2 is a pull-up for the reset pin and C3
is used by the DTR for programming.
There is also a piezo diaphragm connected directly to the high voltage side
but could be removed together with it's circuitry if not needed.
Red, green and blue LEDs are for the display's contour and could be used in
any combination.
16 yellow LEDs are connected directly to the microcontroller each one having a
75 ohm resistor. The color of the leds could be any color you like but since
the voltage drop is dependent of the led color the resistor value will vary.
For this 0805 type of leds I have measured the following voltage drops:
- Red: 2V (120 ohm, 10mA)
- Green: 2.1V (120 ohm, 10mA)
- Blue: 3.3V (with no resistor 10.4mA)
Keep in mind that the maximum current the microcontroller can sink is
200mA.
It would be preferable to drive the leds with 20mA for maximum brightness
especially considering they are not on all the time, but the current for one
led multiplied by (16 leds + 1 led for rim color) must not exceed 200mA.
IC1 is an AH372 bipolar latch hall effect sensor and it triggers an interrupt
each time the sensor passes on top of a magnet. To align the magnet with the
right polarity you could toggle a led inside the ISR then move the board by
hand counter-clockwise until the led toggles on each rotation. The sensor is
bent with the front side facing the board and can sense the magnetic field
through the PCB. A big and strong magnet works better than a small one.
If you notice any jitter in the image put the magnet closer or use a stronger
magnet. I've noticed that when the magnet is farther away at full speed many
times doesn't trigger the interrupt thus causing jitter.
J1 is used for programming the micro. JP1 has two jumpers. When they are
placed towards the center of the board the microcontroller's UART is connected
to the ESP. When is on the other side the micro is connected to the USB to
serial converter for programming. C2D pin of the micro must be connected to
GND with a jumper wire to enter into programming mode then the software can be
uploaded. In case the programming fails pull out the ESP first.
Possible Improvements
- Maybe mounting the leds vertically to remove the vertical gaps without reducing the screen height
- Placing the leds very close to each other vertically for higher pixel density but that would decrease the screen height. Doubling the number of leds to 32 will fix that but then extra circuitry is required such as shift registers since there are not enough pins on the micro
- Using RGB leds. Maybe in version 2
- Better circuitry for the inductive wireless power to increase it's efficiency
In the next part I will be talking about the code and basic principles of a
POV display.
If you have comments or suggestions leave them in the comments below.
Download:
This zip file contains:
- schematic and PCB layout made in DipTrace (free version) for all 3 boards
- 92mm fan footprint for drilling holes in the enclosure
-
html and javascript file character generator. Although all A-Z, a-z and
0-9 characters are already in the code file, you could use this to
modify them.
Android app .apk format version 1.0
Install from unknown sources must be enabled since is not installed from Google Store. Uploading apps on Google Store cost a few dollars and for now it will only be available for download here.
No comments:
Post a Comment