What an Oscilloscope Clock Is

An oscilloscope clock uses a cathode-ray tube to display time as vector graphics — not pixels. The electron beam is steered by two pairs of deflection plates, X and Y, and by modulating the voltages on those plates you can draw anything the beam can trace fast enough to appear solid to the eye. A clock built this way draws its digits as arcs and line segments, refreshing at around 50 frames per second so the phosphor glow appears continuous.

The reference build that inspired this project is at oscilloclock.com. That’s a fully realized version — hundreds of hand-soldered components, a custom vector rendering engine, and a finished clock that tells time. I did not get nearly that far. What I built was the hardware foundation: the power supply, the signal conditioning, and a working X/Y deflection circuit. The clock logic itself is a problem for another day.

The Power Supply

The first challenge with any CRT project is high voltage. A scope tube needs several hundred volts to accelerate the electron beam, which is a different class of problem from anything running off 5V or 12V rails. The power supply has to be stable enough that the beam doesn’t wander, current-limited enough that a fault doesn’t destroy anything, and isolated enough that you don’t become part of the circuit.

Getting this right took the most time. The videos below show the early testing stages — probing the output, checking stability, verifying that the voltage holds under load.

Voltage Dividers and X/Y Deflection

With the power supply stable, the next step was building the voltage dividers that condition the high-voltage rails down to the signal levels the deflection plates need. The deflection plates respond to differential voltage — steer the beam left or right by changing the balance between X+ and X−, up or down by changing Y+ and Y−.

Getting the divider ratios right is a precision exercise. Too much attenuation and you lose deflection range; too little and you’re feeding signal-level logic into a high-voltage node. The goal is a clean, linear relationship between the input voltage and beam position across the full screen area.

The ADC Circuit and Getting Vectors on the Tube

To actually drive the X/Y plates from a microcontroller, I built an ADC circuit — a digital-to-analog converter that takes digital position values and produces the analog voltages the deflection system expects. This is the bridge between anything programmable and the physical beam.

With the ADC wired up, I connected an Arduino and loaded example firmware to test the deflection system end to end. It worked — the beam moved, shapes appeared on the phosphor, and the tube was drawing vectors. That moment of seeing the electron beam actually trace something on the screen makes all the high-voltage work feel worth it.

Where It Stopped

The full hardware stack works — power supply, voltage dividers, ADC, Arduino driving the deflection plates. Vectors draw on the tube. What I didn’t get to was writing my own firmware from scratch and doing a clean final assembly in a custom chassis. The project as it stands is a working proof of concept spread across a workbench, not a finished object.

The gap between “it works on the bench with example code” and “it lives in a proper enclosure running custom firmware” is where most hardware projects stall, and this one was no exception.

It’s a project I’d like to finish. The phosphor glow of a CRT drawing vectors in real time is genuinely different from any modern display — there’s something satisfying about a clock that works by bending an electron beam with physics rather than lighting up pixels with software.

If you want to see what a complete build looks like, oscilloclock.com is the reference. That’s the destination. I got the foundation working — just haven’t made it to the finish line yet.

The related code and notes are on Gitea: BrainChurts/RetroCRT