I use an ancient Telequipment D43 oscilloscope for most of my measurements.  It is in fact a couple of years older than I am.  I've had it for 30 years now, and have no plans to scrap my old friend to replace it with a modern digital oscilloscope.

The D43 is cantankerous and not what you'd call precise.  That's OK.  I'm cantankerous and not overly precise, either, so we're a good match.  I don't do much with high frequency stuff, so the 13MHz bandwidth is sufficient.  The D43 has a slight advantage over most modern scopes in that it has a 100 microvolt per division voltage scale.  I do sometimes need to look at very low level signals, and the D43 lets me do that where I would need an expensive digital scope to get the same performance.


I do occasionally need to do things with it that weren't possible (or were extremely expensive) back when the D43 was built.  I'm pretty sure that Telequipment made a camera for the D43, but I've never found one.  They sure didn't have any capability to make measurements on screen, and nobody would have considered digitizing the displayed signals for any kind of post processing back in the day.

The project itself started when I posted an answer on  the Electrical Engineering Stack Exchange. I needed to post some signal images, and ended up just taking a couple of photos with my cellphone.  That got the point across, but I didn't like the results.

I checked around the internet, and found quite a few projects for using various types of cameras to make pictures and measurements from analog oscilloscope displays.  Most were rather crude (like this "camera hood") or else didn't run on my computer (like this software for Windows that won't run on Linux.)

I gave up on existing projects and software, and set out to make my own.

The result is a program written in Python using the PyQT5 GUI toolkit (and several other things) and a 3D printed camera mount holding a Logitech C270 webcam.  It uses OpenCV to capture images from the webcam - any camera that OpenCV can talk to, you can use with the Digital D43 software.

The software is cross platform.  It is known to run on Linux and Windows, and will probably run on a Mac as well (if you've got a Mac, give it a try and let me know how it turns out.)

This is the software:

The camera looks like this:

Beside the oscilloscope is the original prototype camera made of a section of 120mm diameter sewer pipe.

You may notice that the software doesn't have a typical menu structure, and that it doesn't try to match the appearance of the physical controls. 

I learned a long time ago that on-screen replicas of mechanical switches are an absolute pain to control with a mouse and that they are wasteful of on-screen "real estate." My first experience with such things was using LabView on a monitor with a resolution of 640x480 - any wasted pixel was a serious loss in those days. 

I'm also not a fan of digging through menus to control my equipment. I've used modern DSOs, and it always cheesed me off to have to wade through multiple menu layers to get to whatever setting I needed to change.  I made the controls as simple as possible.

The "D" in "D43" is for "dual." The D43 has dual traces. The software has only a single set of cursors.  Two sets is too cluttered.  You can only make measurements on one trace at a time.

Behind the scenes, I use NumPy to manipulate the images.  Python is an interpreted language, and by itself would be too slow to trim and scale the captured images in real time.

Yes, real time. 

The camera is more or less permanently attached to the scope, and I use the software for all viewing.

The current camera is attached to the scope in place of the original hood.  It can be removed just as easily as the original hood, but that's too cumbersome to be doing all the time.  I just use  the software at...

Read more »