You are on page 1of 6

Propeller Clock

Mechanically scanned digital clock.


http://www.geocities.com/tjacodesign/propclock/propclock.html#top

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:

 Easy-to build isolated power supply with a transformer built with 40mm &
50mm PVC pipe.
 Basic PIC 16F84 flash microcontroller
 Hall sensor with permanent magnet as index sensor
 Time set possible when the clock is rotating (using a second Hall sensor with
an electromagnet from a relay)
 Standard PC power supply FAN used as motor to get the clock rotating.

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 using a slightly shorter 50mm PVC pipe.
-The base plate has a hole with the same diameter as the static PVC pipe inner
diameter
-The secondary coil is glued to the fan motor house (be sure that it is centered
well!)
-The primary is glued to the base plate with the hole
-The base plate is screwed to the corner holes of the fan house.
-The rotating pcb is screwed to a small piece 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

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 http://www.geocities.com/tjacodesign/propclock/propclock.asm

or the compiled HEX file

propclock.hex http://www.geocities.com/tjacodesign/propclock/propclock.HEX

You might also like