Down-Home Vibrometer

HomeBuiltAirplanes.com

Help Support HomeBuiltAirplanes.com:

sming

Well-Known Member
Joined
Apr 10, 2019
Messages
131
Not sure if you really need "AI" and a neural network to do frequency analysis of your engine sound.
But an arduino is probably not the good plateform for that anyhow. Good idea though!
 

BrianW

Well-Known Member
Joined
Jul 2, 2018
Messages
140
Location
Altus SW Oklahoma
Not sure if you really need "AI" and a neural network to do frequency analysis of your engine sound.
But an arduino is probably not the good plateform for that anyhow. Good idea though!
There you go: probably don't need a smart sensor, but if you do, probably shouldn't use an Arduino. Ah, if only I had specified the use of an nRF52840 from Nordic Semiconductors, a 32-bit ARM® Cortex™-M4 CPU running at 64 MHz. with 1MB of program memory.. .
[forgive my making fun - this is a description of an Arduino Nano 33 BLE for $20) <g> ]
 

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
OK, so I got the ADXL335 and hooked up with a photo sensor, mounted it to the neck of RWS redrive in my RV-3B and hooked it up to a 4-channel scope. Channel 1 for triggering and channel 2 for the z-axis from the ADXL335. The scope has a number of math functions, like Integral, Differential, Average, etc.
Running the prop up to about 1,400 RPM I simply could not see any pattern, even when removing the 25g weight the builder had added when balancing the prop with a Dynavibe. Other than problems with noise on the trigger signal (must be a bad ground because I filtered it to about 100 Hz), why can I not see a consistent pattern between the two trigger pulses? I mean, even if I did a single-short trigger, I should still see a definite acceleration during the 360 degree interval.

What am I missing?

I guess I'll try it on the RV-4 where I know the prop is out of static balance.

Finn
 

rv7charlie

Well-Known Member
Joined
Nov 17, 2014
Messages
1,433
Location
Jackson
Hey Finn,

Have you seen the comments from RV12 drivers that they've had problems balancing Rotax 912 props due to multiple vibration freqs from the engine itself, the gear box, and the prop? Since drives typically use 'hunting tooth' ratios, the freqs don't look related to each other.

Charlie
 

trimtab

Well-Known Member
Joined
Apr 30, 2014
Messages
172
Location
rocky mountains, rocky, usa
1. Collect data with a dummy channel indexed to an odd multiple greater than one of the rotating mass.

2. FFT the results.

3. Extract the magnitude and phase data, and relate it to the position to mass compensate.

This requires very little effort, and coarse data at some sampling rate greater than twice the rotational speed will eventually capture the vibrations similar in frequency to the engine speed. Go for 10x the engine speed to capture higher frequency components.

It is largely how tire spin balancers work, with almost no other tricks, without strain gauges.
 

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
Hey Finn,

Have you seen the comments from RV12 drivers that they've had problems balancing Rotax 912 props due to multiple vibration freqs from the engine itself, the gear box, and the prop? Since drives typically use 'hunting tooth' ratios, the freqs don't look related to each other.

Charlie
No, I haven't, but that sort of makes sense, except the Rotary 13B is supposed to be smooth.
So the trick appears to be to extract only the prop vibrations from the signal. Probably what trimtab is talking about (I still need to wrap my head around his post).

Finn
 

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
What are you using as a reflector on the prop blade?
Reflective alum tape on one bolt shank end, the other bolt ends and nuts black with a sharpie. I am getting an excellent signal from the one bolt.
But overnight I realized why my filtering doesn't work. I have a 100K resistor from photo transistor to +5V. Then at the other end of the cable 47nF to ground. I need to add a 100K resistor just before the 47nF. Looks like high frequency noise picked up along the length of the cable.

Finn
 

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
1. Collect data with a dummy channel indexed to an odd multiple greater than one of the rotating mass.

2. FFT the results.

3. Extract the magnitude and phase data, and relate it to the position to mass compensate.

