Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Analyzing a continuously acquired signal, performing an action, and analyzing the signal for changes

I apologize if this question is poorly phrased -- I was not able to find any posts in the help (but possibly due to my poor wording).  I have a piezoelectric actuator and transducer stack; when I apply a voltage, the stack moves.  When the stack moves, it creates a reaction force that the transducer portion converts to a AC voltage signal, allowing the measurement of force.  All of the electronics are in place (charge converter, signal conditioner, etc.) so that I am able to obtain an AC signal.  I can measure this signal in Labview.  I also have all of the software/hardware interfaces in place to control the actuator portion through labview.

 

What I want to do, however, is measure the peak voltage from the transducer, apply a voltage to the transducer, and then measure the subsequent peak voltage from the transducer.  The difference in peak voltages will give a force change.  Absolute peak voltage is meaningless in this application, since the signal decays (~5-10% of peak voltage per second).  It is important to quickly apply the actuator voltage and then measure the resultant transducer signal after initially measuring the transducer signal.

 

Ultimately, I am hoping to create a program to measure load vs. displacement, so I will be continuously performing the measure-apply-measure cycle until a particular peak displacement is reached.

 

Any help/guidance would be greatly appreciated.  These forums have been an immense help to my work on this project in the past.  Thanks!

 

Chad Eckert

0 Kudos
Message 1 of 9
(4,228 Views)

Hello Chad,

 

I understand that you would like to design a program in LabVIEW that would measure the peak voltage from a transducer, apply a voltage to that transducer, and then measure the peak voltage after a voltage has been applied. While I know that you are using LabVIEW, I would like to know what development system of LabVIEW you have, as this will affect what tools you have to program with.  It would also be useful to know what hardware you have so that any recommendations I can come up with will make sense, and actually apply to what you have. To start with, I'm thinking that you could perform synchronized analog input and analog output with peak detection of the acquired waveforms.  Do you intend for the program to run indefinitely or for a finite amount of time?

 

Best wishes,

Wallace F.

National Instruments
Applications Engineer
0 Kudos
Message 2 of 9
(4,208 Views)

Hi Wallace,

 

Thanks for the reply.   I am running LabView version 8.5.1 (Professional Development System).

 

The intent of the system is to test the mechanical properties of a material in two directions.  This requires real-time strain calculation based on tracking markers place on the material (I have this worked out so far) and real-time measurement of force on the loading points on the material.  Ideally, the operator will specify the peak load to be reached in the x and y axes and provided a loading/unloading half-cycle time (i.e.. 15 secs to reach peak load).  The system will then load the sample according to the peak load/half cycle time and record the resultant strain along the way.  I know that I will need to incorporate a loading correction algorithm to attempt to keep both axes loading at the same rate (these materials are nonlinear, but I want the loading rate to be constant).  Loading is controlled based on actuator movement; as a voltage is applied to the actuator, it moves, which pulls on the attached sample.  The sample creates a reaction force against the actuator tip which the transduction portion of the stack perceives as a measurable load.  Since the load signal decays in these transducers, the goal is to measure the change in transducer voltage as the actuator moves (the change in signal is proportional to a change in load).

 

My system is an eclectic mix of hardware: 

 

1.  The piezoelectric transducers/actuators are from a German company, Piezomechanik; each stack contains a force sensing portion and an actuation portion; I have twelve such stacks (three per side of the device).

2.  The actuation is controlled via four PCI voltage control cards (from Piezomechanik).  Sub-VIs based on the VISA software operate the cards and attached actuators.  I can specify a voltage to be applied to any actuator on any of the four boards.

3.  Transducer signals coming from the piezo stacks are converted to voltage signals via individual charge converters from PCB (422E12 model).

4.  Signals from the charge converters are then processed in a 12 channel ICP signal conditioner from PCB (483A).

5.  Coax cables then connect each channel output to an individual input on a BNC-2111 connector block.

6.  Signals are then sent to a PCIe-6259 DAQ board.

 

The signals read in by Labview are AC.

 

Thanks again, and I apologize for the long description of the device/components.  I appreciate any help/advice/suggestions you have!

 

 

Chad

0 Kudos
Message 3 of 9
(4,198 Views)

