A digital camera for analog oscilloscopes

DSO functions for a CRO

Public Chat
Similar projects worth following
This is a combination of hardware and software to add some of the functionality of a digital storage oscilloscope (DSO) to my Telequipment D43 cathode ray oscilloscope (CRO.)

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 »

  • Binary release of the Digital D43

    Joseph Eoff05/25/2021 at 19:33 0 comments

    I have long intended to provide an easier to use version of the D43 oscilloscope software  that doesn't require the user to jump through hoops to install it.

    I finally got around to figuring out how to build a binary package of a Python program.  What's better, I found it is possible to do so even for operating systems I don't have access to.

    I have put a set of binary distributions of the D43 software up on the D43 GitHub "Releases" page.

    Just download the appropriate file and start it up - no installation necessary.

    Download files:

    • D43 (Linux)
    • D43.exe (Windows)
    • (macOS)

    I have tested the Linux and Windows versions.  I don't have any access to a macOS system at all, so it is still untested just like the program itself.

    D43 on Windows:

    It looks pretty much like it does on Linux - which is kind of the point of cross platform development.  It works just as well on Windows as it does on Linux.

    If you have a way to test it on macOS, drop me a line here or in the comments of the blog and let me know how it turns out.

    I'll be updating my other PyQt5 projects and making distributable binaries of them in the next few days.

    Linux users need to make sure that their system uses GLIBC version 2.27 or higher.
    I've tested the Windows version on Windows 10.  It ought to work on other versions, but it is untested.

View project log

Enjoy this project?



twinklegarg77 wrote 08/01/2022 at 04:56 point

A good website for questions like that is but you better get more specific, because when you ask it like that it will likely be closed as too broad.

  Are you sure? yes | no

Dan Maloney wrote 05/26/2020 at 23:26 point

I like that you're not just grabbing screenshots but actually adding functionality to the old workhorse. Nice job!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates