Numitron Space Invader Alarm Clock
I've always like the look of Nixie tubes but their high operating voltage and short life made them less than ideal. Enter Numitron. I used the IV-9. These tubes are different from Nixies in a number of ways - they operate at 5V @ 20mA and use a 7 segment layout to form the digits. Like the Nixie, they are also encapsulated inside a vaccumm glass chamber but last a lot longer.
It turned out that this project became a 2 for 1. As I was building the clock's display, I decided to add an alarm function and that meant I needed some sort of audible component. Enter project number 2 - using the Texas Instruments 76477 Complex Sound Generator. TI made these chips back in the late 70's. I bought mine from Radio Shack (remember them?) and it's been sitting in anti-static foam for close to 40 years. Today they are still regarded as a great experimenter's chip and some are still available on auction sites. One of the chip's claim to fame is that it was used to generate the sound of the flying alien space ship in the Space Invaders arcade console. Schematics for these consoles are easy to find online.
While I made some effort to keep this clock as clean looking as possible, it is a one-off device (like all of my builds) so I wire wrapped everything rather than make a PCB. The housing and back panel could be cleaner for sure.
Here's what's in this clock and how it's used:
- Display - six IV-9 Numitron tubes. The digits are only 0.44 inches tall. The IV-13 version is almost twice the height but are far more expensive. There are 8 filaments in each tube - 7 segments for the digits and one for a somewhat ackward looking "comma". I used the 2 commas under the "hours" digits to indicate "PM" and the 2 commas under the "seconds" digit to show that the alarm is armed. In this picture (below), the PM indicators are on and the alarm is not enabled.
- Display Driver - six TI TLC5916. There's one driver per tube. They are daisy chained and programmed serially using 4 digital pins on the Metro Mini. A single 1K resistor per driver sets the max current to about 20mA per filament. These drivers can also be programmed to adjust the output current to allow dimming.
- CdS photocell - a resistive photocell located between tubes 2 and 3 (counting from the left) is used to measure the ambient light level. This is then used to dim the tubes. The brighter the ambient light, the brighter the tubes. Dimming is programmed in 10 steps.
- Adafruit Metro Mini - this is a Uno R3 Arduino shrunken into a reasonably small package. It's also pretty cheap. Power for everything is from a 5V microUSB wall wart.
- Hamlin HE3621A0510 electromechanical relay - a last minute addition, this is used to switch on/off the output from the 76477 to the speaker. The 76477 is always running but has an output-enable control pin. I found that a small but noticeable amount of noise still leaked through to the speaker when the output is disabled; not a good thing for peace and quiet at night. This relay is driven directly from a Metro Mini I/O pin so it's really easy to use.
- Adafruit DS3231 FeatherWing - sitting right behind the Metro Mini, this is the same precision real time clock chip I used in my other clock projects. It operates over I2C and has a battery backup. The alarm time is also stored on this chip to take advantage of the battery backup. However the actual alarm functionality is performed in software - it was easier to implement snoozing.
- Adjustable Step-up Boost Converter - this small board next to the Metro Mini takes the 5V USB supply and boosts it to 8.25V where the 76477 is happiest.
- TI 76477 - this is used to generate the Space Invaders alarm sound. The sound is programmable via resistors and capacitors. I thought it would be great to make the sound fully software programmable but reality set in and I settled on just one sound (the alien ship).
- Speaker and amplifier - A 1.5 inch diameter speaker produces the alarm sound. This is mounted on the underside and driven by a 2N2222A transistor.
- User interface switchs on top - one black SPST swich to enable and disable the alarm function. When enables, the two rightmost display "commas" are on. One red SPST temporary pushbutton switch for the snooze function. This switch has a built-in red LED. When the alarm goes off, this LED is turned on to remind the user that the snooze button can be used.
- User interface switchs on the back - a 1K ohm audio taper rotary volume control for the alarm, two SPST temporary pushbutton switches for "Slow" and "Fast" time setting. One SPDT on-off-on switch to select "Time" or "Alarm" or neither. When set to "Time" or "Alarm" the display goes to full brightness and the "Fast" and "Slow" buttons are used to adjust the time and alarm time respectively. When set to the center off position, the "Slow" and "Fast" buttons are locked out and do nothing. "Fast" updates time at a rate of about 1 hour per second depressed. "Slow" updates time at a rate of about 2 minutes per second depressed. Alarm time always has 00 for seconds.
The whole thing is sandwiched between two pieces of 3/16 inch polycarbonate, held together by #10 stainless steel bolts and cap nuts.
The software side contains some common components from my other clocks. The DS3231 library is the same. The initialization code I use to pre-set the clock time is the same. I found a library for the TLC5916 on github but had to modify it to conform to the way my tubes are wired and how my user interface works. The rest of the logic to manipulate the input buttons, relays and sound chip is all new.