# Diagnóstico de Motores Asíncronos con Java Usando FFT y Transformada de Park
Este sistema basado en Java diagnostica motores eléctricos asíncronos analizando la corriente consumida para detectar defectos. La aplicación integra procesamiento de señales, Transformada Rápida de Fourier (FFT) y transformada de Clarke-Park, ofreciendo a los ingenieros una herramienta potente para monitorear la salud del equipo.
Arquitectura y Procesamiento de Señales
Desarrollada con JavaFX para estaciones de trabajo de escritorio, el principal desafío fue manejar señales de corriente muestreadas a 25,6 kHz. Los datos crudos incluyen ruido de alta frecuencia del convertidor de frecuencia, lo que requiere filtrado previo.
Pasos clave del procesamiento de señales:
- Filtrado pasa-bajos: Filtro digital Butterworth con corte a 1 kHz para eliminar ruido.
- Ventaneo de Hamming: Reduce fugas espectrales y mejora la precisión de amplitud.
- Implementación de FFT: Calcula espectros de amplitud y fase para detectar componentes armónicos.
Código de ejemplo para filtrado y ventaneo:
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;
}
Visualización y Análisis de Datos
La interfaz de la app muestra varios tipos de gráficos para un diagnóstico completo:
- Osciloscopio de corriente: Análisis de forma de onda en dominio del tiempo con zoom.
- Diagrama de vector de Park: Trayectoria de corriente en coordenadas d-q tras transformada de Clarke-Park.
- Espectrograma FFT: Identifica frecuencias dominantes y armónicos que indican fallos.
El procesamiento por lotes de hasta 40 archivos CSV facilita las comparaciones. Configuraciones de filtrado uniformes se aplican a todos los conjuntos de datos para rastrear cambios en el estado del motor.
Optimización de Rendimiento
La velocidad se logra con E/S optimizada y multihilo:
- Archivos CSV de 70 MB se procesan en menos de 2 segundos en un Intel Core i5 con 16 GB de RAM.
- Los gráficos se actualizan en <100 ms separando hilos de cómputo y renderizado.
- BufferedReader reduce la sobrecarga de memoria.
La librería JDSP (Java Digital Signal Processing) proporcionó filtros y funciones de ventaneo listos para usar, acelerando el prototipado.
Interfaz de Usuario y Funcionalidades
Elementos interactivos permiten análisis profundos:
- Tooltips en gráficos: Pasa el ratón para ver valores de puntos.
- Opciones de visualización: Unidades (relativas o dB), rango de frecuencia, tipo de señal.
- Temas: Modos claro y oscuro.
- Controles: Conjuntos de datos con colores codificados, deslizadores de zoom, botones de archivos.
Configuración de ejemplo de tooltip para 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);
}
Lecciones Clave
- La FFT y transformada de Park detectan fallos en motores mediante armónicos de corriente.
- Procesamiento optimizado maneja archivos de 70 MB en 2 segundos.
- Multihilo mantiene la interfaz responsiva en menos de 100 ms.
- JDSP simplifica el procesamiento digital de señales en Java.
- Modo por lotes compara hasta 40 conjuntos de datos sin problemas.
— Editorial Team
Aún no hay comentarios.