Arduino registra datos de aceleración vertical

1

Estoy realizando un proyecto en el que quiero iniciar y detener la grabación de los datos del acelerómetro configurados para medir la aceleración vertical del eje Z del movimiento de la suspensión de un automóvil cuando golpea un bache. Quiero poder hacer FFT en los datos del acelerómetro y tratar de encontrar un "patrón" que represente un evento de baches para poder detectar baches de otros eventos, al igual que cerrar la puerta de un automóvil, etc ...

Mi pregunta es que no estoy seguro de qué frecuencia de muestreo necesitaría muestrear para obtener el SHM de la suspensión cuando llegue al bache. En este momento, solo tengo mi acelerómetro, un KXPS5-3157 en modo analógico conectado a mi Arduino y tengo un botón que mantiene presionado para hacer que registre los datos, cuando suelte el botón dejará de iniciar sesión y comenzará una nueva sesión. Hago esto para poder mantener presionado el botón justo antes de pasar por un bache para obtener los datos.

¿Debo usar Timer1 por ejemplo? Creo que necesitaría una sincronización precisa con los datos de aceleración para que sea placentero? Dado que la aceleración es con el tiempo, no estoy seguro de qué frecuencia de muestreo o cómo hacer que Arduino haga como 1 muestra / seg o 10 muestras / seg. Parece que la frecuencia del bache con las operaciones de suspensión en el rango de movimiento mecánico de 5 a 10 Hz. Rara vez, después de 13HZ, se extingue rápidamente por debajo de 3dB, por lo que se puede ignorar.

¿Alguna idea sobre cómo detectar eventos de baches? Ni siquiera estoy seguro de que la FFT sea la dirección correcta. Quiero trazar los datos desde el puerto serie, pero al trazarlos ahora mismo, solo tengo aceleración sin referencia de tiempo. Creo que necesito una referencia de tiempo con los datos

    
pregunta zacharoni16

1 respuesta

1

Sí, necesitas una referencia de tiempo. Una interrupción de temporizador que desencadena la conversión de ADC suele ser la mejor apuesta. También es posible dejar que el ADC se ejecute libremente y usar la lectura periódica (cada n-ésimo). Eso hace que los datos de tiempo OK, si no es genial.

En cuanto a la frecuencia de muestreo, lo que necesita averiguar es el ancho de banda que necesita. Supongamos que las vibraciones que se producen tienen una frecuencia de x Hz, necesitaría al menos 2x Hz para reconstruir una vibración asumiendo que es puramente sinusoidal. Esto es una especie de límite teórico. Dado que un bache no producirá una vibración sinusoidal, y la teoría no siempre se traduce directamente a la vida real, es probable que necesite una muestra de al menos 10x Hz.

Para algo como un automóvil, supongo que las vibraciones serían del orden de, por ejemplo, 10Hz a 1KHz. (Para referencia, los edificios generalmente vibran a sub 1 Hz. Los pequeños objetos metálicos diseñados para soportar vibraciones y cosas como los cohetes vibrarían en el rango de 50-200 Hz. Las horquillas de sintonización vibran en Kilohertz, generalmente, como las horquillas de afinación de 32.768 KHz que se usan comúnmente en electrónica para el mantenimiento del tiempo, y los cristales de cuarzo vibran en el rango de MHz). Por lo tanto, una tasa de muestreo de más de 10 KHz es por lo tanto más que suficiente. Podría intentar con menos y ver si funciona, pero realmente no he hecho ningún cálculo para que los automóviles estén seguros. Estoy bastante seguro de que 1KHz debería llegar tan lejos como deberían llegar las vibraciones, y probablemente será menos que en la realidad.

EDITAR: Si solo está realmente interesado en la vibración a gran escala del automóvil, como dice 10-13Hz es lo que le interesa, 100Hz debería ser suficiente. Tomaría muestras a 1KHz para estar seguro.

    
respondido por el Chintalagiri Shashank

Lea otras preguntas en las etiquetas