Hi Chad,

 

Attached is a VI that might help in your application. What this VI does is that it generates an output signal, and simultaneously record the signal on different analog in channels.

Then the input from the different input channels is saved in an array.

When they are in the array, you can do all sorts of signal processing on them.

In case you are not experienced in LabVIEW, I recommend using the Context Help (ctrl+H) in LabVIEW to know what each different VI does.

Please let me know if you have any other questions.

 

Best Regards,

Faris A.

Bueller
0 Kudos
Message 4 of 9
(4,158 Views)

Here's the attachment.

 

Bueller
0 Kudos
Message 5 of 9
(4,156 Views)

Hi Faris,

 

Thanks for the VI.  I took a look at it and tried to run it.  I guess I am still somewhat confused on how to make my application work, even with the help of your VI.  I am unfamiliar with the sample clock timing feature, though I did read up on the help file.  In my application, I want to measure the signal, then perform an action, then measure the same signal again.  A calculation based on the difference in peak amplitudes of the before and after signals helps guide the magnitude of the subsequent iteration's action.

 

I am probably just not seeing how your program fully operates.  I apologize for the confusion!

 

Chad 

0 Kudos
Message 6 of 9
(4,122 Views)

Hi Chad,

 

It would be much helpful to know whether how fast you want your application to be. Are you looking to have an output within a ms range from the moment you get your input?

If that is the case, that can be done on a software level instead of using hardware triggers.

waiting for your reply

 

Best Regards,

Faris A 

Bueller
0 Kudos
Message 7 of 9
(4,084 Views)

Hi Faris,

 

Sorry for the delay in reply; I started to work though an preliminary test code for the application and have attached the VI.  Unfortunately, the ~150 ms between successive signal measurements is not quick enough for this application. I would like the application to be fairly quick, i.e.. within 10 ms from the input.

 

In the VI, I sample 150 points at KHz (the signal has a frequency around 50 Hz) giving roughly 5-6 cycles of data.  I need to run this through a bandpass filter to remove low frequency noise (from capacitance issues) and high frequency noise (too close to the piezo's natural frequency).  I then need to resample the data to remove signal artifacts from the filter application.  Finally, I calculate the RMS of the signal.  This whole process takes about ~150 ms.  After this, a voltage is applied to the actuator portion, and the entire signal input/signal processing/signal RMS calculation takes place again.  Finally, the difference in the two RMS values is calculated.  Eventually, this difference will be used to determine what voltage to send to the actuator.

 

I guess the bigger issue of interest would be to constantly measure the signal (continuously instead of a finite sample number), apply the filter, and then measure the RMS at specific time points (without starting and stopping the signal acquisition process as in my attached VI).  In between the RMS measurements, I would like to apply the voltage to the actuator.

 

Thanks again for all of your help.  My code is very messy, and I apologize for this.

 

Thanks,

 

Chad 

0 Kudos
Message 8 of 9
(4,054 Views)

Hi Chad,  

 

I was just reading over this forum and I wanted to give you something that might help.  I attached an analog input program that uses continous sampling instead of finite to show the setup(which you said was desired in your program).  The sample clock vi tells the DAQ card when to acquire samples (in my program this is set to 1KHz) and store them in the onboard buffer.  The read vi then tells how many samples it wants to take off of the onboard memory.  So, on the first iteration of the while loop, 100 points are taken off of buffer and the signal is processed.  Once this data manipulation is finished, the card will then take the next 100 samples(in the meantime the card is still reading samples and saving them to the onboard buffer at a rate of 1KHz) and run the signal through the filters and math.  However, you could experience problems with overflowing the buffer if you are not reading off of the buffer fast enough (depending on how long the signal processing takes). 

 

 Another option would be to use the producer-consumer architecture.  I attached some links that describe this programming method and some basic examples.  Basically, this method is most useful when you want to have a loop that processes the data while you are still taking data off of the buffer.

 

Application Design Patterns: Producer/Consumer

Using Producer/Consumer Architecture for DAQmx Read and Write to File

Message Edited by Jordan F on 12-02-2008 03:38 PM
Regards,
Jordan F
National Instruments
0 Kudos
Message 9 of 9
(4,033 Views)