Timer project
Sunday, July 22nd, 2007 23:02![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
This is my first nontrivial electronics project. The goal is to create a better kitchen timer; over the years I’ve had many break, and the model I’m currently using has an annoying UI and is usually too loud.
Ben Jackson sent me a PIC16F877 microcontroller and a bunch of parts, and I've finally gotten around to doing something with them. (Some of the parts in the photo I already had.)
I've written a separate page with more details on the timer prototype and my plans.
Steps to get to this point:
- Receive parts. Assemble on breadboard; observe blinking light.
- Purchase solder-type 9-pin female DB-9 connector to make cable for programming the PIC. Attempt to solder connector; have trouble with old soldering iron.
- Put project aside for two years, partly due to lack of dedicated workspace.
- Buy desk for dedicated workspace; decide to continue right away. (June 30)
- Think about how to proceed; decide to try a DB-9 with crimped pins, already having the tools (but no experience).
- Before buying connector, decide to experiment with crimping using D-sub crimp pins already on hand.
- Succeed at crimping; realize that female pins could be just pushed onto pins of a male connector with no female connector shell; do so.
- After some tweaking of the software and adapter circuit, successfully download program which blinks the LED at a different rate. (July 6-8)
- Attach more LEDs and write a program to blink them in sequences. (July 9)
- Attach pushbuttons and write a program to display a binary number with increment/decrement buttons.
- Attach 7-segment display and write a program to display a hexadecimal digit with increment/decrement buttons.
- Add Timer0 interrupt routine to decrement number about every second.
- Add cycling display to show both digits of the 8-bit number.
- Change decrement button to be start/stop.
- Change counting to BCD instead of binary. (July 14)
- Attach 10-position rotary switch and change increment button to enter single digits via switch. (July 14)
- Replace 1-byte counter with 3-byte hours-minutes-seconds counter. (July 14)
- Attach DIP switch (being the only remaining switch with breadboard-compatible pins), and add four independent timers to program, using the PIC's bank selector to build an array-of-structures. (July 15)
- Attach piezo element removed from watch and add alarm function for countdown timers. (July 16)
- Create circuit schematic to document what circuit the program expects. (July 17)
The big things remaining are a multi-digit LCD display, calibration to real time, better input devices, and building it into a case.
(Please let me know if you'd like more information about some part.)