scieee AI-readable full text Open interactive document viewer

Sistema inalámbrico de bajo coste para análisis vibratorios bajo Arduino MKRWiFi 1010

Sánchez Gómez, Ricardo A.

Abstract

En este Trabajo Fin de Grado se ha desarrollado un sistema de bajo coste para la adquisición inalámbrica de vibraciones estructurales basado en la plataforma Arduino. El sistema implementa un acelerómetro MPU6050 y emplea el protocolo de comunicación MQTT sobre una red WiFi local, permitiendo el envío en tiempo real de datos de aceleración en uno o varios ejes. Se han analizado distintos protocolos de transmisión (puerto serie y MQTT), frecuencias de muestreo y configuraciones de canales, evaluando el impacto de cada uno sobre la estabilidad temporal de la señal (dt) y la calidad de los datos obtenidos. Los resultados obtenidos muestran que, si bien el sistema es funcional, reproducible y flexible, existen limitaciones en el caso de la transmisión inalámbrica en tiempo real. Estas limitaciones pueden afectar al análisis en el dominio de la frecuencia mediante FFT, motivo por el cual se han planteado mejoras y líneas futuras. Este trabajo demuestra que es posible diseñar sistemas accesibles para la monitorización de vibraciones, con potencial aplicación en entornos reales de ingeniería estructural.

