LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Tektronix TDS3000 averaging woes

Hi there!

 

I am trying to optimize a data acquisition program that our group is using for mass spectroscopy experiments using a Ti:Sapph laser with a repitition rate of 1KHz.  The way the experiment works is that a photodiode picks up the pulse as it enters our chamber, which acts as a trigger on our scope. After this trigger, the same pulse goes on to ionize a gas - where the fragments are separated and picked up by our detector, the signal from which then goes to our Tektronix 3054B Oscilloscope, every time the photodiode is triggered.

 

Our problem: too much noise at low signals. A quick remedy seems to just increase the averages on the scope, perhaps up to the maximum of 512.  Since the signal we are looking at is repeated according to the rep rate of our laser system (1 KHz), we would suspect that even with taking 512 "pictures" of our spectrum would not take much time. It does indeed though! It takes a full 16 seconds to take one full, averaged shot. Yowza!

 

I have done quite a bit of poking around on this and cannot find a sound solution. I can either acquire a new single acquisition each time (initiate, acquire, fetch, close) or put it in continuous acquisition mode. The problem with the continuous acquisition is that it is a "rolling" average. For example, if I stick a function generator up to the scope and change the amplitude, you can see the scope continuously averaging for ages. 

 

This is a problem because we are in fact not taking one single picture, we are taking several (hundreds, perhaps thousands even) of slight variations.  The amount of time to make these changes is nearly instantaneous -- but I do not want to scope to average the current configuration with the previous configuration.  I can add a "wait" function, but seeing as how the acquisition is continuous, depending on how different the output signal is the longer I will have to "wait" for it to give me a real average. 

 

So.. my question is: what is the quickest way to get a series of clean, highly averaged signals from a triggered signal on a TDS3000 series scope? 

 

I will try to provide some example code tonight; the main program is enormous. I am using LV 2011 32-bit and the newest firmware and labview drivers. 

 

Thanks yall!

 

Wes

0 Kudos
Message 1 of 10
(3,437 Views)

What is the sampling rate and the number of points in your scope settings?

 

Cheers

Edgar

0 Kudos
Message 2 of 10
(3,426 Views)

I am not sure of the sampling rate, maybe something like 2.5Gs/s or something. The number of points is 10,000. 

0 Kudos
Message 3 of 10
(3,407 Views)

I mean your actual sampling rate setting not the maximum. You can read the sample rate on the scope's screen. Number of points over sampling rate gives you the record length in seconds. And you must add some latency due to the scope.

Maybe this is what limits your timing.

If this is the case you can increase the sampling rate or decrease the number of points.

0 Kudos
Message 4 of 10
(3,401 Views)

At 2.5GS/s, and a 1kHz rep rate, it sounds like you are fetching over a gigabyte of data total from the scope.  While you can collect 512 points in half a second (assuming a continuous acquisition), getting that data from the scope to the computer may be the problem.  What is your interface? GPIB? USB? Ethernet?

 

Assuming this is your problem, you can try one of the following (some of which have already been mentioned):

 

  1. Only read back data you care about.  For example, if your pulses are 1ms apart, but only 1µs in length, only fetch the portion you care about instead of the whole waveform.
  2. If you need the whole thing, take it in one half second waveform, but stream back to LabVIEW in chunks, and process in chunks.  Keep your waveform buffers in the low thousands of points, if possible.  You can acquire both the photodiode pulse and trigger pulse on different channels, then read both back so you can find trigger points on a continuous waveform.  A little judicious calculation will find your locations pretty quickly.
  3. If you can, do the averaging on the scope.  Many scopes can do waveform averaging for you.  If this is one of them, use it.

Good luck.  Let us know if you need more help.

0 Kudos
Message 5 of 10
(3,389 Views)

Thank you everyone for the thoughtful replies. 

 

Stupid question.. how do I read in only the points I care about? I thought that's what the scope was already doing, as it only "fetches" the waveform which is already on the scope, which I crop around the data that I care about. 

 

Wes

0 Kudos
Message 6 of 10
(3,371 Views)

Not really a stupid question, more of an invalid suggestion.  I gave you a suggestion appropriate to the NI-SCOPE API, not the IVI one.  My apologies.  However, letting the scope do the averaging, if it is capable, would also help.  Set the acquisition type to averaging, set your number of averages, then acquire.  You will only need to fetch a single waveform - the finished average.

0 Kudos
Message 7 of 10
(3,355 Views)

Wes,

 

You may want to change your DAQ parameters, that is, set the scope for a "Single Acquisition Sequence," opposed to the "Run/Stop" button only. In this mode the scope will stop automatically when it reaches the number of averages you specifiy. You can setup a RQS with the scope to let you know when it is finished acquiring data, or you can use an operation complete query. (I believe the TEK command would be STOPAFTER SEQ) The advantage is then when you take a new data set, the averages will restart.

 

Cheers,

Andrew

0 Kudos
Message 8 of 10
(3,348 Views)

Wes

Your question is very interesting as a writing a program to take M-S from TDS3000, It take much longer time to average .and also your scope program is very like what i want to writing. Have you slove your problems? using the driver from NI ? we have write a  program using VB, after average on scope then save the averaged mass spectrum to computer is faster.

Can you  provide some example code.

 

Thanks

Sizuo

0 Kudos
Message 9 of 10
(3,309 Views)

Thank you for all the replies.

 

I have extensively programmed and re-programmed my DAQ software and can only get the scope (tds-3054b) to take ~16 or so seconds to acquire 512 waveforms (2khz trigger, 1us/div,1mV/div). It is indeed "acquiring" because I quarry the scope and this is the reply, but to me it makes no sense that if the signal is repeated 2000 times a second, then it would only take a fraction of a second to acquire 512 times.  Is it a processing speed issue? 

 

Sizuo: what sort of speed improvement do you achieve with your VB program? Can you provide any more detail? 

 

Thank you,

 

Wes

0 Kudos
Message 10 of 10
(3,243 Views)