This requires very little effort, and coarse data at some sampling rate greater than twice the rotational speed will eventually capture the vibrations similar in frequency to the engine speed. Go for 10x the engine speed to capture higher frequency components.

It is largely how tire spin balancers work, with almost no other tricks, without strain gauges.
OK, so not as simple as I thought it would be.

1. Three pulses per rotation or one pulse for every three rotations?
2. The o'scope has a FFT match function. but minimum resolution is 50Hz, so that probably won't work. I'm not familiar with the math behind FFT. A scope normally shows amplitude as function of time. I think a FFT of that plots amplitudes (magnitudes) against frequencies (spectrum)? Is there a simple way (or formula) to express or do that?
3. Don't know how to do that. Unless a second component of a FFT plot would be the phase data. Can you explain how or point me to a tutorial?

Actually conceptually I do get it: the FFT lets me extract only the frequency I'm interested in (rotation of prop). Then by looking at phase and magnitude of just that, I should see what I'm interested in. So basically using FFT as a filtering function. Wouldn't an analog notch filter do the same thing?

Finn
 
Last edited:

trimtab

Well-Known Member
Joined
Apr 30, 2014
Messages
172
Location
rocky mountains, rocky, usa
The FFT (or DFT, in the case of digital acquisition), yields a real and imaginary part.

The square root of the sum of the squares is the magnitude of each spectral line.

The phase is extracted from the arctangent of the imaginary divided by the real.
 

BrianW

Well-Known Member
Joined
Jul 2, 2018
Messages
140
Location
Altus SW Oklahoma
OK, so I got the ADXL335 and hooked up with a photo sensor, mounted it to the neck of RWS redrive in my RV-3B and hooked it up to a 4-channel scope. Channel 1 for triggering and channel 2 for the z-axis from the ADXL335. The scope has a number of math functions, like Integral, Differential, Average, etc.
Running the prop up to about 1,400 RPM I simply could not see any pattern, even when removing the 25g weight the builder had added when balancing the prop with a Dynavibe.
/snip/

Finn
So the scope shows a straight line?
low level random noise?
high-level noise?
A scope shot would be worth a thousand words!

Anyway - the accelerometer signal needs a low pass filter: if you run the prop at 1400 rpm, you need to low pass the frequencies below 24Hz only - you only have one mass to balance with, per prop revolution. The peak to peak signal then represents the imbalance. The location of a peak in relation to the time between triggers indicates the position. Signal preparation is the name of the game!

Good luck!
 
Last edited:

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
Now getting a decent scope signal. Two peaks, one slightly bigger than the other. Adding big washers to periphery of spinner do not alter them significantly. Then I spent most of yesterday learning about FFT. Programmed an Arduino Nano for prop balancing. Meanwhile I then found that my Rigol o'scope FFT function actually has the resolution I need at the frequencies I need. Going to try both next.

But for calibration, here is a question that has me stumped. How do you convert accelerometer readings to ips? One G is 386 inches/s/s. Do I just divide my G reading with 386 or is there a frequency involved. If so, why???

EDIT: Found this formula:
Formula for [A#] = {(.271 * 10^-3) * [V##] * [CPM]}

Formula for [A#] = {(.271 * 10^-3) * [V##] * [CPM]}

where acceleration is in Gs, velocity in ips and Frequency is cycles per minute (RPM).
Not sure I understand why, but I guess the faster you swing a mass around you the greater the force.

If running prop at 1000 RPM and want to detect 0.07 ips or less, we're looking for 0.015 Gs. If using the ADXL335, that has a sensitivity of 300 mV/G, that's 4.5mV!
Doubling the RPM to 2,000 we're looking to get the vibration below 9 mV from the ADXL335.

Using the FFT function of the o'scope I was not able to reliably detect a specific frequency. I have a 30Hz low pass filter after the output of the ADXL335. I thought I also had a 8.5 amplification using an op-amp, but that can't be true because it's DC coupled and DC input = DC output. As Brian wrote: "Signal preparation is the name of the game!"
If feeding the ADXL335 signal to an Adrduino Nano or Mega (has a 0 to 5V range and 4.9mV resolution) I'll probably first have to amplify the signal 100 to 200 times to get a reasonable resolution.

As for trimtab's "1. Collect data with a dummy channel indexed to an odd multiple greater than one of the rotating mass.", with the Arduino Nano program I'm trying to go a different route: make sure the sample period is one full rotation (beginning and end of sample same value: continuous). Then I won't have to apply a "window" to the FFT data.

Prop balancing software algorithm
0) Determine number of samples (512 for Mega and 128 for Nano)
1) Prompt user to press Start button when desired RPM has been stably reached.
2) Measure time from trigger pulse to trigger pulse 4 times, average and store as rotation period
3) Display as sample frequency and RPM
4) Take samples
5) Repeat sample taking, averaging with previous samples.
6) Perform FFT
7) Calculate amplitude and phase for rotational frequency (or 2 sets around rotational frequency bin)
8) Display amplitude and phase sets on 2x16 character LED display.

