06-15-2012 01:50 PM
Hi,
First, I am a relatively inexperienced LabVIEW developer, so my apologies in advance if this post is missing something or is otherwise lacking in clarity.
I am attempting to develop a VI to read the pressure difference between 2 Gem 3100 pressure transducers (4-20 mA output), attached to two different pressure lines, using an NI-DAQ 6008. I would like for the DAQ to read both transducers, then have the VI find the differential, and write this differential to an Excel file.
The spec sheet for these transducers may be found at: http://www.gemssensors.com/Products/Pressure/Pressure-Tranducers/Sputtered-thin-film/~/media/GemsNA/... It is a 3-wire system, with an excitation voltage between 8-24V. I am using a generic-brand external power supply to power the transducers, which provides a maximum of 24V @ 4A.
I derived my physical connection set up (for both transducers) from this thread http://forums.ni.com/t5/LabVIEW/I-am-having-trouble-Omega-PX4200-Pressure-Transducers-to-where-I/m-p..., and am relatively certain of its accuracy. For signal conditioning purposes, I am using a 500 Ohm resistor between the signal wire of each transducer and ground. On the software side, I am using the latest version of LabVIEW (2011) as well as MAX on a Windows 7 64-bit machine.
In an ideal world, the sample rate would be as high as possible, but 4 samples/second would be enough for all intents and purposes.
Given this aim, are there any sample VI's (particularly for MAX, which I have not previously used) which would be similar/applicable to this project, specifically, anything related to setting a sampling rate, calibrating the transducers, or assigning the proper channels/pins? Any resources would be greatly appreciated.
Kind Regards,
MG Wilkinson
Solved! Go to Solution.
06-15-2012 02:30 PM - edited 06-15-2012 02:36 PM
Measure the voltage across the two resistors (one resistor per 4-20mA sensor) using the differential inputs of the 600x.
When you set up the task, you can read multiple inputs at once by entering in "Dev_/AI0:1" into the physical channels, and using the "multiple channels/{single|multiple} samples" polymorphic instance.
600x can read 1kS/sec.
Do any math/conversions on the array, then just subtract the two arrays.
Could also take a few samples (10-100) at 1khz and average them together, give you a smaller effective sample rate but with less noise.
A producer-consumer loop would be a good architecture here, let the daqmx-read live in one loop and send the data through a queue to a 2nd consumer that does the math and write-to-file operations.