LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How to measure the baseline of a noisy, pulsed signal

Hi

I am measuring the torque exerted by a large motor on a shaft using a load cell and lever arm. The shaft runs at approx 150 rpm. I have attached a drawing that shows the output I get. This is a test rig.

I have written some code that measures the maximum peak out of a group of approx 5 peaks and writes this to a shift register. This gives me an idea of the maximum torque "spike".

I also wish to measure the baseline torque (due to the bearings in the machine). Even when highly filtered (my noise filter is set to 49Hz) the signal exhibits this noise which is probably due to vibration in the system. The signal is zeroed when the motor is not running.

Does anyone have an ideas on how to measure the "baseline" torque? The large spike in torque prevents me from doing a running average. Can anyone think of a way of averaging just the noisy part of the signal to get an average value? I aim to to subtract the average baseline torque from the peak value to get an idea of the torque due to the event which causes

the spike.

Any help would be greatly appreciated.

Many thanks.
0 Kudos
Message 1 of 3
(2,891 Views)

You could use a running average of the signal, just put a logical filter in front that says that the signal value is only to be fed to the averaging buffer if it's not part of a spike.

 

Delay the evaluation of each value a certain time and check if there are peaks on each side of the value that are similar in amplitude.  If there is (you could also include an amplitude range criteria here; that it should not be close to the major peaks e.g.)  - then the value is part of the baseline and should be included in the running average.

0 Kudos
Message 2 of 3
(2,881 Views)

Thanks for the reply. I understand what you are saying. However, I might have to modify my method for measuring the peaks if I choose to implement your idea. I have taken a screenshot of my "peak finder" code and attached it.

 

Bascially, the reset terminal is wired to a timer which outputs a pulse every few seconds. This resets the vi (a standard NI one I think) and sets the peak magnitude back to zero. This way, I am windowing the signal and measuring the maximum peak in every window. This is what I need to do.

 

So I could use a logical filter to feed data to the running average only if;

 

the amplitude of the signal is less than a certain threshold

and if the current value has similar low peaks either side of it

 

How would you construct the code to delay the evaluation so that the values in front and behind of the current data point can be analysed?

 

thanks again

 

0 Kudos
Message 3 of 3
(2,871 Views)