Java-Based Asynchronous Motor Diagnostics Using FFT and Park Transform
This Java-powered system diagnoses asynchronous electric motors by analyzing current draw to spot defects. The app integrates signal processing, Fast Fourier Transform (FFT), and Clarke-Park transform, giving engineers a powerful tool for monitoring equipment health.
Architecture and Signal Processing
Built with JavaFX for a desktop workstation, the core challenge was handling current signals sampled at 25.6 kHz. Raw data includes high-frequency noise from the frequency converter, requiring upfront filtering.
Key signal processing steps:
- Low-pass filtering: Butterworth digital filter with 1 kHz cutoff to remove noise.
- Hamming windowing: Reduces spectral leakage and boosts amplitude accuracy.
- FFT implementation: Computes amplitude and phase spectra to detect harmonic components.
Example code for filtering and windowing:
public double[] applyHammingWindow(double[] signal) {
int N = signal.length;
int Fs = 25600;
int order = 4;
int cutOff = 1000;
Butterworth flt = new Butterworth(Fs);
double[] result = flt.lowPassFilter(signal, order, cutOff);
double[] windowedSignal = new double[N];
Hamming w1 = new Hamming(N);
double[] out = w1.getWindow();
for (int i = 0; i < N; i++) {
windowedSignal[i] = result[i] * out[i];
}
return windowedSignal;
}
Data Visualization and Analysis
The app's interface displays multiple chart types for thorough diagnostics:
- Current oscilloscope: Time-domain waveform analysis with zoom.
- Park vector diagram: Current trajectory in d-q coordinates post Clarke-Park transform.
- FFT spectrogram: Spots dominant frequencies and harmonics signaling faults.
Batch processing up to 40 CSV files makes comparisons easy. Uniform filtering settings apply across datasets to track motor condition changes.
Performance Optimization
Speed comes from optimized I/O and multithreading:
- 70 MB CSV files process in under 2 seconds on an Intel Core i5 with 16 GB RAM.
- Charts update in <100 ms by separating computation and rendering threads.
- BufferedReader cuts memory overhead.
The JDSP (Java Digital Signal Processing) library provided ready-made filters and window functions, speeding up prototyping.
User Interface and Features
Interactive elements enable deep dives:
- Chart tooltips: Hover for point values.
- Display options: Units (relative or dB), frequency range, signal type.
- Themes: Light and dark modes.
- Controls: Color-coded datasets, zoom sliders, file buttons.
Example tooltip setup for LineChart:
public static void setupTooltip(XYChart.Data<Number, Number> data, String seriesName) {
Circle circle = new Circle(2);
circle.setOpacity(0.5);
circle.setOnMouseEntered(event -> {
Tooltip tooltip = new Tooltip(
"Y: " + data.getYValue() + "\n" +
"X: " + data.getXValue() + "\n" + seriesName
);
tooltip.setShowDelay(Duration.ONE);
Tooltip.install(circle, tooltip);
});
data.setNode(circle);
}
Key Takeaways
- FFT and Park transform detect motor faults via current harmonics.
- Optimized processing handles 70 MB files in 2 seconds.
- Multithreading keeps UI responsive under 100 ms.
- JDSP simplifies DSP on Java.
- Batch mode compares up to 40 datasets seamlessly.
— Editorial Team
No comments yet.