I'm trying to use the high sampling rate of the AD2 to monitor my probe beam in a transient absorption experiment controlled in Labview. I need to run at probably between 100kHz-10MHz, depending on the response of the PD itself and how well it samples the laser, and I need to capture every pulse (the laser rep rate is between 125kHz down to 1kHz, pulses are sub 100fs visible, but the photodiode's response is slower since I'm running it in photovoltaic mode unbiased, which reduces the sampling requirement on the SD2).
Ideally, I'd like to be able to collect data for an arbitrary amount of time. In reality, this means a few seconds to collect up to 10000 spectra on my spectrometer, and the accompaning data from the photodiode via the AD2.
However, running the AD2 at 100kHz in a simple labview vi that just initialises the AD2 and reads the output of the analog channel I'm using, I can see via the waveform timestamp that every time the buffer fills up there's a ~570ms space before the next readout (eg timestamp of the 8001st datapoint from the 8000th datapoint, for a buffer of 8000 samples). This will screwup my data correction something fierce.
I'm currently using a while loop and shift register to extract the data just to see what it's giving me for now (see attached screengrab).
Is there a better way that I can readout the photodiode signal so that I'm just constantly pulling data off of the buffer, or create a circular buffer or something? I've checked the digilent examples (this code is a simplification of one) but can't see anything that helps me. Any recommendations for functions that will allow me to maximise the memory allocated for the buffers would be great, too.
Question
StuE
I'm trying to use the high sampling rate of the AD2 to monitor my probe beam in a transient absorption experiment controlled in Labview. I need to run at probably between 100kHz-10MHz, depending on the response of the PD itself and how well it samples the laser, and I need to capture every pulse (the laser rep rate is between 125kHz down to 1kHz, pulses are sub 100fs visible, but the photodiode's response is slower since I'm running it in photovoltaic mode unbiased, which reduces the sampling requirement on the SD2).
Ideally, I'd like to be able to collect data for an arbitrary amount of time. In reality, this means a few seconds to collect up to 10000 spectra on my spectrometer, and the accompaning data from the photodiode via the AD2.
However, running the AD2 at 100kHz in a simple labview vi that just initialises the AD2 and reads the output of the analog channel I'm using, I can see via the waveform timestamp that every time the buffer fills up there's a ~570ms space before the next readout (eg timestamp of the 8001st datapoint from the 8000th datapoint, for a buffer of 8000 samples). This will screwup my data correction something fierce.
I'm currently using a while loop and shift register to extract the data just to see what it's giving me for now (see attached screengrab).
Is there a better way that I can readout the photodiode signal so that I'm just constantly pulling data off of the buffer, or create a circular buffer or something? I've checked the digilent examples (this code is a simplification of one) but can't see anything that helps me. Any recommendations for functions that will allow me to maximise the memory allocated for the buffers would be great, too.
Cheers!
Link to comment
Share on other sites
6 answers to this question
Recommended Posts
Archived
This topic is now archived and is closed to further replies.