Currently in 7 the program finds max magnitude and displays phase and amplitude of that frequency, prior and following frequency bins. Should give same result, but may program it to alternate between the two methods to confirm results.

Finn
 
Last edited:

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
1. Collect data with a dummy channel indexed to an odd multiple greater than one of the rotating mass.

2. FFT the results.

3. Extract the magnitude and phase data, and relate it to the position to mass compensate.
Can you elaborate on this?

Dummy channel? Indexed how?

How do you related the extracted phase data to the trigger point?

Trying to fine-balance the engine w/o prop to simplify things.

Changed my low-pass filter to 100Hz and amplify the ADXL335 x-axis signal 200 times. (the z-axis has twice the noise figure according to data sheet).

Running the engine to 6,000 RPM I now get a fairly decent scope signal.

Using an Arduino Nano (using the FFT library) I'm successfully extracting and plotting the magnitude part (basically a spectrum analyzer). The major magnitude peak correctly moves on the plot as RPM is varied.
But the phase (angle) data for the peak frequency is all over the place.

Data acquisition starts at the trigger signal and I accumulate 128 samples 8 times (each starting at the trigger pulse) and then averaged by 8.
Sample frequency
FFT then gives me 64 bins (frequencies).
But the phase [angle = 180 / M_PI * atan2(vImag[j], vReal[j]);] varies for the peak magnitude (bin).

What am I missing?

Finn
 

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
Thanks. It briefly mentions the Phase Spectrum but I guess the question is: phase in relation to what?
Intuitively, if RPM is varied slightly in relation to the sampling frequency won't that shift the phases drastically?

Perhaps that's why initially adding a weight is done in order to get a reference point.
But I think I saw tire balancing without that being done, so it must be possible.

Finn
 

trimtab

Well-Known Member
Joined
Apr 30, 2014
Messages
172
Location
rocky mountains, rocky, usa
Thanks. It briefly mentions the Phase Spectrum but I guess the question is: phase in relation to what?
Intuitively, if RPM is varied slightly in relation to the sampling frequency won't that shift the phases drastically?

Perhaps that's why initially adding a weight is done in order to get a reference point.
But I think I saw tire balancing without that being done, so it must be possible.

Finn
That's what the index signal is. The phase is in relation to it.
 

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
Thanks trimtab. I think the light bulb finally came on:

Sample two channels simultaneously:
1) trigger signal
and
2) accelerometer signal.
Then do FFT on both sample sets.
Note the frequency "bin" with the highest accelerometer peak (should also be RPM/60)
Read the phase from the trigger channel same bin.

Does that seem right?

With the Arduino Nano, there'll only be space for 64 samples (x2) and 32 resulting frequency bins. I guess that should still be enough.

It really doesn't matter where sampling starts in relation to the trigger pulse as long as it's over sampled more then 2 times. 3 is better.

Finn
 

FinnFlyer

Active Member
Joined
Nov 19, 2019
Messages
44
Location
Bell, FL
Correction: It does appear to matter when sampling starts. I get stable phase results (on the bench) when starting sampling at start of trigger pulse.

Going to try it again on the engine and then prop...

Finn
 
Top