Estoy usando un acelerómetro ADXL206 y un microcontrolador PIC16F917 para determinar el movimiento lineal relativo de un dispositivo que funciona de acuerdo con este movimiento.
Puedo leer datos del acelerómetro:
Tengo un dispositivo con 2 LED para determinar la dirección del movimiento. Debería funcionar así:
Los resultados reales que obtengo son cuando el dispositivo se mueve, parpadea el LED solo durante el movimiento y luego se apagan cuando no hay movimiento.
No puedo obtener la dirección del acelerómetro y permanecer en un estado estable.
¿El problema está en leer los valores del acelerómetro o en el algoritmo?
El dispositivo que contiene el acelerómetro experimenta una fuerza (de x G
) momentáneamente, en contra de la dirección de la aceleración, cuando comienza el movimiento. Entonces experimentará 0 Gees
que la aceleración se detiene, es decir, una vez que se ha alcanzado la velocidad objetivo.
De manera similar, cuando se detiene el dispositivo desde una velocidad constante, experimentará una fuerza momentánea que se opone a la desaceleración, luego cero fuerza nuevamente una vez que se detiene.
Eso es lo que informa su experimento: los LED parpadean cuando se experimenta la aceleración, una vez en cada dirección. En otras palabras, el comportamiento es el diseñado.
Para mantener una indicación mientras continúa el movimiento, un acelerómetro no es el dispositivo ideal. No es un detector de movimiento , es un detector de aceleración , como su nombre lo indica.
Si bien algunos trucos de software simples ( integrar la aceleración en el tiempo ) podrían usarse para rastrear cuándo se siente la aceleración en una dirección u otra, dicho mecanismo fallaría si la fuerza de desaceleración (o aceleración) es muy baja en comparación con la sensibilidad y el sentido piso de ruido de la señal, como si uno fuera a acelerar el dispositivo muy despacio, pero lo detuviera rápidamente, o viceversa .
Un acelerómetro no mide el movimiento: mide el cambio en el movimiento. O más exactamente, mide la derivada de la velocidad . Entonces, cuando su acelerómetro comienza a moverse en una dirección, puede detectarlo. Pero una vez que te estás moviendo y ya no estás acelerando, al acelerómetro, bien podría estar sentado en tu escritorio. Lo único que medirá es el ruido y la aceleración constante de la gravedad.
Una analogía sería esta: si no puede ver, y no puede escuchar el viento ni el ruido de la carretera, y las ventanas están cerradas para que no pueda sentir el viento, ¿cómo sabría que está en un automóvil en movimiento o estacionado? ¿auto?
Dicho de otra manera, imagina una pelota en equilibrio sobre la parte superior de tu objeto. El acelerómetro mide cómo se moverá la pelota en relación con el objeto a medida que el objeto cambia de velocidad.
No puedes hacer lo que describes con un acelerómetro práctico. Cuando su objeto comienza a moverse hacia la izquierda, el acelerómetro registra una fuerza en una dirección. Cuando su objeto luego deja de moverse, el acelerómetro registra una fuerza en la otra dirección. El problema es este: esa fuerza en la otra dirección es indistinguible de la fuerza que medirías cuando tu objeto comienza a moverse hacia la derecha.
Estás midiendo el cambio en la velocidad. El cambio de velocidad es el mismo en ambos casos:
No puedes distinguirlos con un acelerómetro. Si desea medir "movimiento hacia la izquierda" y "movimiento hacia la derecha", eso es velocidad, no aceleración. Necesitas un dispositivo que mida la velocidad. En teoría, puede integrar la aceleración para obtener la velocidad 1 , pero los detalles prácticos como el ruido y la compensación harán que el cálculo de la velocidad se desvíe del valor real.
1: un ejemplo de un sistema que hace esto es un sistema de navegación inercial . Estos sistemas emplean una ingeniería muy cuidadosa y sistemas costosos para reducir, pero no eliminar, la deriva.
leon heller
Mente rápida
david tweed
Renán
fm_andreas