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".


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:

  1. An isolated power supply with a home-built  air-core transformer to get the power to the rotating circuit board.
  2. The rotating circuit with the PIC brain, LEDS and two HALL sensors

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

Top of page