An Esoteric Application of a Microcontroller


This application of a microcontroller was not invented by me, but rather Bob Blick who was an Electronics teacher, but now works for LaserLine Mfg, Inc.
His web site detailing this invention is
www.bobblick.com/techref/projects/propclock/propclock.html.



Overview

I will be discussing what Bob Blick call's a "Propeller Clock".  It is a contraption that spins seven light emitting diodes giving the illusion of displaying the time in the air.  Following are three figures of the device.  Figure 1 is the clock spinning.  Figure 2 is a top view of the clock, stationary, showing the circuit board containing the microcontroller and support circuitry.  Figure 3 is a side view of the clock, stationary, showing how the LEDs are actually mounted veritcally on the horizontal main circuit board.



Figure 1 (Clock Running)

Figure 2 (Top view)

Figure 3 (Side view)

The following link is a partial parts list.  It is not complete as it doesn't list the circuit board mounted on top or the circuit board on the side holding the LEDs as well as possibly other items.  This list is compiled from his web site.

Partial Clock Parts Listing

A motor spins the "propeller" (the circuit board mounted on the top) and the microcontroller keeps track of the time and changes the pattern of the seven LEDs.  The clock also has three push buttons which allow the user to manually set the hours and minutes.  The microcontoller he used is a PIC16C84 made by Microchip (Although, it appears to be discontinued, a link to it's datasheet can be found at http://ww1.microchip.com/downloads/en/DeviceDoc/30445c.pdf).



Clock Construction

He first removed a flat reel motor from a Sharp VCR and subsequently modified it so that the main circuit board could be mounted to the top and supply power and rotational timing data to the circuit board as well (Drawing of motor changes: Motor Changes).  He then built the "propeller" (Schematic of Circuit Board: Clock Schematic) and connected it to the motor in addtion to programming the microcontroller using assembly language (Assembly Language Source code: Clock Code).



Microcontroller Operation

The version of the microcontroller used has 13 I/O pins which make up two ports.  The two ports are PORTA consisting of 5 pins labeled RA0 thru RA4 and PORTB consisting of pins labeled RB0 thru RB7.  The seven LEDs are connected to PORTB, pins RB0 thru RB6.  One of the wires coming from the motor goes to pin RA4 of PORTA which supplies data as to the rotation of the motor.  Pins RA0 thru RA3 of PORTA are used by the three push buttons to adjust the hours and minutes.  Pin RA1 has a connection to the push button for the first digit of the minutes.  Pin RA0 has a connection to the push button for the second digit of the minutes.  Pin RA3 has a connection to the push button for the hours.  The program first initializes an area of the chip called the General Purpose Registers to be used as RAM.  Then it initializes the two ports; PORTA to be used as input for timing/synchronization as well as for manually changing the time and PORTB to be used as output for the LEDs.  Next, it initializes the onboard timer register.  The program finally goes into an endless loop which calls subroutines to detect the falling edge of pin 4 on PORTA to determine rotary index and calculate rotation period, check the state of the display and change it if needed, check for one of the three buttons pressed to increment the hour or minutes or seconds manually, and finally a routine to check minute flag and increment time if a minute has passed.