http://wikitronica.labc.usb.ve/api.php?action=feedcontributions&user=Manypuig&feedformat=atomWikitronica - Contribuciones del usuario [es]2024-03-29T06:43:22ZContribuciones del usuarioMediaWiki 1.26.3http://wikitronica.labc.usb.ve/index.php?title=Processor_Expert&diff=2893Processor Expert2012-12-10T03:57:45Z<p>Manypuig: </p>
<hr />
<div>[[Categoría:Freescale]]<br />
<br />
<br />
<br />
Processor Expert es una herramienta de [[Freescale Codewarrior 6.3|Codewarrior]] que nos facilita el proceso de programar micro controladores, ya que nos permite inicializar dispositivos de una manera sencilla, cambiar registros de control directamente, y nos proporciona una gama de funciones para los dispositivos que simplifican el trabajo.<br />
<br />
<br />
==Como iniciar Processor Expert==<br />
<br />
<br />
<br />
<br />
*El primer paso es crear un nuevo proyecto:<br />
<br />
[[Archivo:PP1.JPG|600px|center|thumb|creando un nuevo proyecto]]<br />
<br />
<br />
<br />
*Luego buscamos en la lista el microprocesador que vamos a utilizar: para este ejemplo utilizaremos el MC9S08QE128<br />
<br />
<br />
[[Archivo:PP2.JPG|600px|center|thumb|seleccionando el micro]]<br />
<br />
<br />
<br />
<br />
*Después colocamos el lenguaje a utilizar: nosotros utilizaremos C.<br />
<br />
<br />
[[Archivo:PP3.JPG|600px|center|thumb|seleccionando el lenguaje]]<br />
<br />
<br />
<br />
<br />
*Ahora, seleccionamos Processor Expert, le damos a Finish y ya creamos nuestro proyecto. <br />
<br />
<br />
[[Archivo:PP5.JPG|600px|center|thumb|seleccionando Proccesor Expert]]<br />
<br />
<br />
<br />
<br />
El primer paso dentro del proyecto es darle al botón de MAKE para generar el proyecto.<br />
<br />
==Partes de Processor Expert==<br />
<br />
Al iniciarse el proyecto nos aparecen 3 ventanas de información importantes, El diagrama del CPU, la biblioteca de componentes y las especificaciones del microprocesador.<br />
<br />
En la ventana de especificaciones nos aparecen datos importantes y opciones a cambiar del micro, como por ejemplo la velocidad de este.<br />
<br />
La biblioteca de componentes es de donde añadiremos dispositivos a utilizar en nuestro proyecto.<br />
<br />
El diagrama del CPU nos muestra la ubicación de los pines respectivos a cada dispositivo disponible, y los pines usados actualmente. <br />
A la izquierda tenemos todos los archivos y dispositivos que se encuentran actualmente en el proyecto. Si abrimos el Main encontramos un archivo con varias inclusiones y inicializaciones el código que uno escribe es en donde especifican /* Write your code here */ luego se tiene el archivo events.c que es donde se recomienda realizar todas las funciones y procesos del código.<br />
<br />
<br />
*esta pantalla presenta las opciones del microprocesador<br />
<br />
[[Archivo:PP6.JPG|600px|center|thumb|opciones del micro]]<br />
<br />
*esta pantalla presenta la libreria de componentes de aqui se pueden escoger los componentes a incluir al proyecto<br />
<br />
[[Archivo:PP7.JPG|600px|center|thumb|biblioteca de componentes]]<br />
<br />
* el diagrama del CPU muestra que pines estan utilizados porque dispositivos <br />
<br />
[[Archivo:PP8.JPG|600px|center|thumb|Diagrama del micro]]<br />
<br />
* esta parte nos permite acceder a los archivos del proyecto y a las funciones y especificaciones de los dispositivos<br />
<br />
[[Archivo:PP91.JPG|600px|center|thumb|archivos y dispositivos]]<br />
<br />
* asi se ve el main cuando no tiene nada<br />
[[Archivo:PP92.JPG|600px|center|thumb|main]]<br />
<br />
<br />
<br />
<br />
==Como añadir componentes al proyecto==<br />
<br />
<br />
<br />
<br />
Abrimos la ventana de biblioteca de componentes, y encontramos varias carpetas, la primera CPU contiene otros microprocesadores, la segunda CPU external devices contiene dispositivos para comunicarse con otros módulos o microprocesadores por medio de el protocolo SPI. La tercera carpeta CPU internal peripherals contiene una gran gama de dispositivos para usar. Para este ejemplo vamos a añadir un puerto serial, abrimos la subcarpeta Communication y escogemos un puerto AsyncroSerial.<br />
<br />
Luego de añadir el componente se nos abre una ventana con las opciones del dispositivo, hay varios renglones que tienen un signo de exclamación, esto nos indica que si no proporcionamos esta información el programa no podrá construirse. En este dispositivo nos pide el Baud Rate del puerto serial, colocaremos 9600. También podemos cambiar que pines utilizar para el puerto serial, los bits de paridad, si vamos a utilizar interrupciones o no, entre otras cosas desde esta ventana de información. Luego construimos el proyecto dándole al botón MAKE.<br />
<br />
<br />
<br />
<br />
[[Archivo:PP10.JPG|600px|center|thumb|buscando el serial]]<br />
<br />
[[Archivo:PP11.JPG|600px|center|thumb|iniciando el serial]]<br />
<br />
[[Archivo:PP12.JPG|600px|center|thumb|colocando los baudios]]<br />
<br />
Ya que añadimos el puerto serial al proyecto lo tenemos del lado izquierdo de CodeWarrior junto a nuestros archivos y dispositivos, si le damos al botón “+” alado del componente se expande una serie de funciones relevantes a este dispositivo. Algunas de estas funciones se encuentran deshabilitadas debido a la configuración que tenemos del dispositivo, pero si colocamos el ratón encima de cada función obtenemos una breve descripción de que hace y como lo hace.<br />
<br />
<br />
<br />
<br />
<br />
[[Archivo:PP13.JPG|600px|center|thumb|lista de funciones]]<br />
<br />
<br />
<br />
<br />
Para utilizar una función es tan simple como arrastrarla hasta el código. En el ejemplo se envía por el puerto serial 4 bytes infinitas veces. <br />
<br />
<br />
<br />
<br />
[[Archivo:PP14.JPG|600px|center|thumb|ejemplo de envio por serial]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Discusi%C3%B3n:Processor_Expert&diff=2892Discusión:Processor Expert2012-12-10T03:47:51Z<p>Manypuig: Página creada con «Este artículo es excelente sin embargo para que no sea una página sin salida es bueno que en su haber hayan links externos o en su defecto links que enlacen a otros artic...»</p>
<hr />
<div>Este artículo es excelente sin embargo para que no sea una página sin salida es bueno que en su haber hayan links externos o en su defecto links que enlacen a otros articulos. Saludos! Gabino Betancourt</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=TOOLKIT_PC_APPLICATIONS_-_DEMOQE128&diff=2727TOOLKIT PC APPLICATIONS - DEMOQE1282012-12-04T19:22:30Z<p>Manypuig: /* DEMOQE - Aplicación Acelerométro (Accelerometer Demo Application) */</p>
<hr />
<div>El kit de herramientas del [[Tarjeta de Desarrollo - DEMOQE128|DEMOQE128]] con aplicaciones para la PC, es un programa que incluye utilidades gráficas, la cual permite interactuar con el Microcontrolador a través del USB Multilink, que le permite depurar usando el programa CodeWarrior. Además de ello, se podrá depurar el Microcontrolador en CodeWarrior simultáneamente con una de las siguientes utilidades del DEMOQE128: Analizador Lógico, Graficador Serial, Acelerómetro.<br />
<br />
<br />
<br />
<br />
----<br />
=='''DEMOQE - Aplicación Analizador Lógico (''Logic Analyzer Application'')'''==<br />
El DEMOQE posee dos canales para el analizador lógico, este analizador permite que las señales IN0 e IN1 puedan ser capturados por la PC y ser mostrado al usuario. Estas dos señales puede estar conectada a cualquiera de las señales MCU que el usuario desea observar. Por comodidad, estas señales están conectados al pin PTC0 y al pin PTC1 del MCU por el JUMPER J11. Si desea otro gráfico señales del microcontrolador, ser puede utilizar jumper de alambre de IN0 e IN1 a la respectivas señales de MCU PORT. La lógica analizador funciona a una velocidad de captura de 10 kHz.<br />
<br />
Esta aplicación se utilizar para mostrar datos del analizador de lógica en la PC. El analizador de datos lógica muestra en tiempo real las diferentes formas de ondas que se generan, se puede también pausar la señal, hacerle zoom e inclusive imprimir la imagen.<br />
<br />
<br />
[[Archivo:Analizador Lógico.jpeg|700px|thumb|center|Analizador Lógico]]<br />
<br />
<br />
Pasos a seguir para usar el Analizador Lógico <br />
<br />
1.- Conectar el cable USB a la tarjeta del DEMOQE.<br />
<br />
2.- Una vez que se los Leds se enciendan para indicar que se debido enumerar los puertos USB,se hace clic en “Connect to Embedded Multilink Analyzer and Graph Pins” ya esta es una nueva version 1.01.<br />
<br />
3.- Se pulsa el botón etiquetado PTA2 esto hará que un ciclo de trabajo fije un ancho de pulso de la señal para la salida en el pin PTC1, la forma de onda se mostrara en el analizador canal IN1.<br />
<br />
4.- Se gira el potenciómetro W1, esto permite cambiar el ciclo de trabajo de la variable de ancho de pulso de la señal de salida en el pin PTC0, la forma de onda se mostrará en el analizador canal IN0.<br />
<br />
5.- Por último se hará clic en el "Close Port" cuando haya terminado de usar la utilidad.<br />
<br />
<br />
A continuación se observa una imagen de las formas de ondas que se pueden obtener en IN0 y IN1<br />
<br />
[[Archivo:Analizador_Lógico_1.jpeg|700px|thumb|center|Analizador Lógico - Formas de Ondas en IN0 e IN1]]<br />
<br />
=='''DEMOQE - Aplicación Terminal (''Terminal Application'')'''==<br />
<br />
Este programa actúa como una aplicación estándar de puerto serial en la PC. Funciona tanto como para el estándar de puerto serial (cables: USB-Serial, Serial-Serial), como para el puerto serial virtual (cable USB-USB) en el tarjeta DEMOQE128. La aplicación incluye opciones para ajustar el número de puerto (COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8), la velocidad de transmisión, paridad y número de bits de datos. Existe un botón para tomar un archivo en el PC y transmitirlo por el puerto serial. También existen retrasos que se insertan automáticamente en la salida de la transmisión para evitar excesos. Es recomendable que estos valores predeterminados no se cambien.<br />
<br />
Este programa crea un puerto serial virtual por el cable USB-USB. Esta modalidad es muy útil para las computadoras que no tienen por defecto un puerto serial RS232.<br />
<br />
Puede ser configurado para recibir caracteres con el modo “Duplex Full” y el modo “Duplex Half” se transmite y se recibe dos caracteres que se muestran.<br />
<br />
<br />
[[Archivo:Terminal Window.jpeg|300px|thumb|left|Terminal Window]]<br />
<br />
<br />
Pasos a seguir para usar el Terminal:<br />
1.-Se abre la aplicación.<br />
<br />
2.- Se elije un COM, el cual será usado para la trasmisión de datos.<br />
<br />
3.- Se verifica los jumpers J6 y J7.<br />
<br />
4.- Se configurar el Baud, la paridad y el número de bits.<br />
<br />
5.- Una vez configurado los parámetros anteriores, se procede a conectar el cable USB de la PC al tablero DEMOQE128 y luego se da click al “Open Serial Port”.<br />
<br />
<br />
[[Archivo:Terminal Window1.jpeg|700px|thumb|center|Terminal]]<br />
<br />
=='''DEMOQE - Aplicación Insegura (''Unsecure Application'')'''==<br />
Para usar las aplicaciones de DEMOQE128 se debe descargar <br />
<br />
Esta aplicación permite que los microcontroladores CFV1 y HCS08 pasen de ser seguros a inseguros. La aplicación inseguro funciona tanto con la tarjeta de DEMOQE como con otros hardware que se conecten a la PC vía el USB Multilink o Cyclone PRO.<br />
<br />
<br />
<br />
Pasos para usar la Aplicación Insegura: <br />
<br />
1.- Para poner de modo inseguro el dispositivo, debemos especificar el interfaz del hardware que se esta usando.<br />
<br />
2.- Si P&E Multilink o Pro Cyclone detecta cualquier dispositivo, el nombre de este dispositivo aparecerá en el cuadro de Puertos<br />
<br />
3.- Luego se selecciona HCS08 o CFV1 en el menú “Select Arquitecture”<br />
<br />
4.- Por último, se da click “Perform Unsecure (by Erasing) HCS08 Device, para poner inseguro.<br />
<br />
<br />
[[Archivo:Inseguro.jpeg|700px|thumb|center| Aplicación Inseguro. Ejemplo]]<br />
<br />
=='''DEMOQE - Aplicación Acelerométro (''Accelerometer Demo Application'')'''==<br />
<br />
Esta aplicación es una de las mas interesantes ya que muestra gráficamente la salida de los datos en cada pin del acelerómetro, estos datos obtenidos incluyen la magnitud en la diferentes coordenadas X, Y, Z dependiendo de la variación de posición que experimente el dispositvo acoplado. Para que funcione esta aplicación se debe tener sumo cuidado a la hora de programar el microcontrolador que estará conectado a la tarjeta DEMOQE. <br />
<br />
Los datos que se obtienen provienen desde la salida del dispositivo cuya informacion es transmitida via[[SCI (Interfaz de Comunicación Serial) - DEMOQE128|serial]] hasta los puertos de comunicación de la PC. La configuración de los jumpers J6 y J7 es importante ya que permite que el DEMOQE interactué con el hadware mediante el puerto serial, en cada caso debe seleccionarse correctamente el puerto de comunicaciones en la apliación. Se establece los jumper J16 en 0, J15 en 1, J14 en 0. véase [[JUMPER SETTINGS]]<br />
<br />
''Nota: la configuración de los jumpers en este caso corresponden a la revisión A, para la revisión C no es necesario realizar esta configuración en los jumpers ya que estos han sido removidos y la configuración correspondiente es a nivel de programación, véase [[Acelerómetro - DEMOQE128]]''<br />
<br />
<br />
[[Archivo:Acelerometro.jpg|700px|thumb|center| Aplicación del Acelerométro]]<br />
<br />
<br />
Pasos para usar la aplicación del Acelerómetro: <br />
<br />
1.- Al iniciar la aplicación, se elije el puerto que se implemento en la programación. De esta manera usted estará especificando el puerto que usará para trasmitir los datos, bien puede realizarlo a través del puerto comunicación vía USB o vía Puerto de COM (RS232).<br />
<br />
2.- Verificar que estén bien [[JUMPER SETTINGS|configurado los jumpers]] J6 y J7 en la tarjeta DEMOQE segun la modalidad de comunicación que se haya seleccionado.<br />
<br />
3.- Configurar el Baud rate, la velocidad dependerá de la tasa que el programador especifique en su programa, solo se asugra que la misma sea de alta tasa de transmisión (High Baud Rate).<br />
<br />
4.- Ya terminada la configuración de los parámetros anteriores, se procede a conectar el cable USB o DB9 a la tarjeta DEMOQE.<br />
<br />
5.- Se corre el código que se esta usando para hacer las pruebas con la aplicación del acelerómetro en CodeWarrior.<br />
<br />
6.- Último paso dar click “Open Serial Port and Start Demo” y esperar a que se muestre en pantalla los resultados obtenidos.<br />
<br />
<br />
[[Archivo:Acelerometro Ejemplo.jpg|850px|thumb|center|Acelerómetro Ejemplo]]<br />
<br />
<br />
Con respecto a la aplicación se observa un mejor rendimiento en el ColdFire de 32-bit V1 CPU sobre el de 8-bit S08 CPU. El cálculo promedio de datos y el modo de filtrar datos es considerable de 16-bit y 32-bit requeridas para las operaciones matemáticas. El S08 CPU es capaz de realizar estas operaciones, pero requiere un gran parte de su ancho de banda mientras que el ColdFire V1 CPU realiza esas mismas operaciones con solo una pequeña parte de su ancho de banda. Con los microcontroladores Flexis QE128 podrá escoger el CPU que mejor se adapte a sus necesidades en cuanto a rendimiento.<br />
<br />
=='''DEMOQE - Aplicación Gráficador Serial (''Serial Grapher Application'')'''==<br />
<br />
Esta aplicación es una versión mas generalizada a la aplicación del acelerómetro. Esta aplicación puede ser utilizado con el microcontrolador aplicación basada acelerómetro s o código de microcontrolador cliente para transmitir los datos en el formato correcto. La utilidad gráfica de serie permite que los datos entrantes en el puerto serie del PC, o uno de P & puertos serie virtuales de E, de forma automática graficadas en el tiempo o aparece en una serie de gráficos de barras. El puerto serial virtual existe en varios de los diseños embebidos P&E USB multilink incluyendo la junta DEMO.<br />
<br />
Es importante que todos los datos que se muestren deben estar en formato hexadecimal. Los datos pueden ser aceptadas y se muestran en forma de valores de byte de entrada ($00 - $FF) o valores de texto ($ 0000 - $ FFFF). El formato de datos indica si el byte de datos es o palabra de datos. Los componentes gráficos automáticamente el tamaño de su área de distribución en función de los datos entrantes.<br />
<br />
<br />
Pasos para usar la aplicación de Graficador Serial:<br />
<br />
1.- Elegir el COM que se usará para transmitir.<br />
<br />
2.- Verifcar la configuración de los jumpers J6 y J7.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Conectar el cable USB o el cable DB9<br />
<br />
5.- Dar click “Open Serial Port and Start Demo”<br />
<br />
6.- Se puede pausar la representación gráfica de datos y la escala de los ejes de coordenadas de X e Y se puede cambiar a través de la barra de herramientas que se encuentra en la esquina superior derecha de la aplicación. <br />
<br />
<br />
[[Archivo:Graficador Serial.jpg|700px|thumb|center|Graficador Serial]]<br />
<br />
<br />
<br />
=== Visual Components ===<br />
<br />
La barra de gráficos tiene 4 barras separadas con su letra A, B, C, D. Cada barra indica valor en porcentaje según el rango completo. Un valor de byte de $ 7F (el máximo es $ FF) se muestran como aproximadamente 50% como lo haría un valor de $ 7FFF palabra (el máximo es $ FFFF).<br />
<br />
<br />
[[Archivo:Serial Grapher Bar Graph.jpg|500px|thumb|center|Serial Grapher Bar Graph]]<br />
<br />
<br />
El componente gráfica muestra cuatro formas de onda X, Y, Z, y W. La eje magnitud o bien tiene un rango de $ 00 - $ FF (si son valores de byte entrante en el puerto serial) o $ 0000 - $ FFFF (si los valores de palabra son entrante). Cada nuevo conjunto de valores que viene a través del puerto serie se añade a la parte derecha de el gráfico y el resto de los valores de los datos se mueven a la izquierda. El eje vertical muestra los datos entrantes como la magnitud de cada forma de onda, y los eje horizontal muestra el número de muestras.<br />
<br />
=== Data Format ===<br />
<br />
<br />
El formato de datos se divide en dos secciones, dependiendo de si el flujo de datos entrante está en formato de byte o palabra formato.<br />
<br />
==== Byte Formatted Data ====<br />
<br />
<br />
Hay dos comandos que pueden ser aceptadas. Ambos comandos debe terminar en los caracteres especiales $#0D y #$0A que son CR (return carriage) y LF (line feed). Los comandos aceptados son:<br />
WnnZnnYnnXnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
siguientes líneas del gráfico: W, Z, Y, X.<br />
AnnBnnCnnDnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
gráficos siguientes líneas de compás: A, B, C, D.<br />
<br />
==== Word Formatted Data ====<br />
<br />
Hay 3 comandos que pueden ser aceptadas. Todos los comandos deben acabar en los caracteres especiales #$0D y $#0A que son CR (return de carriage) y LF (line feed). Los comandos aceptados son:<br />
nnnn, nnnn, nnnn, nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el gráfico y los gráficos de barras de la siguiente manera: X / A, A / B, Z / C, W / D.<br />
nnnn: nnnn: nnnn: nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos que se muestran el componente de representación gráfica de la siguiente manera: X, Y, Z, W.<br />
nnnn = nnnn = nnnn nnnn =<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el componente de gráfico de barras de la siguiente manera: A, B, C, D.<br />
<br />
=='''Referencias'''==<br />
*[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf ''DEMOQE128 User Manual'' DEMOQE rev A]<br />
<br />
<br />
[[Categoría: DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=2280Acelerómetro - DEMOQE1282012-11-28T22:31:39Z<p>Manypuig: /* Configuración */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 además de detectar movimientos lineales, saber si el dispositivo gira alrededor de su eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|configuracion de los jumpers]], especificamente la línea de jumpers J14(G-Sel2) J15(G-Sel1) y J16(Sleep Mode) según convenga, para cada valor del rango se tiene otro valor de sensibilidad que es inversamente proporcional al primero.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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 específicamente los puertos PTGD2/PTGD3 y siguiendo las especificaciones de la tabla anterior. Para ello observemos momentaneamente el puerto PTGDD:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
<br />
<syntaxhighlight lang="C"><br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal*/<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerómetro */<br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g <br />
// como se indica en el cuadro.<br />
</syntaxhighlight><br />
---------------------------------------------------------------------------------------------------------------------------------<br />
<syntaxhighlight lang="asm"> <br />
<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerómetro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se <br />
//indica en el cuadro<br />
<br />
</syntaxhighlight><br />
------------------------------------------------------------------------------------------------------------------------------<br />
<syntaxhighlight lang="C"><br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado.<br />
adc=ADCR;<br />
return adc;<br />
}<br />
</syntaxhighlight><br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversión se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<syntaxhighlight lang="C"><br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleración<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma<br />
// como muestra y lo convierte usando canal 1<br />
// de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma <br />
// como muestra y lo convierte usando canal 8<br />
// de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin z lo toma <br />
// como muestra y lo convierte usando canal 9<br />
// de los adc's<br />
</syntaxhighlight><br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<syntaxhighlight lang="asm"><br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que <br />
// 4Mhz/2x16 = 115000 bps aprox <br />
</syntaxhighlight><br />
<br />
<br />
<br />
<syntaxhighlight lang="C"><br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra que asigna el valor indicado en el <br />
//comentario anterior y obtener 115000bps<br />
} //Inicialización de la interfaz de comunicación serial finalizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío <br />
//(Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de <br />
// transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
</syntaxhighlight><br />
-------------------------------------------------------------------------------------------------------------------------------<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*Terminal Windows: 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 último caracter correspondiente en ese instante.<br />
<br />
*Data Snapshot: Esta interfaz nos permite ver que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia (en porcentajes) 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 sensibilidad del acelerómetro en cada caso.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA.<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g).<br />
* Modalidad de espera de 3μA.<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN.<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5).<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v).<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211280935557655751/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.youtube.com/watch?v=NPqwmq--f0g Proyecto acelerómetro: indicador de nivel (nivelador electrónico) con leds]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]<br />
<br />
<br />
Publicado por: Gabino Betancourt (Manypuig)</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Discusi%C3%B3n:Configuraci%C3%B3n_Jumpers_Demoqe128_rev._C&diff=2055Discusión:Configuración Jumpers Demoqe128 rev. C2012-11-22T11:04:00Z<p>Manypuig: </p>
<hr />
<div>*Hey! Ojo con los nombres en inglés. Hay que poner los nombres en español primero y luego los nombres en inglés bien sea en paréntesis o en cursiva para mantener un cierto estilo en la Wiki. Estamos arreglando lo de subir archivos.<br />
*Deberías colocar una configuración básica recomendada de los Jumpers para trabajar en el laboratorio. Similar a los que les pedí al principio del trimestre.<br />
<br />
*Gabino Betancourt says:<br />
-Ruth en mi artículo hay link extern a un documento pdf con la configuracion de los jumpers de la rev C que es la que usamos en el laboratorio (lo he descargado desde la pemicro.com), este documento tambien llegará a la manos de Guillermo Villegas para que los agregue a las computadoras de todos los laboratorios y no vuelva a suceder este inconveniente, al prof Raul Acuña también le he notificado de estos cambios ayer por la tarde. Saludos<br />
<br />
NOTA: La advertencia es sumamente importante en este artículo, puesto que le indicará al usuario del DEMOQE si su versión es acorde con las descripciones de configuración que sugiere la misma, IMPORTANTISIMO.</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Usuario_discusi%C3%B3n:Manypuig&diff=2054Usuario discusión:Manypuig2012-11-22T11:02:56Z<p>Manypuig: Página blanqueada</p>
<hr />
<div></div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Configuraci%C3%B3n_Jumpers_Demoqe128_rev._C&diff=2052Configuración Jumpers Demoqe128 rev. C2012-11-22T09:54:43Z<p>Manypuig: </p>
<hr />
<div>[[Categoría: DEMOQE128]]<br />
'''CONFIGURACIÓN DE LOS JUMPERS''' ('''''JUMPER SETTINGS'''''), este artículo indicará las conexiones de los cabezales de los Jumpers del DEMOQE128 '''Rev C''' necesarias para realizar cualquier tipo trabajo en el mismo, es importante verificar estas configuraciones antes de comenzar a trabajar con el Micro, de esta manera se evitarán daños a éste.<br />
<br />
''Advertencia: Algunas configuraciones no aplicarán para versiones anteriores como la DEMOQE Rev A o DEMOQE Rev B, así que se sugiere al usuario verificar que versión del DEMOQE es la que dispone antes de configurar los jumpers que sugiere este artículo''.<br />
<br />
== '''Fuente de Alimentación''' '''''(System Power)''''' ==<br />
<br />
La alimentación del procesador QE128 puede ser seleccionada de diversas maneras de acuerdo a la configuración que se le de a los Jumpers J3, J4 y J5. A continuación se describe cada una de ellas.<br />
<br />
=== '''J3''' - '''Selección del Regulador de Entrada''' '''''(Regulator Input Selection Jumper)''''' ===<br />
<br />
Dependiendo de la manera que se conecte el J3, se puede decidir si se desea que la alimentación del DEMOQE128 provenga de una Fuente de Alimentación DC externa, o del regulador incorporado al Micro-controlador (circuito Multilink). Esta selección es excluyente, es decir, se puede seleccionar la primera "o" la segunda alimentación. Esto evita daños en el Micro-controlador.<br />
<br />
Las siguientes figuras indican las opciones de conexiones de los cabezales del '''Jumper 3 (J3)'''<br />
<br />
[[Archivo:j3.1.jpeg]]<br />
<br />
Esta conexión selecciona como fuente de alimentación la Fuente Externa DC (Se debe usar una fuente de 5-8VDC).<br />
NOTA: El Voltaje Máximo 8 VDC.<br />
<br />
[[Archivo:j3.2.jpeg]]<br />
<br />
Esta conexión selecciona como fuente de alimentación a el circuito Multilink (este deriva su poder del bus USB).<br />
<br />
=== '''J4''' - '''Selección del Regulador de Salida Jumper VOLT_EN''' '''''(Regulator Output Selection Jumper VOLT_EN)''''' ===<br />
<br />
Si mediante la configuración del J3, se decidió utilizar como fuente de alimentación a la fuente contenida en el micro-controlador, entonces, el siguiente paso será configurar el J4, de manera tal que se seleccione nivel de voltaje de salida que deseamos que genere dicho regulador.<br />
<br />
Las siguientes figuras indican las opciones de conexiones de los cabezales del '''Jumper 4 (J4)'''<br />
<br />
[[Archivo:j4.1.jpeg]]<br />
<br />
Esta conexión selecciona un voltaje de salida de 2.1 V.<br />
<br />
[[Archivo:j4.2.jpeg]]<br />
<br />
Esta conexión selecciona un voltaje de salida de 3 V.<br />
<br />
=== '''J5''' - '''Jumper de Selección de Fuente VDD VDD_SELECT''' '''''(VDD Source Selection Jumper VDD_SELECT)'''''===<br />
<br />
Ajustando la configuración de este Jumper se puede decidir cuál fuente VDD se desea utilizar: <br />
<br />
1. El Regulador Interno VDD (Configuración por defecto)<br />
<br />
[[Archivo:j5.1a.jpeg]]<br />
<br />
2. Bateria<br />
<br />
[[Archivo:j5.2a.jpeg]]<br />
<br />
==='''J10''' - '''MCU_PORT_VDD'''===<br />
<br />
Conector del Puerto MCU Habilitado<br />
<br />
[[Archivo:j10.jpeg]]<br />
<br />
=='''Comunicación RS232''' '''''(RS232 Communications)'''''==<br />
<br />
<br />
El DEMOQE128 contiene un transmisor de señales SCI. Este transmisor opera en un rango de 1.8V a 4.25V. El transmisor puede ser controlado mediante la configuración de los jumpers o a través de la codificación de instrucciones. El DEMOQE128 también integra la señal SCI al circuito integrado Multilink. El usuario puede comunicar con el modulo SCI del microcontrolador, haciendo uso del conector DB9 o del circuito incorporado Multilink. A continuación, los jumpers asociados con la comunicación SCI.<br />
<br />
<br />
=== '''J6''' - '''Selección de la Señal SCI RXD, Jumper RXD_EN''' '''''(SCI RXD Signal Selection Jumper RXD_EN)''''' ===<br />
<br />
[[Archivo:j6.1.jpeg]]<br />
<br />
Conecta la señal del microcontrolador PTB0/RXD con el transmisor RS232. <br />
<br />
[[Archivo:j6.2.jpeg]]<br />
<br />
Conecta la señal del microcontrolador PTB0/RXD con el circuito Multilink (Configuración por defecto).<br />
<br />
<br />
=== '''J7''' - '''Selección de la Señal SCI TXD, Jumper RXD_EN''' '''''(SCI TXD Signal Selection Jumper TXD_EN)'''''===<br />
<br />
[[Archivo:j6.1.jpeg]]<br />
<br />
Conecta la señal del microcontrolador PTB1/TXD con el transmisor RS232. <br />
<br />
[[Archivo:j6.2.jpeg]]<br />
<br />
Conecta la señal del microcontrolador PTB1/TXD con el circuito Multilink (Configuración por defecto).<br />
<br />
=== '''J8''' - '''Transceptor SCI Habilitado COM_EN''' '''''(SCI Transceiver Enable COM_EN)''''' ===<br />
<br />
[[Archivo:j8.1.jpeg]]<br />
<br />
Habilita el transceptor SCI. El usuario puede controlar PTC5 a través de códigos para deshabilitar o habilitar el transceptor a conveniencia. <br />
<br />
'''''Transceptor''''' Dispositivo electrónico que puede ser usado como transmisor y como receptor.<br />
<br />
[[Archivo:j8.2.jpeg]]<br />
<br />
Deshabilita el transceptor SCI. El usuario puede controlar PTC5 a través de códigos para deshabilitar o habilitar el transceptor a conveniencia.<br />
<br />
== ''' Puerto de Visualización a través de LEDS ''' '''''(LED Display Port)''''' ==<br />
<br />
El DEMOQE128 tiene 8 LEDS conectados a las señales PTC0, PTC1, PTC2,PTC3, PTC4, PTC5, PTE6, y PTE7. <br />
Estos pueden ser habilitados o deshabilitados según sea la conexiones de los jumpers asociados a los mismos.<br />
<br />
=== '''J9''' - '''Habilitación del Puerto de Visualización de LEDS, LED ENABLE''' '''''(LED Display Enable Port LED_ENABLE)''''' ===<br />
<br />
[[Archivo:j9.1.jpeg]]<br />
<br />
Todos los LEDS habilitados (on).<br />
<br />
=='''Interruptores de Entrada y Reset ''' '''''(Input and Reset Switches)''''' ==<br />
<br />
El DEMOQE128 tiene la opción de procesar dos señales, para ello el micro ofrece la opción de asociar estas señales a PTC0 y PTC1, del circuito Multilink Incorporado. Estas señales se conectan o desconectan mediante la configuración que se les asigne a los cabezales de los jumpers (J11). <br />
<br />
El DEMOQE128 también tiene cuatro switches conectados a las señales de PTA2, PTA3, PTD2, y PTD3. Estos se pueden habilitar o deshabilitar mediante las conexiones de los jumpers (J12). También, dependiendo de la manera como se conecte el J18 se puede habilitar o deshabilitar el switch de RESET y el LED de RESET que contiene el micro.<br />
<br />
<br />
=== '''J11''' -'''Entrada del Analizador Lógico P&E´s''' '''''(P&E’s Logic Analyzer Inputs IN0/IN1)'''''===<br />
<br />
Si se conectan los pins IN0 e IN1 a PTC0 y PTC1, entonces estas entradas permitirán al P&E´s (analizador lógico de la PC) mostrar dichas señales en tiempo real. <br />
<br />
[[Archivo:j11.1.jpeg]]<br />
<br />
IN0 e IN1 conectados a PTC0 y PTC1 <br />
<br />
[[Archivo:j11.2.jpeg]]<br />
<br />
IN0 e IN1 desconectados a PTC0 y PTC1 <br />
<br />
=== '''J12''' - '''Jumpers de Interruptores '''Light Touch''' (Toque Suave) KEY_ENABLE''' '''''(Light Touch Switch Enable Jumper KEY_ENABLE)''''' ===<br />
<br />
[[Archivo:j12.1.jpeg]] <br />
<br />
Todos los interruptores conectados (Configuración por defecto)<br />
<br />
=== '''J18''' - '''Interruptor de RESET y Visualizador de LEDS habilitados''' '''''(Reset Switch Enable and Reset LED Display Enable Jumper RESET_EN)'''''===<br />
<br />
[[Archivo:j18.1.jpeg]]<br />
<br />
<br />
Habilitados tanto el RESET Switch como el Reset LED Display (Configuración por defecto).<br />
<br />
'''NOTA:''' Cada Jumper se conecta de manera individual.<br />
<br />
== '''Configuración de los Jumpers del Acelerómetro 3-Ejes''' '''''(3-Axis Accelerometer Jumper Settings)''''' ==<br />
<br />
El DEMOQE128 cuenta con un acelerador de 3 ejes (''3-axis accelerometer''). El '''J16''' conecta su señal IC2 e INT con el MCU.<br />
<br />
=== '''J16''' - '''''Accelerometer 3-axis Signals Connection Jumper ACC_EN'''''===<br />
<br />
[[Archivo:j16a.jpeg]]<br />
<br />
La señales de salida del acelerometro son configurables vía Jumpers con SDA, SCL y PTA1.<br />
<br />
== '''Zumbador''' '''''(Buzzer)''''' ==<br />
<br />
El DEMOQE128 integra un amplificador de audio piezo eléctrico cuya frecuencia de resonancia es de 4.0 KHz.<br />
<br />
<br />
=== '''J19''' - '''Habilitación del Zumbador, Jumper BUZ_EN''' '''''(Buzzer enable jumper BUZ_EN)'''''===<br />
<br />
[[Archivo:j19.jpeg]]<br />
<br />
Esta conexión habilita el Buzzer. Este podrá ser controlado, mediante el manejo de PTB5.<br />
Esta es la conexión por defecto.<br />
== '''''IIC Pull-up''''' ==<br />
El DEMOQE128 cotiene resistencias de PULL-UP externas para las líneas de SCL y SDA. Estas se habilitan mediante la conexión del Jumper J20. <br />
<br />
=== '''J20'''-'''Jumpers de Habilitación de IIC Pullup, IIC_EN ''' '''''IIC Pullup Enable Jumpers IIC_EN'''''===<br />
<br />
[[Archivo:j20.jpeg]]<br />
<br />
Activas las resistencias Externas de PULL-UP (Configuración por defecto)-<br />
<br />
== '''Potenciometro Analógico de Entrada''' '''''(Analog Input Potentiometer)''''' ==<br />
<br />
El DEMOQE128 proporciona un potenciometro de 10Kohm cuya salida puede ser conectada a PTC6 y/o a PTA0. Esto se puede seleccionar mediante las conexiones del jumper J21.<br />
<br />
=== '''J21''' - '''Jumpers de Selección de la Salida del Potenciometro POT_EN''' '''''(Potentiometer Output Selection Jumpers POT_EN)'''''===<br />
<br />
[[Archivo:J21.jpeg]]<br />
<br />
La salida del potenciometro está asignada a PTA0. Esta es la conexión por defecto.<br />
<br />
== '''Jumper de Circuito Externo de Cristal Opcional Habilitado''' '''''(Optional External Crystal Circuitry Jumper Enable)''''' ==<br />
<br />
El DEMOQE128 proporciona un circuito externo de cristal, este circuito está relleno de componentes.<br />
<br />
=== '''J17''' - '''Jumpers de Habilitación del Circuito Externo de Cristal CLOCK_EN''' '''''(External Crystal Circuitry Enable Jumpers CLOCK_EN)'''''===<br />
<br />
[[Archivo:j17.jpeg]]<br />
<br />
Habilita el uso del circuito de cristal. <br />
'''NOTA:''' Ambos jumpers deben estar conectados para que se habilite el circuito. Ver la figura.<br />
<br />
== '''Configuración de Los Jumpers para el Laboratorio de Arquitectura del Computador 2 (EC-3731) ''' ==<br />
<br />
'''Verificar que la configuración de los jumpers sea la siguiente antes de comenzar a trabajar en el Laboratorio de Arquitectura...'''<br />
<br />
'''J3''' Este jumper se encuentra conectado de esta manera, para recibir la alimentación del puerto USB.<br />
<br />
[[Archivo:j3.jpeg]]<br />
<br />
'''J4''' En el laboratorio se utiliza el nivel de voltaje de entrada en 3 V.<br />
<br />
[[Archivo:j4.jpeg]]<br />
<br />
'''J5''' En el laboratorio se mantiene este jumper en la configuración por defecto indicada en el manual.<br />
<br />
[[Archivo:j5.jpeg]]<br />
<br />
'''J6''' En el laboratorio se mantiene este jumper en la configuración por defecto indicada en el manual.<br />
<br />
[[Archivo:j6.jpeg]]<br />
<br />
'''J7''' En el laboratorio se mantiene este jumper en la configuración por defecto indicada en el manual.<br />
<br />
<br />
[[Archivo:j7.jpeg]]<br />
<br />
'''J8''' En el laboratorio este jumper se encuentra desactivado.<br />
<br />
[[Archivo:j8.jpeg]]<br />
<br />
'''J9''' Se mantienen todos los LEDS habilitados<br />
<br />
[[Archivo:j9.jpeg]]<br />
<br />
'''J11''' Estos jumpers están desconectados.<br />
<br />
[[Archivo:j11.jpeg]]<br />
<br />
'''J12''' El PTD2 y el PTD3 se encuentran deshabilitados.<br />
<br />
[[Archivo:j12.jpeg]]<br />
<br />
'''J16''' El acelerómetro se encuentra desactivado.<br />
<br />
[[Archivo:j16.jpeg]]<br />
<br />
'''J17''' El Reloj se encuentra activado.<br />
<br />
[[Archivo:j17.jpeg]]<br />
<br />
'''J18''' Tanto el switch como el LED de RESET se encuentran activados.<br />
<br />
[[Archivo:j18.jpeg]]<br />
<br />
'''J19''' El buzzer se encuentra conectado al PTB5<br />
<br />
[[Archivo:j19.jpeg]]<br />
<br />
'''J20''' Todos los jumpers conectados.<br />
<br />
[[Archivo:j20.jpeg]]<br />
<br />
'''J21''' El potenciómetro conectado a PTC6.<br />
<br />
[[Archivo:j21.jpeg]]<br />
<br />
'''NOTA:''' En general, estas conexiones van a variar según la práctica que se esté a punto de implementar. Los protocolos de trabajo para este laboratorio, siguieren que las señales de control sean asignadas a los puertos PTC y los datos a PTD. Entonces, siempre es necesario verificar que todos los jumpers estén conectados de manera tal que no se presenten incongruencias con las acciones llevadas a cabo mediante la implementación del código. Cualquier duda referirse al manual o a los esquemáticos referenciados en este artículo.<br />
<br />
==Enlace externo==<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
''Manual del Micro disponible en el Laboratorio:''<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://cache.freescale.com/files/microcontrollers/doc/support_info/DEMOQE32_SCH.pdf Esquemáticos]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=TOOLKIT_PC_APPLICATIONS_-_DEMOQE128&diff=2051TOOLKIT PC APPLICATIONS - DEMOQE1282012-11-22T09:44:56Z<p>Manypuig: /* DEMOQE - Aplicación Acelerométro (Accelerometer Demo Application) */</p>
<hr />
<div>El kit de herramientas del [[Tarjeta de Desarrollo - DEMOQE128|DEMOQE128]] con aplicaciones para la PC, es un programa que incluye utilidades gráficas, la cual permite interactuar con el Microcontrolador a través del USB Multilink, que le permite depurar usando el programa CodeWarrior. Además de ello, se podrá depurar el Microcontrolador en CodeWarrior simultáneamente con una de las siguientes utilidades del DEMOQE128: Analizador Lógico, Graficador Serial, Acelerómetro.<br />
<br />
<br />
<br />
<br />
----<br />
== DEMOQE - Aplicación Analizador Lógico (''Logic Analyzer Application'') ==<br />
El DEMOQE posee dos canales para el analizador lógico, este analizador permite que las señales IN0 e IN1 puedan ser capturados por la PC y ser mostrado al usuario. Estas dos señales puede estar conectada a cualquiera de las señales MCU que el usuario desea observar. Por comodidad, estas señales están conectados al pin PTC0 y al pin PTC1 del MCU por el JUMPER J11. Si desea otro gráfico señales del microcontrolador, ser puede utilizar jumper de alambre de IN0 e IN1 a la respectivas señales de MCU PORT. La lógica analizador funciona a una velocidad de captura de 10 kHz.<br />
<br />
Esta aplicación se utilizar para mostrar datos del analizador de lógica en la PC. El analizador de datos lógica muestra en tiempo real las diferentes formas de ondas que se generan, se puede también pausar la señal, hacerle zoom e inclusive imprimir la imagen.<br />
<br />
<br />
[[Archivo:Analizador Lógico.jpeg|700px|thumb|center|Analizador Lógico]]<br />
<br />
<br />
Pasos a seguir para usar el Analizador Lógico <br />
<br />
1.- Conectar el cable USB a la tarjeta del DEMOQE.<br />
<br />
2.- Una vez que se los Leds se enciendan para indicar que se debido enumerar los puertos USB,se hace clic en “Connect to Embedded Multilink Analyzer and Graph Pins” ya esta es una nueva version 1.01.<br />
<br />
3.- Se pulsa el botón etiquetado PTA2 esto hará que un ciclo de trabajo fije un ancho de pulso de la señal para la salida en el pin PTC1, la forma de onda se mostrara en el analizador canal IN1.<br />
<br />
4.- Se gira el potenciómetro W1, esto permite cambiar el ciclo de trabajo de la variable de ancho de pulso de la señal de salida en el pin PTC0, la forma de onda se mostrará en el analizador canal IN0.<br />
<br />
5.- Por último se hará clic en el "Close Port" cuando haya terminado de usar la utilidad.<br />
<br />
<br />
A continuación se observa una imagen de las formas de ondas que se pueden obtener en IN0 y IN1<br />
<br />
[[Archivo:Analizador_Lógico_1.jpeg|700px|thumb|center|Analizador Lógico - Formas de Ondas en IN0 e IN1]]<br />
<br />
== DEMOQE - Aplicación Terminal (''Terminal Application'') ==<br />
<br />
Este programa actúa como una aplicación estándar de puerto serial en la PC. Funciona tanto como para el estándar de puerto serial (cables: USB-Serial, Serial-Serial), como para el puerto serial virtual (cable USB-USB) en el tarjeta DEMOQE128. La aplicación incluye opciones para ajustar el número de puerto (COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8), la velocidad de transmisión, paridad y número de bits de datos. Existe un botón para tomar un archivo en el PC y transmitirlo por el puerto serial. También existen retrasos que se insertan automáticamente en la salida de la transmisión para evitar excesos. Es recomendable que estos valores predeterminados no se cambien.<br />
<br />
Este programa crea un puerto serial virtual por el cable USB-USB. Esta modalidad es muy útil para las computadoras que no tienen por defecto un puerto serial RS232.<br />
<br />
Puede ser configurado para recibir caracteres con el modo “Duplex Full” y el modo “Duplex Half” se transmite y se recibe dos caracteres que se muestran.<br />
<br />
<br />
[[Archivo:Terminal Window.jpeg|300px|thumb|left|Terminal Window]]<br />
<br />
<br />
Pasos a seguir para usar el Terminal:<br />
1.-Se abre la aplicación.<br />
<br />
2.- Se elije un COM, el cual será usado para la trasmisión de datos.<br />
<br />
3.- Se verifica los jumpers J6 y J7.<br />
<br />
4.- Se configurar el Baud, la paridad y el número de bits.<br />
<br />
5.- Una vez configurado los parámetros anteriores, se procede a conectar el cable USB de la PC al tablero DEMOQE128 y luego se da click al “Open Serial Port”.<br />
<br />
<br />
[[Archivo:Terminal Window1.jpeg|700px|thumb|center|Terminal]]<br />
<br />
== DEMOQE - Aplicación Insegura (''Unsecure Application'') ==<br />
Para usar las aplicaciones de DEMOQE128 se debe descargar <br />
<br />
Esta aplicación permite que los microcontroladores CFV1 y HCS08 pasen de ser seguros a inseguros. La aplicación inseguro funciona tanto con la tarjeta de DEMOQE como con otros hardware que se conecten a la PC vía el USB Multilink o Cyclone PRO.<br />
<br />
<br />
<br />
Pasos para usar la Aplicación Insegura: <br />
<br />
1.- Para poner de modo inseguro el dispositivo, debemos especificar el interfaz del hardware que se esta usando.<br />
<br />
2.- Si P&E Multilink o Pro Cyclone detecta cualquier dispositivo, el nombre de este dispositivo aparecerá en el cuadro de Puertos<br />
<br />
3.- Luego se selecciona HCS08 o CFV1 en el menú “Select Arquitecture”<br />
<br />
4.- Por último, se da click “Perform Unsecure (by Erasing) HCS08 Device, para poner inseguro.<br />
<br />
<br />
[[Archivo:Inseguro.jpeg|700px|thumb|center| Aplicación Inseguro. Ejemplo]]<br />
<br />
== DEMOQE - Aplicación Acelerométro (''Accelerometer Demo Application'') ==<br />
<br />
Esta aplicación es una de las mas interesantes ya que muestra gráficamente la salida de los datos, estos datos obtenidos incluyen la magnitud en la diferentes coordenadas X, Y, Z dependiendo de la variación de posición que experimente el dispositvo acoplado. Para que funcione esta aplicación se debe tener sumo cuidado a la hora de programar el microcontrolador que estará conectado a la tarjeta DEMOQE. <br />
<br />
Los datos que se obtienen pueden provenir de cualquiera de los [[SCI (Interfaz de Comunicación Serial) - DEMOQE128|puertos seriales]] de la PC o si no de la tarjeta DEMO. La configuración de los jumpers J6 y J7 es importante que esto permite que el DEMOQE interactué con el hadware específicamente el puerto serial. Se establece los jumper J16 en 0, J15 en 1, J14 en 0. <br />
<br />
<br />
[[Archivo:Acelerometro.jpg|700px|thumb|center| Aplicación del Acelerométro]]<br />
<br />
<br />
Pasos para usar la aplicación del Acelerómetro: <br />
<br />
1.- Al iniciar la aplicación, se elije el puerto que se implemento en la programación. De esta manera usted estará especificando el puerto que usará para trasmitir los datos, bien puede realizarlo a través del puerto comunicación vía USB o vía Puerto de COM (RS232).<br />
<br />
2.- Verificar que estén bien [[JUMPER SETTINGS|configurado los jumpers]] J6 y J7 en la tarjeta DEMOQE segun la modalidad de comunicación que se haya seleccionado.<br />
<br />
3.- Configurar el Baud rate, la velocidad dependerá de la tasa que el programador especifique en su programa, solo se asugra que la misma sea de alta tasa de transmisión (High Baud Rate).<br />
<br />
4.- Ya terminada la configuración de los parámetros anteriores, se procede a conectar el cable USB o DB9 a la tarjeta DEMOQE.<br />
<br />
5.- Se corre el código que se esta usando para hacer las pruebas con la aplicación del acelerómetro en CodeWarrior.<br />
<br />
6.- Último paso dar click “Open Serial Port and Start Demo” y esperar a que se muestre en pantalla los resultados obtenidos.<br />
<br />
<br />
[[Archivo:Acelerometro Ejemplo.jpg|850px|thumb|center|Acelerómetro Ejemplo]]<br />
<br />
<br />
Con respecto a la aplicación se observa un mejor rendimiento en el ColdFire de 32-bit V1 CPU sobre el de 8-bit S08 CPU. El cálculo promedio de datos y el modo de filtrar datos es considerable de 16-bit y 32-bit requeridas para las operaciones matemáticas. El S08 CPU es capaz de realizar estas operaciones, pero requiere un gran parte de su ancho de banda mientras que el ColdFire V1 CPU realiza esas mismas operaciones con solo una pequeña parte de su ancho de banda. Con los microcontroladores Flexis QE128 podrá escoger el CPU que mejor se adapte a sus necesidades en cuanto a rendimiento.([[Acelerómetro - DEMOQE128|Acelerómetro]])<br />
<br />
== DEMOQE - Aplicación Gráficador Serial (''Serial Grapher Application'') ==<br />
<br />
Esta aplicación es una versión mas generalizada a la aplicación del acelerómetro. Esta aplicación puede ser utilizado con el microcontrolador aplicación basada acelerómetro s o código de microcontrolador cliente para transmitir los datos en el formato correcto. La utilidad gráfica de serie permite que los datos entrantes en el puerto serie del PC, o uno de P & puertos serie virtuales de E, de forma automática graficadas en el tiempo o aparece en una serie de gráficos de barras. El puerto serial virtual existe en varios de los diseños embebidos P&E USB multilink incluyendo la junta DEMO.<br />
<br />
Es importante que todos los datos que se muestren deben estar en formato hexadecimal. Los datos pueden ser aceptadas y se muestran en forma de valores de byte de entrada ($00 - $FF) o valores de texto ($ 0000 - $ FFFF). El formato de datos indica si el byte de datos es o palabra de datos. Los componentes gráficos automáticamente el tamaño de su área de distribución en función de los datos entrantes.<br />
<br />
<br />
Pasos para usar la aplicación de Graficador Serial:<br />
<br />
1.- Elegir el COM que se usará para transmitir.<br />
<br />
2.- Verifcar la configuración de los jumpers J6 y J7.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Conectar el cable USB o el cable DB9<br />
<br />
5.- Dar click “Open Serial Port and Start Demo”<br />
<br />
6.- Se puede pausar la representación gráfica de datos y la escala de los ejes de coordenadas de X e Y se puede cambiar a través de la barra de herramientas que se encuentra en la esquina superior derecha de la aplicación. <br />
<br />
<br />
[[Archivo:Graficador Serial.jpg|700px|thumb|center|Graficador Serial]]<br />
<br />
<br />
<br />
=== Visual Components ===<br />
<br />
La barra de gráficos tiene 4 barras separadas con su letra A, B, C, D. Cada barra indica valor en porcentaje según el rango completo. Un valor de byte de $ 7F (el máximo es $ FF) se muestran como aproximadamente 50% como lo haría un valor de $ 7FFF palabra (el máximo es $ FFFF).<br />
<br />
<br />
[[Archivo:Serial Grapher Bar Graph.jpg|500px|thumb|center|Serial Grapher Bar Graph]]<br />
<br />
<br />
El componente gráfica muestra cuatro formas de onda X, Y, Z, y W. La eje magnitud o bien tiene un rango de $ 00 - $ FF (si son valores de byte entrante en el puerto serial) o $ 0000 - $ FFFF (si los valores de palabra son entrante). Cada nuevo conjunto de valores que viene a través del puerto serie se añade a la parte derecha de el gráfico y el resto de los valores de los datos se mueven a la izquierda. El eje vertical muestra los datos entrantes como la magnitud de cada forma de onda, y los eje horizontal muestra el número de muestras.<br />
<br />
=== Data Format ===<br />
<br />
<br />
El formato de datos se divide en dos secciones, dependiendo de si el flujo de datos entrante está en formato de byte o palabra formato.<br />
<br />
==== Byte Formatted Data ====<br />
<br />
<br />
Hay dos comandos que pueden ser aceptadas. Ambos comandos debe terminar en los caracteres especiales $#0D y #$0A que son CR (return carriage) y LF (line feed). Los comandos aceptados son:<br />
WnnZnnYnnXnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
siguientes líneas del gráfico: W, Z, Y, X.<br />
AnnBnnCnnDnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
gráficos siguientes líneas de compás: A, B, C, D.<br />
<br />
==== Word Formatted Data ====<br />
<br />
Hay 3 comandos que pueden ser aceptadas. Todos los comandos deben acabar en los caracteres especiales #$0D y $#0A que son CR (return de carriage) y LF (line feed). Los comandos aceptados son:<br />
nnnn, nnnn, nnnn, nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el gráfico y los gráficos de barras de la siguiente manera: X / A, A / B, Z / C, W / D.<br />
nnnn: nnnn: nnnn: nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos que se muestran el componente de representación gráfica de la siguiente manera: X, Y, Z, W.<br />
nnnn = nnnn = nnnn nnnn =<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el componente de gráfico de barras de la siguiente manera: A, B, C, D.<br />
<br />
== Referencias ==<br />
*[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf ''DEMOQE128 User Manual'' DEMOQE rev A]<br />
<br />
<br />
[[Categoría: DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Buzzer_-_DEMOQE128&diff=2007Buzzer - DEMOQE1282012-11-21T02:57:45Z<p>Manypuig: /* Por interrupciones RTC */</p>
<hr />
<div>[[Categoría: DEMOQE128]]<br />
[[Archivo:Buzzer demo.jpg|400px|thumb|right|Piezo Buzzer DEMOQE128]] <br />
<br />
=''BUZZER''=<br />
<br />
Un ''buzzer'' es un transductor electro acústico o dispositivo de señales de audio que produce un tono<br />
intermitente o continuo dependiendo de cómo se programe a trabajar; existen muchos tipos de ''buzzer'' <br />
desde electromecánicos hasta piezoeléctricos. <br />
<br />
<br />
El DEMOQE128 contiene un piezo ''buzzer''. El corazón de un ''buzzer'' piezoeléctrico es un disco de piezo <br />
el cual consiste en una placa cerámica recubierto de una capa metálica. Debe tener incluido un <br />
oscilador para ser considerado ''buzzer''. <br />
<br />
Algunos ''buzzer'' comerciales que se pueden encontrar actualmente pueden ser:<br />
<br />
<br />
[[Archivo:Buzzer 1.jpg|200px|thumb|left|Piezo Buzzer (MSPS23H)Precio por unidad: US$0.22-0.25]] <br />
[[Archivo:BUZZER transducer.jpg|200px|thumb|right|Piezo Transducer (MSPT23A)Precio por unidad US $ 0.1-0.5]]<br />
[[Archivo:Piezo buzzer 2.jpg|200px|thumb|center| Piezo Buzzer (MSPS43B)Precio por unidad: US $ 0.5-1.0 ]]<br />
[[Archivo:BUZZER_magnetico.jpg|200px|thumb|right|SMD Magnetic Buzzer (MSES12D)Precio por unidad: US $ 0.1-0.5]] <br />
<br />
Como se puede observar existe una gran variedad de modelos de ''buzzer'', desde magnéticos hasta piezoeléctricos, con distintos precios y especificaciones.<br />
Elegir cual de estos modelos es mejor depende enteramente de el uso que se le quiera dar. Un ''buzzer'' puede servir como alarma, beeper, avisos de fallos o aciertos en ciertos programas o incluso se puede implementar para lograr tonos armónicos o canciones.<br />
Mas adelante explicaremos como se puede hacer un tono con el ''buzzer'' he incluso una secuencia de tonos que formen una canción y como crear silencios entre canciones. <br />
<br />
<br />
=Inicializaciones de ''Buzzer''=<br />
<br />
Antes de empezar a codificar y trabajar con el ''buzzer'' se debe verificar que el DEMOQE128 posea los <br />
settings necesarios para su funcionamiento:<br />
<br />
• Colocar los jumpers de manera que se permita la salida de la señal al ''buzzer''. El ''buzzer'' <br />
depende de que el jumper J19 este colocado de la siguiente manera:<br />
<br />
[[Archivo:Jumper buzzer.jpg|289px|thumb|center|Jumper del ''Buzzer'' ]] <br />
<br />
• Tener en cuenta con que puerto trabaja el ''Buzzer'' y activarlo como salida. Se debe colocar <br />
el puerto PTBDD como salida ya que el ''buzzer'' funciona por medio de PTBD_PTB5.<br />
<br />
<br />
<pre> PTBDD= 0xFF; </pre><br />
<br />
=Implementación=<br />
<br />
Antes de empezar a utilizar el ''buzzer'' se debe tener en cuenta un par de cosas importantes:<br />
<br />
• El ''buzzer'' es parte del hardware del DEMOQE128 no depende del micro controlador implementado.<br />
• El ''buzzer'' no posee una estructura definida de control <br />
• La implementación del ''buzzer'' depende del código.<br />
<br />
<br />
Como se mencionó anteriormente para implementar el ''buzzer'' no contamos con registros de control ni con secuencias de instrucciones de control, para poder utilizarlo debemos trabajar dentro del código. <br />
Se debe programar el código de manera que emule una señal periódica, de esta manera podemos usar esta señal como salida para el dispositivo , el cual arrojará los tonos programados.<br />
<br />
<br />
Como crear una señal periódica:<br />
<br />
Se puede utilizar una señal periódica para implementar los tonos en el ''buzzer'', para efectos prácticos el ''buzzer'' solo recibirá un 1 o un 0 dependiendo de en que tiempo se tome la señal y cuanto tiempo se mantenga en dicha salida. Una señal cuadrática sería un buen ejemplo para la implementación de este método de diseño.<br />
<br />
<br />
[[Archivo:Onda cuadrada.jpg|613px|thumb|center|Onda periodica de salida al ''Buzzer'']] <br />
<br />
<br />
Al momento de crear la señal hay que tomar en cuenta ciertas cosas para el tipo de tono que se quiera producir, entre esas están las siguientes:<br />
<br />
• La cantidad de ciclos de reloj de la onda<br />
• La duración en la que se repetirá la onda cuadrada deseada<br />
• El diseño de los tiempos entre tonos para evitar que se solapen<br />
<br />
<br />
<br />
<br />
<br />
=Generación de solo un tono=<br />
<br />
==Por interrupciones RTC==<br />
<br />
<br />
<br />
• Colocar como salida el puerto PTBDD. Esto permite generar una salida en el puerto que esta conectado al ''buzzer''.<br />
<br />
<pre> PTBDD= 0xff; </pre><br />
<br />
<br />
<br />
• Habilitar interrupciones RTC (Real Time Counter):<br />
<br />
Las interrupciones RTC se usaran para determinar el periodo de la onda.<br />
<br />
'''En assembler''' <br />
<br />
<pre><br />
<br />
<br />
LDA #$04 ; Valor necesario para habilitar en el registro RTC del SCGC2 (reg 3)<br />
STA SCGC2 ; Habilita BUS clock para RTC , SYSTEM CLOCK GATING CONTROL REGISTER, PROCESO<br />
<br />
LDA #$00<br />
STA RTCMOD ;Se inicializa el módulo Real Time Counter, real time counter módulo<br />
LDA #$1E ;para que active la bandera RTIF cada 1s , interrupciones cada seg<br />
STA RTCSC ; real time estado y registros de control<br />
<br />
</pre><br />
<br />
'''En lenguaje C'''<br />
<pre><br />
<br />
SCGC2=0x04; //Habilita BUS clock para RTC , SYSTEM CLOCK GATING CONTROL REGISTER, PROCESO<br />
RTCMOD=0x00; //Se inicializa el módulo Real Time Counter, real time counter modulo<br />
RTCSC=0x1E; //para que active la bandera RTIF cada 1s , interrupciones cada seg<br />
//real time estado y registros de control <br />
<br />
</pre><br />
• El periodo de la onda es determinado de la siguiente manera: <br />
<br />
El programa entrara en la rutina de interrupción que se diseñó anteriormente por RTC, durante esta rutina se negara la salida PTBD_PTB5, esto determina la mitad del periodo. Si se observa la onda cuadrada se puede notar que con cada cambio de flanco o salida negada la amplitud de la onda cambia de “0” a “1”, cuando la onda haga dos cambios (vuelva al estado que se toma como referencia) se cumple un periodo, por eso cada interrupción por RTC representa medio periodo.<br />
<br />
<br />
• Se continúa negando la salida PTBD_PTB5 por un tiempo indeterminado, esto genera un tono en la salida del ''buzzer'', el cual reconoce los cambios en el periodo de la señal como el tono en cuestión.<br />
<br />
Variación de tonos:<br />
<br />
• Para cambiar el tono, se debe configurar el RTC de manera que module la duración entre interrupciones (esto cambiará el periodo de la onda). <br />
<br />
• En el caso que se quiera programar mas de una secuencia de tonos, o "canciones" juntas, un dato de interés podría ser que el ''buzzer'' no puede <br />
reconocer frecuencias ( expresadas en periodos) muy altas o muy bajas, lo cual usualmente es útil para hacer "silencios"entre una cancion y otra.<br />
<br />
==Generación de tonos manual (sin RTC)==<br />
<br />
• Los primeros pasos de inicialización son exactamente iguales con o sin RTC<br />
<br />
<br />
• Al momento de implementar las interrupciones, si no se posee el conocimiento para usar el RTC también se puede crear un periodo “manualmente”, se debe tener como parámetro la cantidad de ciclos de reloj que tendrá la onda cuadrada. Luego se debe “sincronizar” el tiempo que tarda cada instrucción del programa con respecto a la cantidad e ciclos de la onda. Para poder completar los ciclos faltantes (la onda usualmente se toma mas ciclos de reloj que las instrucciones de cambio de periodo) se pueden utilizar “nops” iterados dentro de las mismas instrucciones si se trata de assembler o ciclos si se trabaja con C. <br />
<br />
• Se puede utilizar una tabla de frecuencias para cada “nota” que se desea, si se quiere hacer un sonido específico ( esto para cuando se desea generar mas de un tono), el programa leerá estas variaciones y las tomará como un cambio en el periodo, que en si es lo que define que nota tomara como salida el ''buzzer''. <br />
<br />
• Aunque es posible generar una onda de esta manera es mejor utilizar el RTC pues este diseño es muy poco eficiencia y se desperdicia la verdadera capacidad del DEMOQE128. <br />
<br />
Un ejemplo de este diseño sería:<br />
<pre><br />
;************************************************************************** ; <br />
;*** Rutina de generación de ondas cuadradas, de 30 ciclos de reloj *******;<br />
;*** se llevará a cabo tantas veces como indique PERIODO, ******* ; <br />
;*** Luego negará la salida del ''Buzzer'' y repetirá el conteo de PERIODO ****;<br />
;*** 30 ciclos * 250 ns (Tiempo de cada ciclo) = 7.5uS *****************;<br />
;**************************************************************************; <br />
<br />
MOV 0, COUNTER;<br />
MOV 0, COUNTER_2<br />
<br />
Flanco: NOP ;1 ciclo - Los NOP son para compensar los ciclos usados en cambiar el flanco<br />
LDA COUNTER <br />
INCA<br />
STA COUNTER<br />
BNE COUNTER, #12,Flanco <br />
<br />
Cambio: NOP <br />
LDA COUNTER <br />
INCA<br />
STA COUNTER<br />
BNE COUNTER, #10,Cambio <br />
<br />
AIX #-1 ;2 ciclos<br />
CPHX #$0000 ;3 ciclos - Revisa si el contador llega a cero, compare hx con el valor<br />
BNE Flanco ;3 ciclos - Si aun no se termina el periodo, decrementar contador, NECESITA DE RESULTADO DE LA funcion anterior para actuar<br />
<br />
COM PTBD ;5 ciclos<br />
LDHX periodo ;5 ciclos<br />
BRA Cambio ;3 ciclos - Si ya terminó el periodo, pasar al siguiente flanco<br />
<br />
<br />
;**************************************************************<br />
</pre><br />
<br />
•Para el uso de esta instrucción también se necesita el uso de una tabla de frecuencias que representen una escala de notas o tonos, el programa leerá la "canción"que no sera mas que una combinación de las frecuencias de la tabla y las traducirá a cambios en periodo como se mencionó anteriormente. un modelo de dicha tabla podría ser:<br />
<br />
<pre> <br />
;Tabla de Notas musicales ordenadas por octava: do, do#,re,re#,mi,fa,fa#,sol,sol#,la,la#,si <br />
;do, do#,re,re#,mi, fa, fa#,sol,sol#,la,la#,si<br />
SILENCIO: DC.W $FFFF<br />
OCTAVA1: DC.W 509,480,454,428,403,381,359,339,320,302,285,269 ;3<br />
OCTAVA2: DC.W 254,240,226,213,201,190,179,169,160,151,143,135 ;4<br />
OCTAVA3: DC.W 126,119,113,106,100,94,89,84,79,75,71,66 ;5<br />
OCTAVA4: DC.W 63,59,56,53,50,47,44,42,39,37,35,33 ;6 <br />
</pre><br />
<br />
•Aun así se recomienda de nuevo no utilizar este método sino uno que implique la variación del periodo por medio de RTC, lo que haría que la cantidad de líneas de código de el programa disminuya significativamente ademas de ser la manera correcta de programar y aprovechar eficientemente las funciones del DEMOQE128.<br />
<br />
=Programa de Prueba=<br />
<br />
A continuación se puede observar un enlace a youtube con un video de la implementación del ''buzzer'', está programado para reproducir dos fragmentos de canciones del juego "ZELDA", primero "''Serenade Of Water''", luego, y con un silencio de segundo y medio, sonará un fragmento de "''Song Of Storms''".<br />
<br />
http://www.youtube.com/watch?v=jyfUEQ8zmCY<br />
<br />
=Referencias=<br />
<br />
•[http://www.soundbuzzer.com Imágenes de los ''buzzers'']<br />
<br />
•[http://cache.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf?fpsp=1&WT_TYPE=Users%20Guides&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation DEMOQE128UM]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=2006Acelerómetro - DEMOQE1282012-11-21T02:47:18Z<p>Manypuig: /* Configuración */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 además de detectar movimientos lineales, saber si el dispositivo gira alrededor de su eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|configuracion de los jumpers]], especificamente la línea de jumpers J14(G-Sel2) J15(G-Sel1) y J16(Sleep Mode) segun convenga, para cada valor del rango se tiene otro valor de sensibilidad que es inversamente proporcional al primero.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g <br />
// como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se <br />
//indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado.<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleración<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma<br />
// como muestra y lo convierte usando canal 1<br />
// de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma <br />
// como muestra y lo convierte usando canal 8<br />
// de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin z lo toma <br />
// como muestra y lo convierte usando canal 9<br />
// de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que <br />
// 4Mhz/2x16 = 115000 bps aprox <br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra que asigna el valor indicado en el <br />
//comentario anterior y obtener 115000bps<br />
} //Inicialización de la interfaz de comunicación serial finalizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío <br />
//(Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de <br />
// transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*Terminal Windows: 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.<br />
<br />
*Data Snapshot: Esta interfaz nos permite ver que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia (en porcentajes) 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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.youtube.com/watch?v=NPqwmq--f0g Proyecto acelerómetro: indicador de nivel (nivelador electrónico) con leds]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]<br />
<br />
<br />
Publicado por: Gabino Betancourt (Manypuig)</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=2005Acelerómetro - DEMOQE1282012-11-21T02:46:13Z<p>Manypuig: /* Configuración */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 además de detectar movimientos lineales, saber si el dispositivo gira alrededor de su eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|jumpers]], especificamente la línea de jumpers J14(G-Sel2) J15(G-Sel1) y J16(Sleep Mode) segun convenga, para cada valor del rango se tiene otro valor de sensibilidad que es inversamente proporcional al primero.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g <br />
// como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se <br />
//indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado.<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleración<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma<br />
// como muestra y lo convierte usando canal 1<br />
// de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma <br />
// como muestra y lo convierte usando canal 8<br />
// de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin z lo toma <br />
// como muestra y lo convierte usando canal 9<br />
// de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que <br />
// 4Mhz/2x16 = 115000 bps aprox <br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra que asigna el valor indicado en el <br />
//comentario anterior y obtener 115000bps<br />
} //Inicialización de la interfaz de comunicación serial finalizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío <br />
//(Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de <br />
// transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*Terminal Windows: 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.<br />
<br />
*Data Snapshot: Esta interfaz nos permite ver que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia (en porcentajes) 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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.youtube.com/watch?v=NPqwmq--f0g Proyecto acelerómetro: indicador de nivel (nivelador electrónico) con leds]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]<br />
<br />
<br />
Publicado por: Gabino Betancourt (Manypuig)</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=2004Acelerómetro - DEMOQE1282012-11-21T02:24:23Z<p>Manypuig: /* Características */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 además de detectar movimientos lineales, saber si el dispositivo gira alrededor de su eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g <br />
// como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se <br />
//indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado.<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleración<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma<br />
// como muestra y lo convierte usando canal 1<br />
// de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma <br />
// como muestra y lo convierte usando canal 8<br />
// de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin z lo toma <br />
// como muestra y lo convierte usando canal 9<br />
// de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que <br />
// 4Mhz/2x16 = 115000 bps aprox <br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra que asigna el valor indicado en el <br />
//comentario anterior y obtener 115000bps<br />
} //Inicialización de la interfaz de comunicación serial finalizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío <br />
//(Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de <br />
// transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*Terminal Windows: 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.<br />
<br />
*Data Snapshot: Esta interfaz nos permite ver que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia (en porcentajes) 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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.youtube.com/watch?v=NPqwmq--f0g Proyecto acelerómetro: indicador de nivel (nivelador electrónico) con leds]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]<br />
<br />
<br />
Publicado por: Gabino Betancourt (Manypuig)</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Configuraci%C3%B3n_de_pines-DEMOQE128&diff=2003Configuración de pines-DEMOQE1282012-11-21T02:14:46Z<p>Manypuig: /* Asignación de pines */</p>
<hr />
<div>Configuración de pines-[[Tarjeta de Desarrollo - DEMOQE128|DEMOQE128]]<br />
<br />
== Pines del MC9S08QE128 ==<br />
<br />
=== Asignación de pines ===<br />
El MC9S08QE128 puede tener 80, 64,48, 44 ó 32 pines dependiendo del modelo. Este artículo se enfocará en analizar el de 64 pines y 8-bits debido a que es el que se usa en el Laboratorio C de la Universidad Simón Bolívar.<br />
<br />
En la Figura 1, se puede observar la asignación de los puertos para cada pin del microcontrolador<br />
<br />
[[Archivo:Figura1.jpg|400px|thumb||center|Figura1: Asignación de pines del MC9S09QE128]]<br />
<br />
=== Conexión al DEMOQE128 ===<br />
<br />
Los pines del MC09S08QE128 se ordenan de la siguiente manera en el hardware:<br />
<br />
[[Archivo:Figura2.jpg|200px|thumb||center|Figura 2. Pines del MC09S08QE128.]]<br />
<br />
La conexión del microcontrolador al DEMOQE128 se hace de la siguiente manera:<br />
<br />
[[Archivo:Figura3.gif|500px|thumb||center|Figura 3. Conexión del microcontrolador al DEMOQE128.]]<br />
<br />
== Funciones de los pines del DEMOQE128 ==<br />
<br />
Se realizará una breve descripción de las funciones que realizan los pines más utilizados del DEMOQE. Dependiendo de los [[JUMPER SETTINGS]] cada pin puede realizar distintas funciones<br />
<br />
Por otro lado, además de las funciones que cumplen en el DEMOQE128, los pines pueden ser usados de cualquier forma dependiendo de la programación del MC9S09QE128 <br />
<br />
Un ejemplo de esto, los pines PTC pueden ser usados para enviar y recibir información, sin afectar su función en el DEMOQE128. <br />
<br />
En caso contrario si se desea usar los pines PTD para enviar y recibir información, hay que desactivarlos con los jumpers, ya que están relacionados con los switches, y si por error se presiona uno de estos se cambia la información<br />
<br />
<br />
*PTC:<br />
<br />
PTC0: Activa el primer led // Activa entrada del Analizador Lógico<br />
PTC1: Activa el segundo led // Activa entrada del Analizador Lógico<br />
PTC2: Activa el tercer led<br />
PTC3: Activa el cuarto led<br />
PTC4: Activa el quinto led // Activa el Sleep<br />
PTC5: Activa el sexto led // Activa el CLCK<br />
PTC6: Activa el potenciómetro<br />
PTC7: Activa el acelerómetro<br />
<br />
Hay que tomar en cuenta que los LEDS funcionan con lógica negada<br />
<br />
*PTE:<br />
<br />
PTE6: Activa el sexto led.<br />
PTE7: Activa el séptimo led. <br />
<br />
Hay que tomar en cuenta que los LEDS funcionan con lógica negada<br />
<br />
*PTA: <br />
<br />
PTA0: Activa el potenciómetro<br />
PTA1: Activa el acelerómetro<br />
PTA2: Activa el primer switch<br />
PTA3: Activa el segundo switch<br />
PTA6: Activa el acelerómetro<br />
PTA7: Activa el acelerómetro<br />
<br />
*PTD: <br />
<br />
PTD0: Activa el acelerómetro<br />
PTD1: Activa el acelerómetro<br />
PTD2: Activa el tercer switch <br />
PTD3: Activa el cuadrto switch<br />
<br />
*PTB:<br />
<br />
PTB0: Activa RxD<br />
PTB1: Activa TxD<br />
PTB5: Activa el Buzzer<br />
<br />
*SCL: <br />
<br />
Activa resistencia de PULLUPS<br />
<br />
*SDA: <br />
<br />
Activa resistencia de PULLUPS<br />
<br />
*EXTAL:<br />
<br />
Activa CLCK externo<br />
<br />
*XTAL:<br />
<br />
Activa CLCK externo<br />
<br />
* VDD<br />
<br />
No se conecta, porque ya se alimenta con el DEMOQE128<br />
<br />
*VSS <br />
<br />
Se conecta a tierra<br />
<br />
== Conexión al protoboard ==<br />
<br />
La conexión del protoboard con el DEMOQE128 se realiza a través del cable plano provisto en clases. Dicho cable posee 2 conectores, uno que se conecta en el protoboard y otro que se conecta en DEMOQE128. Cada extremo cuenta con 40 pines en cada uno<br />
<br />
*Conector del DEMOQE128:<br />
<br />
Este conector se conecta en la parte inferior de la tarjeta según su configuración de pines, <br />
<br />
[[Archivo:Figura6.jpg|450px|thumb|left|Figura6: Vista inferior del DEMOQE128]]<br />
<br />
[[Archivo:Figura7.gif|200px|thumb|center|Figura7: Conector del DEMOQE128]]<br />
<br />
<br />
<br />
*Conector del protoboard:<br />
<br />
La conexión del extremo que va al protoboard posee la siguiente configuración de pines:<br />
<br />
[[Archivo:Figura4.gif|200px|thumb||center|Figura4: Configuración de pines del onector del cable plano proveniente del<br />
DEMOQE128]]<br />
<br />
[[Archivo:Figura10.jpg|200px|thumb|left|Figura8: Conector del cable plano proveniente del<br />
DEMOQE128]]<br />
Se debe conectar tomando en cuenta el orden en que los pines quedan en el conector para no confundir los pines 1 y 2 con el 39 y 40.<br />
Como se puede observar en la Figura 8, el cable plano tiene una línea roja indicando cual es el pin 1<br />
[[Archivo:Figura9.jpg|100px|thumb|right|Figura9: Base para conexión al protoboard]]<br />
<br />
Se sugiere que se conecte la base en el extremo derecho o izquierdo del protoboard para no tener incomodidades con el cable plano sobre el circuito<br />
<br />
<br/><br/><br/><br/><br/><br/><br/><br/><br />
== Referencias ==<br />
<br />
* [http://www.freescale.com/files/microcontrollers/doc/ref_manual/MC9S08QE128RM.pdf ''MC9S08QE128 Reference Manual'']<br />
<br />
*[http://cache.freescale.com/files/microcontrollers/doc/support_info/DEMOQE32_SCH.pdf ''Base Board'']<br />
<br />
* DEMOQE Base Placement<br />
<br />
* MC9S08QE128DaughterPlace</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Configuraci%C3%B3n_de_pines-DEMOQE128&diff=2002Configuración de pines-DEMOQE1282012-11-21T02:13:08Z<p>Manypuig: </p>
<hr />
<div>Configuración de pines-[[Tarjeta de Desarrollo - DEMOQE128|DEMOQE128]]<br />
<br />
== Pines del MC9S08QE128 ==<br />
<br />
=== Asignación de pines ===<br />
El MC9S08QE128 puede tener 80, 64,48, 44 ó 32 pines dependiendo del modelo. Este artículo se enfocará en analizar el de 64 pines debido a que es el que se usa en el Laboratorio C de la Universidad Simón Bolívar.<br />
<br />
En la Figura 1, se puede observar la asignación de los puertos para cada pin del microcontrolador<br />
<br />
[[Archivo:Figura1.jpg|400px|thumb||center|Figura1: Asignación de pines del MC9S09QE128]]<br />
<br />
=== Conexión al DEMOQE128 ===<br />
<br />
Los pines del MC09S08QE128 se ordenan de la siguiente manera en el hardware:<br />
<br />
[[Archivo:Figura2.jpg|200px|thumb||center|Figura 2. Pines del MC09S08QE128.]]<br />
<br />
La conexión del microcontrolador al DEMOQE128 se hace de la siguiente manera:<br />
<br />
[[Archivo:Figura3.gif|500px|thumb||center|Figura 3. Conexión del microcontrolador al DEMOQE128.]]<br />
<br />
== Funciones de los pines del DEMOQE128 ==<br />
<br />
Se realizará una breve descripción de las funciones que realizan los pines más utilizados del DEMOQE. Dependiendo de los [[JUMPER SETTINGS]] cada pin puede realizar distintas funciones<br />
<br />
Por otro lado, además de las funciones que cumplen en el DEMOQE128, los pines pueden ser usados de cualquier forma dependiendo de la programación del MC9S09QE128 <br />
<br />
Un ejemplo de esto, los pines PTC pueden ser usados para enviar y recibir información, sin afectar su función en el DEMOQE128. <br />
<br />
En caso contrario si se desea usar los pines PTD para enviar y recibir información, hay que desactivarlos con los jumpers, ya que están relacionados con los switches, y si por error se presiona uno de estos se cambia la información<br />
<br />
<br />
*PTC:<br />
<br />
PTC0: Activa el primer led // Activa entrada del Analizador Lógico<br />
PTC1: Activa el segundo led // Activa entrada del Analizador Lógico<br />
PTC2: Activa el tercer led<br />
PTC3: Activa el cuarto led<br />
PTC4: Activa el quinto led // Activa el Sleep<br />
PTC5: Activa el sexto led // Activa el CLCK<br />
PTC6: Activa el potenciómetro<br />
PTC7: Activa el acelerómetro<br />
<br />
Hay que tomar en cuenta que los LEDS funcionan con lógica negada<br />
<br />
*PTE:<br />
<br />
PTE6: Activa el sexto led.<br />
PTE7: Activa el séptimo led. <br />
<br />
Hay que tomar en cuenta que los LEDS funcionan con lógica negada<br />
<br />
*PTA: <br />
<br />
PTA0: Activa el potenciómetro<br />
PTA1: Activa el acelerómetro<br />
PTA2: Activa el primer switch<br />
PTA3: Activa el segundo switch<br />
PTA6: Activa el acelerómetro<br />
PTA7: Activa el acelerómetro<br />
<br />
*PTD: <br />
<br />
PTD0: Activa el acelerómetro<br />
PTD1: Activa el acelerómetro<br />
PTD2: Activa el tercer switch <br />
PTD3: Activa el cuadrto switch<br />
<br />
*PTB:<br />
<br />
PTB0: Activa RxD<br />
PTB1: Activa TxD<br />
PTB5: Activa el Buzzer<br />
<br />
*SCL: <br />
<br />
Activa resistencia de PULLUPS<br />
<br />
*SDA: <br />
<br />
Activa resistencia de PULLUPS<br />
<br />
*EXTAL:<br />
<br />
Activa CLCK externo<br />
<br />
*XTAL:<br />
<br />
Activa CLCK externo<br />
<br />
* VDD<br />
<br />
No se conecta, porque ya se alimenta con el DEMOQE128<br />
<br />
*VSS <br />
<br />
Se conecta a tierra<br />
<br />
== Conexión al protoboard ==<br />
<br />
La conexión del protoboard con el DEMOQE128 se realiza a través del cable plano provisto en clases. Dicho cable posee 2 conectores, uno que se conecta en el protoboard y otro que se conecta en DEMOQE128. Cada extremo cuenta con 40 pines en cada uno<br />
<br />
*Conector del DEMOQE128:<br />
<br />
Este conector se conecta en la parte inferior de la tarjeta según su configuración de pines, <br />
<br />
[[Archivo:Figura6.jpg|450px|thumb|left|Figura6: Vista inferior del DEMOQE128]]<br />
<br />
[[Archivo:Figura7.gif|200px|thumb|center|Figura7: Conector del DEMOQE128]]<br />
<br />
<br />
<br />
*Conector del protoboard:<br />
<br />
La conexión del extremo que va al protoboard posee la siguiente configuración de pines:<br />
<br />
[[Archivo:Figura4.gif|200px|thumb||center|Figura4: Configuración de pines del onector del cable plano proveniente del<br />
DEMOQE128]]<br />
<br />
[[Archivo:Figura10.jpg|200px|thumb|left|Figura8: Conector del cable plano proveniente del<br />
DEMOQE128]]<br />
Se debe conectar tomando en cuenta el orden en que los pines quedan en el conector para no confundir los pines 1 y 2 con el 39 y 40.<br />
Como se puede observar en la Figura 8, el cable plano tiene una línea roja indicando cual es el pin 1<br />
[[Archivo:Figura9.jpg|100px|thumb|right|Figura9: Base para conexión al protoboard]]<br />
<br />
Se sugiere que se conecte la base en el extremo derecho o izquierdo del protoboard para no tener incomodidades con el cable plano sobre el circuito<br />
<br />
<br/><br/><br/><br/><br/><br/><br/><br/><br />
== Referencias ==<br />
<br />
* [http://www.freescale.com/files/microcontrollers/doc/ref_manual/MC9S08QE128RM.pdf ''MC9S08QE128 Reference Manual'']<br />
<br />
*[http://cache.freescale.com/files/microcontrollers/doc/support_info/DEMOQE32_SCH.pdf ''Base Board'']<br />
<br />
* DEMOQE Base Placement<br />
<br />
* MC9S08QE128DaughterPlace</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Discusi%C3%B3n:Pthreads_visual_studio_2012&diff=2000Discusión:Pthreads visual studio 20122012-11-21T02:11:29Z<p>Manypuig: </p>
<hr />
<div>Imágenes pronto! las necesitamos al principio de la prox semana.<br />
<br />
Imagino que el formato de las imagenes obliga al usuario a ''Navegar'' a través de todos los elementos de la página.</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1962Acelerómetro - DEMOQE1282012-11-20T05:29:47Z<p>Manypuig: /* Enlaces externos */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g <br />
// como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se <br />
//indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado.<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleración<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma<br />
// como muestra y lo convierte usando canal 1<br />
// de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma <br />
// como muestra y lo convierte usando canal 8<br />
// de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin z lo toma <br />
// como muestra y lo convierte usando canal 9<br />
// de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que <br />
// 4Mhz/2x16 = 115000 bps aprox <br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra que asigna el valor indicado en el <br />
//comentario anterior y obtener 115000bps<br />
} //Inicialización de la interfaz de comunicación serial finalizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío <br />
//(Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de <br />
// transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*Terminal Windows: 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.<br />
<br />
*Data Snapshot: Esta interfaz nos permite ver que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia (en porcentajes) 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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.youtube.com/watch?v=NPqwmq--f0g Proyecto acelerómetro: indicador de nivel (nivelador electrónico) con leds]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]<br />
<br />
<br />
Publicado por: Gabino Betancourt (Manypuig)</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1961Acelerómetro - DEMOQE1282012-11-20T04:28:46Z<p>Manypuig: /* Enlaces externos */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g <br />
// como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se <br />
//indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado.<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleración<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma<br />
// como muestra y lo convierte usando canal 1<br />
// de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma <br />
// como muestra y lo convierte usando canal 8<br />
// de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin z lo toma <br />
// como muestra y lo convierte usando canal 9<br />
// de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que <br />
// 4Mhz/2x16 = 115000 bps aprox <br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra que asigna el valor indicado en el <br />
//comentario anterior y obtener 115000bps<br />
} //Inicialización de la interfaz de comunicación serial finalizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío <br />
//(Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de <br />
// transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*Terminal Windows: 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.<br />
<br />
*Data Snapshot: Esta interfaz nos permite ver que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia (en porcentajes) 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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]<br />
<br />
<br />
Publicado por: Gabino Betancourt (Manypuig)</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=SCI_(Interfaz_de_Comunicaci%C3%B3n_Serial)_-_DEMOQE128&diff=1960SCI (Interfaz de Comunicación Serial) - DEMOQE1282012-11-20T04:25:38Z<p>Manypuig: </p>
<hr />
<div>[[Categoría:DEMOQE128]]<br />
<br />
La tarjeta DEMOQE128 tiene 2 puertos por los cuales puede transmitir o recibir serial de 3 formas diferentes y con ayuda de los software Real Term [http://realterm.sourceforge.net/ Descarga del Real Term] y el Terminal de [http://www.freescale.com/ Freescale].<br />
[[Archivo:DEMOQE_Serial.gif|300px|thumb|Visualización de los puerto de transmisión en la tarjeta DEMOQE128.]]<br />
<br />
<br />
<br />
==Puerto Serial Virtual (''On-Board Virtual Serial Port'') ==<br />
[[Archivo:Terminal.gif|300px|thumb|Programa Terminal.]]<br />
<br />
<br />
El modulo DEMOQ128 tiene incorporado un puerto serial virtual. Permite transmitir y recibir información a través del cable USB. Esto permite que ciertas aplicaciones de PC sean capaces de conectar por puerto serial el microcontrolador sin usar el real hardware de puerto serial.<br />
<br />
La configuración de esta modalidad es usando el programa TERMINAL ([http://http://www.pemicro.com/fixedlinks/DEMOToolkit.cfm#4/ Descarga del Terminal].). Este software crea un puerto serial virtual a través de la conexión USB.<br />
<br />
Antes de comenzar a transmitir, se tiene que realizar lo siguiente:<br />
<br />
*Acomodar los [[JUMPER SETTINGS|jumpers]] del DEMOQ128.<br />
<br />
*Al tener instalado el programa se tiene que poner la opción Port en USB COM, el Baud=9600 y luego darle a la presionar “Open Serial Port”.<br />
<br />
<br />
<br />
== Puerto Serial Hardware (''Serial Port Hardware'') ==<br />
<br />
=== Serial - Serial===<br />
[[Archivo:Serial-Serial.png|derecha|400px|thumb|Pines del Cable Serial.]]<br />
<br />
La tarjeta DEMOQE tiene incorporado un puerto estándar RS-232, que permite la recepción y transmisión de datos uno detrás de otro a través del cable RS232 (también conocido como serial), el cual recibe señales típicamente entre 3.3 y 5 V.<br />
El Cable serial es un conector semitrapezoidal de 9 terminales, que permite la transmisión de datos desde un dispositivo externo (periférico), hacia la computadora, por ello es denominado puerto.<br />
<br />
=== USB - Serial===<br />
[[Archivo:Cable-serial-usb.jpg|izquierda|200px|thumb|Cable Serial-USB.]]<br />
La tarjeta DEMOQE tiene incorporado un puerto estándar RS-232 que permite la recepción y transmisión de datos uno detrás de otro a través del cable RS232-USB (con ayuda de un driver, deprendiendo del cable). <br />
El Cable serial-USB es un conector semitrapezoidal de 9 terminales por el lado que conecta con el DEMOQE, mientras que el otro lado tiene un conector USB Tipo A, que conecta con un dispositivo externo, lo que permite la transmisión de datos entre el Microcontrolador MC9S08QE128 y dicho dispositivo.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Para ambas formas de recepción/transmisión serial con los diferentes cables se tiene:<br />
La velocidad de comunicación soportadas son: <br />
<br />
{| class="wikitable"<br />
! &nbsp;Velocidad&nbsp;<br />
|-<br />
|&nbsp;9600 baudios&nbsp;<br />
|-<br />
|&nbsp;19200 baudios&nbsp;<br />
|-<br />
|&nbsp;38400 baudios&nbsp;<br />
|-<br />
|&nbsp;57600 baudios&nbsp;<br />
|-<br />
|&nbsp;115200 baudios&nbsp;<br />
|}<br />
<br />
En cuanto al funcionamiento, ambas formas de transmitir funcionan exactamente igual, desde el punto de vista del usuario.<br />
<br />
[[Archivo:Realterm port.png|centro|400px|thumb|Interfaz del Real Term.]]<br />
<br />
== Configuración de los jumpers ==<br />
Para ver las distintas posiciones en que los jumpers deben estar para recibir/transmitir serial por el cable USB, por el cable RS232 o el cable híbrido USB-RS232, te invitamos a que visites el siguiente artículo <br />
[http://wikitronica.labc.usb.ve/index.php/JUMPER_SETTINGS JUMPER SETTING] donde encontraras el item ''Comunicación RS232 (RS232 Communications)'', para configurar los jumpers necesarios para recibir/transmitir serial.<br />
<br />
== Referencias ==<br />
*[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf ''DEMOQE128 User Manual'']<br />
<br />
*[http://cache.freescale.com/files/microcontrollers/doc/user_guide/DEMO9S08QE32QSG.pdf ''DEMO9S08QE32— Quick Start Guide'']<br />
<br />
*[http://www.informaticamoderna.com/El_puerto_serial.htm ''El Puerto Serial'']<br />
<br />
<br />
Rhayza Rodríguez y Ángel Diaz</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=TOOLKIT_PC_APPLICATIONS_-_DEMOQE128&diff=1959TOOLKIT PC APPLICATIONS - DEMOQE1282012-11-20T04:22:30Z<p>Manypuig: </p>
<hr />
<div>El kit de herramientas del [[Tarjeta de Desarrollo - DEMOQE128|DEMOQE128]] con aplicaciones para la PC, es un programa que incluye utilidades gráficas, la cual permite interactuar con el Microcontrolador a través del USB Multilink, que le permite depurar usando el programa CodeWarrior. Además de ello, se podrá depurar el Microcontrolador en CodeWarrior simultáneamente con una de las siguientes utilidades del DEMOQE128: Analizador Lógico, Graficador Serial, Acelerómetro.<br />
<br />
<br />
<br />
<br />
----<br />
== DEMOQE - Aplicación Analizador Lógico (''Logic Analyzer Application'') ==<br />
El DEMOQE posee dos canales para el analizador lógico, este analizador permite que las señales IN0 e IN1 puedan ser capturados por la PC y ser mostrado al usuario. Estas dos señales puede estar conectada a cualquiera de las señales MCU que el usuario desea observar. Por comodidad, estas señales están conectados al pin PTC0 y al pin PTC1 del MCU por el JUMPER J11. Si desea otro gráfico señales del microcontrolador, ser puede utilizar jumper de alambre de IN0 e IN1 a la respectivas señales de MCU PORT. La lógica analizador funciona a una velocidad de captura de 10 kHz.<br />
<br />
Esta aplicación se utilizar para mostrar datos del analizador de lógica en la PC. El analizador de datos lógica muestra en tiempo real las diferentes formas de ondas que se generan, se puede también pausar la señal, hacerle zoom e inclusive imprimir la imagen.<br />
<br />
<br />
[[Archivo:Analizador Lógico.jpeg|700px|thumb|center|Analizador Lógico]]<br />
<br />
<br />
Pasos a seguir para usar el Analizador Lógico <br />
<br />
1.- Conectar el cable USB a la tarjeta del DEMOQE.<br />
<br />
2.- Una vez que se los Leds se enciendan para indicar que se debido enumerar los puertos USB,se hace clic en “Connect to Embedded Multilink Analyzer and Graph Pins” ya esta es una nueva version 1.01.<br />
<br />
3.- Se pulsa el botón etiquetado PTA2 esto hará que un ciclo de trabajo fije un ancho de pulso de la señal para la salida en el pin PTC1, la forma de onda se mostrara en el analizador canal IN1.<br />
<br />
4.- Se gira el potenciómetro W1, esto permite cambiar el ciclo de trabajo de la variable de ancho de pulso de la señal de salida en el pin PTC0, la forma de onda se mostrará en el analizador canal IN0.<br />
<br />
5.- Por último se hará clic en el "Close Port" cuando haya terminado de usar la utilidad.<br />
<br />
<br />
A continuación se observa una imagen de las formas de ondas que se pueden obtener en IN0 y IN1<br />
<br />
[[Archivo:Analizador_Lógico_1.jpeg|700px|thumb|center|Analizador Lógico - Formas de Ondas en IN0 e IN1]]<br />
<br />
== DEMOQE - Aplicación Terminal (''Terminal Application'') ==<br />
<br />
Esta aplicación actúa como una aplicación estándar de puerto serial en la PC. Funciona tanto como para el estándar de los puertos serial, como para el puerto serial virtual en el tarjeta DEMOQE. La aplicación incluye opciones para ajustar el número de puerto (COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8), la velocidad de transmisión, paridad y número de bits de datos. Existe un botón para tomar un archivo en el PC y transmitirlo por el puerto serial. También existen retrasos que se insertan automáticamente en la salida de la transmisión para evitar excesos. Es recomienda que estos valores predeterminados no puede cambiar.<br />
<br />
Este programa crea un puerto serial virtual a través del puerto USB. Esta modalidad es muy útil para los ordenadores que no traen por defecto un puerto serial<br />
<br />
Puede ser configurado para recibir caracteres con el modo “Duplex Full” y el modo “Duplex Half” se transmite y se recibe dos caracteres que se muestran.<br />
<br />
<br />
<br />
[[Archivo:Terminal Window.jpeg|300px|thumb|left|Terminal Window]]<br />
<br />
<br />
Pasos a seguir para usar el Terminal:<br />
1.-Se abre la aplicación.<br />
<br />
2.- Se elije un COM, el cual será usado para la trasmisión de datos.<br />
<br />
3.- Se verifica los jumpers J6 y J7.<br />
<br />
4.- Se configurar el Baud, la paridad y el número de bits.<br />
<br />
5.- Una vez configurado los parámetros anterior, se procede a conectar el cable USB de la PC al tablero DEMOQE y luego se da click al “Open Serial Port”.<br />
<br />
<br />
[[Archivo:Terminal Window1.jpeg|700px|thumb|center|Terminal]]<br />
<br />
== DEMOQE - Aplicación Insegura (''Unsecure Application'') ==<br />
Para usar las aplicaciones de DEMOQE128 se debe descargar <br />
<br />
Esta aplicación permite que los microcontroladores CFV1 y HCS08 pasen de ser seguros a inseguros. La aplicación inseguro funciona tanto con la tarjeta de DEMOQE como con otros hardware que se conecten a la PC vía el USB Multilink o Cyclone PRO.<br />
<br />
<br />
<br />
Pasos para usar la Aplicación Insegura: <br />
<br />
1.- Para poner de modo inseguro el dispositivo, debemos especificar el interfaz del hardware que se esta usando.<br />
<br />
2.- Si P&E Multilink o Pro Cyclone detecta cualquier dispositivo, el nombre de este dispositivo aparecerá en el cuadro de Puertos<br />
<br />
3.- Luego se selecciona HCS08 o CFV1 en el menú “Select Arquitecture”<br />
<br />
4.- Por último, se da click “Perform Unsecure (by Erasing) HCS08 Device, para poner inseguro.<br />
<br />
<br />
[[Archivo:Inseguro.jpeg|700px|thumb|center| Aplicación Inseguro. Ejemplo]]<br />
<br />
== DEMOQE - Aplicación Acelerométro (''Accelerometer Demo Application'') ==<br />
<br />
Esta aplicación es una de las mas interesante ya que muestra gráficamente la salida de los datos, estos datos obtenidos incluyen la magnitud en la diferentes coordenadas X, Y, Z. Para que funcione esta aplicación se debe tener sumo cuidado a la hora de programar el microcontrolador que estará conectado a la tarjeta DEMOQE. <br />
<br />
Los datos que se obtienen pueden provenir de cualquiera de los [[SCI (Interfaz de Comunicación Serial) - DEMOQE128|puertos seriales]] de la PC o si no de la tarjeta DEMO. La configuración de los jumpers J6 y J7 es importante que esto permite que el DEMOQE interactué con el hadware específicamente el puerto serial. Se establece los jumper J16 en 0, J15 en 1, J14 en 0. <br />
<br />
<br />
[[Archivo:Acelerometro.jpg|700px|thumb|center| Aplicación del Acelerométro]]<br />
<br />
<br />
Pasos para usar la aplicación del Acelerómetro: <br />
<br />
1.- Se abre la aplicación, elije COM que se esta usando para la aplicación. De esta manera usted estará especificando el puerto que usará para trasmitir los datos.<br />
<br />
2.- Verificar que estén bien [[JUMPER SETTINGS|configurado los jumpers]] J6 y J7 en la tarjeta DEMOQE.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Ya terminada la configuración de los parámetros anteriores, se procede a conectar el cable USB o DB9 a la tarjeta DEMOQE.<br />
<br />
5.- Se corre el código que se esta usando para hacer las pruebas con la aplicación del acelerómetro en CodeWarrior.<br />
<br />
6.- Último paso dar click “Open Serial Port and Start Demo” y esperar a que se muestre en pantalla los resultados obtenidos.<br />
<br />
<br />
[[Archivo:Acelerometro Ejemplo.jpg|850px|thumb|center|Acelerómetro Ejemplo]]<br />
<br />
<br />
Con respecto a la aplicación se observa un mejor rendimiento en el ColdFire de 32-bit V1 CPU sobre el de 8-bit S08 CPU. El cálculo promedio de datos y el modo de filtrar datos es considerable de 16-bit y 32-bit requeridas para las operaciones matemáticas. El S08 CPU es capaz de realizar estas operaciones, pero requiere un gran parte de su ancho de banda mientras que el ColdFire V1 CPU realiza esas mismas operaciones con solo una pequeña parte de su ancho de banda. Con los microcontroladores Flexis QE128 podrá escoger el CPU que mejor se adapte a sus necesidades en cuanto a rendimiento.([[Acelerómetro - DEMOQE128|Acelerómetro]])<br />
<br />
== DEMOQE - Aplicación Gráficador Serial (''Serial Grapher Application'') ==<br />
<br />
Esta aplicación es una versión mas generalizada a la aplicación del acelerómetro. Esta aplicación puede ser utilizado con el microcontrolador aplicación basada acelerómetro s o código de microcontrolador cliente para transmitir los datos en el formato correcto. La utilidad gráfica de serie permite que los datos entrantes en el puerto serie del PC, o uno de P & puertos serie virtuales de E, de forma automática graficadas en el tiempo o aparece en una serie de gráficos de barras. El puerto serial virtual existe en varios de los diseños embebidos P&E USB multilink incluyendo la junta DEMO.<br />
<br />
Es importante que todos los datos que se muestren deben estar en formato hexadecimal. Los datos pueden ser aceptadas y se muestran en forma de valores de byte de entrada ($00 - $FF) o valores de texto ($ 0000 - $ FFFF). El formato de datos indica si el byte de datos es o palabra de datos. Los componentes gráficos automáticamente el tamaño de su área de distribución en función de los datos entrantes.<br />
<br />
<br />
Pasos para usar la aplicación de Graficador Serial:<br />
<br />
1.- Elegir el COM que se usará para transmitir.<br />
<br />
2.- Verifcar la configuración de los jumpers J6 y J7.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Conectar el cable USB o el cable DB9<br />
<br />
5.- Dar click “Open Serial Port and Start Demo”<br />
<br />
6.- Se puede pausar la representación gráfica de datos y la escala de los ejes de coordenadas de X e Y se puede cambiar a través de la barra de herramientas que se encuentra en la esquina superior derecha de la aplicación. <br />
<br />
<br />
[[Archivo:Graficador Serial.jpg|700px|thumb|center|Graficador Serial]]<br />
<br />
<br />
<br />
=== Visual Components ===<br />
<br />
La barra de gráficos tiene 4 barras separadas con su letra A, B, C, D. Cada barra indica valor en porcentaje según el rango completo. Un valor de byte de $ 7F (el máximo es $ FF) se muestran como aproximadamente 50% como lo haría un valor de $ 7FFF palabra (el máximo es $ FFFF).<br />
<br />
<br />
[[Archivo:Serial Grapher Bar Graph.jpg|500px|thumb|center|Serial Grapher Bar Graph]]<br />
<br />
<br />
El componente gráfica muestra cuatro formas de onda X, Y, Z, y W. La eje magnitud o bien tiene un rango de $ 00 - $ FF (si son valores de byte entrante en el puerto serial) o $ 0000 - $ FFFF (si los valores de palabra son entrante). Cada nuevo conjunto de valores que viene a través del puerto serie se añade a la parte derecha de el gráfico y el resto de los valores de los datos se mueven a la izquierda. El eje vertical muestra los datos entrantes como la magnitud de cada forma de onda, y los eje horizontal muestra el número de muestras.<br />
<br />
=== Data Format ===<br />
<br />
<br />
El formato de datos se divide en dos secciones, dependiendo de si el flujo de datos entrante está en formato de byte o palabra formato.<br />
<br />
==== Byte Formatted Data ====<br />
<br />
<br />
Hay dos comandos que pueden ser aceptadas. Ambos comandos debe terminar en los caracteres especiales $#0D y #$0A que son CR (return carriage) y LF (line feed). Los comandos aceptados son:<br />
WnnZnnYnnXnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
siguientes líneas del gráfico: W, Z, Y, X.<br />
AnnBnnCnnDnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
gráficos siguientes líneas de compás: A, B, C, D.<br />
<br />
==== Word Formatted Data ====<br />
<br />
Hay 3 comandos que pueden ser aceptadas. Todos los comandos deben acabar en los caracteres especiales #$0D y $#0A que son CR (return de carriage) y LF (line feed). Los comandos aceptados son:<br />
nnnn, nnnn, nnnn, nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el gráfico y los gráficos de barras de la siguiente manera: X / A, A / B, Z / C, W / D.<br />
nnnn: nnnn: nnnn: nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos que se muestran el componente de representación gráfica de la siguiente manera: X, Y, Z, W.<br />
nnnn = nnnn = nnnn nnnn =<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el componente de gráfico de barras de la siguiente manera: A, B, C, D.<br />
<br />
== Referencias ==<br />
*[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf ''DEMOQE128 User Manual'' DEMOQE rev A]<br />
<br />
<br />
[[Categoría: DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=TOOLKIT_PC_APPLICATIONS_-_DEMOQE128&diff=1958TOOLKIT PC APPLICATIONS - DEMOQE1282012-11-20T04:20:37Z<p>Manypuig: </p>
<hr />
<div>El kit de herramientas del [[Tarjeta de Desarrollo - DEMOQE128|DEMOQE128]] con aplicaciones para la PC, es un programa que incluye utilidades gráficas, la cual permite interactuar con el Microcontrolador a través del USB Multilink, que le permite depurar usando el programa CodeWarrior. Además de ello, se podrá depurar el Microcontrolador en CodeWarrior simultáneamente con una de las siguientes utilidades del DEMOQE128: Analizador Lógico, Graficador Serial, Acelerómetro.<br />
<br />
<br />
<br />
<br />
----<br />
== DEMOQE - Aplicación Analizador Lógico (''Logic Analyzer Application'') ==<br />
El DEMOQE posee dos canales para el analizador lógico, este analizador permite que las señales IN0 e IN1 puedan ser capturados por la PC y ser mostrado al usuario. Estas dos señales puede estar conectada a cualquiera de las señales MCU que el usuario desea observar. Por comodidad, estas señales están conectados al pin PTC0 y al pin PTC1 del MCU por el JUMPER J11. Si desea otro gráfico señales del microcontrolador, ser puede utilizar jumper de alambre de IN0 e IN1 a la respectivas señales de MCU PORT. La lógica analizador funciona a una velocidad de captura de 10 kHz.<br />
<br />
Esta aplicación se utilizar para mostrar datos del analizador de lógica en la PC. El analizador de datos lógica muestra en tiempo real las diferentes formas de ondas que se generan, se puede también pausar la señal, hacerle zoom e inclusive imprimir la imagen.<br />
<br />
<br />
[[Archivo:Analizador Lógico.jpeg|700px|thumb|center|Analizador Lógico]]<br />
<br />
<br />
Pasos a seguir para usar el Analizador Lógico <br />
<br />
1.- Conectar el cable USB a la tarjeta del DEMOQE.<br />
<br />
2.- Una vez que se los Leds se enciendan para indicar que se debido enumerar los puertos USB,se hace clic en “Connect to Embedded Multilink Analyzer and Graph Pins” ya esta es una nueva version 1.01.<br />
<br />
3.- Se pulsa el botón etiquetado PTA2 esto hará que un ciclo de trabajo fije un ancho de pulso de la señal para la salida en el pin PTC1, la forma de onda se mostrara en el analizador canal IN1.<br />
<br />
4.- Se gira el potenciómetro W1, esto permite cambiar el ciclo de trabajo de la variable de ancho de pulso de la señal de salida en el pin PTC0, la forma de onda se mostrará en el analizador canal IN0.<br />
<br />
5.- Por último se hará clic en el "Close Port" cuando haya terminado de usar la utilidad.<br />
<br />
<br />
A continuación se observa una imagen de las formas de ondas que se pueden obtener en IN0 y IN1<br />
<br />
[[Archivo:Analizador_Lógico_1.jpeg|700px|thumb|center|Analizador Lógico - Formas de Ondas en IN0 e IN1]]<br />
<br />
== DEMOQE - Aplicación Terminal (''Terminal Application'') ==<br />
<br />
Esta aplicación actúa como una aplicación estándar de puerto serial en la PC. Funciona tanto como para el estándar de los puertos serial, como para el puerto serial virtual en el tarjeta DEMOQE. La aplicación incluye opciones para ajustar el número de puerto (COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8), la velocidad de transmisión, paridad y número de bits de datos. Existe un botón para tomar un archivo en el PC y transmitirlo por el puerto serial. También existen retrasos que se insertan automáticamente en la salida de la transmisión para evitar excesos. Es recomienda que estos valores predeterminados no puede cambiar.<br />
<br />
Este programa crea un puerto serial virtual a través del puerto USB. Esta modalidad es muy útil para los ordenadores que no traen por defecto un puerto serial<br />
<br />
Puede ser configurado para recibir caracteres con el modo “Duplex Full” y el modo “Duplex Half” se transmite y se recibe dos caracteres que se muestran.<br />
<br />
<br />
<br />
[[Archivo:Terminal Window.jpeg|300px|thumb|left|Terminal Window]]<br />
<br />
<br />
Pasos a seguir para usar el Terminal:<br />
1.-Se abre la aplicación.<br />
<br />
2.- Se elije un COM, el cual será usado para la trasmisión de datos.<br />
<br />
3.- Se verifica los jumpers J6 y J7.<br />
<br />
4.- Se configurar el Baud, la paridad y el número de bits.<br />
<br />
5.- Una vez configurado los parámetros anterior, se procede a conectar el cable USB de la PC al tablero DEMOQE y luego se da click al “Open Serial Port”.<br />
<br />
<br />
[[Archivo:Terminal Window1.jpeg|700px|thumb|center|Terminal]]<br />
<br />
== DEMOQE - Aplicación Insegura (''Unsecure Application'') ==<br />
Para usar las aplicaciones de DEMOQE128 se debe descargar <br />
<br />
Esta aplicación permite que los microcontroladores CFV1 y HCS08 pasen de ser seguros a inseguros. La aplicación inseguro funciona tanto con la tarjeta de DEMOQE como con otros hardware que se conecten a la PC vía el USB Multilink o Cyclone PRO.<br />
<br />
<br />
<br />
Pasos para usar la Aplicación Insegura: <br />
<br />
1.- Para poner de modo inseguro el dispositivo, debemos especificar el interfaz del hardware que se esta usando.<br />
<br />
2.- Si P&E Multilink o Pro Cyclone detecta cualquier dispositivo, el nombre de este dispositivo aparecerá en el cuadro de Puertos<br />
<br />
3.- Luego se selecciona HCS08 o CFV1 en el menú “Select Arquitecture”<br />
<br />
4.- Por último, se da click “Perform Unsecure (by Erasing) HCS08 Device, para poner inseguro.<br />
<br />
<br />
[[Archivo:Inseguro.jpeg|700px|thumb|center| Aplicación Inseguro. Ejemplo]]<br />
<br />
== DEMOQE - Aplicación Acelerométro (''Accelerometer Demo Application'') ==<br />
<br />
Esta aplicación es una de las mas interesante ya que muestra gráficamente la salida de los datos, estos datos obtenidos incluyen la magnitud en la diferentes coordenadas X, Y, Z. Para que funcione esta aplicación se debe tener sumo cuidado a la hora de programar el microcontrolador que estará conectado a la tarjeta DEMOQE. <br />
<br />
Los datos que se obtienen pueden provenir de cualquiera de los puertos seriales de la PC o si no de la tarjeta DEMO. La configuración de los jumpers J6 y J7 es importante que esto permite que el DEMOQE interactué con el hadware específicamente el puerto serial. Se establece los jumper J16 en 0, J15 en 1, J14 en 0. <br />
<br />
<br />
[[Archivo:Acelerometro.jpg|700px|thumb|center| Aplicación del Acelerométro]]<br />
<br />
<br />
Pasos para usar la aplicación del Acelerómetro: <br />
<br />
1.- Se abre la aplicación, elije COM que se esta usando para la aplicación. De esta manera usted estará especificando el puerto que usará para trasmitir los datos.<br />
<br />
2.- Verificar que estén bien [[JUMPER SETTINGS|configurado los jumpers]] J6 y J7 en la tarjeta DEMOQE.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Ya terminada la configuración de los parámetros anteriores, se procede a conectar el cable USB o DB9 a la tarjeta DEMOQE.<br />
<br />
5.- Se corre el código que se esta usando para hacer las pruebas con la aplicación del acelerómetro en CodeWarrior.<br />
<br />
6.- Último paso dar click “Open Serial Port and Start Demo” y esperar a que se muestre en pantalla los resultados obtenidos.<br />
<br />
<br />
[[Archivo:Acelerometro Ejemplo.jpg|850px|thumb|center|Acelerómetro Ejemplo]]<br />
<br />
<br />
Con respecto a la aplicación se observa un mejor rendimiento en el ColdFire de 32-bit V1 CPU sobre el de 8-bit S08 CPU. El cálculo promedio de datos y el modo de filtrar datos es considerable de 16-bit y 32-bit requeridas para las operaciones matemáticas. El S08 CPU es capaz de realizar estas operaciones, pero requiere un gran parte de su ancho de banda mientras que el ColdFire V1 CPU realiza esas mismas operaciones con solo una pequeña parte de su ancho de banda. Con los microcontroladores Flexis QE128 podrá escoger el CPU que mejor se adapte a sus necesidades en cuanto a rendimiento.([[Acelerómetro - DEMOQE128|Acelerómetro]])<br />
<br />
== DEMOQE - Aplicación Gráficador Serial (''Serial Grapher Application'') ==<br />
<br />
Esta aplicación es una versión mas generalizada a la aplicación del acelerómetro. Esta aplicación puede ser utilizado con el microcontrolador aplicación basada acelerómetro s o código de microcontrolador cliente para transmitir los datos en el formato correcto. La utilidad gráfica de serie permite que los datos entrantes en el puerto serie del PC, o uno de P & puertos serie virtuales de E, de forma automática graficadas en el tiempo o aparece en una serie de gráficos de barras. El puerto serial virtual existe en varios de los diseños embebidos P&E USB multilink incluyendo la junta DEMO.<br />
<br />
Es importante que todos los datos que se muestren deben estar en formato hexadecimal. Los datos pueden ser aceptadas y se muestran en forma de valores de byte de entrada ($00 - $FF) o valores de texto ($ 0000 - $ FFFF). El formato de datos indica si el byte de datos es o palabra de datos. Los componentes gráficos automáticamente el tamaño de su área de distribución en función de los datos entrantes.<br />
<br />
<br />
Pasos para usar la aplicación de Graficador Serial:<br />
<br />
1.- Elegir el COM que se usará para transmitir.<br />
<br />
2.- Verifcar la configuración de los jumpers J6 y J7.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Conectar el cable USB o el cable DB9<br />
<br />
5.- Dar click “Open Serial Port and Start Demo”<br />
<br />
6.- Se puede pausar la representación gráfica de datos y la escala de los ejes de coordenadas de X e Y se puede cambiar a través de la barra de herramientas que se encuentra en la esquina superior derecha de la aplicación. <br />
<br />
<br />
[[Archivo:Graficador Serial.jpg|700px|thumb|center|Graficador Serial]]<br />
<br />
<br />
<br />
=== Visual Components ===<br />
<br />
La barra de gráficos tiene 4 barras separadas con su letra A, B, C, D. Cada barra indica valor en porcentaje según el rango completo. Un valor de byte de $ 7F (el máximo es $ FF) se muestran como aproximadamente 50% como lo haría un valor de $ 7FFF palabra (el máximo es $ FFFF).<br />
<br />
<br />
[[Archivo:Serial Grapher Bar Graph.jpg|500px|thumb|center|Serial Grapher Bar Graph]]<br />
<br />
<br />
El componente gráfica muestra cuatro formas de onda X, Y, Z, y W. La eje magnitud o bien tiene un rango de $ 00 - $ FF (si son valores de byte entrante en el puerto serial) o $ 0000 - $ FFFF (si los valores de palabra son entrante). Cada nuevo conjunto de valores que viene a través del puerto serie se añade a la parte derecha de el gráfico y el resto de los valores de los datos se mueven a la izquierda. El eje vertical muestra los datos entrantes como la magnitud de cada forma de onda, y los eje horizontal muestra el número de muestras.<br />
<br />
=== Data Format ===<br />
<br />
<br />
El formato de datos se divide en dos secciones, dependiendo de si el flujo de datos entrante está en formato de byte o palabra formato.<br />
<br />
==== Byte Formatted Data ====<br />
<br />
<br />
Hay dos comandos que pueden ser aceptadas. Ambos comandos debe terminar en los caracteres especiales $#0D y #$0A que son CR (return carriage) y LF (line feed). Los comandos aceptados son:<br />
WnnZnnYnnXnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
siguientes líneas del gráfico: W, Z, Y, X.<br />
AnnBnnCnnDnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
gráficos siguientes líneas de compás: A, B, C, D.<br />
<br />
==== Word Formatted Data ====<br />
<br />
Hay 3 comandos que pueden ser aceptadas. Todos los comandos deben acabar en los caracteres especiales #$0D y $#0A que son CR (return de carriage) y LF (line feed). Los comandos aceptados son:<br />
nnnn, nnnn, nnnn, nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el gráfico y los gráficos de barras de la siguiente manera: X / A, A / B, Z / C, W / D.<br />
nnnn: nnnn: nnnn: nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos que se muestran el componente de representación gráfica de la siguiente manera: X, Y, Z, W.<br />
nnnn = nnnn = nnnn nnnn =<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el componente de gráfico de barras de la siguiente manera: A, B, C, D.<br />
<br />
== Referencias ==<br />
*[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf ''DEMOQE128 User Manual'' DEMOQE rev A]<br />
<br />
<br />
[[Categoría: DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=TOOLKIT_PC_APPLICATIONS_-_DEMOQE128&diff=1957TOOLKIT PC APPLICATIONS - DEMOQE1282012-11-20T04:11:12Z<p>Manypuig: </p>
<hr />
<div>El kit de herramientas del [[Tarjeta de Desarrollo - DEMOQE128|DEMOQE128]] con aplicaciones para la PC, es un programa que incluye utilidades gráficas, la cual permite interactuar con el Microcontrolador a través del USB Multilink, que le permite depurar usando el programa CodeWarrior. Además de ello, se podrá depurar el Microcontrolador en CodeWarrior simultáneamente con una de las siguientes utilidades del DEMOQE128: Analizador Lógico, Graficador Serial, Acelerómetro.<br />
<br />
<br />
<br />
<br />
----<br />
== DEMOQE - Aplicación Analizador Lógico (''Logic Analyzer Application'') ==<br />
El DEMOQE posee dos canales para el analizador lógico, este analizador permite que las señales IN0 e IN1 puedan ser capturados por la PC y ser mostrado al usuario. Estas dos señales puede estar conectada a cualquiera de las señales MCU que el usuario desea observar. Por comodidad, estas señales están conectados al pin PTC0 y al pin PTC1 del MCU por el JUMPER J11. Si desea otro gráfico señales del microcontrolador, ser puede utilizar jumper de alambre de IN0 e IN1 a la respectivas señales de MCU PORT. La lógica analizador funciona a una velocidad de captura de 10 kHz.<br />
<br />
Esta aplicación se utilizar para mostrar datos del analizador de lógica en la PC. El analizador de datos lógica muestra en tiempo real las diferentes formas de ondas que se generan, se puede también pausar la señal, hacerle zoom e inclusive imprimir la imagen.<br />
<br />
<br />
[[Archivo:Analizador Lógico.jpeg|700px|thumb|center|Analizador Lógico]]<br />
<br />
<br />
Pasos a seguir para usar el Analizador Lógico <br />
<br />
1.- Conectar el cable USB a la tarjeta del DEMOQE.<br />
<br />
2.- Una vez que se los Leds se enciendan para indicar que se debido enumerar los puertos USB,se hace clic en “Connect to Embedded Multilink Analyzer and Graph Pins” ya esta es una nueva version 1.01.<br />
<br />
3.- Se pulsa el botón etiquetado PTA2 esto hará que un ciclo de trabajo fije un ancho de pulso de la señal para la salida en el pin PTC1, la forma de onda se mostrara en el analizador canal IN1.<br />
<br />
4.- Se gira el potenciómetro W1, esto permite cambiar el ciclo de trabajo de la variable de ancho de pulso de la señal de salida en el pin PTC0, la forma de onda se mostrará en el analizador canal IN0.<br />
<br />
5.- Por último se hará clic en el "Close Port" cuando haya terminado de usar la utilidad.<br />
<br />
<br />
A continuación se observa una imagen de las formas de ondas que se pueden obtener en IN0 y IN1<br />
<br />
[[Archivo:Analizador_Lógico_1.jpeg|700px|thumb|center|Analizador Lógico - Formas de Ondas en IN0 e IN1]]<br />
<br />
== DEMOQE - Aplicación Terminal (''Terminal Application'') ==<br />
<br />
Esta aplicación actúa como una aplicación estándar de puerto serial en la PC. Funciona tanto como para el estándar de los puertos serial, como para el puerto serial virtual en el tarjeta DEMOQE. La aplicación incluye opciones para ajustar el número de puerto (COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8), la velocidad de transmisión, paridad y número de bits de datos. Existe un botón para tomar un archivo en el PC y transmitirlo por el puerto serial. También existen retrasos que se insertan automáticamente en la salida de la transmisión para evitar excesos. Es recomienda que estos valores predeterminados no puede cambiar.<br />
<br />
Este programa crea un puerto serial virtual a través del puerto USB. Esta modalidad es muy útil para los ordenadores que no traen por defecto un puerto serial<br />
<br />
Puede ser configurado para recibir caracteres con el modo “Duplex Full” y el modo “Duplex Half” se transmite y se recibe dos caracteres que se muestran.<br />
<br />
<br />
<br />
[[Archivo:Terminal Window.jpeg|300px|thumb|left|Terminal Window]]<br />
<br />
<br />
Pasos a seguir para usar el Terminal:<br />
1.-Se abre la aplicación.<br />
<br />
2.- Se elije un COM, el cual será usado para la trasmisión de datos.<br />
<br />
3.- Se verifica los jumpers J6 y J7.<br />
<br />
4.- Se configurar el Baud, la paridad y el número de bits.<br />
<br />
5.- Una vez configurado los parámetros anterior, se procede a conectar el cable USB de la PC al tablero DEMOQE y luego se da click al “Open Serial Port”.<br />
<br />
<br />
[[Archivo:Terminal Window1.jpeg|700px|thumb|center|Terminal]]<br />
<br />
== DEMOQE - Aplicación Insegura (''Unsecure Application'') ==<br />
Para usar las aplicaciones de DEMOQE128 se debe descargar <br />
<br />
Esta aplicación permite que los microcontroladores CFV1 y HCS08 pasen de ser seguros a inseguros. La aplicación inseguro funciona tanto con la tarjeta de DEMOQE como con otros hardware que se conecten a la PC vía el USB Multilink o Cyclone PRO.<br />
<br />
<br />
<br />
Pasos para usar la Aplicación Insegura: <br />
<br />
1.- Para poner de modo inseguro el dispositivo, debemos especificar el interfaz del hardware que se esta usando.<br />
<br />
2.- Si P&E Multilink o Pro Cyclone detecta cualquier dispositivo, el nombre de este dispositivo aparecerá en el cuadro de Puertos<br />
<br />
3.- Luego se selecciona HCS08 o CFV1 en el menú “Select Arquitecture”<br />
<br />
4.- Por último, se da click “Perform Unsecure (by Erasing) HCS08 Device, para poner inseguro.<br />
<br />
<br />
[[Archivo:Inseguro.jpeg|700px|thumb|center| Aplicación Inseguro. Ejemplo]]<br />
<br />
== DEMOQE - Aplicación Acelerométro (''Accelerometer Demo Application'') ==<br />
<br />
Esta aplicación es una de las mas interesante ya que muestra gráficamente la salida de los datos, estos datos obtenidos incluyen la magnitud en la diferentes coordenadas X, Y, Z. Para que funcione esta aplicación se debe tener sumo cuidado a la hora de programar el microcontrolador que estará conectado a la tarjeta DEMOQE. <br />
<br />
Los datos que se obtienen pueden provenir de cualquiera de los puertos seriales de la PC o si no de la tarjeta DEMO. La configuración de los jumpers J6 y J7 es importante que esto permite que el DEMOQE interactué con el hadware específicamente el puerto serial. Se establece los jumper J16 en 0, J15 en 1, J14 en 0. <br />
<br />
<br />
[[Archivo:Acelerometro.jpg|700px|thumb|center| Aplicación del Acelerométro]]<br />
<br />
<br />
Pasos para usar la aplicación del Acelerómetro: <br />
<br />
1.- Se abre la aplicación, elije COM que se esta usando para la aplicación. De esta manera usted estará especificando el puerto que usará para trasmitir los datos.<br />
<br />
2.- Verificar que estén bien [[JUMPER SETTINGS|configurado los jumpers]] J6 y J7 en la tarjeta DEMOQE.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Ya terminada la configuración de los parámetros anteriores, se procede a conectar el cable USB o DB9 a la tarjeta DEMOQE.<br />
<br />
5.- Se corre el código que se esta usando para hacer las pruebas con la aplicación del acelerómetro en CodeWarrior.<br />
<br />
6.- Último paso dar click “Open Serial Port and Start Demo” y esperar a que se muestre en pantalla los resultados obtenidos.<br />
<br />
<br />
[[Archivo:Acelerometro Ejemplo.jpg|850px|thumb|center|Acelerómetro Ejemplo]]<br />
<br />
<br />
Con respecto a la aplicación se observa un mejor rendimiento en el ColdFire de 32-bit V1 CPU sobre el de 8-bit S08 CPU. El cálculo promedio de datos y el modo de filtrar datos es considerable de 16-bit y 32-bit requeridas para las operaciones matemáticas. El S08 CPU es capaz de realizar estas operaciones, pero requiere un gran parte de su ancho de banda mientras que el ColdFire V1 CPU realiza esas mismas operaciones con solo una pequeña parte de su ancho de banda. Con los microcontroladores Flexis QE128 podrá escoger el CPU que mejor se adapte a sus necesidades en cuanto a rendimiento.<br />
[[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128]]<br />
<br />
== DEMOQE - Aplicación Gráficador Serial (''Serial Grapher Application'') ==<br />
<br />
Esta aplicación es una versión mas generalizada a la aplicación del acelerómetro. Esta aplicación puede ser utilizado con el microcontrolador aplicación basada acelerómetro s o código de microcontrolador cliente para transmitir los datos en el formato correcto. La utilidad gráfica de serie permite que los datos entrantes en el puerto serie del PC, o uno de P & puertos serie virtuales de E, de forma automática graficadas en el tiempo o aparece en una serie de gráficos de barras. El puerto serial virtual existe en varios de los diseños embebidos P&E USB multilink incluyendo la junta DEMO.<br />
<br />
Es importante que todos los datos que se muestren deben estar en formato hexadecimal. Los datos pueden ser aceptadas y se muestran en forma de valores de byte de entrada ($00 - $FF) o valores de texto ($ 0000 - $ FFFF). El formato de datos indica si el byte de datos es o palabra de datos. Los componentes gráficos automáticamente el tamaño de su área de distribución en función de los datos entrantes.<br />
<br />
<br />
Pasos para usar la aplicación de Graficador Serial:<br />
<br />
1.- Elegir el COM que se usará para transmitir.<br />
<br />
2.- Verifcar la configuración de los jumpers J6 y J7.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Conectar el cable USB o el cable DB9<br />
<br />
5.- Dar click “Open Serial Port and Start Demo”<br />
<br />
6.- Se puede pausar la representación gráfica de datos y la escala de los ejes de coordenadas de X e Y se puede cambiar a través de la barra de herramientas que se encuentra en la esquina superior derecha de la aplicación. <br />
<br />
<br />
[[Archivo:Graficador Serial.jpg|700px|thumb|center|Graficador Serial]]<br />
<br />
<br />
<br />
=== Visual Components ===<br />
<br />
La barra de gráficos tiene 4 barras separadas con su letra A, B, C, D. Cada barra indica valor en porcentaje según el rango completo. Un valor de byte de $ 7F (el máximo es $ FF) se muestran como aproximadamente 50% como lo haría un valor de $ 7FFF palabra (el máximo es $ FFFF).<br />
<br />
<br />
[[Archivo:Serial Grapher Bar Graph.jpg|500px|thumb|center|Serial Grapher Bar Graph]]<br />
<br />
<br />
El componente gráfica muestra cuatro formas de onda X, Y, Z, y W. La eje magnitud o bien tiene un rango de $ 00 - $ FF (si son valores de byte entrante en el puerto serial) o $ 0000 - $ FFFF (si los valores de palabra son entrante). Cada nuevo conjunto de valores que viene a través del puerto serie se añade a la parte derecha de el gráfico y el resto de los valores de los datos se mueven a la izquierda. El eje vertical muestra los datos entrantes como la magnitud de cada forma de onda, y los eje horizontal muestra el número de muestras.<br />
<br />
=== Data Format ===<br />
<br />
<br />
El formato de datos se divide en dos secciones, dependiendo de si el flujo de datos entrante está en formato de byte o palabra formato.<br />
<br />
==== Byte Formatted Data ====<br />
<br />
<br />
Hay dos comandos que pueden ser aceptadas. Ambos comandos debe terminar en los caracteres especiales $#0D y #$0A que son CR (return carriage) y LF (line feed). Los comandos aceptados son:<br />
WnnZnnYnnXnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
siguientes líneas del gráfico: W, Z, Y, X.<br />
AnnBnnCnnDnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
gráficos siguientes líneas de compás: A, B, C, D.<br />
<br />
==== Word Formatted Data ====<br />
<br />
Hay 3 comandos que pueden ser aceptadas. Todos los comandos deben acabar en los caracteres especiales #$0D y $#0A que son CR (return de carriage) y LF (line feed). Los comandos aceptados son:<br />
nnnn, nnnn, nnnn, nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el gráfico y los gráficos de barras de la siguiente manera: X / A, A / B, Z / C, W / D.<br />
nnnn: nnnn: nnnn: nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos que se muestran el componente de representación gráfica de la siguiente manera: X, Y, Z, W.<br />
nnnn = nnnn = nnnn nnnn =<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el componente de gráfico de barras de la siguiente manera: A, B, C, D.<br />
<br />
== Referencias ==<br />
*[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf ''DEMOQE128 User Manual'' DEMOQE rev A]<br />
<br />
<br />
[[Categoría: DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=TOOLKIT_PC_APPLICATIONS_-_DEMOQE128&diff=1956TOOLKIT PC APPLICATIONS - DEMOQE1282012-11-20T03:53:57Z<p>Manypuig: /* Referencias */</p>
<hr />
<div>El kit de herramientas del DEMOQE128 con aplicaciones para la PC, es un programa que incluye utilidades gráficas, la cual permite interactuar con el Microcontrolador a través del USB Multilink, que le permite depurar usando el programa CodeWarrior. Además de ello, se podrá depurar el Microcontrolador en CodeWarrior simultáneamente con una de las siguientes utilidades del DEMOQE128: Analizador Lógico, Graficador Serial, Acelerómetro.<br />
<br />
<br />
<br />
<br />
----<br />
== DEMOQE - Aplicación Analizador Lógico (''Logic Analyzer Application'') ==<br />
El DEMOQE posee dos canales para el analizador lógico, este analizador permite que las señales IN0 e IN1 puedan ser capturados por la PC y ser mostrado al usuario. Estas dos señales puede estar conectada a cualquiera de las señales MCU que el usuario desea observar. Por comodidad, estas señales están conectados al pin PTC0 y al pin PTC1 del MCU por el JUMPER J11. Si desea otro gráfico señales del microcontrolador, ser puede utilizar jumper de alambre de IN0 e IN1 a la respectivas señales de MCU PORT. La lógica analizador funciona a una velocidad de captura de 10 kHz.<br />
<br />
Esta aplicación se utilizar para mostrar datos del analizador de lógica en la PC. El analizador de datos lógica muestra en tiempo real las diferentes formas de ondas que se generan, se puede también pausar la señal, hacerle zoom e inclusive imprimir la imagen.<br />
<br />
<br />
[[Archivo:Analizador Lógico.jpeg|700px|thumb|center|Analizador Lógico]]<br />
<br />
<br />
Pasos a seguir para usar el Analizador Lógico <br />
<br />
1.- Conectar el cable USB a la tarjeta del DEMOQE.<br />
<br />
2.- Una vez que se los Leds se enciendan para indicar que se debido enumerar los puertos USB,se hace clic en “Connect to Embedded Multilink Analyzer and Graph Pins” ya esta es una nueva version 1.01.<br />
<br />
3.- Se pulsa el botón etiquetado PTA2 esto hará que un ciclo de trabajo fije un ancho de pulso de la señal para la salida en el pin PTC1, la forma de onda se mostrara en el analizador canal IN1.<br />
<br />
4.- Se gira el potenciómetro W1, esto permite cambiar el ciclo de trabajo de la variable de ancho de pulso de la señal de salida en el pin PTC0, la forma de onda se mostrará en el analizador canal IN0.<br />
<br />
5.- Por último se hará clic en el "Close Port" cuando haya terminado de usar la utilidad.<br />
<br />
<br />
A continuación se observa una imagen de las formas de ondas que se pueden obtener en IN0 y IN1<br />
<br />
[[Archivo:Analizador_Lógico_1.jpeg|700px|thumb|center|Analizador Lógico - Formas de Ondas en IN0 e IN1]]<br />
<br />
== DEMOQE - Aplicación Terminal (''Terminal Application'') ==<br />
<br />
Esta aplicación actúa como una aplicación estándar de puerto serial en la PC. Funciona tanto como para el estándar de los puertos serial, como para el puerto serial virtual en el tarjeta DEMOQE. La aplicación incluye opciones para ajustar el número de puerto (COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8), la velocidad de transmisión, paridad y número de bits de datos. Existe un botón para tomar un archivo en el PC y transmitirlo por el puerto serial. También existen retrasos que se insertan automáticamente en la salida de la transmisión para evitar excesos. Es recomienda que estos valores predeterminados no puede cambiar.<br />
<br />
Este programa crea un puerto serial virtual a través del puerto USB. Esta modalidad es muy útil para los ordenadores que no traen por defecto un puerto serial<br />
<br />
Puede ser configurado para recibir caracteres con el modo “Duplex Full” y el modo “Duplex Half” se transmite y se recibe dos caracteres que se muestran.<br />
<br />
<br />
<br />
[[Archivo:Terminal Window.jpeg|300px|thumb|left|Terminal Window]]<br />
<br />
<br />
Pasos a seguir para usar el Terminal:<br />
1.-Se abre la aplicación.<br />
<br />
2.- Se elije un COM, el cual será usado para la trasmisión de datos.<br />
<br />
3.- Se verifica los jumpers J6 y J7.<br />
<br />
4.- Se configurar el Baud, la paridad y el número de bits.<br />
<br />
5.- Una vez configurado los parámetros anterior, se procede a conectar el cable USB de la PC al tablero DEMOQE y luego se da click al “Open Serial Port”.<br />
<br />
<br />
[[Archivo:Terminal Window1.jpeg|700px|thumb|center|Terminal]]<br />
<br />
== DEMOQE - Aplicación Insegura (''Unsecure Application'') ==<br />
Para usar las aplicaciones de DEMOQE128 se debe descargar <br />
<br />
Esta aplicación permite que los microcontroladores CFV1 y HCS08 pasen de ser seguros a inseguros. La aplicación inseguro funciona tanto con la tarjeta de DEMOQE como con otros hardware que se conecten a la PC vía el USB Multilink o Cyclone PRO.<br />
<br />
<br />
<br />
Pasos para usar la Aplicación Insegura: <br />
<br />
1.- Para poner de modo inseguro el dispositivo, debemos especificar el interfaz del hardware que se esta usando.<br />
<br />
2.- Si P&E Multilink o Pro Cyclone detecta cualquier dispositivo, el nombre de este dispositivo aparecerá en el cuadro de Puertos<br />
<br />
3.- Luego se selecciona HCS08 o CFV1 en el menú “Select Arquitecture”<br />
<br />
4.- Por último, se da click “Perform Unsecure (by Erasing) HCS08 Device, para poner inseguro.<br />
<br />
<br />
[[Archivo:Inseguro.jpeg|700px|thumb|center| Aplicación Inseguro. Ejemplo]]<br />
<br />
== DEMOQE - Aplicación Acelerométro (''Accelerometer Demo Application'') ==<br />
<br />
Esta aplicación es una de las mas interesante ya que muestra gráficamente la salida de los datos, estos datos obtenidos incluyen la magnitud en la diferentes coordenadas X, Y, Z. Para que funcione esta aplicación se debe tener sumo cuidado a la hora de programar el microcontrolador que estará conectado a la tarjeta DEMOQE. <br />
<br />
Los datos que se obtienen pueden provenir de cualquiera de los puertos seriales de la PC o si no de la tarjeta DEMO. La configuración de los jumpers J6 y J7 es importante que esto permite que el DEMOQE interactué con el hadware específicamente el puerto serial. Se establece los jumper J16 en 0, J15 en 1, J14 en 0. <br />
<br />
<br />
[[Archivo:Acelerometro.jpg|700px|thumb|center| Aplicación del Acelerométro]]<br />
<br />
<br />
Pasos para usar la aplicación del Acelerómetro: <br />
<br />
1.- Se abre la aplicación, elije COM que se esta usando para la aplicación. De esta manera usted estará especificando el puerto que usará para trasmitir los datos.<br />
<br />
2.- Verificar que estén bien configurado los jumper J6 y J7 en la tarjeta DEMOQE.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Ya terminada la configuración de los parámetros anteriores, se procede a conectar el cable USB o DB9 a la tarjeta DEMOQE.<br />
<br />
5.- Se corre el código que se esta usando para hacer las pruebas con la aplicación del acelerómetro en CodeWarrior.<br />
<br />
6.- Último paso dar click “Open Serial Port and Start Demo” y esperar a que se muestre en pantalla los resultados obtenidos.<br />
<br />
<br />
[[Archivo:Acelerometro Ejemplo.jpg|850px|thumb|center|Acelerómetro Ejemplo]]<br />
<br />
<br />
Con respecto a la aplicación se observa un mejor rendimiento en el ColdFire de 32-bit V1 CPU sobre el de 8-bit S08 CPU. El cálculo promedio de datos y el modo de filtrar datos es considerable de 16-bit y 32-bit requeridas para las operaciones matemáticas. El S08 CPU es capaz de realizar estas operaciones, pero requiere un gran parte de su ancho de banda mientras que el ColdFire V1 CPU realiza esas mismas operaciones con solo una pequeña parte de su ancho de banda. Con los microcontroladores Flexis QE128 podrá escoger el CPU que mejor se adapte a sus necesidades en cuanto a rendimiento.<br />
[[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128]]<br />
<br />
== DEMOQE - Aplicación Gráficador Serial (''Serial Grapher Application'') ==<br />
<br />
Esta aplicación es una versión mas generalizada a la aplicación del acelerómetro. Esta aplicación puede ser utilizado con el microcontrolador aplicación basada acelerómetro s o código de microcontrolador cliente para transmitir los datos en el formato correcto. La utilidad gráfica de serie permite que los datos entrantes en el puerto serie del PC, o uno de P & puertos serie virtuales de E, de forma automática graficadas en el tiempo o aparece en una serie de gráficos de barras. El puerto serial virtual existe en varios de los diseños embebidos P&E USB multilink incluyendo la junta DEMO.<br />
<br />
Es importante que todos los datos que se muestren deben estar en formato hexadecimal. Los datos pueden ser aceptadas y se muestran en forma de valores de byte de entrada ($00 - $FF) o valores de texto ($ 0000 - $ FFFF). El formato de datos indica si el byte de datos es o palabra de datos. Los componentes gráficos automáticamente el tamaño de su área de distribución en función de los datos entrantes.<br />
<br />
<br />
Pasos para usar la aplicación de Graficador Serial:<br />
<br />
1.- Elegir el COM que se usará para transmitir.<br />
<br />
2.- Verifcar la configuración de los jumpers J6 y J7.<br />
<br />
3.- Configurar el Baud.<br />
<br />
4.- Conectar el cable USB o el cable DB9<br />
<br />
5.- Dar click “Open Serial Port and Start Demo”<br />
<br />
6.- Se puede pausar la representación gráfica de datos y la escala de los ejes de coordenadas de X e Y se puede cambiar a través de la barra de herramientas que se encuentra en la esquina superior derecha de la aplicación. <br />
<br />
<br />
[[Archivo:Graficador Serial.jpg|700px|thumb|center|Graficador Serial]]<br />
<br />
<br />
<br />
=== Visual Components ===<br />
<br />
La barra de gráficos tiene 4 barras separadas con su letra A, B, C, D. Cada barra indica valor en porcentaje según el rango completo. Un valor de byte de $ 7F (el máximo es $ FF) se muestran como aproximadamente 50% como lo haría un valor de $ 7FFF palabra (el máximo es $ FFFF).<br />
<br />
<br />
[[Archivo:Serial Grapher Bar Graph.jpg|500px|thumb|center|Serial Grapher Bar Graph]]<br />
<br />
<br />
El componente gráfica muestra cuatro formas de onda X, Y, Z, y W. La eje magnitud o bien tiene un rango de $ 00 - $ FF (si son valores de byte entrante en el puerto serial) o $ 0000 - $ FFFF (si los valores de palabra son entrante). Cada nuevo conjunto de valores que viene a través del puerto serie se añade a la parte derecha de el gráfico y el resto de los valores de los datos se mueven a la izquierda. El eje vertical muestra los datos entrantes como la magnitud de cada forma de onda, y los eje horizontal muestra el número de muestras.<br />
<br />
=== Data Format ===<br />
<br />
<br />
El formato de datos se divide en dos secciones, dependiendo de si el flujo de datos entrante está en formato de byte o palabra formato.<br />
<br />
==== Byte Formatted Data ====<br />
<br />
<br />
Hay dos comandos que pueden ser aceptadas. Ambos comandos debe terminar en los caracteres especiales $#0D y #$0A que son CR (return carriage) y LF (line feed). Los comandos aceptados son:<br />
WnnZnnYnnXnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
siguientes líneas del gráfico: W, Z, Y, X.<br />
AnnBnnCnnDnn<br />
<br />
Los valores son nn 00-FF y se corresponden con el fin de los datos mostrados en la<br />
gráficos siguientes líneas de compás: A, B, C, D.<br />
<br />
==== Word Formatted Data ====<br />
<br />
Hay 3 comandos que pueden ser aceptadas. Todos los comandos deben acabar en los caracteres especiales #$0D y $#0A que son CR (return de carriage) y LF (line feed). Los comandos aceptados son:<br />
nnnn, nnnn, nnnn, nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el gráfico y los gráficos de barras de la siguiente manera: X / A, A / B, Z / C, W / D.<br />
nnnn: nnnn: nnnn: nnnn<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos que se muestran el componente de representación gráfica de la siguiente manera: X, Y, Z, W.<br />
nnnn = nnnn = nnnn nnnn =<br />
<br />
<br />
Los valores nnnn son 0000-FFFF y se corresponden con el fin de los datos mostrados en el componente de gráfico de barras de la siguiente manera: A, B, C, D.<br />
<br />
== Referencias ==<br />
*[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf ''DEMOQE128 User Manual'' DEMOQE rev A]<br />
<br />
<br />
[[Categoría: DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Discusi%C3%B3n:TOOLKIT_PC_APPLICATIONS_-_DEMOQE128&diff=1955Discusión:TOOLKIT PC APPLICATIONS - DEMOQE1282012-11-20T03:51:06Z<p>Manypuig: Página creada con «Es importante la referencia conjunta, un link no puede estar roto si el artículo existe en la gama de la página general.»</p>
<hr />
<div>Es importante la referencia conjunta, un link no puede estar roto si el artículo existe en la gama de la página general.</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=SCI_(Interfaz_de_Comunicaci%C3%B3n_Serial)_-_MC9S08QE128&diff=1886SCI (Interfaz de Comunicación Serial) - MC9S08QE1282012-11-19T18:37:26Z<p>Manypuig: /* Inicializaciones Generales del SCI */</p>
<hr />
<div>[[Categoría:MC9S08QE128]]<br />
<br />
El modulo del SCI del MC9S08QE128, es una gran herramienta para la recepción / transmisión serial.<br />
El Microcontrolador MC9S08QE128, tiene dos puertos seriales el SCI1 y el SCI2. En el desarrollo del tema se explicará solo el SCI1 ya que es el mas usado, si requiere información sobre el SCI2 dirigirse al manual del MC9S08QE128.<br />
<br />
En esta sección veremos los modos de uso y como se deben configurar los registros para la recepción y envió en general. <br />
<br />
[[Archivo:SCI.jpg|400px|thumb|derecha|Puertos del MC9S08QE128]]<br />
<br />
<br />
== Características Generales del SCI ==<br />
<br />
* Formato ''Full-duplex'', estándar sin retorno a cero (NRZ).<br />
<br />
* Doble buffer de transmisión y el recepción con habilitadores separados. <br />
<br />
* Tasas de baudios programables (13-bits).<br />
<br />
* Opera por Interrupciones o por encuesta las siguientes actividades:<br />
<br />
''- Transmisión registro de datos y registros completos.''<br />
<br />
''- Recepción de registros de datos completos.''<br />
<br />
''- Recepción de desbordamiento(''carry'') , error de paridad, error de ''framing'' y error de ruido.''<br />
<br />
''- Recepción de inactividad.'' <br />
<br />
''- Pin receptor de flanco activo.'' <br />
<br />
''- Detección de banderas.''<br />
<br />
* Hardware de generación y comprobación de paridad.<br />
<br />
* Programable a 8-bits o 9-bits de caracteres de longitud.<br />
<br />
* Receptor de activación por línea libre o marca de dirección.<br />
<br />
* Opcionales: Generación de salto de carácter de 13-bit / Detección de saltos de carácter de 11-bit.<br />
<br />
* Transmisor de polaridad de salida seleccionable.<br />
<br />
Estas características fueron extraídas del Capitulo 14 del Manual del MC9S08QE128 [http://www.freescale.com/files/microcontrollers/doc/ref_manual/MC9S08QE128RM.pdf '''Reference Manual.''' ''Freescale'']<br />
<br />
== Inicializaciones Generales del SCI ==<br />
A continuación se presenta unos ejemplos de como configurar el SCI para que transmita y reciba por encuesta e interrupciones <br />
<br />
==== '' En Assembler'' ====<br />
<br />
Configuración mas utilizada para transmitir y recibir por encuesta.<br />
<br />
<pre><br />
<br />
LDA #$00<br />
STA SCI1BDH<br />
LDA #$1A<br />
STA SCI1BDL ;/*Baud Rate = 9600bps*/<br />
LDA #$00<br />
STA SCI1C1 ;/*Transmisión y recepción normal de 8 bits sin paridad*/<br />
LDA #$0C<br />
STA SCI1C2 ;/*Habilita transmisor y receptor*/ <br />
<br />
</pre><br />
<br />
Configuración mas utilizada para transmitir y recibir por interrupción del SCI<br />
<br />
<pre><br />
<br />
LDA #$00<br />
STA SCI1BDH ;/* Tasa alta de transmisión deshabilitada (Baud high disabled)*/<br />
LDA #$1A ;/* Pre-escaler ajustado: [SBR12:SBR0] = 4Mhz/(16*9600) =~ 26,04d= 1A (hex)valor requerido para trabajar a 9600bps*/<br />
STA SCI1BDL ;/*Baud Rate = 9600bps*/<br />
LDA #$00<br />
STA SCI1C1 ;/*Transmisión y recepción normal de 8 bits sin paridad*/<br />
LDA #$2C<br />
STA SCI1C2 ;/*Habilita transmisor y receptor*/ <br />
<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Configuración mas utilizada para transmitir y recibir por encuesta<br />
<br />
<pre><br />
Configuración mas utilizada para transmitir y recibir por encuesta<br />
<br />
// Inicializaciones para trabajar con SCI <br />
SCI1BDH = 0x00;<br />
SCI1BDL = 0x1A; /*Baud Rate = 9600bps*/ <br />
SCI1C1 = 0x00; /*Transmisión y recepción normal de 8 bits sin paridad*/<br />
SCI1C2 = 0x0C; /*Habilita transmisor y receptor*/ <br />
<br />
</pre><br />
<br />
Configuración mas utilizada para transmitir y recibir por interrucpcion del SCI<br />
<pre><br />
<br />
// Inicializaciones para trabajar con SCI <br />
SCI1BDH = 0x00;<br />
SCI1BDL = 0x1A; /*Baud Rate = 9600bps*/ <br />
SCI1C1 = 0x00; /*Transmisión y recepción normal de 8 bits sin paridad*/<br />
SCI1C2 = 0x2C; /*Habilita transmisor y receptor, habilito recepción por interrupciones*/ <br />
<br />
</pre><br />
<br />
[https://www.dropbox.com/sh/inkevplco660d9r/7tEkHpF3Vy '''Guía Rápida de los Módulos de Inicialización''']<br />
<br />
== Registros SCI ==<br />
<br />
Los Registros del SCI son de 8-bits. Cada registro tiene características para la configuración del puerto serial dependiendo de cómo se desea trabajar con él. <br />
<br />
===''SCIxBDH'' y ''SCIxBDL''=== <br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!LBKDIE<br />
!RXEDGIE<br />
!//////<br />
!SBR12<br />
!SBR11<br />
!SBR10<br />
!&nbsp;SBR9&nbsp;<br />
!&nbsp;SBR8&nbsp;<br />
|}<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!&nbsp;SBR7&nbsp;<br />
!&nbsp;SBR6&nbsp;<br />
!&nbsp;SBR5&nbsp;<br />
!&nbsp;SBR4&nbsp;<br />
!&nbsp;SBR3&nbsp;<br />
!&nbsp;SBR2&nbsp;<br />
!&nbsp;SBR1&nbsp;<br />
!&nbsp;SBR0&nbsp;<br />
|}<br />
<br />
Este par de registros son usados en la inicialización del puerto serial. Ellos controlan la escala de baudios a la cual se transmite y se recibe la información. Generalmente se configuran para 9600 Baudios<br />
<br />
===''SCIxC1''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="4" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!LOOPS<br />
!SCISWAI<br />
!RSRC<br />
!&nbsp;&nbsp;&nbsp;M&nbsp;&nbsp;&nbsp;<br />
!WAKE <br />
!&nbsp;ILT&nbsp; <br />
!&nbsp;&nbsp;PE&nbsp;&nbsp;<br />
!&nbsp;&nbsp;PT&nbsp;&nbsp;<br />
|}<br />
Este registro es usado en la inicialización del puerto serial. Se utiliza para controlar varias caracterizas opcionales del sistema SCI. Generalmente se programa para la transmisión y recepción normal de 8 bits sin paridad<br />
<br />
===''SCIxC2''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0 <br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!&nbsp;TI&nbsp;E&nbsp;&nbsp;<br />
!TCIE<br />
!&nbsp;&nbsp;RIE&nbsp;&nbsp;<br />
!ILIE<br />
!&nbsp;&nbsp;TE&nbsp;&nbsp;<br />
!&nbsp;&nbsp;RE&nbsp;&nbsp;<br />
!&nbsp;RWU&nbsp;<br />
!&nbsp;SBK&nbsp;<br />
|}<br />
Este registro es usado en las inicializaciones para activar las interrupciones de transmisión y recepción. Cuando el bit 7 esta en 1 se activa la transmisión y cuando el bit 5 esta en 1 se activa la recepción.<br />
<br />
===''SCIxS1''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!TDRE<br />
!&nbsp;&nbsp;TC&nbsp;&nbsp;<br />
!RDRF<br />
!IDKE<br />
!&nbsp;&nbsp;OR&nbsp;&nbsp;<br />
!&nbsp;&nbsp;NF&nbsp;&nbsp;<br />
!&nbsp;&nbsp;FE&nbsp;&nbsp;<br />
!&nbsp;&nbsp;PF&nbsp;&nbsp;<br />
|}<br />
Este registro contiene 8 banderas de estatus. El bit 7 contiene la bandera de estatus de transmisión, cuando se transmite dicha bandera se pone en 1. Cuando se recibe la bandera del bit 5 RDRF se pone en 1. Para limpiar las banderas hay que leer el registro SCI1S1 (Ej, Variable=SCI1S1 en C y LDA SCI1S1 en assembler)<br />
<br />
===''SCIxS2''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!LBKDIF<br />
!RXEDGIF<br />
!///////<br />
!RXINV<br />
!RWUID<br />
!BRK13<br />
!LBKDE<br />
!&nbsp;RAF&nbsp;<br />
|}<br />
<br />
Configura las opciones de soporte LIN y supervisa la actividad del receptor.<br />
<br />
===''SCIxC3''===<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="2" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="10" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
! &nbsp;R8&nbsp;<br />
! &nbsp;T8&nbsp; <br />
! TXDIR<br />
! TXINV<br />
! ORIE<br />
! NEIE<br />
! FEIE<br />
! PEIE<br />
|-<br />
|}<br />
Es otro registro de control del SCI, que es poco usado, para mas información dirigirse al manual del MC9S08QE128<br />
<br />
===''SCIxD''===<br />
El registro SCIxD se utiliza para recibir o transmitir un dato por el puerto serial. Para más detalles ver la sección de Inicializaciones Generales del SCI de este mismo artículo. <br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
! &nbsp;R7/T7&nbsp;<br />
! &nbsp;R6/T6&nbsp;<br />
! &nbsp;R5/T5&nbsp; <br />
! &nbsp;R4/T4&nbsp;<br />
! &nbsp;R3/T3&nbsp;<br />
! &nbsp;R2/T2&nbsp;<br />
! &nbsp;R1/T1&nbsp;<br />
! &nbsp;R0/T0&nbsp;<br />
|-<br />
|}<br />
<br />
Escribe: Recepción (Rx) de dato; Escribe: Transmisión (Rx) de dato.<br />
<br />
== Serial por Interrupciones ==<br />
Antes de usar transmisión y recepción por interrupción se debe de usar la inicialización adecuada<br />
<br />
=== Transmisión ===<br />
<br />
==== '' En Assembler'' ====<br />
En assembler hay que definer el vector de interrupción de la siguiente manera <br />
<pre><br />
;**************************************************************<br />
;* Interrupt Vectors *<br />
;************************************************************** <br />
ORG $FFDE ; Posición en memoria donde se encuentra el vector de interrupción <br />
<br />
DC.W Transmite ; Rutina de Transmisión<br />
<br />
</pre><br />
<br />
Un ejemplo para transmitir por serial es el siguiente:<br />
<br />
<pre><br />
Transmite: bclr SCI1S1_TDRE, SCI1S1; salta si el registro SCI1S1_TDRE es distinto de cero <br />
lda dato ;se carga a el acumulador el dato deseado<br />
sta SCI1D ;se transmite el dato por el puerto serial<br />
lda SCI1S1 ;se baja la bandera de transmisión para poder volverla usar<br />
mov #$2C, SCI1C2 ; se modifica el registro SCI1C2 para que interrumpa el programa cuando se reciba un dato si se recibir<br />
;otro dato por interrupcion de lo contrario borrar esta linea de codigo <br />
RTI<br />
<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Para transmitir por interrupción se tiene que usar el siguiente vector "void interrupt VectorNumber_Vsci1tx SCI_TX_ISR(void)". Este vector de interrupción se debe colocar después del main. Un ejemplo de como usar el vector es el siguiente. <br />
<br />
<pre><br />
void interrupt VectorNumber_Vsci1tx SCI_TX_ISR(void){<br />
byte leer;<br />
leer=SCI1S1; //Baja la bandera de transmisión, por tal motivo para<br />
volverlo a utilizar hay que ponerlo nuevamente en cero<br />
SCI1D=dato; //en el registro SCI1D se guarda lo que se quiere enviar por serial, la variable dato se tiene <br />
//que inicializar como una variable global<br />
<br />
SCI1C2=0x2C; //esta linea de código es opcional, se escribe si se quiere que el programa reciba por interrupción<br />
//en caso contrario borrarla.<br />
}<br />
<br />
</pre><br />
<br />
'''Bajar las banderas cada vez que transmitan es sumamente importante.''' <br />
'''Si no lo hacen el programa no les volverá a transmitir. Para bajar la bandera solamente tienen que leer el registro SCI1S1'''<br />
<br />
=== Recepción ===<br />
<br />
==== '' En Assembler'' ====<br />
En assembler hay que definir el vector de interrupción de recepción de la siguiente manera<br />
<br />
<pre><br />
;**************************************************************<br />
;* Interrupt Vectors *<br />
;**************************************************************<br />
ORG $FFE0 ; espacio en memoria donde se encuentra la interrupción <br />
<br />
DC.W Recibe ; Rutina de Recepción<br />
</pre><br />
<br />
Un ejemplo para recibir por serial es el siguiente<br />
<pre><br />
Recibe: bclr SCI1S1_RDRF,SCI1S1 ;pasa a la siguiente linea de código cuando el registro SCI1S1_RDRF es distinto de cero <br />
lda SCI1D ;guarda en el acumulador el dato recibido por serial <br />
sta dato ; se guarda el dato<br />
lda SCI1S1 ; se baja la bandera de recepción <br />
mov #$8C, SCI1C2 ; se modfica el registro SCI1C2 para entrar a un vector de transmision si es necesario, de lo contrario <br />
; borrar la linea de codigo <br />
RTI<br />
<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Para recibir por interrupción se tiene que usar el siguiente vector "void interrupt VectorNumber_Vsci1rx SCI_RX_ISR(void)". Este vector de interrupción se debe de colocar después del main. Un ejemplo de como usar el vector es el siguiente.<br />
<br />
<pre><br />
//vector de interrupcion por sci para recibir<br />
void interrupt VectorNumber_Vsci1rx SCI_RX_ISR(void) {<br />
byte leer;<br />
byte dato; //se declaran las variables que recive el dato que se escribe<br />
leer=SCI1S1; //baja la bandera de recepción, por tal motivo para volverlo a utilizar hay que ponerlo nuevamente en cero<br />
dato = SCI1D; //el registro SCI1D es donde se guarda el dato que se manda por puerto serial,<br />
dicho dato se le asigna a la variable dato<br />
SCI1C2=0x8C; //esta linea de codigo es opcional, se escribe si se quiere que el programa transmita por interrupción <br />
}<br />
</pre><br />
<br />
'''Bajar las banderas cada vez que reciban es sumamente importante.''' <br />
'''Si no lo hacen el programa no les volverá a recibir. Para bajar la bandera solamente tienen que leer el registro SCI1S1'''<br />
<br />
== Serial por Encuesta ==<br />
<br />
=== Transmisión === <br />
<br />
Este programa se queda esperando hasta que transmita un dato, para luego salir del ciclo, enviar por el puerto el dato y finalmente limpiar la bandera, para volver a transmitir.<br />
<br />
==== '' En Assembler'' ====<br />
<br />
Esta es una sub-rutina para la cual se llama con la instrucción '''jsr Transmitir'''<br />
<pre><br />
<br />
Transmitir: <br />
etiq: lda dato ; se coloca en el dato que se desea transmitir en el acumulador<br />
sta SCI1D ; se coloca el dato en el registro de data<br />
;del puerto para ser enviado<br />
BRCLR SCI1S1_TDRE,SCI1S1,etiq ; Condición de salto que verifica si la <br />
;el dato fue transmitido<br />
lda SCI1S1 ; se aclara la bandera MUY IMPORTANTE<br />
RTS ; se sale de la sub rutina y vuelve al PC+1 de donde fue llamada<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Se crea como una función, la cual se llama con Transmitir_dato(dato)<br />
<br />
<pre><br />
<br />
void Transmitir_dato(byte dato) // Se ejecuta la transmisión de dato por encuesta<br />
{ byte bandera;<br />
while (SCI1S1_TDRE == 0); /* No finaliza ciclo hasta que esté libre el registro en el que se<br />
guardará el dato que se enviará*/<br />
bandera= SCI1S1; // Aclara la bandera<br />
SCI1D = dato; // Enviando dato <br />
}<br />
</pre><br />
<br />
<br />
<br />
<br />
=== Recepción ===<br />
Este programa se queda esperando hasta que reciba un dato, para luego salir del ciclo, enviar el dato por el puerto y finalmente limpiar las banderas, para volver a recibir.<br />
<br />
==== '' En Assembler'' ====<br />
Esta es una sub-rutina para la cual se llama con la instrucción '''jsr recepcion'''<br />
<pre><br />
<br />
recepcion: <br />
etiq: BRCLR SCI1S1_RDRF,SCI1S1,etiq; Condición de salto que verifica si la el dato fue recibido<br />
bclr SCI1S1_RDRF,SCI1S1 ; se aclara la bandera para decir que ya se recibió el dato<br />
lda SCI1D ;se coloca el dato del registro de data <br />
;del puerto que fue recibida en el acumulador<br />
sta dato ; se coloca el valor del acumulador en la variable dato<br />
lda SCI1S1; se aclara la bandera MUY IMPORTANTE <br />
RTS; ; se sale de la sub rutina y vuelve al PC+1 de donde fue llamada<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
<br />
Se crea como una función, la cual se llama con Recibir_dato()<br />
<pre><br />
<br />
byte Recibir_dato(void) //Se ejecuta la recepción de dato por encuesta<br />
{ byte dato_R; <br />
byte bandera;<br />
while (SCI1S1_RDRF == 0); // No finaliza ciclo hasta que esté listo el dato <br />
bandera= SCI1S1; // Aclara la bandera <br />
dato_R = SCI1D; // Se Salva el dato <br />
return dato_R; // Retorna dato<br />
}<br />
<br />
</pre><br />
<br />
<br />
'''Hay que aclarar las banderas cada vez que se termine de transmitir o recibir dependiendo de cual sea el caso, es sumamente importante. Si no se hace puede que el programa genere algún tipo de error. Para bajar la bandera solamente tienen que leer el registro SCI1S1.'''<br />
<br />
== Referencias ==<br />
<br />
*[http://www.freescale.com/files/microcontrollers/doc/ref_manual/MC9S08QE128RM.pdf '''Reference Manual.''' ''Freescale'']<br />
<br />
<br />
<br />
Ángel Diaz y Rhayza Rodríguez</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=SCI_(Interfaz_de_Comunicaci%C3%B3n_Serial)_-_MC9S08QE128&diff=1885SCI (Interfaz de Comunicación Serial) - MC9S08QE1282012-11-19T18:16:09Z<p>Manypuig: /* En Assembler */</p>
<hr />
<div>[[Categoría:MC9S08QE128]]<br />
<br />
El modulo del SCI del MC9S08QE128, es una gran herramienta para la recepción / transmisión serial.<br />
El Microcontrolador MC9S08QE128, tiene dos puertos seriales el SCI1 y el SCI2. En el desarrollo del tema se explicará solo el SCI1 ya que es el mas usado, si requiere información sobre el SCI2 dirigirse al manual del MC9S08QE128.<br />
<br />
En esta sección veremos los modos de uso y como se deben configurar los registros para la recepción y envió en general. <br />
<br />
[[Archivo:SCI.jpg|400px|thumb|derecha|Puertos del MC9S08QE128]]<br />
<br />
<br />
== Características Generales del SCI ==<br />
<br />
* Formato ''Full-duplex'', estándar sin retorno a cero (NRZ).<br />
<br />
* Doble buffer de transmisión y el recepción con habilitadores separados. <br />
<br />
* Tasas de baudios programables (13-bits).<br />
<br />
* Opera por Interrupciones o por encuesta las siguientes actividades:<br />
<br />
''- Transmisión registro de datos y registros completos.''<br />
<br />
''- Recepción de registros de datos completos.''<br />
<br />
''- Recepción de desbordamiento(''carry'') , error de paridad, error de ''framing'' y error de ruido.''<br />
<br />
''- Recepción de inactividad.'' <br />
<br />
''- Pin receptor de flanco activo.'' <br />
<br />
''- Detección de banderas.''<br />
<br />
* Hardware de generación y comprobación de paridad.<br />
<br />
* Programable a 8-bits o 9-bits de caracteres de longitud.<br />
<br />
* Receptor de activación por línea libre o marca de dirección.<br />
<br />
* Opcionales: Generación de salto de carácter de 13-bit / Detección de saltos de carácter de 11-bit.<br />
<br />
* Transmisor de polaridad de salida seleccionable.<br />
<br />
Estas características fueron extraídas del Capitulo 14 del Manual del MC9S08QE128 [http://www.freescale.com/files/microcontrollers/doc/ref_manual/MC9S08QE128RM.pdf '''Reference Manual.''' ''Freescale'']<br />
<br />
== Inicializaciones Generales del SCI ==<br />
A continuación se presenta unos ejemplos de como configurar el SCI para que transmita y reciba por encuesta e interrupciones <br />
<br />
==== '' En Assembler'' ====<br />
<br />
Configuración mas utilizada para transmitir y recibir por encuesta.<br />
<br />
<pre><br />
<br />
LDA #$00<br />
STA SCI1BDH<br />
LDA #$1A<br />
STA SCI1BDL ;/*Baud Rate = 9600bps*/<br />
LDA #$00<br />
STA SCI1C1 ;/*Transmisión y recepción normal de 8 bits sin paridad*/<br />
LDA #$0C<br />
STA SCI1C2 ;/*Habilita transmisor y receptor*/ <br />
<br />
</pre><br />
<br />
Configuración mas utilizada para transmitir y recibir por interrupción del SCI<br />
<br />
<pre><br />
<br />
LDA #$00<br />
STA SCI1BDH ;/* Tasa alta de transmisión deshabilitada (Baud high disabled)*/<br />
LDA #$1A ;/* Pre-escaler ajustado: [SBR12:SBR0] = 4Mhz/(16*9600) =~ 26,04d= 1A (hex)valor requerido para trabajar a 9600bps*/<br />
STA SCI1BDL ;/*Baud Rate = 9600bps*/<br />
LDA #$00<br />
STA SCI1C1 ;/*Transmisión y recepción normal de 8 bits sin paridad*/<br />
LDA #$2C<br />
STA SCI1C2 ;/*Habilita transmisor y receptor*/ <br />
<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Configuración mas utilizada para transmitir y recibir por encuesta<br />
<br />
<pre><br />
Configuración mas utilizada para transmitir y recibir por encuesta<br />
<br />
// Inicializaciones para trabajar con SCI <br />
SCI1BDH = 0x00;<br />
SCI1BDL = 0x1A; /*Baud Rate = 9600bps*/ <br />
SCI1C1 = 0x00; /*Transmisión y recepción normal de 8 bits sin paridad*/<br />
SCI1C2 = 0x0C; /*Habilita transmisor y receptor*/ <br />
<br />
</pre><br />
<br />
Configuración mas utilizada para transmitir y recibir por interrucpcion del SCI<br />
<pre><br />
<br />
// Inicializaciones para trabajar con SCI <br />
SCI1BDH = 0x00;<br />
SCI1BDL = 0x1A; /*Baud Rate = 9600bps*/ <br />
SCI1C1 = 0x00; /*Transmisión y recepción normal de 8 bits sin paridad*/<br />
SCI1C2 = 0x2C; /*Habilita transmisor y receptor*/ <br />
<br />
</pre><br />
<br />
[https://www.dropbox.com/sh/inkevplco660d9r/7tEkHpF3Vy '''Guía Rápida de los Módulos de Inicialización''']<br />
<br />
== Registros SCI ==<br />
<br />
Los Registros del SCI son de 8-bits. Cada registro tiene características para la configuración del puerto serial dependiendo de cómo se desea trabajar con él. <br />
<br />
===''SCIxBDH'' y ''SCIxBDL''=== <br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!LBKDIE<br />
!RXEDGIE<br />
!//////<br />
!SBR12<br />
!SBR11<br />
!SBR10<br />
!&nbsp;SBR9&nbsp;<br />
!&nbsp;SBR8&nbsp;<br />
|}<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!&nbsp;SBR7&nbsp;<br />
!&nbsp;SBR6&nbsp;<br />
!&nbsp;SBR5&nbsp;<br />
!&nbsp;SBR4&nbsp;<br />
!&nbsp;SBR3&nbsp;<br />
!&nbsp;SBR2&nbsp;<br />
!&nbsp;SBR1&nbsp;<br />
!&nbsp;SBR0&nbsp;<br />
|}<br />
<br />
Este par de registros son usados en la inicialización del puerto serial. Ellos controlan la escala de baudios a la cual se transmite y se recibe la información. Generalmente se configuran para 9600 Baudios<br />
<br />
===''SCIxC1''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="4" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!LOOPS<br />
!SCISWAI<br />
!RSRC<br />
!&nbsp;&nbsp;&nbsp;M&nbsp;&nbsp;&nbsp;<br />
!WAKE <br />
!&nbsp;ILT&nbsp; <br />
!&nbsp;&nbsp;PE&nbsp;&nbsp;<br />
!&nbsp;&nbsp;PT&nbsp;&nbsp;<br />
|}<br />
Este registro es usado en la inicialización del puerto serial. Se utiliza para controlar varias caracterizas opcionales del sistema SCI. Generalmente se programa para la transmisión y recepción normal de 8 bits sin paridad<br />
<br />
===''SCIxC2''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0 <br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!&nbsp;TI&nbsp;E&nbsp;&nbsp;<br />
!TCIE<br />
!&nbsp;&nbsp;RIE&nbsp;&nbsp;<br />
!ILIE<br />
!&nbsp;&nbsp;TE&nbsp;&nbsp;<br />
!&nbsp;&nbsp;RE&nbsp;&nbsp;<br />
!&nbsp;RWU&nbsp;<br />
!&nbsp;SBK&nbsp;<br />
|}<br />
Este registro es usado en las inicializaciones para activar las interrupciones de transmisión y recepción. Cuando el bit 7 esta en 1 se activa la transmisión y cuando el bit 5 esta en 1 se activa la recepción.<br />
<br />
===''SCIxS1''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!TDRE<br />
!&nbsp;&nbsp;TC&nbsp;&nbsp;<br />
!RDRF<br />
!IDKE<br />
!&nbsp;&nbsp;OR&nbsp;&nbsp;<br />
!&nbsp;&nbsp;NF&nbsp;&nbsp;<br />
!&nbsp;&nbsp;FE&nbsp;&nbsp;<br />
!&nbsp;&nbsp;PF&nbsp;&nbsp;<br />
|}<br />
Este registro contiene 8 banderas de estatus. El bit 7 contiene la bandera de estatus de transmisión, cuando se transmite dicha bandera se pone en 1. Cuando se recibe la bandera del bit 5 RDRF se pone en 1. Para limpiar las banderas hay que leer el registro SCI1S1 (Ej, Variable=SCI1S1 en C y LDA SCI1S1 en assembler)<br />
<br />
===''SCIxS2''===<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!LBKDIF<br />
!RXEDGIF<br />
!///////<br />
!RXINV<br />
!RWUID<br />
!BRK13<br />
!LBKDE<br />
!&nbsp;RAF&nbsp;<br />
|}<br />
<br />
Configura las opciones de soporte LIN y supervisa la actividad del receptor.<br />
<br />
===''SCIxC3''===<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="2" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="10" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
! &nbsp;R8&nbsp;<br />
! &nbsp;T8&nbsp; <br />
! TXDIR<br />
! TXINV<br />
! ORIE<br />
! NEIE<br />
! FEIE<br />
! PEIE<br />
|-<br />
|}<br />
Es otro registro de control del SCI, que es poco usado, para mas información dirigirse al manual del MC9S08QE128<br />
<br />
===''SCIxD''===<br />
El registro SCIxD se utiliza para recibir o transmitir un dato por el puerto serial. Para más detalles ver la sección de Inicializaciones Generales del SCI de este mismo artículo. <br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="3" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="8" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
! &nbsp;R7/T7&nbsp;<br />
! &nbsp;R6/T6&nbsp;<br />
! &nbsp;R5/T5&nbsp; <br />
! &nbsp;R4/T4&nbsp;<br />
! &nbsp;R3/T3&nbsp;<br />
! &nbsp;R2/T2&nbsp;<br />
! &nbsp;R1/T1&nbsp;<br />
! &nbsp;R0/T0&nbsp;<br />
|-<br />
|}<br />
<br />
Escribe: Recepción (Rx) de dato; Escribe: Transmisión (Rx) de dato.<br />
<br />
== Serial por Interrupciones ==<br />
Antes de usar transmisión y recepción por interrupción se debe de usar la inicialización adecuada<br />
<br />
=== Transmisión ===<br />
<br />
==== '' En Assembler'' ====<br />
En assembler hay que definer el vector de interrupción de la siguiente manera <br />
<pre><br />
;**************************************************************<br />
;* Interrupt Vectors *<br />
;************************************************************** <br />
ORG $FFDE ; Posición en memoria donde se encuentra el vector de interrupción <br />
<br />
DC.W Transmite ; Rutina de Transmisión<br />
<br />
</pre><br />
<br />
Un ejemplo para transmitir por serial es el siguiente:<br />
<br />
<pre><br />
Transmite: bclr SCI1S1_TDRE, SCI1S1; salta si el registro SCI1S1_TDRE es distinto de cero <br />
lda dato ;se carga a el acumulador el dato deseado<br />
sta SCI1D ;se transmite el dato por el puerto serial<br />
lda SCI1S1 ;se baja la bandera de transmisión para poder volverla usar<br />
mov #$2C, SCI1C2 ; se modifica el registro SCI1C2 para que interrumpa el programa cuando se reciba un dato si se recibir<br />
;otro dato por interrupcion de lo contrario borrar esta linea de codigo <br />
RTI<br />
<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Para transmitir por interrupción se tiene que usar el siguiente vector "void interrupt VectorNumber_Vsci1tx SCI_TX_ISR(void)". Este vector de interrupción se debe colocar después del main. Un ejemplo de como usar el vector es el siguiente. <br />
<br />
<pre><br />
void interrupt VectorNumber_Vsci1tx SCI_TX_ISR(void){<br />
byte leer;<br />
leer=SCI1S1; //Baja la bandera de transmisión, por tal motivo para<br />
volverlo a utilizar hay que ponerlo nuevamente en cero<br />
SCI1D=dato; //en el registro SCI1D se guarda lo que se quiere enviar por serial, la variable dato se tiene <br />
//que inicializar como una variable global<br />
<br />
SCI1C2=0x2C; //esta linea de código es opcional, se escribe si se quiere que el programa reciba por interrupción<br />
//en caso contrario borrarla.<br />
}<br />
<br />
</pre><br />
<br />
'''Bajar las banderas cada vez que transmitan es sumamente importante.''' <br />
'''Si no lo hacen el programa no les volverá a transmitir. Para bajar la bandera solamente tienen que leer el registro SCI1S1'''<br />
<br />
=== Recepción ===<br />
<br />
==== '' En Assembler'' ====<br />
En assembler hay que definir el vector de interrupción de recepción de la siguiente manera<br />
<br />
<pre><br />
;**************************************************************<br />
;* Interrupt Vectors *<br />
;**************************************************************<br />
ORG $FFE0 ; espacio en memoria donde se encuentra la interrupción <br />
<br />
DC.W Recibe ; Rutina de Recepción<br />
</pre><br />
<br />
Un ejemplo para recibir por serial es el siguiente<br />
<pre><br />
Recibe: bclr SCI1S1_RDRF,SCI1S1 ;pasa a la siguiente linea de código cuando el registro SCI1S1_RDRF es distinto de cero <br />
lda SCI1D ;guarda en el acumulador el dato recibido por serial <br />
sta dato ; se guarda el dato<br />
lda SCI1S1 ; se baja la bandera de recepción <br />
mov #$8C, SCI1C2 ; se modfica el registro SCI1C2 para entrar a un vector de transmision si es necesario, de lo contrario <br />
; borrar la linea de codigo <br />
RTI<br />
<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Para recibir por interrupción se tiene que usar el siguiente vector "void interrupt VectorNumber_Vsci1rx SCI_RX_ISR(void)". Este vector de interrupción se debe de colocar después del main. Un ejemplo de como usar el vector es el siguiente.<br />
<br />
<pre><br />
//vector de interrupcion por sci para recibir<br />
void interrupt VectorNumber_Vsci1rx SCI_RX_ISR(void) {<br />
byte leer;<br />
byte dato; //se declaran las variables que recive el dato que se escribe<br />
leer=SCI1S1; //baja la bandera de recepción, por tal motivo para volverlo a utilizar hay que ponerlo nuevamente en cero<br />
dato = SCI1D; //el registro SCI1D es donde se guarda el dato que se manda por puerto serial,<br />
dicho dato se le asigna a la variable dato<br />
SCI1C2=0x8C; //esta linea de codigo es opcional, se escribe si se quiere que el programa transmita por interrupción <br />
}<br />
</pre><br />
<br />
'''Bajar las banderas cada vez que reciban es sumamente importante.''' <br />
'''Si no lo hacen el programa no les volverá a recibir. Para bajar la bandera solamente tienen que leer el registro SCI1S1'''<br />
<br />
== Serial por Encuesta ==<br />
<br />
=== Transmisión === <br />
<br />
Este programa se queda esperando hasta que transmita un dato, para luego salir del ciclo, enviar por el puerto el dato y finalmente limpiar la bandera, para volver a transmitir.<br />
<br />
==== '' En Assembler'' ====<br />
<br />
Esta es una sub-rutina para la cual se llama con la instrucción '''jsr Transmitir'''<br />
<pre><br />
<br />
Transmitir: <br />
etiq: lda dato ; se coloca en el dato que se desea transmitir en el acumulador<br />
sta SCI1D ; se coloca el dato en el registro de data<br />
;del puerto para ser enviado<br />
BRCLR SCI1S1_TDRE,SCI1S1,etiq ; Condición de salto que verifica si la <br />
;el dato fue transmitido<br />
lda SCI1S1 ; se aclara la bandera MUY IMPORTANTE<br />
RTS ; se sale de la sub rutina y vuelve al PC+1 de donde fue llamada<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
Se crea como una función, la cual se llama con Transmitir_dato(dato)<br />
<br />
<pre><br />
<br />
void Transmitir_dato(byte dato) // Se ejecuta la transmisión de dato por encuesta<br />
{ byte bandera;<br />
while (SCI1S1_TDRE == 0); /* No finaliza ciclo hasta que esté libre el registro en el que se<br />
guardará el dato que se enviará*/<br />
bandera= SCI1S1; // Aclara la bandera<br />
SCI1D = dato; // Enviando dato <br />
}<br />
</pre><br />
<br />
<br />
<br />
<br />
=== Recepción ===<br />
Este programa se queda esperando hasta que reciba un dato, para luego salir del ciclo, enviar el dato por el puerto y finalmente limpiar las banderas, para volver a recibir.<br />
<br />
==== '' En Assembler'' ====<br />
Esta es una sub-rutina para la cual se llama con la instrucción '''jsr recepcion'''<br />
<pre><br />
<br />
recepcion: <br />
etiq: BRCLR SCI1S1_RDRF,SCI1S1,etiq; Condición de salto que verifica si la el dato fue recibido<br />
bclr SCI1S1_RDRF,SCI1S1 ; se aclara la bandera para decir que ya se recibió el dato<br />
lda SCI1D ;se coloca el dato del registro de data <br />
;del puerto que fue recibida en el acumulador<br />
sta dato ; se coloca el valor del acumulador en la variable dato<br />
lda SCI1S1; se aclara la bandera MUY IMPORTANTE <br />
RTS; ; se sale de la sub rutina y vuelve al PC+1 de donde fue llamada<br />
</pre><br />
<br />
==== '' En Lenguaje C '' ====<br />
<br />
Se crea como una función, la cual se llama con Recibir_dato()<br />
<pre><br />
<br />
byte Recibir_dato(void) //Se ejecuta la recepción de dato por encuesta<br />
{ byte dato_R; <br />
byte bandera;<br />
while (SCI1S1_RDRF == 0); // No finaliza ciclo hasta que esté listo el dato <br />
bandera= SCI1S1; // Aclara la bandera <br />
dato_R = SCI1D; // Se Salva el dato <br />
return dato_R; // Retorna dato<br />
}<br />
<br />
</pre><br />
<br />
<br />
'''Hay que aclarar las banderas cada vez que se termine de transmitir o recibir dependiendo de cual sea el caso, es sumamente importante. Si no se hace puede que el programa genere algún tipo de error. Para bajar la bandera solamente tienen que leer el registro SCI1S1.'''<br />
<br />
== Referencias ==<br />
<br />
*[http://www.freescale.com/files/microcontrollers/doc/ref_manual/MC9S08QE128RM.pdf '''Reference Manual.''' ''Freescale'']<br />
<br />
<br />
<br />
Ángel Diaz y Rhayza Rodríguez</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1818Acelerómetro - DEMOQE1282012-11-17T04:18:19Z<p>Manypuig: /* Simulación */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado..<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleracion<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma como muesta y lo convierte usando canal 1 de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma como muesta y lo convierte usando canal 8 de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(ReadAceleracion()); // El valor que contenga el pin z lo toma como muesta y lo convierte usando canal 9 de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*Terminal Windows: 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.<br />
<br />
*Data Snapshot: Esta interfaz nos permite ver que tanto se ha movido el eje (x,y,z) del dispositivo respecto a la referencia (en porcentajes) 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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1813Acelerómetro - DEMOQE1282012-11-17T04:14:26Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el número de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 eje. Funciona con el reloj interno del DEMOQE [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado..<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleracion<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma como muesta y lo convierte usando canal 1 de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma como muesta y lo convierte usando canal 8 de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(ReadAceleracion()); // El valor que contenga el pin z lo toma como muesta y lo convierte usando canal 9 de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1811Acelerómetro - DEMOQE1282012-11-17T04:11:23Z<p>Manypuig: /* Enlaces externos */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado..<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleracion<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma como muesta y lo convierte usando canal 1 de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma como muesta y lo convierte usando canal 8 de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(ReadAceleracion()); // El valor que contenga el pin z lo toma como muesta y lo convierte usando canal 9 de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
*[http://www.datasheetarchive.com/MC9S08QE128-datasheet.html datasheet del MC9S08QE128]]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1806Acelerómetro - DEMOQE1282012-11-17T04:02:33Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
<br />
//*Lectura de aceleración y Conversión ADC<br />
//*Lee los datos de aceleración en un eje y lo guarda en una estructura<br />
word LeerAceleracion(void)<br />
{<br />
word adc;<br />
while (!(ADCSC1_COCO)){} // Esperar a que la conversión con el adc haya finalizado..<br />
adc=ADCR;<br />
return adc;<br />
}<br />
<br />
'''Nota con el ADC''': recordemos que COCO es un bit de sólo lectura que se establece cada vez que se completa una conversión cuando la función de comparación se desactiva (ACFE = 0). Cuando la función de comparación se activa (ACFE = 1) la bandera COCO se ajusta al término de una conversión sólo si el resultado de la comparación es de valor lógico alto (true). Este bit se borra cada vez que se escribe o ADCSC1 ADCRL cuando lee, viendo bien que si COCO = 0 se encuentra convirtiendo, si COCO=1 quiere decir que la conversion se completó.[[ADC (Conversor Analógico-Digital) - MC9S08QE128|véase ADC]]<br />
<br />
//*Selección de canal para cada eje<br />
void MostrarAceleracion ()<br />
{<br />
word MuestraCNT;<br />
byte j,k;<br />
// Lectura de los datos de aceleracion<br />
ADCSC1 = 0x01; // Seleccionamos canal ADC1 (PTA1)<br />
x.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin x lo toma como muesta y lo convierte usando canal 1 de los adc's<br />
ADCSC1 = 0x08; // Seleccionamos canal ADC8 (PTA6) <br />
y.leyendo[muest] = (dword)(LeerAceleracion()); // El valor que contenga el pin y lo toma como muesta y lo convierte usando canal 8 de los adc's<br />
ADCSC1 = 0x09; // Seleccionamos canal ADC9 (PTA7) <br />
z.leyendo[muest] = (dword)(ReadAceleracion()); // El valor que contenga el pin z lo toma como muesta y lo convierte usando canal 9 de los adc's<br />
<br />
Luego que se convierte se envia a través del puerto serial usando SCISC1<br />
<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1764Acelerómetro - DEMOQE1282012-11-17T03:32:15Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:vista superior.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|400px|center|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1747Acelerómetro - DEMOQE1282012-11-17T03:08:34Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
[[Archivo:analog.jpg|200px|right|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:esquema.jpg|400px|right|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:vista superior.jpg|300px|center|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1724Acelerómetro - DEMOQE1282012-11-17T02:57:54Z<p>Manypuig: /* Tipos */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
[[Archivo:analog.jpg|200px|left|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:esquema.jpg|400px|right|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:vista superior.jpg|300px|center|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1714Acelerómetro - DEMOQE1282012-11-17T02:51:40Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|280px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
[[Archivo:analog.jpg|200px|left|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:esquema.jpg|400px|right|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:vista superior.jpg|300px|center|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1708Acelerómetro - DEMOQE1282012-11-17T02:47:30Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
[[Archivo:analog.jpg|200px|left|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:esquema.jpg|400px|right|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:vista superior.jpg|300px|center|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Archivo:Vista_superior.jpg&diff=1707Archivo:Vista superior.jpg2012-11-17T02:46:30Z<p>Manypuig: </p>
<hr />
<div></div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1706Acelerómetro - DEMOQE1282012-11-17T02:44:46Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
[[Archivo:analog.jpg|200px|left|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
[[Archivo:esquema.jpg|400px|right|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
* Modo Inactivo: Al colocar acelerómetro de 3 ejes en modo de suspensión. El usuario puede controlar mediante PTC4 para activar o desactivar el acelerómetro.<br />
[[Archivo:esquema.jpg|300px|right|thumb|Vista superior del acelerómetro.DEMOQE (Rev A)]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Archivo:Esquema.jpg&diff=1692Archivo:Esquema.jpg2012-11-17T02:33:13Z<p>Manypuig: esquematico general</p>
<hr />
<div>esquematico general</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1689Acelerómetro - DEMOQE1282012-11-17T02:29:39Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
[[Archivo:analog.jpg|200px|left|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
[[Archivo:analog.jpg|200px|left|thumb|Se puede observar el MMA7260Q (acelerómetro analógico) junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
[[Archivo:esquema.jpg|200px|right|thumb|En el esquema es notable observar que cada salida posee un filtro a manera de protección.DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Archivo:Analog.jpg&diff=1677Archivo:Analog.jpg2012-11-17T02:06:25Z<p>Manypuig: dispositivo fisico (acelerometro)</p>
<hr />
<div>dispositivo fisico (acelerometro)</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1674Acelerómetro - DEMOQE1282012-11-17T02:03:11Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
[[Archivo:analog.jpg|300px|left|thumb|Se puede observar el MMA7260Q junto con los jumpers de selección de rango (G-Sel1/G-Sel2).DEMOQE (Rev A)]]<br />
<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1438Acelerómetro - DEMOQE1282012-11-16T17:22:56Z<p>Manypuig: /* Acelerómetro Analógico */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php/Acelerómetro_-_DEMOQE128#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1436Acelerómetro - DEMOQE1282012-11-16T17:16:02Z<p>Manypuig: /* Configuración */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&action=submit#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Assembler<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov #$02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Lenguaje C<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1409Acelerómetro - DEMOQE1282012-11-16T15:58:34Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&action=submit#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital (263765030UA) 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1408Acelerómetro - DEMOQE1282012-11-16T15:57:40Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&action=submit#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital [[263765030UA]] 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baudvalor es una palabra q asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1406Acelerómetro - DEMOQE1282012-11-16T15:50:51Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo (MMA7260Q[http://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&action=submit#Referencias]) está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital [[263765030UA]] 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
<br />
/*<br />
SOPT1 = 0x23<br />
<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baud es una palabra que asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1401Acelerómetro - DEMOQE1282012-11-16T15:42:55Z<p>Manypuig: /* Acelerómetro Analógico */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo de bajo costo [[MMA7260Q]] está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital [[263765030UA]] 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
<br />
/*<br />
SOPT1 = 0x23<br />
<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baud es una palabra que asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1400Acelerómetro - DEMOQE1282012-11-16T15:38:33Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
El acelerómetro digital [[263765030UA]] 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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
<br />
/*<br />
SOPT1 = 0x23<br />
<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baud es una palabra que asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1394Acelerómetro - DEMOQE1282012-11-16T15:26:19Z<p>Manypuig: /* Acelerómetro Analógico */</p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.[http://wikitronica.labc.usb.ve/index.php/Aceler%C3%B3metro_-_DEMOQE128#Configuraci.C3.B3n]<br />
<br />
===Acelerómetro Digital===<br />
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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
<br />
/*<br />
SOPT1 = 0x23<br />
<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baud es una palabra que asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1392Acelerómetro - DEMOQE1282012-11-16T15:24:05Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
Este dispositivo está presente solo en la primera revisión del DEMOQE (Rev A),en este 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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones referente al rango de gravedad/sensibilidad sobre el dispositivo según lo demande la situación. Las distintas modalidades pueden observarse en el marco de configuración.<br />
<br />
===Acelerómetro Digital===<br />
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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
<br />
/*<br />
SOPT1 = 0x23<br />
<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baud es una palabra que asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuighttp://wikitronica.labc.usb.ve/index.php?title=Aceler%C3%B3metro_-_DEMOQE128&diff=1390Acelerómetro - DEMOQE1282012-11-16T15:18:07Z<p>Manypuig: </p>
<hr />
<div>[[Archivo:pruebita.gif|300px|right|thumb|Un Acelerómetro puesto a prueba en un Iphone. Ref: [http://www.google.co.ve/imgres?start=88&um=1&hl=es-419&safe=off&tbm=isch&tbnid=MXnKq9QAvTyT7M:&imgrefurl=http://voo-du.net/2012/03/05/the-iphone-steering-wheel/&docid=cH9Qqa9cdVT73M&imgurl=http://voo-du.net/wp-content/uploads/2012/03/gif_shop.gif&w=300&h=226&ei=SwOmUPufEum40QHb74CABA&zoom=1&iact=rc&dur=496&sig=114450985690802651824&page=5&tbnh=151&tbnw=224&ndsp=22&ved=1t:429,r:8,s:100,i:28&tx=75&ty=49&biw=1262&bih=624]]]<br />
<br />
[[Archivo:acelerómetro analog.jpg|300px|right|thumb|El MMA7260Q es un acelerómetro analógico de 3 ejes, disponible solo en las primeras revisiones del DEMOQE (Rev A). Ref:[http://www.google.co.ve/imgres?imgurl=http://www.freescale.com/files/graphic/product_freescale/MMA7260Q_3ARROW_LOWRES.jpg&imgrefurl=http://www.freescale.com/files/abstract/event/MMA7260QPK.html?tid%3Dtslp&h=964&w=1000&sz=89&tbnid=HHyfYgj7Jk-sqM:&tbnh=90&tbnw=93&zoom=1&usg=__Hwh_6G9CgCzmgnVoMTytO155a_4=&docid=rDmzD451bBP8UM&hl=es-419&sa=X&ei=TFSmUOnoMoPa8wSm94G4Dw&ved=0CCsQ9QEwAg&dur=2938]]]<br />
<br />
Un acelerómetro es un dispositivo para detectar el movimiento o giro que resulta mediante la acción de una fuerza (gravedad o fuerza resultante por movimientos continuos). Hay muchos tipos de acelerómetros y operan segun el numero de ejes que disponga, el básico dispone de 2 ejes (X,Y), los mas modernos y complejos operan en 3 ejes (X,Y,Z). Para todos los 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 (como la Wiimote) y en la mayoria de teléfonos celulares de última generación (Smartphones).<br />
<br />
==Tipos==<br />
El acelerómetro descrito en este artículo es una herramienta que dispone el módulo [[PE Micro: DEMOQE128|DEMOQE128]] que 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.<br />
<br />
===Acelerómetro Analógico===<br />
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 (Conversor Analógico-Digital) - MC9S08QE128|ADC]] antes de enviarse vía [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|serial]] a través del puerto de comunicaciones y ser visualizado en el [[TOOLKIT PC APPLICATIONS - DEMOQE128]], el usuario puede realizar ciertas modificaciones sobre el dispositivo según demande la situación.<br />
<br />
===Acelerómetro Digital===<br />
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 [[SCI (Interfaz de Comunicación Serial) - MC9S08QE128|interfaz de comunicación serial]], otra diferencia respecto a su antecesor es que ahora utiliza la interfaz [[I²C (Inter-Integrated Circuit) - MC9S08QE128|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.<br />
<br />
==Características==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
==Configuración==<br />
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 [[JUMPER SETTINGS|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.<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTG1<br />
!PTG2<br />
!Rango (g)<br />
!Sensibilidad (mV/g)<br />
|-<br />
|align="center"|0<br />
|align="center"|0<br />
|align="center"|1.5<br />
|align="center"|800<br />
|-<br />
|align="center"|0<br />
|align="center"|1<br />
|align="center"|2.0<br />
|align="center"|600<br />
|-<br />
|align="center"|1<br />
|align="center"|0<br />
|align="center"|4.0<br />
|align="center"|300<br />
|-<br />
|align="center"|1<br />
|align="center"|1<br />
|align="center"|6.0<br />
|align="center"|200<br />
|}<br />
<br />
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:<br />
<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 7 6 5 4 ¦ 3 2 1 0<br />
|}<br />
<br />
{| border="2" style="padding: 0.5em; border: 1px #aaa solid; border-collapse: collapse;background:#F9F9F9" cellpadding="4" <br />
|- valign="bottom" style="background:#F2F2F2"<br />
!PTGDD7<br />
!PTGDD6<br />
!PTGDD5<br />
!PTGDD4<br />
!PTGDD3<br />
!PTGDD2<br />
!PTGDD1<br />
!PTGDD0<br />
|}<br />
<br />
{| border="0" style="padding: 0.1em; border-collapse: collapse;background:#FFFFFF" cellpadding="4" <br />
|- valign="bottom" style="background:#FFFFFF"<br />
| 0 0 0 0 ¦ 0 0 0 0<br />
|}<br />
<br />
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:<br />
<br />
-----------------------------------------------------------------------------------------------------------------------------<br />
//*En Lenguaje C<br />
<br />
/*<br />
SOPT1 = 0x23<br />
<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
PTAPE = PTBPE = PTCPE = PTDPE = PTEPE = PTFPE = PTGPE = PTHPE = PTJPE = 0xFF; <br />
<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro <br />
<br />
PTGD = 0x00; // Puerto G inicialmente como salida<br />
PTGDD = 0x06; // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro.<br />
---------------------------------------------------------------------------------------------------------------------------------<br />
//*En Assemnbler<br />
/* Habilitamos pullups en todos los puertos del módulo principal<br />
mov #$ff,PTAPE<br />
mov #$ff,PTBPE<br />
mov #$ff,PTCPE<br />
mov #$ff,PTDPE<br />
mov #$ff,PTEPE<br />
mov #$ff,PTFPE<br />
mov #$ff,PTGPE<br />
mov #$ff,PTHPE<br />
mov #$ff,PTJPE<br />
<br />
//*En Lenguaje C<br />
/* Configuramos la sensibilidad con la que va a trabajar el acelerometro<br />
mov #$00,PTGD // Puerto G inicialmente como salida<br />
mov #$06,PTGDD // Cargar este valor para usar los bits 1 y 2 para trabajar a 6g como se indica en el cuadro<br />
------------------------------------------------------------------------------------------------------------------------------<br />
//*Configuración tasa de transferencia. Assembler<br />
mov 0x02,SCI1BDH // se ajusta la escala de transferencia se carga 2 de manera que 4Mhz/2x16 = 115000 bps aprox (<br />
<br />
//*Configuración tasa de transferencia. Lenguaje C<br />
void InicializarSCI(word baudvalor) {<br />
SCI1BD = baudvalor; //donde baud es una palabra que asigna el valor indicado en el comentario anterior y obtener 115000bps<br />
} //Incialización de la interfaz de comunicación serial fianlizada <br />
<br />
<br />
//*Transmisión serial (se transmitirá en este caso un string)<br />
void EnvMsg(char msg[]) {<br />
byte i=0;<br />
char sig_caracter;<br />
<br />
SCI1C2 = 0x08; // habilitamos la transmisión especificamante el registro TE<br />
sig_caracter = msg[i++];<br />
while(sig_caracter != 0x00) { // mientras hayan caracteres realizar<br />
while(!SCI1S1_TDRE){} //mientras que el registro de transmisión no este vacío (Transmit data register empty flag) hacer:<br />
SCI1D = (byte) sig_caracter; // transmitir caracter y verificar si la bandera de transmisión ha cambiado a vacío TRDE=1<br />
sig_caracter = msg[i++];<br />
} //fin while del SCI1D para transmitir<br />
} //final de transmisión<br />
<br />
===Simulación===<br />
[[Archivo:interfaz.png|450px|right|thumb|La interfaz compone las herramientas fundamentales de visualización para verificar el comportamiento del acelerómetro.]]<br />
<br />
Luego de realizar las configuraciones y realizar un programa básico para su correcto funcionamiento, el usuario puede utilizar una aplicación adicional denominada [[ TOOLKIT PC APPLICATIONS - DEMOQE128|DEMOQE Accelerometer Demo application]] en la que puede observar gráficamente el comportamiento del acelerómetro mientras el usuario interactua con el dispositivo.<br />
<br />
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.<br />
<br />
La interfáz de este programa se describe básicamente en tres secciones:<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
*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.<br />
<br />
[[Archivo:scope.png|300px|center|thumb|Las interacciones que experimenta el acelerometro es trazada en cada eje al mismo tiempo.]]<br />
<br />
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 [[JUMPER SETTINGS|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".<br />
<br />
==Ficha técnica==<br />
El acelerómetro que dispone el DEMOQE128 es el [[MMA7260Q]] y tiene las siguientes especificaciones técnicas:<br />
<br />
* Consumo promedio en corriente de 500μA<br />
* Sensibilidad seleccionable (1.5, 2, 4 y 6g)<br />
* Modalidad de espera de 3μA<br />
* Dimensiones de 6mm x 6mm x 1.45mm QFN<br />
* Alta sensibilidad en niveles de voltajes (800mV/g g@1.5)<br />
* Acondicionamiento de señales integrado con un filtro pasabajo trabajando conjuntamente con el dispositivo.<br />
* Capacidad para operar a baja tensión (2,2v a 3,6v)<br />
<br />
==Referencias==<br />
<br />
[http://www.freescale.com/files/microcontrollers/doc/user_guide/DEMOQE128UM.pdf Manual de usuario DEMOQE128 (Rev A)]<br />
<br />
[http://www.pemicro.com/downloads/main_downloads_temp/201211151052528591483/DEMOQE_User_Manual_1_08.pdf Manual de usuario DEMOQE128 (Rev C)]<br />
<br />
[http://hercules.uni-mb.si/projects/AVMA/dokumentacija/MMA7260Q.pdf Datasheet del acelerómetro MMA7260Q]<br />
<br />
==Enlaces externos==<br />
*[http://www.youtube.com/watch?v=wNJZNUo4oJE Aplicación a la robótica]<br />
*[http://www.youtube.com/watch?v=rZ7lGdV0JzE&feature=plcp Ajuste en un DEMOQE128 (rev A)]<br />
<br />
<br />
[[Categoría:DEMOQE128]]</div>Manypuig