Hi everyone,
For my application (a cool experiment in the dynamics of Friction) I need to measure a number of analog voltage signals both in rapid (around 100KHz sampling rate), long (~0.1sec length), measurements taken every time an interesting event happens (I use a transducer as a triggering signal) and, in parallel, short (~1msec length) acquisitions taken every 0.01sec (triggerd by a counter generate pulse train signal) taken at a rate of 10-50KHz. The architecture I chose to implement this is as follows:
I use a PCI-6251 DAQ card for the rapid measurements, and a PCI-MIO-16E-1 card for the slow measurements. Each signal is connected in parallel (I simply use a T connection to split my BNC into two cables). All the connections are RSE. Also, all the outputs of the intruments I'm acquiring from are the outputs of instrumentations amplifires (such as INA111,INA117, I note this in case output/input impdeances prove to be important). My system is run on a windows XP system, with dual core intel processors and 2GB of RAM.
The problem I encounter is this - When I connect to just the PCI-6251 card I can measure all the signals with no problem. If I then connect and measure one of the chanels in parallel to the PCI-MIO-16E-1 card I start to see, in the PCI-6251 channel, intermmitent bursts of what seems to be spikes at the sampling rate specified for the PCI-MIO-16E-1 task. I can get the same problem when I just configure and start a task (not even issue a single beginreadmultiplesamples command) for the PCI-MIO-16E-1 card, configured for continous sampling.
I have tried all sorts of schemes to get rid of this problem - connected to the PCI-MIO-16E-1 channels via a buffer/follower circuit, change to differential inputs on the PCI-MIO-16E-1, but it did not seem to solve the problem.
I hope one of you might have an idea of what;s going on here,
Many thanks,
Oded.
[detailed description of my acquisition program]
My acquisition program uses only finite samples, reference triggered
acquisition for both tasks. For the rapid task the triggereing for each
event comes from a transducer measuring some acoustic waves in my
system generated upon physically interesting events. For the slow
acquisition the triggereing is by a pulse train I generate using a
counter channel, which generates pulses at a frequency of 10-100Hz
according to my choosing. Each measurement is of ~1msec at a rate of
10-50KHz. Later, after my experiment is done I average over each of
this short sequences to obtain a vector of averaged measurements as the
10-100Hz I needed. The reason I do the slow acquisition like this,
instead of just sampling at the low rate I need is that I have to do
this synchrounsly with another acuisition done concurrently, an images
acquisition done using a PCIE-1429 image acquisition card. By using the
same 10-100Hz clock as a trigger for both acquisition I can make sure
they are synchronized.
Each time the program receives a trigger signal it finishes acquisition
and calls a callback function which saves the acquired data into RAM
and issues the next reference triggered read. The programming is very
similar for both rapid and slow acquisition, only only differences are
in the length of each measurement and the triggering signals.
[/detailed description of my acquisition program]