SB-630 Station Console: An Update of an Old “Timer”
Or, "Most Accurate" SB-630: Retro Style Desk Accessory, Updated on a Budget
A while back, I was given an SB-630 Station Console by an old timer acquaintance who was long out of Amateur Radio and had parted with the rest of his Heathkit station years before — the SB-630 was all that was left. I appreciated it and returned the favor by swapping him a dual-band J-Pole that I'd made so tha the stay on the 2-meter repeaters.
The SB-630 is a nice, but not especially necessary station accessory. Some hams built them just to have the complete SB-line. The console consists of a passive SWR meter, a phone patch, a motorized Digital Clock and the unique feature: a 10-minute Identification Timer. Better versions of the SWR Meter and Phone Patch were sold separately; the clock-timer was unique, so the SB-630 was merely an opportunity to wrap them all up in a single desktop accessory. Since there's nothing unique about the SWR Meter or the Phone Patch, for my purposes, I'll focus on the clock-timer combination.
The clock is simple: its digital readout shows the hour, minute, and second and has an electric motor
that runs whenever the SB-630 is plugged in. It is fairly quiet and has a soft 'ticka-ticka-ticka-...'
as it turns the drums with the digits painted on them. It's digital: get it?
The 10-Minute Timer is another matter, reminding the operator to comply with FCC regulations and identify at proper intervals. You can choose a visual (lamp) reminder or a visual reminder, or both visual and aural reminders, can be selected by a switch on the front panel. If you ID a little early, the timer can be reset at any time to start a new ten minute interval.
I'm ever fascinated by the era of tubes, and the SB-630 seems to be the ultimate expression
of 'See What Amazing Things We Can Do With Tubes!'. The ID-Timer is a basic neon-lamp relaxation
oscillator, incorporating an RC circuit — including a 144-megohm resistance — to trigger
a relay every 10-minutes. Pressing the 'reset' button clears the charge in the capacitor and restarts the
cycle. For all this we need a dual secondary transformer (150V / 6.3V), a regulator tube (OA2), and a
6EW6 tube to act as the Relay Control Switch, in addition to the other electro-mechanical items, such
as the relay and a (LOUD) mechanical buzzer. All this for a 10-minute timer.
I'd repaired the timer by rebuilding the 144-meg resistance (ten 10-meg resistors and two 22-meg resistors on a mini-perfboard) and replacing a few capacitors. But, I was unsatisfied with the clock. In the end, I gave the clock assembly to a fellow ham who needed one to keep his SB-630 running. The ID-Timer works, but puts off a lot of heat, is not very accurate, and uses a number of tubes and a transformer that I'd like to 'harvest' to use in other more worthy tube projects.
The SB-630 is ripe for tinkering: they're readily available (hamfests, ebay) and cheap — usually under $20 — everyone wants the more desirable SB-610 or SB-614 Station Monitor, or the newer SB-634 Console (which actually has gas-discharge digits!) The SB-630 is a great choice for an update.
My plan was to build a new clock display, keeping some of the old style (albeiet 1970's style, not 60's), and drive them with an Arduino micro controller. The real-time clock is provided by a Maxim DS1307 (formerly Dallas Semiconductor) 8-pin IC. The chip is tiny, uses very little current when it's 'on', and is backed up (according to the datasheet for 10 years!) by a single CR2032 3-volt lithium battery. As 'icing on top', the DS1307 can supply a 1-second 'tick' square wave which can provide the Arduino with an accurate 'tick' count.
I started with yet another Bare-Bones Board (BBB) from Modern Device Company. Actually I used his RBBB Arduino which is VERY tiny indeed. The Arduino is an open platform, the development tools are free, and can be programmed in a variant of "C" language.
The Initial Strategery
Well, a set of .3-inch-high 7-segment Displays fit perfectly in the little window provided for the clock.
But there's only enough room for HH:MM:SS. I also wanted to keep a running minute-count for the Identify
Timer so I can know where I am in the 10-minutes. So, no MM-DD-YYYY or Day of the Week. I worked with this
idea for quite a while. I even got the SB-630 stripped of it's timer parts and a new transformer in
place. I was ready to start on the 7-segment LED Display panel for the front. It seemed... too complex.
I was using
CD4511 BCD-to-7 Segment Latches
so there'd be a 4-digit BCD buss back to the Arduino. The latches make it easy to write to the display
and not have the Arduino handle refresh. But still, there'd be much soldering: 6 + 1 digits, times
7 segments each. Plus two decimal points, blinking. I did a 'pin budget' for the Arduino and wrote
some 'starter' code and I was out of 'pins': I couldn't do some of the things I'd like to do as just
running the clock and the timer used all of my resources. From my original design, I accumulated
objections are as follows:
- Part Count is fairly high - 7 LED Displays, 7 CD4511 Latches
- CD4511s reduce the number of control lines, but still take up all the Arduino pins
- Although straightforward, wiring is extensive (in lieu of a PC board), and prone to future failures.
- Limited display space - just the clock, no day or date, plus one minute digit for the timer
- Digits only - limited by the CD4511s
- Power draw - the 7-segment displays, still pull quite a load (7 x 7 x 5ma = 245ma on average).
- I've decided on a small transformer and I don't want a lot of heat or power draw - this was the reason for changing away from tubes.
So, for now; I have to halt this leg of the design and return to an LCD display, which will allow me
to use the full clock features (time, date and day-of-week), handle the ID Timer and give more than
a single digit of feedback on countdown.
Off-handedly, I picked up a LCD display that I'd used for another project and test-fit it to the window-opening in the SB-630. Perfect Fit! I still wanted the red look so I ordered a RED-on-Black Backlit LCD Display from SparkFun.
An Optimal Solution
The LED choice is simple to implement and elegant. An 11-line buss goes back to the main-board, providing power and ground, LCD contrast and LED backlight. Only 4-bits data and 3-bits (Enable, R/W, and RS) control. An LCD with 2 Lines by 16 Characters gives enough 'real-estate' to show time, date, and day of week, as well as the 10-minute ID Timer. As an added plus, I can display text.
I've created a little document to help template LCD displays.
Here, I've dummied up some sample's of how the time, date, day-of-week, and ID timer info can play out
on the 16 x 2 display:
It's a bit cramped, but I'm able to show everything I wanted to display, and I have plenty of Arduino pins left to trigger the 'IDENTIFY' lamps and 'audio tone', and a few pins left for future expansion.
But Wait! Now how much would you pay?
The idea came up: rather than manually setting the clock with a separate Sketch file, which would be a) finicky, and b) inaccurate, I thought it would be neat to write a .Net application to do it for me. In fact, I can fetch the correct time from a list of Internet Time servers and send that data down to the SB-630 clock via the serial cable. This became Version 1.
Version 2 became possible when I noticed the CMMR-6P-60 WWVB Receiver. A very simple and inexpensive ($10) device provides a pulse when the WWVB Transmitter reduces it's power, receiving the WWVB time signal. The package is available from SparkFun, Digikey and a number of other providers.
The Arduino is capable of handling two interrupts (INT1, and INT0). I first tied the CMMR-6P-60 to INT1 in order to time each 'tick' from the WWVB receiver. This provides a way to decode the WWVB Time signal. The INT0 is tied to the 1 second square-wave output from the DS1307, providing an accurate 1-second tick which can be used to advance the displayed clock.
A full list of features added onto the board is now extensive:
- Reliable, accurate UTC Time shown on a backlit display
- The 10-minute count-down ID Timer
- An old feature remains: Alarm Lamp or Lamp and Buzzer
- Battery Backed up Real-Time Clock (RTC)- 10 years with a CR2032 lithium battery
- WWVB Receiver to periodically sync the RTC when propagation allows
- Clock runs from battey-backed RTC when WWVB propagation does not allow
- An LM35 temperature IC, providing room temperature in Celcius and (by calculation) Farenheit
- A small, custom-character in the LCD to show recent WWVB Signal Strength
- Switch the ID Timer, ID Lamps and (optional) ID Buzzer from the existing SB-630 Switches
- Low Power, No Heat. Probably can run from batteries or a 9V wall-wart.
Version 1 — this was my original version and has no WWVB receiver. Time is synced from a USB connection from the Arduino's programming pins to USB and syncs with NTP time.
- Version 1 - tested with Arduino 0015.
- Sync SB-630 Clock with NTP - .Net App, Click-Once Install with IE 7 / IE 8
Version 2 — Final incarnation includes the WWVB receiver, when VLF propagation is good between Texas an Colorado (sometimes during the day and almost always in the evening.), a battery-backed DS1307 Real-Time Clock (when VLF propagation is not good), a temperature sensor, and the 10-minute ID Timer.
- Version 2.3 Source
- Thanks to 'Capt Tagon's superb WWVB handling code, and to all others before: The Arduino "Almost Accurate Clock".
- 12/14/2010 - V2.1 - Repaired possible error with month = 12; repaired instability issue with extra %s in date format string. Includes a fresh DS1307 Real-Time Clock Library, which also addresses the built-in, battery-backed storage (56 bytes).
- 1/4/2010 - V2.2 - Repaired issue with Zeller's Congruence, calculating Day Of Week from Date (WWVB protocol gives only day of year, so we compute the day of month and day of week).
- 3/7/2011 - V2.3 - REPLACED Zeller's Congruance code with a different approach.
This is an almost completely 'modular' project, since it consists of a number of individual modules, wired together very few discrete components. For the modules, there is (1) the RBBB Arduino board, (2) the C-MAX WWVB receiver, (3) the DS1307 IC Sub-board, (4) a backlit LCD Display (SparkFun LCD-00791). Although the DS1307 Real-Time Clock is discrete, it's been built into a 1 1/4" x 1 1/4" along with a clock crystal and a 3V lithium battery. This module could be replaced with a Chronodot from Macetech.com.
Additional discrete components are used in the power supply, a 5V Relay Double Pole relay to switch the (original) lamps and (depending on the front-switch setting) the audio alarm, and two trim-pots for the Brightness and Contrast settings for the LCD. In addition, an LM35 IC stands alone on the main board. A couple of LEDs are provided internally to observe whether the WWVB receiver is receiving (and if the Arduino is accepting interrupts from it).