Adquisición, filtrado y tratamiento del acelerómetro en Pic

0

Me han pedido que experimente con pruebas dinámicas. Utilizando el acelerómetro y el medidor de tensión atornillados a un tubo metálico y martillándolo (el tubo), necesito mostrar la fuerza del impacto y el desplazamiento del tubo, de hecho, se hunde en el suelo.

Ya hay sistemas que hacen eso, pero está fuera del presupuesto y para grandes tuberías.

El medidor de tensión se usa para obtener la fuerza del impacto y puede lidiar con eso.

Pero para el acelerómetro, estoy un poco perdido. Una grabación de impacto total parece estar cerca de 50 ms.

Necesitaría ayuda para apuntarme en la dirección correcta para obtener el desplazamiento de las grabaciones del acelerómetro.

Sé cómo acondicionar los sensores y registrar datos ... pero a continuación, me pierdo :) Debería integrar 2 veces los datos del acelerómetro para obtener el desplazamiento. Esa es la parte difícil para mí, ya que nunca he hecho eso con fotos, solo hace mucho tiempo con AMP analógicos.

Entonces, ¿qué tipo de integración funciona mejor para ese tipo de trabajo?

Muchas gracias

    
pregunta Cedric

1 respuesta

1

Suponiendo que esté muestreando en un paso de tiempo fijo, denominado \ $ \ Delta \ $, y \ $ t_n \ $ denote sus tiempos de muestreo (es decir, \ $ t_n = n \ Delta \ $), entonces una estimación tradicional de la velocidad es $$ v (t_ {n}) \ sim \ sum_ {k = 0} ^ {n-1} a (t_k) \ Delta $$ donde \ $ a (t_k) \ $ es el valor de aceleración en el tiempo \ $ t_k \ $ según lo muestrea su acelerómetro. Parece que también estás asumiendo las condiciones iniciales de que \ $ v (t_0) = 0 \ $ y \ $ p (t_0) = 0 \ $.

Aplicando esta idea nuevamente para obtener la posición mediante la integración de la velocidad calculada que obtenemos $$ p (t_ {n}) \ sim \ sum_ {k = 0} ^ {n-1} v (t_k) \ Delta \ sim \ sum_ {k = 0} ^ {n-1} \ sum_ {i = 0} ^ {k-1} a (t_i) \ Delta ^ 2. $$

Esta última suma simplifica un poco a $$ \ sum_ {k = 0} ^ {n-1} \ sum_ {i = 0} ^ {k-1} a (t_i) \ Delta ^ 2 = \ sum_ {i = 0} ^ {n-2} (n-1-i) a (t_i) \ Delta ^ 2 = \ left (\ sum_ {i = 0} ^ {n-3} (n-2-i) a (t_i) \ Delta ^ 2 \ right) + \ sum_ {i = 0} ^ {n-2} a (t_i) \ Delta ^ 2. $$

Ahora, si observa que el bit entre paréntesis es nuestra estimación de \ $ p (t_ {n-1}) \ $, verá que obtenemos la fórmula recursiva \ $ p (t_ {n}) = p (t_ { n-1}) + \ sum_ {i = 0} ^ {n-2} a (t_i) \ Delta ^ 2 \ $. Esto nos permite calcular fácilmente \ $ p (t_ {n}) \ $ mediante el seguimiento de dos (y solo dos) valores: \ $ p (t_ {n-1}) \ $ y una variable auxiliar \ $ s_n = \ sum_ {i = 0} ^ {n-2} a (t_i) \ Delta ^ 2 \ $. Tenga en cuenta que tenemos las fórmulas recursivas $$ s_n = s_ {n-1} + a (t_ {n-2}) \ Delta ^ 2 $$ y $$ p (t_n) = p (t_ {n-1}) + s_n. $$

Su algoritmo de cálculo será algo como esto:

1) Inicial: \ $ p (t_0) = p (t_1) = 0 \ $. \ $ s_2 = a (t_0) \ Delta ^ 2 \ $.

2) En la etapa \ $ n \ $: \ $ s_n = a (t_ {n-2}) \ Delta ^ 2 + s_ {n-1} \ $; libere la memoria que contiene \ $ s_ {n-1} \ $; \ $ p (t_ {n}) = p (t_ {n-1}) + s_ {n} \ $.

3) Repita.

Algunos comentarios pequeños: probablemente querrás retrasar la multiplicación de todo por \ $ \ Delta ^ 2 \ $ hasta el final. Tendrá que experimentar con el tamaño del tipo de datos de punto flotante que necesita para no desbordarlo. No necesita usar variables separadas para \ $ s_n \ $; en XC tendría una declaración similar a \ $ s \ hspace {5pt} + \ hspace {-5pt} = a (t_ {n-2}) \ Delta ^ 2 \ $.

    
respondido por el SomeEE

Lea otras preguntas en las etiquetas