Full text

Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Trabajo Fin de Grado Grado en Ingeniería Aeroespacial Sistema inalámbrico de bajo coste para análisis vibratorios bajo Arduino MKR WiFi 1010 Autor: Ricardo A. Sánchez Gómez Tutor: Pedro Galvín Barrera Dpto. Mecánica de Medios Continuos y Teoría de Estructuras Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2025 Trabajo Fin de Grado Grado en Ingeniería Aeroespacial Sistema inalámbrico de bajo coste para análisis vibratorios bajo Arduino MKR WiFi 1010 Autor: Ricardo A. Sánchez Gómez Tutor: Pedro Galvín Barrera Catedrático de Universidad Dpto. Mecánica de Medios Continuos y Teoría de Estructuras Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2025 Trabajo Fin de Grado: Sistema inalámbrico de bajo coste para análisis vibratorios bajo Arduino MKR WiFi 1010 Autor: Ricardo A. Sánchez Gómez Tutor: Pedro Galvín Barrera El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha: Agradecimientos Q uiero expresar mi más sincero agradecimiento a mi familia, por su apoyo incondicional y constante durante toda mi etapa universitaria. A mi tutor, Pedro Galvín Barrera, por su orientación, paciencia y confianza a lo largo del desarrollo de este trabajo. También a mis compañeros, por los ánimos compartidos, las conversaciones y el compañerismo en los momentos más intensos del grado. Gracias, asimismo, a todas aquellas personas que, de una forma u otra, han contribuido a que este proyecto sea posible. Ricardo A. Sánchez Gómez Grado en Ingeniería Aeroespacial Sevilla, 2025 I Resumen E n este Trabajo Fin de Grado se ha desarrollado un sistema de bajo coste para la adquisición inalámbrica de vibraciones estructurales basado en la plataforma Arduino. El sistema implementa un acelerómetro MPU6050 y emplea el protocolo de comunicación MQTT sobre una red WiFi local, permitiendo el envío en tiempo real de datos de aceleración en uno o varios ejes. Se han analizado distintos protocolos de transmisión (puerto serie y MQTT), frecuencias de muestreo y configuraciones de canales, evaluando el impacto de cada uno sobre la estabilidad temporal de la señal (dt) y la calidad de los datos obtenidos. Los resultados obtenidos muestran que, si bien el sistema es funcional, reproducible y flexible, existen limitaciones en el caso de la transmisión inalámbrica en tiempo real. Estas limitaciones pueden afectar al análisis en el dominio de la frecuencia mediante FFT, motivo por el cual se han planteado mejoras y líneas futuras. Este trabajo demuestra que es posible diseñar sistemas accesibles para la monitorización de vibraciones, con potencial aplicación en entornos reales de ingeniería estructural. III Índice Resumen III Abstract V Índice Abreviado VII 1 Introducción y objetivos 1 1.1 Objetivos específicos 1 2 Estado del arte 3 2.1 Sistemas comerciales y profesionales 3 2.2 Alternativas basadas en Arduino y sensores MEMS 3 2.3 Aplicaciones educativas y experimentales 3 2.4 Limitaciones observadas en la literatura 4 2.5 Contexto de este trabajo 4 3 Hardware y montaje del sistema 5 3.1 Microcontrolador: Arduino MKR WiFi 1010 5 3.2 Sensor inercial: MPU6050 5 3.3 Montaje y conexiones 5 3.4 Presupuesto estimado del sistema 6 3.5 Esquema funcional del sistema 6 3.6 Conexión Arduino – MPU6050 7 3.7 Montaje físico y materiales auxiliares 7 3.8 Resumen técnico del montaje 9 3.9 Errores comunes detectados 10 4 Software del sistema 11 4.1 Firmware embebido en la placa Arduino 11 4.2 Comunicación mediante protocolo MQTT 12 4.3 Recepción y análisis en Python 12 4.4 Postprocesado avanzado en MATLAB 13 4.5 Guía de ejecución paso a paso 13 4.5.1 Resumen del funcionamiento del sistema 13 4.5.2 Material necesario 14 4.5.3 Conexión del hardware 15 4.5.4 Instalación del software 15 XI XII Índice 4.5.5 Configuración de red 16 4.5.6 Ejecución del sistema 16 4.5.7 Verificación del sistema 16 4.6 Resumen de herramientas software utilizadas 16 5 Fundamentos teóricos 19 5.1 Muestreo y teorema de Nyquist 19 5.2 Intervalo de muestreo y estabilidad temporal 19 5.3 Transformada rápida de Fourier (FFT) 19 5.4 Interpolación temporal 20 5.5 Filtrado digital 20 5.6 Uso del acelerómetro MPU6050 20 5.7 Importancia del control de adquisición en tiempo real 20 6 Metodología y ensayos experimentales 21 6.1 Configuraciones de hardware y software 21 6.2 Condiciones de los ensayos 21 6.3 Herramientas de análisis 22 6.4 Protocolo de evaluación 22 6.5 Ensayo 1: Protocolo MQTT, 1 canal, 167 Hz 22 6.6 Ensayo 2: Protocolo MQTT, 2 canales, 167 Hz 24 6.7 Ensayo 3: Protocolo MQTT, 3 canales, 167 Hz 26 6.8 Ensayo 4: Protocolo MQTT, 1 canal, 200 Hz 28 6.9 Ensayo 5: Protocolo MQTT, 2 canales, 200 Hz 30 6.10 Ensayo 6: Protocolo MQTT, 3 canales, 200 Hz 32 6.11 Ensayo 7: Protocolo MQTT, 1 canal, 250 Hz 34 6.12 Ensayo 8: Protocolo MQTT, 2 canales, 250 Hz 36 6.13 Ensayo 9: Protocolo MQTT, 3 canales, 250 Hz 38 6.14 Ensayo 10: Puerto serie, 3 canales, 250 Hz 40 7 Discusión de resultados 43 7.1 Frecuencia de muestreo y estabilidad del intervalo 44 7.2 Número de canales y limitaciones del hardware 44 7.3 Viabilidad del análisis en frecuencia 45 7.4 Implicaciones prácticas 45 7.5 Comparación con trabajos previos 45 8 Validación experimental en laboratorio 47 8.1 Introducción al análisis modal 48 8.2 Fundamento teórico del ensayo 49 8.3 Ensayos seleccionados 49 8.3.1 Ensayo 1: Sin masa en la punta 49 8.3.2 Ensayo 2: Con masa en la punta 49 8.4 Validación experimental 50 8.5 Validación frente a un sistema profesional 52 8.6 Resumen técnico del sistema desarrollado 54 9 Conclusiones 55 Índice XIII 9.1 Líneas futuras 55 Apéndice A Código Arduino 57 Apéndice B Captura datos 61 Apéndice C Análisis tres canales 63 Apéndice D Análisis dos canales 67 Apéndice E Análisis un canal 69 Apéndice F Código Matlab para el análisis de ensayos 71 Apéndice G Código Python de visualización en tiempo real 73 Índice de Figuras 75 Índice de Tablas 77 Índice de Códigos 79 Bibliografía 81 1 Introducción y objetivos E l análisis de vibraciones es una herramienta esencial en la ingeniería estructural y mecánica, utilizada para diagnosticar el estado de componentes, detectar posibles fallos y caracterizar el comportamiento dinámico de distintos sistemas. Tradicionalmente, esta tarea se ha apoyado en sistemas de adquisición de datos costosos y complejos, que requieren conocimientos avanzados y equipamiento especializado, lo que limita su accesibilidad en entornos educativos o de bajo presupuesto. Con la creciente disponibilidad de plataformas de hardware libre como Arduino, ha surgido la posibilidad de construir sistemas de medición vibratoria funcionales y económicos. En particular, la combinación de sensores inerciales MEMS, microcontroladores con conectividad inalámbrica y protocolos ligeros de transmisión como MQTT permite desarrollar soluciones versátiles y portátiles con aplicaciones reales en la docencia y la investigación. Este Trabajo Fin de Grado se enmarca en esta línea de desarrollo tecnológico accesible. Su objetivo principal es el diseño, implementación y validación de un sistema de adquisición de vibraciones de bajo coste basado en Arduino, con transmisión inalámbrica de datos en tiempo real mediante el protocolo MQTT. 1.1 Objetivos específicos El presente trabajo tiene como finalidad el diseño y montaje de un sistema de adquisición de vibraciones utilizando la placa Arduino MKR WiFi 1010 junto con el sensor inercial MPU6050. Se persigue establecer una comunicación inalámbrica eficiente mediante el protocolo MQTT en red local, garantizando una transmisión fiable de los datos hacia el ordenador receptor. Uno de los objetivos clave consiste en implementar un esquema de adquisición continua que permita registrar aceleraciones en uno o varios ejes, incluyendo marcas temporales precisas mediante el uso de la función micros() . Además, se pretende evaluar el rendimiento del sistema en términos de estabilidad temporal y su viabilidad para la aplicación de análisis espectral mediante la Transformada Rápida de Fourier (FFT). Durante el desarrollo se compararán distintas configuraciones de hardware y software, tales como el uso del puerto serie frente al protocolo MQTT, así como el número de canales activos y las frecuencias de muestreo seleccionadas. La validación experimental del sistema se llevará a cabo mediante ensayos en laboratorio sobre una estructura real, con el fin de comprobar la eficacia del sistema en condiciones representativas. Finalmente, se formularán recomendaciones y propuestas de mejora orientadas a futuras versiones del sistema, con vistas a su posible ampliación o aplicación en otros contextos de ingeniería. Este trabajo pretende, en última instancia, constituir una base sólida y documentada para el desarrollo de soluciones de análisis vibratorio estructural de bajo coste y fácil replicación. 1 2 Estado del arte E l análisis vibratorio es una herramienta clave en la monitorización de condiciones mecánicas, detección de fallos y mantenimiento predictivo. Tradicionalmente, este tipo de análisis se ha llevado a cabo mediante sistemas comerciales de alto coste que emplean acelerómetros piezoeléctricos, sistemas de adquisición de datos dedicados y software propietario. Sin embargo, con la aparición de plataformas de desarrollo como Arduino y sensores MEMS de bajo coste, han surgido alternativas económicas con fines educativos, experimentales o de monitorización en entornos no críticos. 2.1 Sistemas comerciales y profesionales Los equipos comerciales, como los sistemas de Brüel & Kjær o Fluke, permiten adquirir señales con alta precisión temporal, gran ancho de banda y sensores calibrados. No obstante, su elevado coste limita su accesibilidad para desarrollos de bajo presupuesto. Además, la configuración de estos equipos requiere personal especializado y software de análisis avanzado. 2.2 Alternativas basadas en Arduino y sensores MEMS En los últimos años, se han desarrollado múltiples iniciativas que aprovechan sensores MEMS como el MPU6050 por su bajo coste, facilidad de integración y capacidad de proporcionar aceleración triaxial. El trabajo de Baur et al. [ 1 ] demuestra la viabilidad de adquirir señales vibracionales mediante sensores MPU6050 acoplados a microcontroladores, siempre que se respeten ciertas limitaciones en frecuencia y ruido. Otros trabajos, como el de Martinez-Cruz et al. [ 2 ], implementan sistemas basados en ESP32 y MQTT para enviar datos en tiempo real a plataformas como ThingSpeak o InfluxDB. Estos trabajos evidencian que protocolos ligeros como MQTT permiten una transmisión eficiente de datos en entornos inalámbricos, aunque con latencias variables y menor precisión temporal respecto al puerto serie. 2.3 Aplicaciones educativas y experimentales Diversas universidades han implementado sistemas de análisis vibratorio usando sensores de bajo coste como parte de prácticas de laboratorio o trabajos fin de grado. En [ 3 ], se propone un entorno docente en el que los estudiantes adquieren y procesan señales desde un MPU6050 en tiempo real, reforzando conocimientos sobre adquisición de datos, muestreo, FFT e interpretación espectral. 3 4Capítulo 2. Estado del arte 2.4 Limitaciones observadas en la literatura La mayoría de los trabajos coinciden en que el uso de sensores MEMS implica compromisos en cuanto a precisión, calibración y estabilidad. Además, la variabilidad en el intervalo de muestreo ( dt ) puede invalidar análisis en frecuencia si no se aplican técnicas de corrección, como la interpolación temporal [ 4 ]. Estos desafíos técnicos han impulsado el uso de filtros digitales, algoritmos de compensación y sincronización mediante relojes de alta precisión. 2.5 Contexto de este trabajo El presente trabajo se enmarca dentro de esta línea de investigación y desarrollo, con el objetivo de validar un sistema de adquisición vibracional de bajo coste basado en Arduino y el sensor MPU6050, evaluando la viabilidad de realizar análisis espectrales mediante FFT bajo diferentes configuraciones de transmisión. 3 Hardware y montaje del sistema E l sistema desarrollado en este trabajo se basa en una arquitectura de bajo coste y fácil implementación, con el objetivo de facilitar la monitorización de vibraciones en estructuras de pequeña escala mediante sensores inerciales y transmisión inalámbrica. La selección de los componentes se ha realizado considerando criterios de disponibilidad, compatibilidad, consumo energético y facilidad de integración. 3.1 Microcontrolador: Arduino MKR WiFi 1010 La unidad principal de procesamiento es una placa Arduino MKR WiFi 1010, que incorpora un microcontrolador SAMD21 Cortex-M0+ de 32 bits y un módulo de conectividad inalámbrica WiFi basado en el chip u-blox NINA-W102. Esta placa ha sido seleccionada por su compatibilidad con el entorno de desarrollo Arduino IDE, su bajo consumo y su capacidad para establecer comunicaciones inalámbricas mediante el protocolo MQTT a través de WiFi. Además de la conectividad, uno de los aspectos clave de esta placa es su capacidad para ejecutar operaciones de adquisición de datos a alta velocidad gracias al uso de temporizadores internos y funciones como micros() , lo que resulta fundamental para garantizar una frecuencia de muestreo estable en el sistema diseñado. 3.2 Sensor inercial: MPU6050 El sensor MPU6050 combina un acelerómetro y un giróscopo de tres ejes, integrados en un único chip mediante tecnología MEMS. Su comunicación con el microcontrolador se realiza a través del protocolo I2C, lo que permite una conexión sencilla con tan solo dos líneas de datos. Este sensor ha sido ampliamente utilizado en proyectos académicos y aplicaciones de bajo coste debido a su relación entre prestaciones y precio. En el presente trabajo, se ha empleado únicamente el acelerómetro de tres ejes para la adquisición de señales vibratorias. La selección de este sensor responde a su capacidad para capturar aceleraciones con una resolución suficiente para el rango de frecuencias analizado (hasta aproximadamente 500 Hz), así como a la facilidad de integración mecánica y eléctrica en el sistema. 3.3 Montaje y conexiones La conexión entre el sensor y la placa Arduino se ha realizado sobre una protoboard, facilitando la modificación del circuito durante las fases de prueba. La alimentación del sistema se lleva a cabo mediante conexión USB al ordenador durante los ensayos, aunque la placa también puede alimentarse mediante batería externa para configuraciones móviles. 5 12 Capítulo 4. Software del sistema Este enfoque reduce significativamente la complejidad del código y facilita su mantenimiento y extensión. 4.2 Comunicación mediante protocolo MQTT Para establecer la comunicación entre el microcontrolador y el ordenador se ha utilizado el protocolo MQTT (Message Queuing Telemetry Transport), ampliamente adoptado en entornos de Internet de las Cosas (IoT) por su simplicidad y eficiencia. En este proyecto, MQTT se ha empleado para transmitir en tiempo real los datos adquiridos por la placa Arduino MKR WiFi 1010 hacia el ordenador, utilizando una red WiFi local y un broker alojado en el propio equipo. El proceso se inicia abriendo una ventana de comandos en el sistema operativo y ejecutando el broker Mosquitto con el siguiente comando: Código 4.1 Inicio del broker Mosquitto. "C:\Program Files\mosquitto\mosquitto.exe" -c "C:\Program Files\ mosquitto\mosquitto.conf" -v Este comando permite activar el broker en modo detallado (verbose), lo que resulta útil para depuración. A continuación, se puede abrir una segunda ventana de comandos para verificar que el puerto 1883, utilizado por defecto por Mosquitto, está efectivamente en uso: Código 4.2 Verificación del puerto MQTT. netstat -aon | findstr :1883 Una vez confirmado que el broker está funcionando correctamente, se realiza la suscripción al tópico mediante el siguiente comando, que permite recibir los mensajes publicados desde el Arduino: Código 4.3 Suscripción manual al tópico MQTT. "c:\Program Files\mosquitto\mosquitto_sub.exe" -t vibracion/datos -h localhost Esto permite visualizar directamente en consola los datos de aceleración que se están transmitiendo desde el microcontrolador. Esta suscripción también puede realizarse mediante scripts Python automatizados, como se describe en apartados posteriores, pero su ejecución desde la línea de comandos es útil para verificar que la comunicación se ha establecido correctamente antes de pasar a fases más avanzadas del desarrollo y análisis del sistema. 4.3 Recepción y análisis en Python El ordenador receptor ejecuta un script en Python que se conecta al broker local mediante la librería paho-mqtt . Este script suscribe al sistema al tópico correspondiente y almacena los datos recibidos en un archivo CSV. La recepción de datos es continua y no bloqueante, permitiendo que el usuario monitoree el proceso en tiempo real a través de la consola. Una vez almacenados los datos, se procede a su análisis con librerías como pandas para el manejo de series temporales, y matplotlib para la generación de gráficos. Esta fase incluye la verificación de la frecuencia de muestreo efectiva, la detección de posibles pérdidas de paquetes, y la representación de la aceleración en función del tiempo. 4.4 Postprocesado avanzado en MATLAB 13 Estas librerías pueden instalarse ejecutando el siguiente comando en una consola con Python configurado: Código 4.4 Instalación de librerías necesarias para análisis en Python. pip install paho-mqtt pandas matplotlib La inclusión de estas librerías y su integración dentro del flujo de análisis garantiza una ejecución automatizada y reproducible del procesamiento de datos desde el momento de la captura hasta su visualización. 4.4 Postprocesado avanzado en MATLAB Complementariamente, se ha desarrollado una rutina de análisis en MATLAB orientada a examinar el comportamiento del sistema en el dominio de la frecuencia. La herramienta permite importar directamente el archivo CSV generado en la adquisición, aplicar una interpolación temporal para corregir eventuales irregularidades en el muestreo y calcular la Transformada Rápida de Fourier (FFT). Esta representación frecuencial es fundamental para detectar la presencia de modos de vibración estructural, evaluar la sensibilidad del sistema y validar experimentalmente la utilidad del sensor y del microcontrolador en aplicaciones reales de monitorización dinámica. 4.5 Guía de ejecución paso a paso Esta guía tiene como objetivo describir de forma clara y detallada los pasos necesarios para montar, configurar y utilizar el sistema completo de adquisición y análisis vibratorio desarrollado. Está orientada a que cualquier persona, incluso sin conocimientos previos específicos, pueda reproducir el montaje y realizar ensayos de forma autónoma. 4.5.1 Resumen del funcionamiento del sistema El sistema desarrollado se compone de tres elementos principales: • Placa Arduino MKR WiFi 1010: adquiere los datos de aceleración desde el sensor y los transmite inalámbricamente por WiFi. •Sensor MPU6050: mide la aceleración en los tres ejes espaciales. • Ordenador personal: recibe los datos mediante el protocolo MQTT, los almacena en archivos .csv y posteriormente permite su análisis con herramientas como MATLAB u Octave. El flujo general del sistema es el siguiente: 1. Se conecta el Arduino al ordenador mediante USB únicamente para cargar el código de adquisición. 2. Una vez cargado, el Arduino puede funcionar de forma autónoma (alimentado por batería o por el propio puerto USB conectado al cargador de un móvil, por ejemplo) y se conecta a la red WiFi. Veáse la Figura 3.2. 3. El Arduino transmite los datos de aceleración al ordenador a través de MQTT. 4. El ordenador actúa como servidor MQTT (broker), recibe los datos y los guarda en archivos de texto. 14 Capítulo 4. Software del sistema 5. Estos archivos pueden analizarse posteriormente mediante scripts en MATLAB u Octave para extraer la información útil en el dominio del tiempo o de la frecuencia. Véase la Figura 4.1 para una visión esquemática del sistema. Acelerómetro MPU6050 Arduino MKR WiFi 1010 Red WiFi (2.4 GHz) Ordenador personal (Servidor MQTT) Script Python (captura datos.csv) Octave / MATLAB (análisis FFT) I2C MQTT (cliente) MQTT (broker) Figura 4.1 Diagrama de bloques del sistema de adquisición y análisis vibratorio.. Nota importante sobre la ejecución: La placa Arduino transmite datos de forma inalámbrica utilizando el protocolo MQTT. Para ello, es necesario que: • El Arduino esté programado con el código correspondiente y conectado a la misma red WiFi que el ordenador. •El ordenador actúe como servidor MQTT, utilizando Mosquitto como broker. • Un script Python (funcionando como cliente MQTT) se ejecute en el ordenador para suscribirse a los mensajes publicados por el Arduino y guardar los datos en archivos .csv. El flujo completo típico para un ensayo es el siguiente: 1. Se programa la placa Arduino mediante cable USB. 2. Se desconecta (si se desea) y se alimenta por una batería o cargador USB. 3. Se inicia el servidor Mosquitto en el ordenador (broker). 4. Se lanza el script Python receptor, que se suscribe al canal MQTT. 5. El Arduino comienza a enviar datos al broker, que el script recibe y almacena. Todo el proceso de recepción de datos ocurre sin necesidad de tener abierto el monitor serie del IDE de Arduino. 4.5.2 Material necesario •Placa Arduino MKR WiFi 1010. •Sensor MPU6050. •Protoboard y cables Dupont macho-macho. •Ordenador con Windows, Linux o macOS. •Conexión WiFi a 2.4 GHz (no se soportan redes de 5 GHz en la placa). • Software: Arduino IDE, Python 3, Mosquitto MQTT, Visual Studio Code (opcional), Octave o MATLAB. 4.5 Guía de ejecución paso a paso 15 4.5.3 Conexión del hardware •Conectar el Arduino al ordenador mediante un cable USB (para cargar el código). • Realizar las conexiones entre el sensor MPU6050 y la placa Arduino según la siguiente tabla: Tabla 4.1 Conexiones del hardware. Sensor MPU6050 Arduino MKR WiFi 1010 VCC 3.3V GND GND SCL SCL (pin 12) SDA SDA (pin 11) •Fijar el sistema a la estructura sobre la que se realizará el ensayo. Véase la Sección 3. Nota: durante los ensayos, el Arduino transmite los datos de forma inalámbrica. La conexión USB solo se utiliza para programar inicialmente la placa. 4.5.4 Instalación del software 1. Arduino IDE: descargar desde https:// www.arduino.cc/ en/ software. • Instalar la placa Arduino SAMD Boards (32-bits ARM Cortex-M0+) desde el Gestor de Placas. •Añadir las siguientes librerías desde el Gestor de Librerías: –MPU6050_light –WiFiNINA –PubSubClient 2. Python 3: descargar desde https:// www.python.org e instalar los siguientes paquetes: Código 4.5 Instalación de librerías necesarias para análisis en Python. pip install paho-mqtt pandas matplotlib 3. Mosquitto MQTT: •Descargar e instalar desde https:// mosquitto.org/ download/ . •Ejecutar el servidor MQTT con el siguiente comando en la terminal: Código 4.6 Inicio del broker Mosquitto. "C:\Program Files\mosquitto\mosquitto.exe" -c "C:\ Program Files\mosquitto\mosquitto.conf" -v 4. Visual Studio Code (opcional): útil como entorno de desarrollo para editar código Arduino y scripts Python. Disponible en: https:// code.visualstudio.com/ 5. Octave/MATLAB: •GNU Octave (gratuito): https:// www.gnu.org/ software/ octave/ •MATLAB (requiere licencia): https:// www.mathworks.com/ products/ matlab.html 16 Capítulo 4. Software del sistema 4.5.5 Configuración de red • En el código de Arduino, modificar las siguientes líneas para introducir la información de la red WiFi y la IP del ordenador: Código 4.7 Configuración de la red WiFi. const char* ssid = "NOMBRE_RED"; const char* password = "PASSWORD"; const char* mqtt_server = "IP_DEL_ORDENADOR"; •Para conocer la IP del ordenador (servidor MQTT), usa: –En Windows: ejecutar ipconfig en la consola de comandos. –En Linux/macOS: usar ifconfig oip a. • Comprobar que el puerto 1883 está habilitado en el firewall del sistema, ya que es el que se usa para la comunicación MQTT. 4.5.6 Ejecución del sistema 1. Compilar y cargar el código de adquisición en la placa Arduino desde el IDE. Véase el Anexo A. 2. Iniciar el servidor Mosquitto en el ordenador. Para ello, abre un terminal utilizando el comando Win+R. 3. Ejecutar el script Python receptor, tal y como se describe en el Anexo B: Código 4.8 Recepción de datos del sensor. python captura_datos.py 4. El script guardará los datos recibidos en archivos .csv dentro de una carpeta local. 5. Procesar estos archivos con los scripts de Octave/MATLAB para obtener representaciones gráficas en el dominio de la frecuencia. Véanse los Anexos C, D y E. 4.5.7 Verificación del sistema •Confirmar que se reciben datos en tiempo real en la consola del script Python. • Verificar que los archivos .csv contienen columnas de tiempo y aceleración sin valores erróneos. •Comprobar que el análisis espectral revela los picos esperados de vibración. 4.6 Resumen de herramientas software utilizadas Para el desarrollo e implementación del sistema completo se ha recurrido a un conjunto diverso de herramientas software, seleccionadas en función de su funcionalidad, compatibilidad con sistemas embebidos y facilidad de integración. La combinación de entornos de código abierto y plataformas profesionales ha permitido abordar tanto el desarrollo del firmware como el postprocesado de los datos de forma eficiente y reproducible. 4.6 Resumen de herramientas software utilizadas 17 La Tabla 4.2 recoge las herramientas principales utilizadas en cada fase del proyecto, desde la adquisición hasta la redacción del documento. Por su parte, la Tabla 4.3 presenta las versiones concretas de cada aplicación, lo que resulta de especial utilidad a la hora de garantizar la replicabilidad de los ensayos y del entorno de desarrollo. Tabla 4.2 Resumen de herramientas software empleadas.. Software Descripción Arduino IDE Programación del microcontrolador y carga del firmware. Python (VS Code) Recepción, análisis en tiempo real y generación de archivos .csv. Mosquitto Broker MQTT ligero utilizado para la comunicación entre dispositivos. MATLAB Postprocesado de datos: análisis temporal y frecuencia, validación. Overleaf Edición del documento de memoria con formato L A T EX. Tabla 4.3 Resumen de versiones de software utilizadas.. Herramienta Versión utilizada Arduino IDE 2.3.2 Python 3.10.9 Bibliotecas Python pandas 1.5, matplotlib 3.6, paho-mqtt 1.6 MATLAB R2023a Mosquitto 2.0.15 Overleaf Compilador PDFLaTeX 5 Fundamentos teóricos E sta sección recoge los conceptos clave necesarios para entender la adquisición y análisis de las señales obtenidas con el sistema desarrollado. 5.1 Muestreo y teorema de Nyquist Toda señal analógica debe digitalizarse mediante un proceso de muestreo. El teorema de Nyquist establece que, para evitar el aliasing, la frecuencia de muestreo fs debe ser al menos el doble de la máxima frecuencia contenida en la señal ( fmax): fs≥2·fmax En este trabajo se han utilizado frecuencias de entre 167 y 250 Hz, lo que permite capturar señales con contenido útil hasta aproximadamente 125 Hz, suficiente para el análisis vibratorio de baja frecuencia. 5.2 Intervalo de muestreo y estabilidad temporal El intervalo de muestreo ( dt ) representa el tiempo entre dos lecturas consecutivas. En sistemas embebidos como Arduino, este intervalo puede verse alterado por latencias de ejecución, tiempos de transmisión y carga computacional. Esta variabilidad repercute directamente en la fidelidad del análisis espectral. Para obtener el valor real de dt , se ha utilizado la función micros() de Arduino, que registra el tiempo absoluto de adquisición de cada muestra. De esta forma, se puede reconstruir con precisión la evolución temporal de la señal, incluso si los datos no llegan de forma regular. 5.3 Transformada rápida de Fourier (FFT) La FFT permite transformar una señal desde el dominio temporal al dominio de la frecuencia. Es fundamental para detectar patrones vibratorios y frecuencias dominantes. La resolución en frecuencia de la FFT viene dada por: ∆f=fs N donde N es el número total de muestras y fs la frecuencia de muestreo. Una mayor duración del ensayo (es decir, un Nalto) permite obtener un mayor detalle espectral. 19 20 Capítulo 5. Fundamentos teóricos 5.4 Interpolación temporal Cuando los intervalos de muestreo no son constantes, la señal pierde regularidad y se introducen errores al aplicar la FFT. Para evitarlo, se utiliza interpolación temporal (lineal o spline), que permite estimar los valores intermedios de la señal sobre una rejilla temporal uniforme. Esta técnica ha sido fundamental en los ensayos con transmisión inalámbrica (protocolo MQTT), donde la variabilidad de dt es mayor. 5.5 Filtrado digital Las señales brutas adquiridas por el sensor contienen componentes de ruido, sobre todo en alta frecuencia. Para mitigarlo, se ha implementado un filtro digital de tipo Chebyshev pasobajo. Este tipo de filtro es adecuado para señales vibracionales por su buena respuesta en la banda pasante y su eficiencia computacional. 5.6 Uso del acelerómetro MPU6050 El sensor MPU6050 integra un acelerómetro triaxial con un rango de medida configurable. En este trabajo, se ha ajustado a un rango de ±8g para evitar saturaciones durante los ensayos con impactos. La lectura directa de los registros del sensor permite obtener la aceleración en cada eje, que posteriormente se transmite por WiFi o puerto serie. 5.7 Importancia del control de adquisición en tiempo real El control del instante de adquisición, especialmente cuando se utilizan protocolos no deterministas como MQTT, es esencial para asegurar una representación fiel de la señal. Cualquier desfase o irregularidad en los tiempos de captura repercute en la calidad del análisis vibratorio posterior. Las técnicas descritas en esta sección se han aplicado de forma combinada para garantizar la calidad del análisis espectral, especialmente en configuraciones inalámbricas, donde las variaciones de dt afectan directamente al resultado si no se corrigen adecuadamente. 6 Metodología y ensayos experimentales C on el objetivo de evaluar el rendimiento del sistema diseñado, se llevó a cabo una batería de ensayos experimentales en condiciones controladas. Estos ensayos se estructuraron de forma que permitieran analizar, por un lado, la estabilidad del intervalo de muestreo ( dt ) al emplear distintos protocolos de transmisión y, por otro, la viabilidad de obtener representaciones fiables en el dominio de la frecuencia mediante la aplicación de la Transformada Rápida de Fourier (FFT). La combinación de ambos enfoques permitió caracterizar el comportamiento dinámico del sistema y establecer sus límites operativos en función del número de canales activos y la frecuencia de muestreo configurada. 6.1 Configuraciones de hardware y software Para el desarrollo de los ensayos se emplearon dos configuraciones principales de hardware. La primera consistía en una conexión directa entre el Arduino y el ordenador mediante cable USB, utilizando el puerto serie para la transmisión de datos. La segunda configuración implementaba comunicación inalámbrica a través del protocolo MQTT, estableciendo la conexión mediante una red WiFi local con el software Mosquitto actuando como broker de mensajes. El sensor MPU6050 se conectó a la placa Arduino MKR1010 mediante la interfaz I2C, lo que permitió una integración sencilla y eficiente. En cuanto al número de canales utilizados durante las pruebas, se consideraron tres configuraciones distintas: una con la adquisición de datos únicamente del eje Z; otra en la que se registraban los ejes Y y Z; y una tercera que incluía los tres ejes (X, Y y Z) de forma simultánea. 6.2 Condiciones de los ensayos Las frecuencias de muestreo teóricas definidas para los ensayos fueron de 167 Hz, 200 Hz y 250 Hz, correspondientes a períodos de 6000, 5000 y 4000 microsegundos, respectivamente. Estas frecuencias se controlaron de forma precisa mediante la función micros() del entorno Arduino, con el fin de garantizar un intervalo constante entre muestras. Durante todos los ensayos, el sensor se fijó sobre una superficie rígida para asegurar una correcta transmisión de la vibración, y se aplicaron excitaciones manuales en forma de golpes periódicos o vibraciones suaves. La adquisición de datos se realizó a través de distintas vías, en función del protocolo utilizado: por un lado, mediante el monitor serie del entorno Arduino en la configuración por USB, y por otro, mediante un script en Python suscrito al tópico correspondiente cuando se empleó comunicación vía MQTT. En ambos casos, los datos fueron almacenados en archivos CSV con marcas temporales para su posterior análisis. 21 28 Capítulo 6. Metodología y ensayos experimentales Figura 6.9 Intervalo de muestreo dt - MQTT, 3 canales, 167 Hz.. 6.8 Ensayo 4: Protocolo MQTT, 1 canal, 200 Hz En esta prueba se configuró el sistema para adquirir datos únicamente del eje Z del acelerómetro y transmitirlos mediante el protocolo MQTT, con una frecuencia de muestreo teórica de 200 Hz, correspondiente a un periodo de 5000 microsegundos. El objetivo fue estudiar la estabilidad temporal del sistema en condiciones de carga reducida, es decir, cuando la cantidad de datos enviados por muestra es mínima. La sincronización entre adquisiciones se controló mediante la función micros(), tal como en los ensayos previos. El ensayo se llevó a cabo el 7 de abril de 2025. Durante su ejecución, el sistema alcanzó una frecuencia de muestreo media de 200,00 Hz, con valores del intervalo dt comprendidos entre 0,004529 y 0,005470 segundos. La desviación típica fue de 0,000040 segundos, lo que evidencia una regularidad notable en la temporización de las muestras. El contenido espectral obtenido a partir de la señal adquirida se muestra en la Figura 6.10, donde se identifica un pico dominante cercano a los 90 Hz, correspondiente a los impactos manuales introducidos durante el ensayo. En la Figura 6.11 se representa la aceleración filtrada en el dominio temporal, mientras que la evolución del intervalo dt a lo largo del tiempo puede analizarse en la Figura 6.12. Los resultados confirman que, al trabajar con un único canal activo, el sistema es capaz de mantener una temporización más estable, reduciendo las variaciones entre muestras consecutivas. Esta mejora en la regularidad temporal refuerza la idoneidad de este tipo de configuración en situaciones donde la precisión del intervalo de muestreo es prioritaria. Además, el análisis en frecuencia resultó fiable sin necesidad de aplicar interpolación adicional, gracias a la baja dispersión temporal observada en los datos. 6.8 Ensayo 4: Protocolo MQTT, 1 canal, 200 Hz 29 Figura 6.10 Contenido en frecuencia del eje Z - MQTT, 1 canal, 200 Hz.. Figura 6.11 Aceleración filtrada en el eje Z - MQTT, 1 canal, 200 Hz.. 30 Capítulo 6. Metodología y ensayos experimentales Figura 6.12 Intervalo de muestreo dt - MQTT, 1 canal, 200 Hz.. 6.9 Ensayo 5: Protocolo MQTT, 2 canales, 200 Hz Este ensayo se diseñó para evaluar cómo afecta el incremento en el número de canales activos a la estabilidad del sistema, manteniendo una frecuencia teórica de muestreo de 200 Hz y empleando transmisión inalámbrica mediante protocolo MQTT. En esta configuración, se activaron los ejes Y y Z del sensor MPU6050, y se utilizó la función micros() para controlar el intervalo de adquisición. La prueba se llevó a cabo el 7 de abril de 2025. Durante su desarrollo, el sistema logró mantener una frecuencia de muestreo media exacta de 200,00 Hz. El análisis temporal arrojó un valor mínimo de dt de 0,004538 segundos y un valor máximo de 0,005461 segundos. La desviación típica del intervalo fue de 0,000032 segundos, lo que representa una ligera mejora respecto a la configuración con un solo canal, posiblemente debido a la regularidad de las interrupciones de transmisión en la red local durante este ensayo específico. La Figura 6.13 muestra el espectro de frecuencias de los ejes Y y Z, donde se identifican picos claramente definidos, con una frecuencia dominante cercana a los 23 Hz, resultado de los impactos manuales introducidos. La evolución temporal de la aceleración en ambos ejes se presenta en la Figura 6.14, mientras que la Figura 6.15 recoge la variación del intervalo dt a lo largo del tiempo. Aunque la transmisión de dos canales implica un aumento en la carga de datos por muestra, el sistema mantuvo una estabilidad suficiente para que los datos fuesen utilizados en análisis espectrales. Como en ensayos anteriores, se aplicó interpolación temporal antes del cálculo de la Transformada Rápida de Fourier, lo que permitió corregir pequeñas irregularidades en el muestreo y obtener un espectro de frecuencia coherente. Este resultado demuestra que la configuración multicanal puede mantenerse operativa sin comprometer significativamente la calidad del análisis, siempre que se empleen técnicas de postprocesado adecuadas. 6.9 Ensayo 5: Protocolo MQTT, 2 canales, 200 Hz 31 Figura 6.13 Contenido en frecuencia - MQTT, 2 canales, 200 Hz.. Figura 6.14 Aceleraciones filtradas - MQTT, 2 canales, 200 Hz.. 32 Capítulo 6. Metodología y ensayos experimentales Figura 6.15 Intervalo de muestreo dt - MQTT, 2 canales, 200 Hz.. 6.10 Ensayo 6: Protocolo MQTT, 3 canales, 200 Hz Este ensayo se planteó con el objetivo de evaluar el rendimiento del sistema en una configuración que representa el escenario de mayor exigencia dentro del rango de pruebas a 200 Hz: la adquisición simultánea de los tres ejes del acelerómetro MPU6050 (X, Y y Z), con transmisión inalámbrica mediante el protocolo MQTT. El control de la temporización se realizó mediante la función micros() del entorno Arduino, con una frecuencia teórica de muestreo de 200 Hz, equivalente a un periodo de adquisición de 5000 microsegundos. La prueba, realizada el 7 de abril de 2025, ofreció resultados estables en términos generales. La frecuencia de muestreo media alcanzada fue de 200,00 Hz, con un intervalo dt mínimo de 0,004536 segundos y un máximo de 0,005464 segundos. La desviación típica registrada fue de 0,000039 segundos, lo cual, si bien supone un ligero aumento respecto a configuraciones de menor carga, se considera un resultado aceptable. En la Figura 6.16 se presenta el contenido en frecuencia obtenido mediante la aplicación de la Transformada Rápida de Fourier (FFT) a los datos de los tres ejes. Se observan componentes dominantes asociadas a los impactos periódicos realizados manualmente durante el ensayo. Las señales temporales filtradas se recogen en la Figura 6.17, y la evolución del intervalo de muestreo dt a lo largo del tiempo se representa en la Figura 6.18. Aunque el incremento del número de canales conlleva una mayor carga de transmisión, el sistema fue capaz de mantener una estabilidad adecuada para análisis de vibraciones no críticos. No obstante, la mayor variabilidad en dt obliga a realizar un proceso de interpolación temporal antes del análisis en frecuencia, con el fin de garantizar una separación uniforme entre muestras y obtener un espectro fiable. Este paso de postprocesado es clave para preservar la utilidad del sistema incluso en configuraciones de máxima carga. 6.10 Ensayo 6: Protocolo MQTT, 3 canales, 200 Hz 33 Figura 6.16 Contenido en frecuencia - MQTT, 3 canales, 200 Hz.. Figura 6.17 Aceleraciones filtradas - MQTT, 3 canales, 200 Hz.. 34 Capítulo 6. Metodología y ensayos experimentales Figura 6.18 Intervalo de muestreo dt - MQTT, 3 canales, 200 Hz.. 6.11 Ensayo 7: Protocolo MQTT, 1 canal, 250 Hz En este ensayo se estudia el rendimiento del sistema bajo una configuración de transmisión inalámbrica mediante protocolo MQTT, con adquisición exclusiva del eje Z del acelerómetro MPU6050 a una frecuencia teórica de 250 Hz. El objetivo principal fue verificar si la estabilidad temporal del sistema es suficiente como para permitir análisis espectral directo, sin la necesidad de interpolar los datos. La prueba fue realizada el 7 de abril de 2025. Los resultados obtenidos muestran una frecuencia de muestreo media de 250,00 Hz, con un valor mínimo de dt de 0,003454 segundos y un máximo de 0,004538 segundos. La desviación típica del intervalo de muestreo alcanzó los 0,000055 segundos, una cifra algo más elevada que en ensayos previos con frecuencias más bajas, indicando una mayor dispersión temporal. En la Figura 6.19 se representa el espectro de frecuencias correspondiente al eje Z, donde destaca una frecuencia dominante próxima a los 110 Hz, atribuida a una secuencia de impactos manuales espaciados aproximadamente cada dos segundos. Las Figuras 6.20 y 6.21 completan el análisis mostrando la señal temporal y la evolución del dt a lo largo del ensayo. Aunque la frecuencia media se ajusta al valor teórico, se identifican pequeñas variaciones puntuales del intervalo de muestreo provocadas por las latencias inherentes al sistema de transmisión WiFi. Estas fluctuaciones no impiden obtener un análisis en frecuencia válido, pero sí condicionan la precisión temporal del registro, por lo que se recomienda aplicar interpolación cuando se requiera una caracterización espectral más rigurosa. En aplicaciones donde no sea crítico el alineamiento exacto de las muestras en el tiempo, esta configuración resulta plenamente operativa y representa un equilibrio entre resolución temporal y sencillez de implementación. 6.11 Ensayo 7: Protocolo MQTT, 1 canal, 250 Hz 35 Figura 6.19 Contenido en frecuencia del eje Z - MQTT, 1 canal, 250 Hz.. Figura 6.20 Aceleración filtrada en el eje Z - MQTT, 1 canal, 250 Hz.. 36 Capítulo 6. Metodología y ensayos experimentales Figura 6.21 Intervalo de muestreo dt - MQTT, 1 canal, 250 Hz.. 6.12 Ensayo 8: Protocolo MQTT, 2 canales, 250 Hz Este ensayo analiza la estabilidad temporal del sistema al adquirir y transmitir dos ejes del acelerómetro MPU6050 (Y y Z) mediante protocolo MQTT, configurado con una frecuencia de muestreo teórica de 250 Hz, correspondiente a un periodo de 4000 microsegundos. El objetivo de esta prueba fue determinar si el incremento en el volumen de datos por muestra afecta significativamente al intervalo de muestreo dt. La prueba se llevó a cabo el 6 de abril de 2025. Durante el ensayo, el sistema logró mantener una frecuencia de muestreo media exacta de 250 Hz. No obstante, se observaron fluctuaciones en el intervalo temporal entre muestras, con un mínimo registrado de 0,003483 segundos y un máximo de 0,004510 segundos. La desviación típica del dt fue de 0,000038 segundos, indicando una mayor variabilidad con respecto a configuraciones con menor número de canales. En la Figura 6.22 se representa el contenido espectral de los ejes Y y Z, donde se identifica una frecuencia dominante cercana a los 66 Hz, generada por la aplicación de golpes suaves y periódicos durante la adquisición. Las Figuras 6.23 y 6.24 muestran respectivamente las señales de aceleración filtrada en el dominio temporal y la evolución del intervalo de muestreo. Aunque la frecuencia media se conserva en el valor deseado, el incremento de canales introduce una mayor dispersión en el dt , lo cual puede limitar la calidad del análisis espectral si no se emplean técnicas adecuadas de postprocesado. Aun así, los resultados obtenidos en este escenario permiten una caracterización en frecuencia razonablemente precisa, especialmente si se aplica interpolación temporal para compensar las pequeñas irregularidades en la señal. 6.12 Ensayo 8: Protocolo MQTT, 2 canales, 250 Hz 37 Figura 6.22 Contenido en frecuencia - MQTT, 2 canales, 250 Hz.. Figura 6.23 Aceleraciones filtradas - MQTT, 2 canales, 250 Hz.. 44 Capítulo 7. Discusión de resultados Figura 7.1 Comparación de la desviación estándar del intervalo de muestreo (dt) para distintas configuraciones de frecuencia y número de canales. Se distingue entre los protocolos MQTT (en azul) y Serie (en gris). Se observa que el uso del puerto Serie ofrece una estabilidad temporal mucho mayor, especialmente al transmitir múltiples canales.. 7.1 Frecuencia de muestreo y estabilidad del intervalo Se ha comprobado que, bajo ciertas condiciones, es posible mantener un intervalo de muestreo suficientemente estable mediante el uso de la función micros() , siempre que se evite la introducción de retardos artificiales mediante instrucciones como delay() . No obstante, los resultados experimentales reflejan diferencias significativas según el tipo de transmisión y la configuración del sistema. En primer lugar, la transmisión de datos a través del puerto serie presenta una mayor estabilidad en los intervalos de muestreo ( dt ), especialmente cuando se trabaja con frecuencias inferiores a los 250 Hz. Este comportamiento se debe a la simplicidad del canal de comunicación y a la baja latencia en entornos de desarrollo local. Por el contrario, cuando se utiliza transmisión inalámbrica mediante el protocolo MQTT, se observa una mayor variabilidad en el intervalo de muestreo. Este fenómeno puede atribuirse a factores como la latencia de red, el tráfico de otros dispositivos conectados o posibles interferencias en el entorno WiFi [5]. Asimismo, el empleo de múltiples canales de adquisición simultánea afecta negativamente a la estabilidad temporal. Al aumentar el volumen de datos que deben ser adquiridos y transmitidos por cada ciclo, el tiempo entre muestras tiende a incrementarse, lo que introduce irregularidades en la señal temporal capturada y puede dificultar su posterior análisis espectral. 7.2 Número de canales y limitaciones del hardware A medida que se incrementa el número de canales activos, es decir, al pasar de un eje a la adquisición simultánea de dos o tres ejes del sensor, se observa una ligera disminución en la frecuencia de muestreo máxima alcanzable. Esta reducción se debe al incremento en el tiempo necesario para adquirir, procesar y transmitir cada conjunto de datos. Además, la desviación estándar del intervalo de muestreo ( dt ) tiende a aumentar de forma significativa, especialmente cuando se emplea comunicación inalámbrica por WiFi. Este efecto limita la regularidad temporal de la señal y puede afectar la calidad del análisis posterior. 7.3 Viabilidad del análisis en frecuencia 45 Pese a estas limitaciones, el sistema mantiene su funcionalidad incluso con los tres canales activos, permitiendo su uso en entornos de prueba o para tareas donde no se requiera una precisión temporal estricta. No obstante, si se pretende realizar un análisis espectral riguroso, es recomendable reducir el número de canales o asegurar condiciones más estables de adquisición. 7.3 Viabilidad del análisis en frecuencia El sistema desarrollado ha demostrado ser capaz de proporcionar representaciones válidas en el dominio de la frecuencia mediante la aplicación de la Transformada Rápida de Fourier (FFT). Para garantizar la fidelidad de este análisis, ha sido esencial mantener un intervalo de muestreo lo más constante posible, minimizando la variación entre muestras consecutivas. Asimismo, se ha recurrido a técnicas de interpolación temporal y al uso de filtros digitales, como los de tipo Chebyshev, para mejorar la calidad de la señal antes de aplicar la FFT. También se ha comprobado que trabajar con frecuencias de muestreo superiores a 200 Hz resulta clave para obtener una resolución espectral adecuada. En configuraciones con mayor variabilidad temporal, como aquellas que combinan WiFi y adquisición multicanal, la interpretación de los resultados frecuenciales puede verse comprometida. Por tanto, se recomienda precaución al utilizar estos datos en contextos donde se requiera alta precisión en el diagnóstico estructural. 7.4 Implicaciones prácticas El sistema propuesto constituye una herramienta eficaz para aplicaciones educativas, prototipado rápido o análisis preliminares de vibraciones en estructuras. Su bajo coste, facilidad de implementación y carácter inalámbrico lo convierten en una opción atractiva para la docencia y proyectos de iniciación a la instrumentación. Sin embargo, para entornos donde se requiera una elevada precisión o fiabilidad, como puede ser el monitoreo estructural continuo o el análisis modal detallado, es necesario considerar posibles mejoras. Entre ellas se encuentra la sustitución del protocolo MQTT por soluciones de mayor rendimiento, como la comunicación por SPI o el almacenamiento local en tarjetas SD para evitar pérdidas de datos por congestión de red. También podrían incorporarse microcontroladores con mayor capacidad de procesamiento o buffers dedicados, lo que permitiría una adquisición más estable. Finalmente, el uso de sensores con salida digital optimizada o posibilidad de sincronización externa mejoraría significativamente la calidad de los datos obtenidos. 7.5 Comparación con trabajos previos Los resultados obtenidos son consistentes con los presentados en Trabajos Fin de Grado previos, en los que también se evidencian las limitaciones del muestreo en sistemas basados en Arduino. Sin embargo, se han introducido mejoras significativas, como el uso de micros() para temporización precisa, envío selectivo de datos y análisis automático mediante scripts en Python y MATLAB. 8 Validación experimental en laboratorio P ara validar el sistema desarrollado, se realizaron ensayos sobre una viga metálica tipo cantilever (empotrada en uno de sus extremos y libre en el otro) disponible en el laboratorio T1 de la Escuela Técnica Superior de Ingeniería. En el extremo libre se colocó un acelerómetro MPU6050, debidamente fijado y conectado al sistema Arduino MKR WiFi 1010. La señal fue adquirida en tiempo real y transmitida al ordenador mediante el protocolo MQTT. Se llevaron a cabo dos configuraciones distintas: •Viga sin masa añadida en el extremo libre. •Viga con una masa rígida anclada al extremo libre. El objetivo es estudiar la influencia de la masa en la frecuencia natural del sistema. A continuación se muestran las imágenes correspondientes a las dos configuraciones utilizadas en el laboratorio: Figura 8.1 Montaje experimental sin masa añadida en el extremo libre de la viga.. 47 48 Capítulo 8. Validación experimental en laboratorio Figura 8.2 Montaje experimental con masa rígida anclada al extremo libre de la viga.. 8.1 Introducción al análisis modal Los sistemas mecánicos presentan frecuencias naturales en las que oscilan con máxima amplitud. Estas se conocen como modos normales o frecuencias propias. Un modo normal es un patrón de vibración en el que todas las partes del sistema vibran con la misma frecuencia y fase[ 6 ]. Estos modos se caracterizan por su frecuencia natural ( fn), su amortiguamiento y su forma modal. En sistemas simples de un único grado de libertad, como una masa unida a un resorte, la frecuencia natural se define como: fn=1 2πrk m donde k representa la rigidez del sistema y m la masa. Para estructuras más complejas, con múltiples grados de libertad, la ecuación de movimiento puede expresarse en forma matricial: M¨q(t)+K q(t) = 0 donde M es la matriz de masas, K la matriz de rigideces, y q(t) el vector de desplazamiento. Resolviendo el problema de valores propios asociado, se obtienen los valores ω2 n que representan las frecuencias naturales asociadas a cada modo de vibración[7]. En los ensayos presentados, con y sin masa en la punta de la viga, se observa cómo la frecuencia dominante medida (6,31 Hz y 4,09 Hz) corresponde al modo fundamental de la estructura. La disminución de frecuencia al añadir masa se explica directamente por el aumento en m , según la fórmula anterior. 8.2 Fundamento teórico del ensayo 49 8.2 Fundamento teórico del ensayo En una estructura en voladizo como la utilizada, las frecuencias naturales dependen de la rigidez del material y la distribución de masa. Al añadir una masa puntual en el extremo libre, se espera una disminución de la frecuencia natural del primer modo de vibración. La frecuencia natural fundamental de una viga en voladizo sin masa concentrada se aproxima por: f1=1.8752 2πL2sEI ρA donde: •Les la longitud de la viga, •Ees el módulo de Young del material, •Ies el momento de inercia de la sección transversal, •ρes la densidad del material, •Aes el área de la sección. Al incorporar una masa M en el extremo libre, el sistema se comporta como una viga cargada con masa puntual, reduciendo la frecuencia según: f′ 1=f1·s1 1+αM m donde mes la masa de la viga y αdepende de la forma del modo. 8.3 Ensayos seleccionados Para comparar experimentalmente el comportamiento del sistema, se seleccionaron dos ensayos representativos: 8.3.1 Ensayo 1: Sin masa en la punta Este ensayo se realizó el 10 de junio de 2025 con el objetivo de estudiar el comportamiento vibratorio libre de una estructura sin masa adicional en su extremo. Se utilizó un único eje del acelerómetro (Z) y el protocolo de transmisión MQTT a una frecuencia teórica de muestreo de 250 Hz, controlada mediante la función micros() en Arduino. El sistema alcanzó una frecuencia de muestreo media de 250 Hz, con un intervalo de muestreo que osciló entre 0,003439 s y 0,004560 s, y una desviación típica de tan solo 0,000029 s, lo que indica una alta estabilidad temporal. La señal obtenida mostró un comportamiento limpio y sin presencia de saturación ni ruido significativo. Se observó una oscilación amortiguada clara tras la perturbación inicial, lo que permite extraer información útil del sistema. El análisis espectral mediante FFT reveló un pico bien definido con una frecuencia dominante de 6,31 Hz, correspondiente al modo principal de vibración. Estos resultados confirman la validez del ensayo para caracterizar la respuesta libre de la estructura. 8.3.2 Ensayo 2: Con masa en la punta En este segundo ensayo, también llevado a cabo el 10 de junio de 2025, se repitió la configuración experimental anterior, añadiendo una masa en el extremo libre de la estructura para observar su efecto sobre la frecuencia natural. Al igual que en el caso anterior, se empleó transmisión inalámbrica 50 Capítulo 8. Validación experimental en laboratorio mediante protocolo MQTT, activando únicamente el eje Z y manteniendo la frecuencia de muestreo teórica en 250 Hz, controlada por micros(). Los datos muestran nuevamente una excelente estabilidad en el intervalo de muestreo, con valores entre 0,003620 s y 0,004376 s, y una desviación típica de 0,000026 segundos. La señal capturada fue estable y sin saturación, con una respuesta vibratoria amortiguada bien definida. En la representación espectral, se identificó un pico dominante a 4,09 Hz, lo que refleja la disminución esperada de la frecuencia natural debido al aumento de masa en el extremo. El resultado confirma la coherencia física del sistema y la fiabilidad del montaje experimental. 8.4 Validación experimental Los resultados obtenidos confirman el correcto funcionamiento del sistema desarrollado, tanto en la adquisición de datos como en el análisis espectral. Para verificar la sensibilidad del sistema a variaciones estructurales, se realizaron ensayos comparativos con y sin masa añadida en el extremo libre de la barra. En el dominio del tiempo, las señales adquiridas muestran una oscilación de mayor frecuencia cuando no hay masa adicional, mientras que la respuesta del sistema se ralentiza con la presencia de masa, en coherencia con la teoría de vibraciones mecánicas. Esta diferencia queda claramente reflejada en la Figura 8.3. Desde el punto de vista frecuencial, el análisis mediante Transformada Rápida de Fourier (FFT) revela un pico dominante en torno a 6.31 Hz en el caso sin masa, y otro desplazado a aproximadamente 4.09 Hz en el caso con masa, tal como se aprecia en la Figura 8.4. Estos valores validan el comportamiento esperado del sistema y demuestran su capacidad para detectar cambios en las condiciones dinámicas. Adicionalmente, se verificó que la frecuencia de muestreo efectiva se mantuvo estable en torno a los 250 Hz, con una desviación estándar baja,alrededor de 0.00003 segundos, lo que garantiza la fiabilidad de los resultados obtenidos en el dominio de la frecuencia haciendo uso de la interpolación en el postprocesado en Matlab. En conjunto, los ensayos realizados permiten concluir que el sistema propuesto cumple con los requisitos funcionales definidos, y que su comportamiento experimental es coherente con los modelos físicos teóricos que lo sustentan. 8.4 Validación experimental 51 Figura 8.3 Comparación de las aceleraciones en el tiempo para el eje Z. Se aprecia cómo la señal sin masa presenta mayor frecuencia de oscilación que la señal con masa, cuyo comportamiento es más lento debido al aumento de inercia en el sistema.. 52 Capítulo 8. Validación experimental en laboratorio Figura 8.4 Comparación del contenido espectral (FFT) del eje Z. El sistema sin masa presenta un pico dominante en torno a 6.31 Hz, mientras que con masa en el extremo libre dicho pico se desplaza a unos 4.09 Hz, en línea con la teoría de vibraciones.. 8.5 Validación frente a un sistema profesional Con el objetivo de validar la fiabilidad del sistema de bajo coste desarrollado, se ha realizado una comparación experimental con un sistema profesional de análisis modal, empleado habitualmente en el ámbito académico y de investigación estructural. Ambos sistemas fueron utilizados bajo condiciones controladas en laboratorio sobre la misma estructura, replicando dos configuraciones: sin masa añadida y con una masa adicional en el extremo libre. El sistema profesional utilizado fue un equipo portátil de adquisición IDAe 3560C de la firma Brüel & Kjær. Este sistema alimenta tanto a los sensores (acelerómetros) como a un martillo de impacto instrumentado, y realiza la conversión analógica-digital (A/D) a una frecuencia de muestreo elevada, fs=4096 Hz, lo que permite evitar problemas de aliasing. La instrumentación incluye acelerómetros piezoeléctricos modelo Endevco 256 HX-100, con una sensibilidad nominal de 100 mV/g. La señal adquirida se registra en un ordenador portátil y se configura adecuadamente para evitar saturaciones en los sensores. En la tabla 8.1 se recogen las frecuencias dominantes detectadas por ambos sistemas para los dos casos considerados. 8.5 Validación frente a un sistema profesional 53 Tabla 8.1 Comparación de frecuencias dominantes detectadas (Hz). Caso sin masa Sistema profesional Sistema bajo coste Primer modo 6.20 6.31 Segundo modo 38.40 38.96 Tercer modo 107.00 108.94 Caso con masa Sistema profesional Sistema bajo coste Primer modo 4.20 4.09 Segundo modo 31.40 31.05 Tercer modo 92.40 - (a) Sistema profesional: representación de la FRF imaginaria. (b) Sistema de bajo coste: módulo del espectro de aceleración. Figura 8.5 Comparación del contenido en frecuencia obtenido por ambos sistemas en el caso sin masa. Se identifican los mismos modos principales, aunque con diferencias en la resolución espectral y amplitud relativa.. (a) Sistema profesional: FRF imaginaria con masa añadida. (b) Sistema de bajo coste: espectro de aceleración con masa. Figura 8.6 Comparación del contenido en frecuencia para ambos sistemas en el caso con masa añadida. Se observan los mismos modos dominantes, aunque con diferencias en resolución y amplitud.. Apéndice B Captura datos Con este script, que ejecutaremos en Visual Studio Code, se reciben los datos del sensor usando MQTT o puerto serie, que posteriormente se guardarán en un archivo csv. Código B.1 Script en Python para capturar datos vía MQTT o puerto serie. import paho.mqtt.client as mqtt import serial from datetime import datetime import pandas as pd import os modo = "mqtt" # Cambiar a ’mqtt’ o ’serial’ datos = [] broker = "192.168.1.43" topic = "vibracion/datos" def procesar_linea(linea): partes = linea.split(",") try: timestamp = int(partes[0]) valores = list(map(float, partes[1:])) datos.append([timestamp] + valores) except (ValueError, IndexError): pass # --- Captura de datos --- if modo == "mqtt": def on_connect(client, userdata, flags, rc): print("Conectado al broker MQTT con código:", rc) client.subscribe(topic) def on_message(client, userdata, msg): linea = msg.payload.decode("utf-8").strip() procesar_linea(linea) 61 62 Apéndice B. Captura datos client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect(broker, 1883, 60) print("Esperando datos del sensor vía MQTT... Pulsa Ctrl+C para finalizar.") try: client.loop_forever() except KeyboardInterrupt: print("Lectura finalizada. Guardando datos...") elif modo == "serial": puerto = "COM3" # Cambia al puerto correcto baudrate = 115200 try: with serial.Serial(puerto, baudrate, timeout=1) as ser: print(f"Leyendo desde {puerto}. Pulsa Ctrl+C para detener.") while True: try: linea = ser.readline().decode("utf-8").strip() if linea: procesar_linea(linea) except KeyboardInterrupt: break except serial.SerialException as e: print("Error abriendo el puerto serie:", e) # --- Guardado de datos --- if datos: columnas = ["timestamp"] + [f"val{i}" for i in range(1, len(datos [0]))] df = pd.DataFrame(datos, columns=columnas) df["time_s"] = (df["timestamp"] - df["timestamp"].iloc[0]) / 1e6 df["dt"] = df["time_s"].diff() fecha = datetime.now().strftime(’%Y%m%d_%H%M%S’) nombre_archivo = f"ensayo_{modo}_continuo_{fecha}.csv" df.to_csv(nombre_archivo, index=False) print(f"Datos guardados en {nombre_archivo}") else: print("No se han recibido datos.") Apéndice C Análisis tres canales Código C.1 Script de postprocesado en MATLAB para análisis temporal y frecuencial usando tres canales. clear all; close all; clc; % Leer CSV exportado desde Arduino (vía MQTT o serie) Tbl = readtable(’ensayo_mqtt_continuo_20250406_224434.csv’); % Tiempo en microsegundos -> convertir a segundos relativos time_us = Tbl{:,1}; time = (time_us - time_us(1)) / 1e6; % Aceleraciones (asumimos que estan en columnas 3,4,5 si total esta en 2) x = Tbl.val1; y = Tbl.val2; z = Tbl.val3; % Intervalo de muestreo dt = diff(time); fs = 1 / mean(dt); fprintf(’Frecuencia de muestreo media: %.2f Hz\n’, fs); fprintf(’dt min: %.6f s | dt max: %.6f s | std: %.6f s\n\n’, ... min(dt), max(dt), std(dt)); % Tiempo interpolado equiespaciado t_uniforme = 0:mean(dt):time(end); % Interpolación lineal de senales xi = interp1(time, x, t_uniforme); yi = interp1(time, y, t_uniforme); zi = interp1(time, z, t_uniforme); 63 64 Appendix C. Análisis tres canales % Filtrado Chebyshev paso alto (opcional) cheby_order = 2; cheby_ripple = 0.5; f_corte = 10; % Hz [B, A] = cheby1(cheby_order, cheby_ripple, f_corte / (fs/2), ’high’); xf = filtfilt(B, A, xi); yf = filtfilt(B, A, yi); zf = filtfilt(B, A, zi); % Gráfico en el dominio del tiempo figure; plot(t_uniforme, xf, ’r’); hold on; plot(t_uniforme, yf, ’g’); plot(t_uniforme, zf, ’b’); xlabel(’Tiempo (s)’); ylabel(’Aceleración (g)’); legend(’X’, ’Y’, ’Z’); title(’Aceleraciones filtradas’); grid on; % FFT n = length(t_uniforme); f = fs * (0:(n/2)) / n; X = abs(fft(xf)); Y = abs(fft(yf)); Z = abs(fft(zf)); X = X(1:length(f)); Y = Y(1:length(f)); Z = Z(1:length(f)); % Frecuencia dominante del eje Z [~, idx_max] = max(Z); f_dom = f(idx_max); fprintf(’Frecuencia dominante en eje Z: %.2f Hz\n’, f_dom); % Gráfico FFT figure; plot(f, Z, ’k’); hold on; plot(f, X, ’r’); plot(f, Y, ’g’); legend(’Z’, ’X’, ’Y’); xlabel(’Frecuencia (Hz)’); ylabel(’Magnitud’); title(’Contenido en frecuencia (FFT)’); grid on; 65 figure; plot(dt); xlabel(’Time [s]’); ylabel(’dt [s]’); title(’Intervalo de muestreo (dt)’); grid on; Apéndice D Análisis dos canales Código D.1 Script de postprocesado en MATLAB para análisis temporal y frecuencial usando dos canales (ejes Y y Z). clear all; close all; clc; Tbl = readtable(’ensayo_mqtt_continuo_20250407_191050.csv’); time_us = Tbl{:,1}; time = (time_us - time_us(1)) / 1e6; y = Tbl.val1; z = Tbl.val2; dt = diff(time); fs = 1 / mean(dt); fprintf(’Frecuencia de muestreo media: %.2f Hz\n’, fs); fprintf(’dt min: %.6f s | dt max: %.6f s | std: %.6f s\n\n’, min(dt), max(dt), std(dt)); t_uniforme = 0:mean(dt):time(end); yi = interp1(time, y, t_uniforme); zi = interp1(time, z, t_uniforme); [B, A] = cheby1(2, 0.5, 10 / (fs/2), ’high’); yf = filtfilt(B, A, yi); zf = filtfilt(B, A, zi); figure; plot(t_uniforme, yf, ’g’); hold on; plot(t_uniforme, zf, ’b’); xlabel(’Tiempo (s)’); 67 68 Apéndice D. Análisis dos canales ylabel(’Aceleración (g)’); legend(’Y’, ’Z’); title(’Aceleraciones filtradas’); grid on; n = length(t_uniforme); f = fs * (0:(n/2)) / n; Z = abs(fft(zf)); Y = abs(fft(yf)); Z = Z(1:length(f)); Y = Y(1:length(f)); [~, idx_max] = max(Z); f_dom = f(idx_max); fprintf(’Frecuencia dominante en eje Z: %.2f Hz\n’, f_dom); figure; plot(f, Z, ’b’); hold on; plot(f, Y, ’g’); legend(’Z’, ’Y’); xlabel(’Frecuencia (Hz)’); ylabel(’Magnitud’); title(’Contenido en frecuencia (FFT)’); grid on; figure; plot(dt); xlabel(’Time [s]’); ylabel(’dt [s]’); title(’Intervalo de muestreo (dt)’); grid on; Apéndice E Análisis un canal Código E.1 Script de postprocesado en MATLAB para análisis temporal y frecuencial usando un solo canales (eje Z). clear all; close all; clc; Tbl = readtable(’ensayo_mqtt_continuo_20250407_191211.csv’); time_us = Tbl{:,1}; time = (time_us - time_us(1)) / 1e6; z = Tbl.val1; dt = diff(time); fs = 1 / mean(dt); fprintf(’Frecuencia de muestreo media: %.2f Hz\n’, fs); fprintf(’dt min: %.6f s | dt max: %.6f s | std: %.6f s\n\n’, min(dt), max(dt), std(dt)); t_uniforme = 0:mean(dt):time(end); zi = interp1(time, z, t_uniforme); [B, A] = cheby1(2, 0.5, 10 / (fs/2), ’high’); zf = filtfilt(B, A, zi); figure; plot(t_uniforme, zf, ’b’); xlabel(’Tiempo (s)’); ylabel(’Aceleración (g)’); title(’Aceleración eje Z (filtrada)’); grid on; n = length(t_uniforme); 69 76 Índice de Figuras 7.1 Comparación de la desviación estándar del intervalo de muestreo (dt) para distintas configuraciones de frecuencia y número de canales. Se distingue entre los protocolos MQTT (en azul) y Serie (en gris). Se observa que el uso del puerto Serie ofrece una estabilidad temporal mucho mayor, especialmente al transmitir múltiples canales. 44 8.1 Montaje experimental sin masa añadida en el extremo libre de la viga. 47 8.2 Montaje experimental con masa rígida anclada al extremo libre de la viga. 48 8.3 Comparación de las aceleraciones en el tiempo para el eje Z. Se aprecia cómo la señal sin masa presenta mayor frecuencia de oscilación que la señal con masa, cuyo comportamiento es más lento debido al aumento de inercia en el sistema. 51 8.4 Comparación del contenido espectral (FFT) del eje Z. El sistema sin masa presenta un pico dominante en torno a 6.31 Hz, mientras que con masa en el extremo libre dicho pico se desplaza a unos 4.09 Hz, en línea con la teoría de vibraciones. 52 8.5 Comparación del contenido en frecuencia obtenido por ambos sistemas en el caso sin masa. Se identifican los mismos modos principales, aunque con diferencias en la resolución espectral y amplitud relativa. 53 8.6 Comparación del contenido en frecuencia para ambos sistemas en el caso con masa añadida. Se observan los mismos modos dominantes, aunque con diferencias en resolución y amplitud. 53 Índice de Tablas 3.1 Coste aproximado del hardware utilizado 6 4.1 Conexiones del hardware 15 4.2 Resumen de herramientas software empleadas. 17 4.3 Resumen de versiones de software utilizadas. 17 7.1 Comparativa entre configuraciones: estabilidad del intervalo de muestreo 43 8.1 Comparación de frecuencias dominantes detectadas (Hz) 53 8.2 Resumen técnico del sistema desarrollado 54 77 Índice de Códigos 4.1 Inicio del broker Mosquitto 12 4.2 Verificación del puerto MQTT 12 4.3 Suscripción manual al tópico MQTT 12 4.4 Instalación de librerías necesarias para análisis en Python 13 4.5 Instalación de librerías necesarias para análisis en Python 15 4.6 Inicio del broker Mosquitto 15 4.7 Configuración de la red WiFi 16 4.8 Recepción de datos del sensor 16 A.1 Sketch de Arduino para análisis del dt según frecuencia y número de canales 57 B.1 Script en Python para capturar datos vía MQTT o puerto serie 61 C.1 Script de postprocesado en MATLAB para análisis temporal y frecuencial usando tres canales 63 D.1 Script de postprocesado en MATLAB para análisis temporal y frecuencial usando dos canales (ejes Y y Z) 67 E.1 Script de postprocesado en MATLAB para análisis temporal y frecuencial usando un solo canales (eje Z) 69 F.1 Script para el análisis de ensayos con y sin masa 71 G.1 Visualización en tiempo real desde MQTT 73 79 Bibliografía [1] Baur, C., & Knecht, M. (2021). A low-cost wireless vibration monitoring system using Arduino and MPU6050. *Sensors and Actuators A: Physical*, 318, 112476. [2] Martinez-Cruz, J. A., et al. (2022). Wireless vibration monitoring using MQTT and low-cost hardware. *IEEE Sensors Journal*, 22(7), 6523–6531. [3] Chen, Y. et al. (2020). Teaching signal acquisition and processing with low-cost MEMS sensors. *International Journal of Engineering Education*, 36(5), 1504–1512. [4] Lyons, R. G. (2010). *Understanding Digital Signal Processing* (3rd ed.). Pearson Education. [5] Thangavel, D., Ma, X., Valera, A., Tan, H. P., & Tan, C. K. Y. (2014). Performance evaluation of MQTT and CoAP via a common middleware. In Proceedings of the IEEE ISSNIP, 1–6. https:// doi.org/ 10.1109/ ISSNIP.2014.6827678 [6] D. J. Inman, Engineering Vibration, 4ªed., Prentice Hall, 2014. [7] L. Meirovitch, Fundamentals of Vibrations, McGraw-Hill, 2001. [8] Arduino. MKR WiFi 1010 Board. Disponible en: https:// store.arduino.cc/ products/ arduinomkr-wifi-1010 [9] InvenSense. MPU-6000 and MPU-6050 Product Specification, Revision 3.4, 2013. [10] Eclipse Foundation. MQTT - The Standard for IoT Messaging. Disponible en: https:// mqtt.org/ [11] MathWorks. Fast Fourier Transform - MATLAB Documentation. Disponible en: https:// www. mathworks.com/ help/ matlab/ ref/ fft.html [12] Blanco González, V. J. TFG: Monitorizacion de vibraciones estructurales mediante Arduino y sensores MEMS. Universidad de Sevilla, 2022. [13] Monsalvete Contreras, P. TFG: Sistema de adquisicion para vibraciones en estructuras con sensores inerciales. Universidad de Sevilla, 2022. [14] Vujović, V., & Maksimović, M. (2015). Raspberry Pi as a Wireless Sensor Node: Performances and Constraints. Computers & Electrical Engineering, 44, 153–171. https:// doi.org/ 10.1016/ j. compeleceng.2015.01.019 [15] A. V. Oppenheim, R. W. Schafer, Discrete-Time Signal Processing, Prentice Hall, 2010. [16] R. Bracewell, The Fourier Transform and Its Applications, McGraw-Hill, 2000. 81