Timer project

Sunday, July 22nd, 2007 23:02
[personal profile] kpreid

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:

  1. Receive parts. Assemble on breadboard; observe blinking light.
  2. 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.
  3. Put project aside for two years, partly due to lack of dedicated workspace.
  4. Buy desk for dedicated workspace; decide to continue right away. (June 30)
  5. Think about how to proceed; decide to try a DB-9 with crimped pins, already having the tools (but no experience).
  6. Before buying connector, decide to experiment with crimping using D-sub crimp pins already on hand.
  7. Succeed at crimping; realize that female pins could be just pushed onto pins of a male connector with no female connector shell; do so.
  8. After some tweaking of the software and adapter circuit, successfully download program which blinks the LED at a different rate. (July 6-8)
  9. Attach more LEDs and write a program to blink them in sequences. (July 9)
  10. Attach pushbuttons and write a program to display a binary number with increment/decrement buttons.
  11. Attach 7-segment display and write a program to display a hexadecimal digit with increment/decrement buttons.
  12. Add Timer0 interrupt routine to decrement number about every second.
  13. Add cycling display to show both digits of the 8-bit number.
  14. Change decrement button to be start/stop.
  15. Change counting to BCD instead of binary. (July 14)
  16. Attach 10-position rotary switch and change increment button to enter single digits via switch. (July 14)
  17. Replace 1-byte counter with 3-byte hours-minutes-seconds counter. (July 14)
  18. 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)
  19. Attach piezo element removed from watch and add alarm function for countdown timers. (July 16)
  20. 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.)