Electronic Vector Clock Design and Construction Notes.
In September of 1999, I got the idea that I could make a unique electronic timepiece by using a computer to draw an “analogue-style” clock face on a little round CRT. I figured that this would be a complex, difficult, and expensive project, so I deemed it prudent to start out with a “proof of concept” experiment on an existing computer, using an oscilloscope for a display.
Within two months I had the vector graphic display generator board up and running, and after another two weeks, I had a nice clock face displayed on my ‘scope screen! This gave me the confidence to proceed with the stand-alone clock.
The Control Computer
I developed the vector generator to run as a peripheral in the SCALE-7, a homebrew computer (based on the Zilog Z80 microprocessor) that I originally built in 1982 to control a music synthesizer. Then, after getting the vector generator to work, I designed a dedicated control computer. It is a single-board Z80 system having the same card-edge connections as the bus in the SCALE-7.
The board has input ports for the clock’s manual controls, and a scaler which divides a signal picked off of the AC line by 60 in order to create a 1 PPS time reference for the CPU. The CPU operates the vector generator continuously, drawing the clock face over and over; it updates the positions of the clock’s “hands” on receipt of each incoming time reference pulse. The time reference is connected to the CPU’s non-maskable interrupt input.
I used the AC line as a time reference because it is periodically corrected for drift by the managers of the electrical power grid. It has excellent long-term accuracy, but is rather less accurate in the short term. If better short-term accuracy is desired, an on-board crystal oscillator may be substituted.
I used HCT logic for everything connected to the computer's data bus, because even though the machine is all-CMOS (including the processor, a Zilog Z84C00), the ROM and RAM chips can only guarantee an output logic high (VOH) of 2.4V.
The Vector Generator
The vector generator produces a pair of output voltages that determine the position of the electron beam on the CRT screen. These voltages are based on positive 8-bit coordinate values; for example, X and Y coordinates (0,0) will place the beam at the lower left corner of the screen, and the coordinates (255,255) will place the beam on the upper right. Vectors (line segments) are drawn by dynamically moving the voltages from one coordinate position to another under the direction of the control computer, and a Z-axis “blanking” signal turns off the beam between vectors.
Here are the details:
The position coordinate voltages are generated by a pair of 8-bit digital-to-analogue converters, U11 (X) and U12 (Y). Their outputs range from - 2.5V (0) to +2.5V (255).
To draw a vector on the screen, the clock controller first writes the starting coordinates of the vector. The starting X coordinate is written into latch U9 using the X MOVE command, and the Y coordinate is written into U10 with the Y MOVE command. The DACs then produce the appropriate coordinate voltages, which are stored in capacitors C2 and C3 (X) and C5 and C6 (Y). During this “idle” condition (between vector drawing operations), the CRT is blanked, all switches U18 are closed, and switches U19 are open.
Next, the clock controller writes the ending X coordinate into latch U5 using the X STORE command.
Executing the Y DRAW command initiates the actual drawing operation. The ending Y coordinate is written into U10, and the ending X coordinate is transferred from U5 to U9, causing the DACs to generate the ending coordinate voltages. Y DRAW also opens switches U18, preserving the starting coordinate voltages on the capacitors. Control flip-flop U26B is set, instructing the vector timing controller U7 to begin the vector drawing sequence.
After 10 µs, having allowed time for the DACs to settle, the vector controller turns on the CRT beam and closes switches U19. This applies scaled versions of the ending X and Y coordinates to the capacitors C3 and C6, respectively, through the line slope resistors (VT2 and R8 for X, and VR2 and R17 for Y). The capacitors then charge or discharge through the slope resistors, slewing from the starting coordinate voltages toward the ending coordinate voltages and moving the beam across the screen. The vector controller terminates this operation after about 100 µs, and returns the system to the “idle” state (CRT blanked, U18 closed, U19 open, and U26B reset).
Of course, the capacitors charge from the starting coordinate voltages to the ending coordinate voltages on exponential curves. But since X and Y “track” simultaneously, the line segment drawn on the CRT is absolutely straight. There is a variation in spot velocity from one end of the vector to the other, but this is only barely perceptible (as a difference in vector brightness from one end to the other) on the screen.
Op-amps U17 and U20 scale the endpoint coordinate voltages in proportion to their difference from the starting point voltages, so that all vectors are drawn in approximately the same amount of time (around 100 µs) regardless of their length.
After a vector has been drawn, the ending coordinates are still present in the latches and the corresponding voltages are present on the DACs. These may serve as the starting coordinates for another vector. Since there is no need to re-write the starting coordinates, any sequence of connected vectors may be generated simply by issuing a series of new end-points.
I used another microprocessor (a Microchip PIC) as the vector timing controller, instead of a one-shot or similar, in order to reduce the number of analogue “tweaks” in the circuit.
The vector generator is calibrated using the clock’s built-in “calibration square.” First, the vector controller END MATCH value is adjusted so that the sides of the square meet at all four corners. Then, the X and Y SLOPE controls are adjusted so that the diagonals end precisely at the corners of the square.
The CRT Deflection Amplifiers
There are two identical deflection circuits, one for X and one for Y. They are simple DC-coupled differential-cascode amplifiers which increase the amplitude of the vector generator output to levels sufficient to drive the deflection plates of the CRT. They have a voltage gain of about 80 and a bandwidth of a few hundred kilohertz.
Each deflection amplifier has a GAIN control and a POSITION control, which are adjusted to provide the best display on the CRT (X and Y having the same dimensions; centered on the screen).
Both amplifiers are mounted on a homebrew PC board that I made by cutting and drilling a copper-clad FR-4 blank, drawing on the traces with a Sanford “Sharpie” permanent marker pen, and then etching in ferric chloride. I have found that the red-colored markers appear to work best for this application!
The CRT bias circuit
The CRT requires a set of bias voltages for establishing its operating point. These are taken from a string of resistors whose overall voltage drop is established by a simple high-voltage regulator consisting of Zener diodes CR9 through CR18, and Darlington-connected transistors Q4 and Q5. Four of the resistors are variable and allow adjustment of the CRT’s overall bias, brightness, focus, and astigmatism.
This circuit, like the deflection amplifiers, is mounted on a PC board. The components are well-spaced to prevent insulation problems (voltages on the board range from + 325V to – 1700V!).
The Z-axis modulation circuit
The electron beam of the CRT, normally off, is modulated on while a vector is being drawn. This action is accomplished by applying a positive voltage step to the CRT’s control grid. A difficulty is that the grid is biased close to the maximum potential in the circuit (- 1700V)!
The Z-axis circuit employs a transistor switch, operating near ground, to create the required voltage step. Another string of Zener diodes, CR19 through CR28, is connected between the switch and the control grid; since the string drops a constant potential, the voltage step at the collector of the transistor gets passed “down” to the CRT grid. The transistor’s emitter circuit ensures that the transistor is always partially conducting; this, along with the capacitor connected across the base resistor, significantly reduces the circuit’s switching time.
The Z-axis modulation circuit is mounted on another homemade PC board.
The power supply
Voltages for all of the low-potential circuits come from a commercial three-output power supply, a Power One HTAA-16W-A. The stock unit produces 5V and +/- 15V. I also required an unregulated voltage of around + 8V for the vector generator board (which has an on-board + 5V regulator; a legacy of its use in the SCALE-7). I took this + 8V from the collector of the power supply’s 5V regulator pass transistor. The 60 Hz time reference comes from one end of the transformer secondary winding (the transformer center-tap is grounded).
The CRT and deflection amplifier circuits require – 1700V and + 325V, respectively. Both of these supplies operate from the center-tapped high voltage secondary of T1. The + 325V power supply is a half-wave rectifier and filter capacitor, followed by a simple three-transistor regulator. Q1 and Q2 form the regulator’s pass element, and Q3 is the error amplifier.
The – 1700V power supply is a half-wave voltage doubler. Regulation of its output voltage is accomplished on the CRT bias circuit board, above.
Both power supplies are built on a single PC board which is housed in an aluminum box at the rear of the chassis. Transistor Q2 is mounted to the wall of the box to dissipate heat.
T1’s 6.3V winding supplies current for the CRT filament. The 5V “rectifier” winding is not used.
The clock is built into a surplus Optima cabinet. I made a heavy aluminum chassis plate to mount in the bottom of the cabinet.
The front of the CRT is supported by a ring behind the front panel, and its neck is supported by spacers and brackets on the chassis. The support ring and the protective CRT faceplate are made out of acrylic plastic. I cut the CRT light filter from Lee #117 lighting filter “gel,” which has about the same color and optical density as the filter that Tektronix used in its 2200-series oscilloscopes.
The CRT in my unit is a National Electronics 3RP1A. Just about any small electrostatic CRT will work in this project, but the 3RP1A is particularly desirable because it has a flat screen. The tube is mounted in a surplus Millen mu-metal shield.
New CRTs and shields are expensive, but surplus ones often appear at hamfests or can be salvaged from old oscilloscopes (Heathkit used the 3RP1A in many products, including the IO-10 oscilloscope and the IO-1128 TV vector monitor). An effective homebrew CRT shield may be made from cold-rolled steel tubing or sheet.
Even with the CRT shielded, the power supplies should be mounted as far away from it as possible, so that the magnetic fields surrounding the transformers do not interfere with the electron beam.
The control computer and vector generator are wire-wrapped on Vector perforated boards, which plug into a little two-slot card cage I "cut down" from a much larger multi-slot cage. One "end" of the cage, actually the top, has an opening in it so that the control computer’s firmware EPROM may be reached without having to remove the board. Signals between the two boards are wire-wrapped on the edge connectors, and the external signals (power, the manual controls, and the 60 Hz reference) are connected using wires with push-on socket contacts (Molex C-grid® or equivalent).
There is no doubt that construction of the clock could be considerably simplified by putting all of the circuits on one big board.
A note on the clock’s programming: I have deliberately written the code so that the clock’s hour hand moves in one-hour increments; that is, it immediately “snaps” from one hour to the next as it advances, rather than moving gradually as in an actual mechanical clock. If one prefers, one may easily make the display more “realistic” by adding intermediate steps to the hour hand’s coordinate table and advancing the hand at more frequent intervals.
Paul Horowitz and Winfield Hill, The Art of Electronics, 2nd Edition.
This is my favorite electronic design text. It was written for use by scientific researchers, and is totally and thoroughly practical.
The second edition of “Horowitz and Hill” emerged in 1989. I feel that the book is a bit overdue for a third edition, but the authors have expressed no interest in revising it as yet.
Steve Ciarcia, “Make Your Next Peripheral a Real Eye Opener,” Byte No. 15, pp. 78-89, 120, and 121 (November 1976).
My vector generator design was adapted from the one presented in this classic article.