analogdevicesinc / scopy

A software oscilloscope and signal analysis toolset
http://wiki.analog.com/scopy
GNU General Public License v3.0
398 stars 164 forks source link

Scopy: Implement "Roll" Mode #1381

Open muhuna opened 1 year ago

muhuna commented 1 year ago

This is regarding the oscilloscope part of Scopy. When working with low frequency signals and not knowing exactly what issue one is dealing with it can often be very helpful to see a "live" stream of the samples captured. Actually, with other PC based scopes I had the chance to work with I sometimes just use a manual trigger by hitting the "stop recording" button or manually change modes of the HW under test when something happens. Not always but sometimes it could be done with trigger and some program to change modes on the HW if there is an API. But that just adds a lot of time for doing something pretty simple. Unfortunately, this isn't currently possibly with Scopy because there is no "live" updated (in my case I sometimes have to wait up to 8s to get an updated screen). Hence, it would be nice to have a "roll" mode.

rgetz commented 1 year ago

"roll" mode is plotting available data, as it comes in, without discarding the "old" data that shifts left on the screen. The "roll" rate (the rate that the shift happens) depends on the capture speed. (the faster you capture, the more you can shift over; the slower you capture, the less data you capture, the slower the shift).

For a capture rate of 100 Hz, you may only want to capture 10 samples (shift the previous data over those 10 samples), and have a screen update rate of 10 Hz... The slower the sample capture, the less samples you want to capture, to keep the screen update to a smooth rate. (you may get to a point where you only want one sample between updates).

gif

adisuciu commented 1 year ago

Even though it is not rolling mode, something that might be useful is already implemented. Increasing memory depth of the acquisition will "packetize" this data and fill the screen left to right. When the screen is filled, the buffer is reset. I'm aware that this is different than what was suggested, but it might be a workaround to prevent the huge delays in acquisition.

In regards to rolling mode, It's something we're going to look at ..

-Adrian

adisuciu commented 1 year ago

Actually, moving the trigger all the way to the left will have the same effect on "packetizing" the data without the increased data count. image For rolling mode we basically need to

Fill data right to left and do not reset plot on full buffer. Disable horizontal trigger handle and set trigger to the leftmost value (behind the scenes) Disable all triggers Force sample rate lower than some threshold (timebase >=10ms )

rgetz commented 1 year ago

yeah, blanking the screen at the end (rather than shifting it over) is one solution.

I would suggest to play with a real scope in the lab - to see how things are managed as sample rate decreases, and then try to emulate that. :)

damercer commented 1 year ago

I've seen this "packetizing" effect on long time scales but the data "packets" need to be small i.e. a few pixels / screen points per update to make the waveform roll smoothly as Robin pointed out. Then there is the question about which ADC samples to use. Do you just set a very low sample rate or average samples at a high rate to decimate to the lower rate. You either loose samples (skip over potential fast spikes) or filter out the high frequencies. Maybe you plot min/max values for a given set of over samples?

Lots of possibilities to decide the functionality.

rgetz commented 1 year ago

@damercer

yeah, older versions of waveforms did this...

The min/max was plotted behind as a shaded version of the colour, but the average was plotted as the line.

image

The described it as : "Noise Band: shows or hides the noise (min/max values)." which I don't think actually captures things properly.

image

The above frequency sweep might look like damped signal (C1), but noise band on R1 indicates that this is not true. This indicates glitches or high frequency components that might be hidden by the averaging...

what it does - and how it's described - is super important.

damercer commented 1 year ago

Waveforms does have a "roll" like mode that kicks in at 100mS/div and longer. It is not exactly a sliding / scrolling waveform that moves right to left. There is a vertical line that sweeps across the screen from left to right writing new sample points to the screen replacing old data,

Scopy programmers might want to take a look and see if that is something like what we would want to have in Scopy. -DM-

rgetz commented 1 year ago

A good example is https://forum.qt.io/topic/84532/qml-animation-trail-on-object