Step 2Construct the Clock Electronics
Microcontroller
The brains of this project is a PIC 16F628A microcontroller. It keep track of time and activates the stepper motor when needed.Buttons
The interface is very simple, it consists of two buttons. When the left button is pressed the clock advances time using the motor. When the right button is pressed the clock decrements time using the motor. The only issue is when you need to correct time by many hours you would have to keep the button pressed for a long time. The stepper motor is also always energized to prevent the gears from slipping. To overcome this issue when both buttons are pressed the stepper motor is deenergized and the minute gear can be spun freely.Motor
The motor is a unipolar stepper motor that has been harvested from an old 5 1/4 inch floppy drive. This is the motor that used to move the read write heads back and forth, to get one of this size and power you’ll need to find a nice old one. Modern floppy drives don’t have steppers with this level of torque.
This motor moves 1.8 degrees per pulse which means that with 200 pulses it will make one full rotation. Since it’s a bipolar motor it is simple for the PIC to drive it with only 4 transistors.
Code
The code is basically split into two sections, there is an iterative loop that monitors the buttons for a change in state and checks if the internal clock has crossed the 9 second mark. If one of those conditions has occurred the stepper motor is driven appropriately.
The other section of code is interrupt driven and it keeps track of time. An interrupt is triggered every 0.1 seconds and adjusts an internal clock as needed. There is a true running clock inside, if you connect the clock PIC pin 6 to a computer serial port operating at 9600 bps you will see the internal clock values update once per second. The clock value in this case is arbitrary since it is never shown and will not be the same as what the gears are displaying but this same code will be used in future projects which will use this code display time.
| « Previous Step | Download PDFView All Steps | Next Step » |
![]() |
Add Comment
|












































