Many of us will possess digital oscilloscopes which offer at an affordable price an array of features once unimaginable on the analogue CRT ‘scopes of yesteryear. But those old analogue beasts were fine pieces of equipment when they were made and remain so today. So how can they find a place in the digital age?
Perhaps [Joseph Eoff] has the answer, because he’s fitted his trusty Telequipment D43 with a camera in a 3D-printed attachment, paired with a piece of cross-platform Python/Qt custom software using OpenCV to identify, digitize, and quantify the traces. The software allows viewing the either the digitized trace or the real trace, and derives measurements of voltage and frequency from them. One limitation is that despite the ‘scope being a dual-trace model, the software only has a single set of cursors to measure one trace at a time. All the code can be had from the GitHub repository, should you wish to experiment with it or extend it.
It’s worth thinking for a minute at what price point a remotely decent digital ‘scope starts, then considering the ease with which surprisingly good older analogue instruments can be found on the second-hand market for not a lot. An approach such as this one makes them an even more attractive proposition.
If you’re looking further into enhancements for an analogue ‘scope, how about a logic analyser?
13 thoughts on “Digitize An Analogue Oscilloscope”
It’s nice that you’re covering a hackaday.io article on the front page. I enjoy that much more than a popular science topic.
Also that the guy has got this to work made me think “gee I suppose openCV could be used for this, but I never would have come up with this myself”, and to me that’s the essence of hacking.
I used openCV only to read from the webcam. QT has webcam access, but it didn’t work on my computer. The openCV camera access worked perfectly on the first try.
I used numpy to do image format conversions and to do the digitization.
Don’t these scopes have sync outputs that you can just digitise with a simple ADC?
yeah but that requires messing with the insides of an expensive machine. i would touch the insides ever for fear of breaking something. this is easily reversible.
That’s exactly how Ben Krasnow hooked up his electron microscope.
The sync output (on scopes that have one) comes from the timebase only. It can tell you when a sweep starts, but won’t deliver the voltage from the signal
The amplifier circuits work on several hundred volts. Tapping into that with an ADC would be interesting, not to mention that you’d need a sampling rate at the better part of 100 million samples per second.
At which point, you’ve basically build a digital oscilloscope, using the analog scope as an analog front-end.
Digital scopes have an incredibly useful feature: capturing a signal before the trigger event occurs, which you can’t do with an analog scope. Also, even a cheap digital scope has a sample buffer size way larger than could reasonably be achieved with such a setup.
This may be useful for high-speed analog scopes (say, 500MHz and beyond), since digital scopes with such bandwidth are still very expensive. 50-100MHz, digital scopes are relatively cheap.
“Trusty” is good. The old D43 has literally exploded twice.
Yeah, not all that trusty, but it has served you for years.
If you wanted to go the completely “authentic” route, there are still a lot of oscilloscope cameras available via Ebay and the like, and you can spend time with a ruler squinting at a crummy Polaroid image and hoping for a good enough image to not get yelled at by your major professor. The Tektronix C-12 is a real beast if you can find one.
We built a scope camera mount with pcb material soldered together at the edges, and later a 3d printed one, to fit an olympus digital camera. (Then everyone started taking pics with their cellphones.)
Tangentially, at work we have the inverse of this scope: a tektronix 2467b with gpib: it’s an all analog scope but you can tell it to set the timebase, voltage offset, or gain via GPIB. (But not actually read anything back: it’s control only.)
Neat! Very cool! I wish I had the time to read into this more and work on since I was thinking doing similar with the Tektronix 7904 I got off shopgoodwill.com. Of course, I’ve not even opened the box yet… let alone started working on custom modules for. Thinking this method can work faster and thus better maybe than a GPIB connection if designed valid. Thanks for sharing! Awesome!
Very interesting project, but I have many problems. I try it with Raspbian on Raspberry PI4, I get many Python problems.. I try Manjaro linux without succes, Python problems, but not same. Now I try in windows 7 32bit laptop. No succes, program starting, but freeze. I have two webcam, but no way to change it, program always crash when starting.
Any help are welcome, I not have gitthub acces, and the developer email address unkown.
The error message (Windows 7, 32bit):
[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-xeqjxthj\o
pencv\modules\videoio\src\cap_msmf.cpp (682) CvCapture_MSMF::initStream Failed t
o set mediaType (stream 0, (640×480 @ 30) MFVideoFormat_RGB24(unsupported media
Please be kind and respectful to help make the comments section excellent. (Comment Policy)