Paso 5: Cómo utilizar el acelerómetro MMA7361?:
Es un tablero de arranque para el acelerómetro MEMS de Freescale MMA7361L tres ejes analógico. El sensor requiere una cantidad muy baja de energía y tiene una g-seleccione entrada que cambia el acelerómetro ±1. 5 g y ±6g intervalo de medición. Otras características incluyen un modo de espera, acondicionadores de señal, un filtro de paso bajo de 1-Polo, compensación de temperatura, prueba y 0 g de detección que detecta caída lineal. Sensibilidad y zero-g offset son fábrica y no requieren ningún dispositivo externo.
Sus especificaciones son:
- Soportes de 2,2 v ~ voltaje de 3.6V o 5V de entrada.
- Dos rangos de medición seleccionables (±1. 5 g, ±6g)
- Ambiente de protoboard - 0,1" Brea encabezado
- Bajo consumo de corriente: 400 mA
- Modo Sleep: 3 μA
- Bajo voltaje operación: 2.2 V - 3.6 V
- Alta sensibilidad (800 mV/g a 1.5 g)
- Vuelta rápida en el tiempo (0,5 ms permiten tiempos de respuesta)
- Autoprueba para caída libre detectar diagnóstico
- 0 g-detectar para protección de caída libre
- Filtro de paso de acondicionamiento de señales con baja
- Diseño robusto, alta capacidad de supervivencia los choques
Con la biblioteca AcceleroMMA7361 es tan fácil de usar este módulo pequeño. Los comandos que se pueden usar con esta librería son:
- void iniciar)
- void iniciar (int sleepPin, int selfTestPin, int zeroGPin, int gSelectPin, int xPin, int yPin, zPin int)
- int getXRaw)
- getXRaw(): devuelve los datos en bruto desde el eje x puerto analógico de la entrada-salida de Arduino como un entero
- int getYRaw)
- getYRaw(): devuelve los datos en bruto desde el eje y puerto de la entrada-salida análoga de Arduino como un entero
- int getZRaw)
- getZRaw(): devuelve los datos en bruto desde el eje z puerto analógico de la entrada-salida de Arduino como un entero
- int getXVolt)
- getXVolt(): devuelve el voltaje en mV desde el eje x puerto analógico de la entrada-salida de Arduino como un entero
- int getYVolt)
- getYVolt(): devuelve el voltaje en mV del eje y puerto de la entrada-salida análoga de Arduino como un entero
- int getZVolt)
- getZVolt(): devuelve el voltaje en mV del eje z puerto analógico de la entrada-salida de Arduino como un entero
- int getXAccel)
- getXAccel(): devuelve la aceleración del eje x como un int (1 = 100.00)
- int getYAccel)
- getYAccel(): devuelve la aceleración del eje y como un int (1 = 100.00)
- int getZAccel)
- getZAccel(): devuelve la aceleración del eje z como un int (1 = 100.00)
- void getAccelXYZ (int _XAxis, int _YAxis, int _ZAxis)
- getAccelXYZ (int _XAxis, int _YAxis, int _ZAxis) devuelve todos los ejes a la vez como punteros
- int getTotalVector)
- getTotalVector devuelve la magnitud del vector aceleración total como un entero
- void setOffSets (int xOffSet, yOffSet int, int zOffSet)
- calibración de vacío)
- void setARefVoltage (doble _refV)
- void setAveraging (int prom)
- setAveraging (int avg): establece cuántos las muestras han de ser promediadas en getAccel por defecto es 10.
- int getOrientation)
- void setSensitivity (boolean sensi)
- setSensitivity fija la sensibilidad de +-1,5 G (alta) o +/-6 G (bajo) con un alto valor booleano (1.5 G) o baja (6 G)
- void sleep)
- sueño permite el sueño del dispositivo (cuando el dispositivo está durmiendo ya esta hace nada)
- Estela vacío)
- consecuencia permite que el dispositivo después de dormir (cuando el dispositivo es no dormir esta hace nada) hay un retraso de 2 ms, debido al tiempo de respuesta de habilitar (hoja de datos: typ 0,5 ms, máximo de 2 ms)
La biblioteca tiene 3 ejemplos sencillos. Uno consigue las aceleraciones en cada eje, el segundo obtiene el ángulo y la tercera la tensión. Usé el "RawData" para obtener el ángulo de cada controlador de otro eje para controlar la inclinación: