Real-Time Measurement and Control

cancel
Showing results for 
Search instead for 
Did you mean: 

Best way to smooth load cell data for a GUI

We have a cRIO with a 9237 card reading full bridge Futek tension/compression load cells. We are reading torque data from a running engine so it is obviously not a smooth signal. There is the obvious question of what methods would work best for us, but my first question is whether it is best to do this in the cRIO main box, the FPGA backplane, the 9237 unit (as far as I know this can't be done), or in LabView? The problem is we set up LabView to only take in data at 1Hz since that is the rate we are recording to file, so we would need to change this if the smoothing is done here. I suppose we could bring in faster than 1Hz and still write to file at 1Hz...

 

The reason for this is for the GUI to display torque / horsepower to the operator.

 

Anyone have experience and guidance on where best to perform smoothing?

 

One other thing - yes, we are mounting the load cells on shock absorbing rubber pads, we're just trying to work out what works best.

 

Thank you,

Chris

0 Kudos
Message 1 of 5
(5,104 Views)

Chris,

 

Can you clarify whether you're looking to remove a noise component or the signal, or simply average the values to provide a smother curve?  

 

If you are looking to filter noise, the best place to do this is in hardware, before the signal gets digitized in the 9237.  This would require discreet components.

 

The next best place would be on the FPGA, using one of the built-in filter functions.  Check out the Butterworth and Notch Filters listed here:

 

http://zone.ni.com/reference/en-XX/help/371599G-01/lvfpga/fpga_math_analysis_palette/

 

Good Luck!

Drew T.
Camber Ridge, LLC.
0 Kudos
Message 2 of 5
(5,093 Views)

Thanks Drew - we are filtering somewhat in the hardware through the engine mounting and soft mounting of the load cell. We could splice in a PCB for filtering through discrete components, but were hoping a software solution would finish the job relatively painlessly (no change to hardware.)

 

I have yet to see the full data stream and plot the data to see how noisy it is, but there will be primarily mechanical noise (vibrations, load peaks, etc...). We will smooth that as best as we think we need to and then average over a set time interval. In a nutshell we will start out using a 75ms interval to average over, which will give us 3 revolutions at idle and 9 at redline, using a 25kHz sampling rate, to give an averaged torque for each revolution (we have a crank trigger to delineate each revolution.) Or if the crank trigger is not precise enough we'll average over 2 or 3 revolutions (most engines use a hall sensor and we won't be putting a rotory encoder on every engine.)

 

Since internal combustion engines do not provide a constant torque in a crankshaft revolution (it's kind of similar to a sine wave), we'll average by integration, but I've been assuming we'll need to smooth first to get the tall peaks out for a better result. It's the smoothing of the peaks that I was inquiring about. We were thinking the FPGA here as well as the first choice for software smoothing, but it has already been started in LabView after all the hardware.

 

Thanks for the links.

 

Chris P.

0 Kudos
Message 3 of 5
(5,089 Views)

i would think you would have best result by performing RMS measurement on FPGA for n revs.  next best would be simple average per n revs.

the hardware includes an anti-alias filter so you could include a low pass filter before RMS but our experience would say that the RMS or average acts as a filter for you so the additional low pass won't make much difference.  a simple average reset on each n rev counter is easiest to code and will probably be just fine.  RMS per n revs is more complicated to code on the FPGA but is possible.

 

these are the techniques that i have used on engine dyno applications such as yours.

Stu
0 Kudos
Message 4 of 5
(5,084 Views)

Thanks Stu - actually, I saw the first trace last night and it was way smoother than I was anticipating. I think we're good as is. We're able to average over a set interval by integrating and it seems to be working perfectly.

 

Thanks for the guidance.

 

- Chris P.

0 Kudos
Message 5 of 5
(5,074 Views)