Scope-O-Matic, an Arduino Nano based oscilloscope in Eurorack format

Scope-O-Matic

Scope-O-Matic is an oscilloscope in Euro Rack format build using an arduino nano. It is based on a design described in this blog.

The code the arduino runs is based on software version 2.0. Version 3 was released a few days ago on the blog but the changes are of no consequence for the use case described here. You will need an arduino nano with an Atmel ATMega 328p for this (Note: a 168p does not have enough memory for the program). Changes made to the code simplify what is displayed on the screen. The use case this was done for is to have a simple wave display that shows the waveform of signals used in a modular synthesis system. The original code was meant for doing measurements. All the original C++ code is still there, it just does not show that much info anymore as I was only interested in the waveform and not in doing exact measurements. The changes are implemented in such a way that they can be easily adapted to your need. The code can be found in the Scope-O-Matic repository.

The electronics were adapted from the original circuit diagram so that they are able to show AC-signals as well. This meant adding a few resistors to the original circuit’s input stage to create a DC-offset. Potentiometer Rv1 was added as a signal attenuator. Make sure to check that the signal is properly attenuated otherwise it will be clipped and What You See is Not What You Hear (WYSINWYH) !

Build

The circuit is so simple that I did not investing any time in designing a strip board. I designed a front panel in Euro Rack format and went from there. Apart from the nano there are only a few components needed and most of them are attached to the panel. If you want to build this in kosmo style, you will need to make some changes obviously.

I started hot glueing the toggle buttons to the 3D-printed panel ( STL and others files can be found in the Scope-O-Matic repository).

I think I used the 10H version of this type of button:

HTB16M8MB8mWBuNkSndVq6AsApXaF_small

Next I added the potentiometer and the 3.5 mm jack inputs and glued the LEDs in place.
As you can see there is not much room left for soldering, so you need a thin soldering tip to be able to do that. One LED shows that the scope is triggering, the other flashes when you press one of the buttons of the scope. I used some grey nail polish to darken the LEDs on the nano. They were flashing a bit too brightly to my taste and I could see them in my euro rack flashing between the panels.

The PCB contains only a few components.

The eagle eyed among you have probably spotted it. The socket for the power was damaged at some point but I left it in there. The text in black ‘ROOD’ signals where the red wire of the flat cable should go. I used a special type which has long copper tracks which are ideal for power and ground tracks.

You can get those from aliexpress

As you can see the pcb is hot-glued the front panel via a shallow rail.
The nano is not glued to the pcb, so that I can easily exchange it should the need arise.
I didn’t have connectors the size the nano needs, so I used a few for the pins I needed.

The display fits snuggly in a small pocket I created in the panel.

It is wired to the pcb via a hole in the pocket on the back side.

Scope-O-Matic

For the 1st scope I made I used a white display.

I’ve made a 2nd one with a yellow display and added an extra jack input to it (RHS of the picture below). This 2nd jack is meant as a thru. This makes is easier if e.g. you want to see the signal that is on some module which already has some patch cable connected to it. Patch that cable in the thru input of the scope and the scope into the module. This basically saves you from needing a multiple to connect the scope to an input and the 2nd wire to the module.

Usage

The time base of the scope can be set via the buttons from very fast i.e. 200 micro seconds to relatively slow i.e. 200 milli seconds, in 9 steps. You can set the triggering to positive or negative going and set the display on hold. The device is auto scaling but via the menu system you can also choose a scale. For more details I refer you to the original blog. Because the software has an auto scaling feature, you can best either choose the A5V or A50V setting and it will adapt to the input voltage. Due to the DC-offset circuitry that was added the other settings may display the signal with an offset from the screen center. So you better not use those. As already mentioned, use the atenuator knob to prevent high amplitude signals from clipping.

Any settings you make are written to the Nano’s EEPROM, so are retained at startup.

In this video you can see my 2 oscilloscopes in action:

[Edit] Please check the rest of this thread for updated versions of the schematic, software and build.

24 Likes

That’s a very beautiful project and a great writeup. I particularly like the way you chose to simplify the display to show only the information you wanted.

Thank you.

7 Likes

Superb project. Added to my list. Many thanks.

2 Likes

Will review that over the weekend and craft a PCB and panel :wink:

Should only take a couple of hours :wink:

Thanks For sharing

5 Likes

This is excellent @Jos - Thank you for sharing :smiley:

5 Likes

Thanks for the positive response y’all !

My pleasure! I was surprised how well it worked out and how nice such a display looks. Given that I do lots of measuring when I’m working on things, why not do so when making music?

@Farabide If you do make this, please let us see your build. I’m curious to see how a kosmo version would look like ( I take it you would make a kosmo version ).

@twinturbo Will this be Kosmo or some other format?

5 Likes

Thanks! I did a bit more than that. In the code most objects written to the screen had fixed x and y coordinates. By isolating and making them all relative to one start-x and start-y so to speak, I made the content of the display relocatable and more manageable. In that way it was easier to have the signal displayed over the full width of the screen. In the original version there used to be a y-axis that was annotated and took up space on the screen. Luckily the original software was well structured, so this was not a hard thing to do.

3 Likes

There’s other formats :wink:

I can make the PCB down to Euro I guess. Plenty of space I Imagain.

Could do a Funky Cuttable front Panel for “EuMo”

1 Like

Where do you get R ohm resistors? :grinning:

image

Plenty of space I Imagine.

If you run out of space, you could do the “you pressed a button” LED bit in software instead.

2 Likes

Oops, forgot those ones evidently. But shall be corrected swiftly.

[Edit] Yep I remember now, KiCad crashed after I had finished but apparently those values had not been saved.

3 Likes

Of course. The hardware design is the original one published on the blog.

2 Likes

:laughing: BRB, making an eBay listing for R ohm resistors

2 Likes

Ah, an other enthusiast who is going to build one?

i have a batch of infinite ohm’s in stock. they are £5 each as they are tricky to ship without people complaining the pack was empty… got the same issue with my batch of Air Guitars…

3 Likes

I will of course share my build @Jos
I love the utility and presence of Sam’s kosmo format but as im more composer than performer these days my format is flexible. Euro is too small for me, especially DIY but regardless of final dimensions I will share.
2 questions
Is your code the same as the blog?
How did you stumble across this site?

1 Like

The code is not the same as the blog. I changed the bit that sends output to the screen. It now shows the waveform of the signal over the full width and I left out all measured values like ‘duty cycle’ and ‘frequency’ and mean voltage etc. But this is configurable in the version I put on github. I came across this site because someone looking for an oscilloscope mentioned it on this LMNC forum.

2 Likes

And there it is…always read the entire forum before you ask… kidding! There is no such thing as a DAQ folks.
@Jos , could you edit in a link to your github page. A resource like that needs to be namedropped as much as possible.

2 Likes

I had already mentioned it twice, but I’m happy to mention it once more.

3 Likes

Ok… I missed that! Apologies!
So… you should at least read the whole post carefully before asking … (shamed)

1 Like

Does the code (yours or original) have an option to display frequency? That’d be handy.

1 Like