Propeller Clock
Mechanically scanned digital clock.
General description
Put seven LEDs on a stick and rotate them at 600 rpm, use a small
microcontroller to keep the time and
blink the LEDs in an appropriate pattern to show the numbers and you have a
propeller clock!
As your eye cannot follow the flash rate of the LEDs, it looks like the digital
numbers are floating in thin air!
Watch a small movie (750kB) of the clock to see what
it is like!
Main features of my clock are:
The first idea to create a clock like this is from Bob Blick, you can find more
designs on the internet,
just use a search engine and look for "propeller clock".
Mechanics
To get the propeller clock going I used a 230Vac fan (as used in PC power
supplies) because it is easy to get
and it has a nice large rotating motor house to build on.
I tuned down the speed to an acceptable low level of about 600 rpm by
using series capacitors (about 1µF).
The PIC is fast enough for higher speed, but the noise becomes unacceptably high
at higher speeds!
The main problem with this propeller clock is how to get the power to the
rotating printed circuit board.
This problem is solved by building an air-core (!) transformer with static
primary and rotating secondary winding.
The air core transformer is driven by a high frequency SMPS which will be
described later on.
In the drawing below you see how the rotating PCB is connected to the FAN motor:
-The Copper windings are coiled on the 40 mm
secondary PVC pipe and fixed with laquer or glue
-The primary is built in the same way usinng a slightly shorter 50mm PVC pipe.
-The base plate has a hole with the same ddiameter as the static PVC pipe
inner diameter
-The secondary coil is glued to the fan mootor house (be sure that it is centered
well!)
-The primary is glued to the base plate wiith the hole
-The base plate is screwed to the corner hholes of the fan house.
-The rotating pcb is screwed to a small piiece of PCB which is glued on top of
the rotating PVC pipe.
Pictures of the clock:
Front side Back with fan motor & flyback power supply
Rotating circuit board Rotating air transformer:
Circuit description
The Propeller clock circuit can be divided in 2 parts:
Propeller Clock schematic
The isolated power supply
The isolated power supply is an isolated flyback converter circuit running at
200kHz.
For details on the isolated air transformer, see the section about the mechanics
above.
The 4047 builds a stable 200kHz oscillator which drives a small push pull MOSFET
driver stage
built with small signal transistors Q1 and Q2 (transistor type is not very
critical here).
The MOSFET should be a high voltage type which can handle the voltage spikes
across the transformers primary.
C4 limits the voltage spikes to an acceptable level (this capacitor can be tuned
for optimal performance).
C5 (1µF film cap) must be connected directly to the source of Q3 and the
transformers primary.
On the (rotating) secondary side, four FAST (150ns) diodes rectify the AC
voltage.
C6 is a buffer elcap to handle pulse loads.
A basic 7805 1Amp stabilizer IC creates a stable 5 V supply for the clock
circuit.
The power supply can source up to 200mA at 5V. Note: the secondary voltage
before the 5V stabilizer is not very stable,
without any load it may rise up to 50 volts! Make sure that some load is placed
here (1k resistor is sufficient).
The losses in the converter are quite low, components do not get hot at all. C4
is very important here, if omitted, MOSFET Q3
will run hot because the voltage spikes on the primary even exceed the breakdown
voltage of this FET!
The Propeller clock
circuit
The PIC 16F84 that is used is a very basic& cheap FLASH µController from MICROCHIP.
It has 13 digital I/O's of which just 5 are used here. The PIC16F84 has no
analog inputs or outputs.
The controller is ideal for experimenting because it can be erased and
re-programmed 1000 times!
For easy time calculation I used a 10.24 MHz Xtal [;-)]. This Xtal and capacitor
C8 must be placed
extremely close to the PIC-IC for time accuracy.
I experienced that just 2 cm in total results in a very inaccurate clock!
RB0 thru RB6 drive the LEDs directly. Note that if all LEDs are on, the total
current spec of RBx is exceeded,
additional transistors may be an improvement here.
Input RA0 checks the index sensor, when this is low the PIC will start flashing
the numbers. The index sensor should
trigger when the LED's position is at 3 'o clock (the LEDs turn
counter-clockwise).
Input RA1 checks the time set sensor. If switch S1 is pressed, the coil will
generate a magnetic field.
Every rotation the rotating sensor passes the field of the coil and minutes is
increased by one and seconds are reset to zero.
As the clock rotates at 600rpm, you must be quite fast to get it right.....
Software description
The main program is a wait loop which constantly checks if the index sensor
is active, if so the current time stored in
secs, tensecs, mins, tenmins hrs and tenhrs is flashed using the display
routine.
the numbers are looked up in a table in which each number is stored in a 5 x 7
dot matrix.
Time is kept in a separate interrupt routine using TMR0. The internal timer TMR0
increases by one every instruction cycle.
When TMR0 overflows, the program jumps to org 0004 where it is redirected to the
interrupt routine IRQ.
The IRQ routine will be activated at a rate of (10.24 MHz / 4) /256 = 10kHz, or
every 100µseconds.
After two dividers (count3 and count4) the frequency is reduced to 1 Hz: seconds
!
In the IRQ routine first the time set input RA1 is checked, if active (low),
setbit is set: the clock is in time set mode.
In the main program (at label start) this setbit is checked while waiting
for the index sensor, if setbit is set,
the program will proceed to the timeset routine: here secs and tensecs and the
setbit are cleared,
then mins is incremented by one and tenmins hrs and so on are incremented at
overflow.
Still one question left: the Watchdog timer is disabled, still it seems that
it is active.
In the Interrupt routine that keeps time, a single "clrwdt" is placed to prevent
the clock to initialize randomly
(sometimes within a minute, sometimes it takes 30 minutes).
Although their programs are completely different from my program, both Bob Blick
an Don Zehnder experienced a similar,
probably watchdog (or shared prescaler ?) problem.... Does anyone understand
????
With the clrwdt in the IRQ it seems to work fine, no problems after 3 weeks of constant
operation.
Download the (heavily commented )source code propclock.asm or the compiled HEX file propclock.hex
→ Download specifications of key components at the Component specs page