Can anyone tell me how to construct (or find) a VI that will count and measure discrete Acoustic Emission events from a material fracture waveform (I'm studying the fracture behavior of crispy foods via microphone and contact PE sensor)? I know that the waveform peak finder will count ALL peaks within the waveform (with or without a timestamp), but I'd like to be able to count the number of individual hits corresponding to individual fractures within the material, and calculate the energy of each hit.
Thanks for the help!
How are you getting this data into LabVIEW?
What does the data look like when you get it in, and how does that correspond to the discrete Acoustic Emission events that you want to measure?
The goal of the test is to crush (or otherwise fracture) crispy foods with an Instron UTM and couple the resultant Force-Displacement data with sound data attained by microphone and/or contact sensor. The raw sound data would be a waveform of sound pressure vs. time, with individual fractures (events) contributing to the waveform as periodic increases in sound pressure separated by periods of relative quiet (background noise only). An event is characterized as the period beginning when the signal exceeds a user determined threshold value and ending when the signal falls below that value. Individual events would be separated by a user-defined minimum time between the falling signal level crossing the threshold of one event and the rising signal level crossing the threshold of the following event. Relevant data obtained would be the # of events counted per test, the duration of each event, the energy of each event, and possibly other variables of interest. The system I have in mind uses a 6009-USB (which I have already) to capture voltage signals from a load cell, and a 9234-USB (which I've ordered but haven't yet received) to simultaneously capture sound pressure data from a condenser microphone and an acoustic emission PE sensor. Thus far all I have accomplished is writing a VI that records the voltage signal from the load cell to a .lvm file. I would assume I would more or less duplicate that function for the waveform of the sound data and save it as a .lvm file also? Then I would like to write a VI that calls the .lvm file up and performs this analysis. The peak finder tool, as best I can tell, counts ALL peaks in the waveform, but can't locate / count individual events.
Thanks for the help!
The threshold detector VI would be very helpful in this issue. It detects peaks that exceed some specified width. However, you want to detect peaks that are separated from each other by some amount of time. Unless each point of data is a fixed amount of time away from the next point of data, you can't use indices to measure time.
So I think the best way to go at this is to measure valleys. That is, take the negative of your data and feed it into the threshold detector, and essentially detect when the signal is a low negative (close to zero). You can use the default width of 1, so that you can calculate the timing later. The problem is that it only detects the start of the valleys, so you'll have to reverse the data (Reverse 1D Array), and feed it through the waveform detector again. After you transform the indices of this output so they correspond to the original array, you have the indices of every time the data rises above your threshold. Combined with the indices of every time that the data drops below the threshold (from the first run of the threshold detector, you can calculate the time that each valley lasts, and decide if you should consider the valley a part of the signal or not. Then, you can use all those indices to create an array of data for every event (peak) that happened, and process each event separately to extract the data you want from it.