Diferencia entre revisiones de «Acelerómetro - DEMOQE128»
(→Enlaces externos) |
|||
Línea 167: | Línea 167: | ||
==Enlaces externos== | ==Enlaces externos== | ||
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica] | *[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica] | ||
− | *[http://www.youtube.com/watch?v=rZ7lGdV0JzE Ajuste en un DEMOQE128 (rev A)] | + | *[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)] |
[[Categoría:DEMOQE128]] | [[Categoría:DEMOQE128]] |
Revisión del 05:47 16 nov 2012
El acelerómetro es una herramienta que dispone el módulo DEMOQE128 para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos).Para los tres ejes devuelve una tensión en milivoltios proporcional a la aceleración que experimenta el dispostivo cuando se somete a movimientos. Su utilidad hoy día es muy aplicada a la robótica (direccionamiento remoto), en consolas de videojuegos y en la mayoria de teléfonos celulares de última generación (Smartphones).
Contenido
Tipos
El acelerómetro descrito en este artículo pertenece a la primera generación (rev A) del DEMOQE cuyo dispositivo es el analógico, sín embargo la tercera revisión (rev C) consta de uno digital.,
Acelerómetro Analógico
En el acelerómetro analógico tenemos las coordenadas x,y,z y cuyos voltajes serán proporcionales a la aceleración a la que se someta el dispositivo. Las señales en cada uno de los ejes son convertidas en el ADC antes de enviarse vía serial a través del puerto de comunicaciones y ser visualizado en el TOOLKIT PC APPLICATIONS - DEMOQE128
Acelerómetro Digital
El acelerómetro digital solo está disponible para la tercera revisión (rev C) del DEMOQE, es mucho mas pequeño y una ventaja que posee es que no es necesario configurar la sensibilidad mediante los jumpers, tampoco necesita la conversión en el ADC sino que es enviada directamente a través de la interfaz de comunicación serial, otra diferencia respecto a su antecesor es que ahora utiliza la interfaz I²C para la transmisión a través del puerto a utilizar cuyo rango va desde los 0 a los 100kbps aumentando la rapidéz de transmisión. A pesar de estas modificaciones, el acelerémetro sigue cumpliendo las mismas funciones para su proposito, sin embargo, no es posible utilizar la misma correspondencia respecto a la programación del analógico.
Características
El acelerómetro del Demoqe es mucho mas versátil que el de otros micros pues dispone en su interior la configuración a 3 ejes, lo que nos permite ademas de detectar movimientos lineales, saber si el dispositivo gira alrededor de su entorno. Funciona con el reloj interno del DEMOQE debidamente configurado, posee una gama de hasta 4 modalidades respecto a su sensibilidad, es decir que entre mas grande sea el rango seleccionado, menor serán las tensiones que variarán en cada uno de los ejes que compone el dispositivo. Para fines de visualización el acelerómetro también cuenta con un una herramienta para verificar cada variación en sus ejes y como se comportan segun la posición que el mismo tenga en un instante de tiempo, la gráfica obviamente hará un trazo en valores muestrales para cada segmento de tiempo determinado.
Configuración
Este dispositivo cuenta con una gama variada para su sensibilidad respecto al movimiento que se le aplica, se puede utilizar 1,5g 2 y 4g según se le especifique mediante la configuracion de los jumpers, especificamente la línea de jumpers J14 J15 y J16 segun convenga, para cada valor del rango se tiene otro valor de sensibilidad que es inversamente proporcional al primero.
PTG1 | PTG2 | Rango (g) | Sensibilidad (mV/g) |
---|---|---|---|
0 | 0 | 1.5 | 800 |
0 | 1 | 2.0 | 600 |
1 | 0 | 4.0 | 300 |
1 | 1 | 6.0 | 200 |
Para configurar este periférico según la sensibilidad que se desea aplicar, es necesario ralizar también una indicación mediante instrucciones al puerto G especificamente los puertos PTGD2/PTGD3 y siguiendo las especificaciones de la tabla anteiror. Para ello observemos momentaneamente el puerto PTGDD:
7 6 5 4 ¦ 3 2 1 0 |
PTGDD7 | PTGDD6 | PTGDD5 | PTGDD4 | PTGDD3 | PTGDD2 | PTGDD1 | PTGDD0 |
---|
0 0 0 0 ¦ 0 0 0 0 |
Para seleccionar por ejemplo el rango de 6g se tendria que seleccionar los bits 1 y 2 del registro PTGDD, análogamente se procede si se requiere seleccionar las otras modalidades de rango. Es necesario activar los pull-ups por seguridad antes de escribir en los puertos, en este caso el mas relevante seria el puerto G. Veamos el siguiente ejemplo:
//*En Lenguaje C
/* SOPT1 = 0x23
/* Habilitamos pullups en todos los puertos del módulo principal PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; /* Configuramos la sensibilidad con la que va a trabajar el acelerometro PTGD = 0x00; // Puerto G inicialmente como salida PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.
//*En Assemnbler /* Habilitamos pullups en todos los puertos del módulo principal mov #$ff,PTAPE mov #$ff,PTBPE mov #$ff,PTCPE mov #$ff,PTDPE mov #$ff,PTEPE mov #$ff,PTFPE mov #$ff,PTGPE mov #$ff,PTHPE mov #$ff,PTJPE //*En Lenguaje C /* Configuramos la sensibilidad con la que va a trabajar el acelerometro mov #$00,PTGD // Puerto G inicialmente como salida mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro
//*Configuración tasa de transferencia. Assembler mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (
//*Configuración tasa de transferencia. Lenguaje C void InicializarSCI(word baudvalor) { SCI1BD = baudvalor; //donde baud es una palabra que asigna el valor indicado en el comentario anterior y obtener 115000bps } //Incialización de la interfaz de comunicación serial fianlizada
//*Transmisión serial (se transmitirá en este caso un string) void EnvMsg(char msg[]) { byte i=0; char sig_caracter; SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE sig_caracter = msg[i++]; while(sig_caracter != 0x00) { // mientras hayan caracteres realizar while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer: SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1 sig_caracter = msg[i++]; } //fin while del SCI1D para transmitir
} //final de transmisión
Simulación
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada DEMOQE Accelerometer Demo application en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.
La aplicación lee la información que hay en los ejes X, Y, y Z del acelerómetro de 3-ejes utilizando el convertidor analógico/digital. Los datos trazados incluye la magnitud de los ejes X, Y, Z y las señales del acelerómetro, así como la carga del procesador actual. Estos datos procesados es un promedio de los datos totales del acelerometro en sí (datos en bruto), o una versión filtrada de los datos totales del mismo, dependiendo del modo seleccionado.
La interfáz de este programa se describe básicamente en tres secciones:
- Terminal Windows: Normalmente nos muestra los ciclos que hay en el bus durante cada interacción del dispositivo, es similar a la aplicación hyperterminal de Windows. Permite ver los caracteres que se transmiten y se reciben mientras el acelerometro experimenta interaciones, si el dispositivo no experimenta movimientos considerables segun su sensibilidad, siempre se transmitirá el ultimo caracter correspondiente en ese instante.
- Data Snapshot: Esta interfaz nos permite ver en porcentaje que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia teniendo en cuenta que tan sensible es, como se había mencionado antes para cada dato trazado de la señal tambien hay un indicador que muestra la carga del procesador en ese momento, las varianzas de la gráfica dependerán de la sensibiliad del acelerómetro en cada caso.
- Scope: Muestra el trazado de las señales que van cambiando en el acelerómetro a medida que experimenta variaciones de posición, si el movimiento es brusco, los valores de muestra seran altos y viceversa si sucede lo contrario, el graficador toma el trazado de todos los ejes al mismo tiempo.
Para inicializar es necesario indicarle al programa a cuanto se desea transmitir la opción dependerá del usuario sin embargo el estandar es 115000, y el puerto por lo general es el usb, sín embargo pueden usarse puertos de comunicaciones (COM1:COM5)si el usuario asi lo desea. Verificar previamente la correcta configuración de los jumpers y mantener apagado el DEMOQE, luego cuando se hace la compilación correcta del programa y se hace el debug correspondiente, se puede abrir el puerto en la aplicación pulsando el boton "Open serial port and start demo".
Ficha técnica
El acelerómetro que dispone el DEMOQE128 es el MMA7260Q y tiene las siguientes especificaciones técnicas:
- Consumo promedio en corriente de 500μA
- Sensibilidad seleccionable (1.5, 2, 4 y 6g)
- Modalidad de espera de 3μA
- Dimensiones de 6mm x 6mm x 1.45mm QFN
- Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)
- Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.
- Capacidad para operar a baja tensión (2,2v a 3,6v)
Referencias
Manual de usuario DEMOQE128 (Rev A)
Manual de usuario DEMOQE128 (Rev C)
Datasheet del acelerómetro MMA7260Q