Laboratorio de Sistemas Electrónicos Digitales

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Laboratorio de Sistemas Electrónicos Digitales"

Transcripción

1 Laboratorio de Sistemas Electrónicos Digitales ROBOT CON CONTROL REMOTO Y CÁMARA DE VÍDEO INTEGRADA AUTORES PABLO RODRÍGUEZ CABELLOS EUGENIO SILLERO HERRERO

2 ÍNDICE. INTRODUCCIÓN OBJETIVOS DESCRIPCIÓN DEL ROBOT...7. PROTOCOLOS DE COMUNICACIONES..... EL NIVEL FÍSICO: ENLACE RADIOFRECUENCIA..... NIVEL DE ENLACE: LAPR PROTOCOLO DE COMANDOS ÓRDENES DE MOTORES ÓRDENES DEL SISTEMA ÓRDENES DE IMAGEN PROTOCOLO DE DATOS ESTADO DEL ROBOT RECOMPONIENDO LA IMAGEN.... TARJETA DE CONTROL DE MOTORES..... DESCRIPCIÓN DEL HARDWARE ALIMENTACIÓN SENSORES DRIVER DE MOTORES PROCESADO DESCRIPCIÓN DEL SOFTWARE EQUIVALENCIAS Y VECTORES DE INTERRUPCIÓN RUTINA DE RESET MODO AUTOMÁTICO MODO MANUAL INTERRUPCIONES SUBRUTINAS...7. TARJETA DE CONTROL PRINCIPAL DESCRIPCIÓN DEL HARDWARE ALIMENTACIÓN CONTROL DE ORIENTACIÓN DE LA CÁMARA INTERFAZ DE LA CÁMARA PROCESADO DESCRIPCIÓN DEL SOFTWARE EQUIVALENCIAS Y VECTORES DE INTERRUPCIÓN RUTINA DE RESET RUTINAS DE CONFIGURACIÓN DE CÁMARA EL PROGRAMA PRINCIPAL ADQUISICIÓN DE DATOS LAS RUTINAS DE ENLACE EL NIVEL FÍSICO HOST DE CONTROL REMOTO PLACA DE CONTROL EL SOFTWARE PAQUETE COM.THEEXBTEAM.COMM PAQUETE COM.THEEXBTEAM.ROBOTS APÉNDICE A: INSTALACIÓN DEL SOFTWARE

3 6.. INSTALACIÓN DEL ENTORNO JAVA INSTALACIÓN DE LAS LIBRERÍAS JAVAX.COMM INSTALACIÓN DE LA APLICACIÓN DE CONTROL INSTALACIÓN DE JAKARTA-ANT APÉNDICE B ESQUEMÁTICOS DE LAS PLACAS APÉNDICE F: AVISOS LEGALES PAQUETES COM.THEEXBTEAM.* LIBRERÍAS JAVAX.COMM TERCERAS PARTES BIBLIOGRAFÍA REFERENCIAS BIBLIOGRÁFICAS (POR HACER) HOJAS DE CARACTERÍSTICAS Y RECURSOS EN LA RED DIRECCIONES DE FABRICANTES Y PROVEEDORES

4 ÍNDICE DE ILUSTRACIONES Figura Vista general del prototipo en madera del robot...8 Figura Figura Figura Vista lateral del robot...8 Detalle de la batería del robot...9 Tarjeta de control del robot y radio enlace...9 Figura 5 Frontal del robot con los bumpers de colisión...0 Figura 6 Parte inferior del robot.... Figura 7 Detalle del bastidor delantero... Figura 8 Figura 9 Figura 0 Detalle de los sensores CNY70 del robot... Tarjeta de control de motores con todos los sensores conectados... Comunicación serie un bit de arranque, 8 de datos y uno de parada.... Figura Módulo de radio frecuencia WIZ--SML-IA de Auriel...5 Figura Esquema de las tramas de comandos....7 Figura Esquema de las tramas de ACK de comando....7 Figura Esquema de las tramas de estado...8 Figura 5 Esquema de las tramas de píxeles de imágenes....8 Figura 6 Detalle de la trama de datos de estado... Figura 7 Gráfico del proceso de cálculo de la fila y columna de imagen.... Figura 8 Esquema de la tarjeta de control de motores.... Figura 9 Sistema de alimentación de la tarjeta de control de motores....5 Figura 0 Polarización de los sensores CNY Figura Figura Figura Figura Conexión de los sensores CNY Polarización de los bumpers...7 Conexión de los bumpers...7 Esquema del driver de motores...8 Figura 5 Conexiones del microcontrolador....9 Figura 6 Interfaz del programación AVR...0 Figura 7 Circuito de reset....0 Figura 8 Figura 9 Lógica de adaptación para la interrupción mecánica... Esquema de la tarjeta de control principal...5 Figura 0 Sistema de orientación de la cámara Figura Cámara digital M68FP

5 Figura Interfaz de la tarjeta principal con la cámara Figura Asignación de terminales de la cámara digital al bus de datos...58 Figura Conexiones del microcontrolador Figura 5 Detalle del registro de estado COMM...69 Figura 6 Esquema de funcionamiento de los codificadores de enlace...7 Figura 7 Placa de control del host...8 Figura 8 Detalle del adaptador MAX...8 Figura 9 Detalle de la conexión con la tarjeta de radio frecuencia...8 Figura 0 Figura Figura LEDs de la placa de control...8 Pines de contacto de la tarjeta de radiofrecuencia WIZ-- SML-IA...85 Diagrama UML del paquete com.theexbteam.comm...87 Figura Diagrama UML del paquete com.theexbteam.robots...89 Figura Figura 5 Aspecto de la interface gráfica de usuario...9 Logotipo del lenguaje de programación Java de Sun Microsystems...9 Figura 6 Logotipo del proyecto APACHE ANT

6 ÍNDICE DE TABLAS Tabla. Pila de protocolos.... Tabla. Configuración de velocidad de las tarjetas WIZ-SML-IA....5 Tabla. Comandos de motores...9 Tabla. Comandos del sistema...0 Tabla 5. Comandos de imagen

7 . INTRODUCCIÓN.. OBJETIVOS La práctica se compone de un robot motorizado con dos servomotores, manipulados para funcionar como motores de continua con caja reductora, y un sistema de adquisición de vídeo usando una cámara CCD de 8x8 píxeles monocroma. El sistema está controlado remotamente por un PC y una aplicación que recibirá las imágenes capturadas por la cámara del robot y transmitirá las órdenes de desplazamiento al robot. El enlace se realiza mediante una tarjeta de radiofrecuencia halfduplex de 00 kbps de la casa AURºEL. El enlace se controla desde un PC por el puerto serie, estableciendo una comunicación directa con el robot. El robot está gobernado por una tarjeta con un microcontrolador ATMEL AT90S855 que se comunica con el PC del usuario, adquiere datos desde la cámara y puede controlar otra tarjeta similar que conforma el sistema de control motriz. Esta segunda tarjeta hace funcionar al robot como un seguidor de línea al incorporar los sensores necesarios. Sin embargo, el sistema motriz puede ser controlado por el usuario en un modo de ejecución especial. La microcámara que se emplea es el modelo M68FP Artificial Retina de Mitsubishi Electric o similares. Se orienta mediante un servomotor a pesar de que el sistema tiene capacidad para controlar dos. El objetivo buscado es la creación de un robot multifunción, fácilmente reprogramable. Para ello se ha querido desarrollar una plataforma multiuso con varios modos de ejecución, así cómo unas librerías software para la comunicación vía radio y control del sistema... DESCRIPCIÓN DEL ROBOT Como se ha descrito antes el robot consta de distintas placas que se montan sobre una estructura común. Se ha buscado crear un soporte robusto y compacto para albergar los distintos sistemas del robot

8 La estructura es de madera por su fácil manejo y poco peso. En la parte superior del robot se colocan la batería, la tarjeta de radio, la tarjeta principal y el sistema de la cámara. En la parte inferior se colocan los motores y soportes necesarios así como la tarjeta de control de motores y un bastidor en el que se hayan los sensores CNY70 encargados de la detección de la línea. Figura Vista general del prototipo en madera del robot Figura Vista lateral del robot - 8 -

9 La batería utilizada es una batería típica para aplicaciones de radiocontrol. Es una batería de Ni-Ca con una tensión nominal de 7,V. Se ha elegido esta batería por su tamaño y por su durabilidad. Proporciona potencia suficiente para alimentar todos los sistemas del robot. Figura Detalle de la batería del robot La tarjeta de radio, la cámara y la tarjeta de control principal forman el cerebro del robot y se describen intensivamente en otros apartados. Ocupan la parte superior del robot para facilitar el acceso a ellas. La tarjeta de control tiene varias interfaces. A parte de los distintos conectores para comunicarse con la tarjeta de radio, la de control de motores y la cámara dispone de una interfaz de programación integrada. Figura Tarjeta de control del robot y radio enlace - 9 -

10 También dispone de unos LEDs de indicación y un pulsador de reset. Los LEDs se utilizan para notificar que la alimentación está encendida, que la programación del microcontrolador está en curso o que se ha activado una traza de depuración. En la parte superior delantera también se colocan los sensores de detección de colisión frontal. Figura 5 Frontal del robot con los bumpers de colisión En la parte inferior se colocan los motores sujetos por abrazaderas. Son dos servomotores manipulados para funcionar como motores de corriente continua con caja reductora. Los dos motores junto con una rótula adherida a un zócalo forman el sistema motriz y de apoyo de robot

11 Figura 6 Parte inferior del robot. En la parte inferior también se colocan los sensores de colisión trasera y los de detección de línea. Los sensores de detección de línea se colocan en un bastidor ajustable en altura mediante unas gomas. Esto se debe a que estos sensores tienen que estar cerca de la superficie a explorar para proporcionar medidas fiables. Además el bastidor impide que una luz ambiente excesiva induzca ruido en las lecturas. Figura 7 Detalle del bastidor delantero La colocación de los sensores se hace de forma que haya dos sensores centrales que deben estar al mismo tiempo sobre la línea. Los dos sensores laterales se colocan ligeramente retrasados con respecto a los otros. Con esta colocación se consigue que si el robot se sale en una - -

12 curva por la inercia los sensores laterales sigan detectando la línea. En este caso el robot deberá intensificar el giro para volver a la situación deseada. Al estar estos dos sensores retrasados se maximiza la probabilidad de que sigan detectando la línea si el robot se sale en una cuerva. Figura 8 Detalle de los sensores CNY70 del robot. La tarjeta de control de motores se coloca en el espacio libre bajo el robot. Consta de dos puertos de sensores, uno para los CNY70 (sensores de línea) y otro para los bumpers (sensores de colisión). También dispone de puertos para los motores y para comunicarse con la tarjeta principal. Los otros dos puertos son el de programación y el de expansión. Este último no se usa en esta aplicación y el primero es exactamente igual al de la tarjeta principal. Figura 9 Tarjeta de control de motores con todos los sensores conectados En cuanto a la interfaz con el usuario se refiere, a los LEDs de indicación de la otra tarjeta se añade uno más. También incorpora un nuevo pulsador, el de marcha. El nuevo LED indica que el sistema motriz se ha iniciado y está listo para arrancar. Cuando se enciende este LED el - -

13 robot espera a que el usuario pulse el botón de marcha para arrancar. El sistema aplica un retardo antes de moverse para que el usuario pueda apartar la mano. - -

14 . PROTOCOLOS DE COMUNICACIONES Se han definido dos protocolos de comunicaciones: uno para cada una de las funciones principales del sistema, el control remoto del robot y el envío de los datos al control remoto. La pila de protocolos empleada es la siguiente: Niveles RESTO ENLACE FÍSICO Protocolos END TO END APPLICATION LAPR RS-/TTLoRF Tabla. Pila de protocolos. Dado que solamente existe comunicación con una única unidad remota y un único host controlador no hace falta especificar ningún sistema de direccionamiento. El nivel de enlace lleva a cabo las tareas de entramado, separación de los distintos protocolos de comunicaciones y en el caso del protocolo de comandos, asegurar que todos los datos enviados llegan a su destino, tal como se detalla seguidamente... EL NIVEL FÍSICO: ENLACE RADIOFRECUENCIA La comunicación se lleva a cabo mediante una interface serie con ocho bits de datos, uno de inicio y otro de parada a través de un enlace de radiofrecuencia. Figura 0 Comunicación serie un bit de arranque, 8 de datos y uno de parada. Este enlace lo realizan las tarjetas Auriel WIZ--SML-IA y exige una fragmentación de datos de 96 bytes por paquete, brindando un canal de comunicaciones half-duplex de cadencia 00 kbps. Emplea la banda - -

15 libre de los MHz para mandar los datos mediante una modulación - FSK. Figura Módulo de radio frecuencia WIZ--SML-IA de Auriel La interface entre la tarjeta de radiofrecuencia y el host destinatario se realiza a una tasa binaria configurable entre los 9600 bps y los 500 bps, siendo esta última cifra la empleada en nuestro sistema dada la alta tasa de datos que se envían desde la unidad remota hacia el host de control. La tasa binaria se configura mediante los switches y según la tabla siguiente: DS DS VELOCIDAD (bps) Abierto Abierto 9600 Abierto Cerrado 900 Cerrado Abierto Cerrado Cerrado 500 Tabla. Configuración de velocidad de las tarjetas WIZ-SML-IA. La tarjeta de radiofrecuencia se pone automáticamente a modular la información a transmitir transcurrido un tiempo igual a,5 veces el período de byte, T: T = 8 T = + v b Para nuestro caso, dado que transmitimos a una cadencia de 500 bps, resulta: T 0µs - 5 -

16 Sin embargo, según indican las hojas de características del fabricante, el mínimo tiempo de guarda es de 500µs, que es el T que se usará. Finalmente, la tarjeta de radiofrecuencia tarda un tiempo T mod en modular un paquete de N bytes igual a: T =.6ms + ( N + ) 0.56ms, mod durante el cual no se puede mandar ningún dato a la tarjeta, pues ésta los descarga automáticamente. El fabricante recomienda guardar como precaución unos pocos milisegundos más antes de mandar el siguiente paquete de datos, por lo que se ha tomado un valor de tiempo de seguridad adicional de ms. El módulo WIZ-SML-IA proporciona además capacidad de detección de errores, activando el switch, entrega únicamente los datos si éstos han pasado satisfactoriamente el checksum al que son sometidos. Para nuestro caso, hemos usado esta característica para evitar sobrecargar el microprocesador principal... NIVEL DE ENLACE: LAPR La información que se debe transferir a través del enlace radiofrecuencia puede ser de dos tipos: órdenes o comandos y datos de estado o imágenes. Dado que sólo se dispone de un único canal se precisa de una multiplexación en el tiempo para poder transmitir toda esta información y no tener problemas de mala interpretación. Por ello se define el protocolo de enlace LAPR (Link Access Protocol for Robots.) Este protocolo ofrece dos tipos de servicio, cada uno orientado a cubrir las necesidades de envío de comandos o de datos. Las tramas de bits se transmiten con un separador de trama, que es el byte 00 (6 en decimal) seguido de la cabecera identificadora de servicio, la cabecera de control y los datos a enviar. Cada servicio se identifica a través de un único bit LSAPID (Link Service Access Point Identifider.) Así: - 6 -

17 LSAPID 0 Servicio de Comandos. Este servicio es un servicio orientado a conexión fiable y confirmado. Se emplea para transmitir desde el host de control a la unidad remota las órdenes, y por ello cada orden es confirmada por el robot enviando una trama de ACK de Comando: Envío de Comando: 00 LSAPID 0 C FR ID COMANDO Byte 0 Byte Byte Figura Esquema de las tramas de comandos. Para enviar un comando, la cabecera de control deberá incluir su bit más significativo puesto a cero, seguido de cinco bits que indican el identificador de trama (C FR ID.) El siguiente byte es el comando a transmitir. Los dos últimos bytes, al ser datos, son codificados para evitar que cadenas de la forma 00 se confundan con separadores de trama, pudiendo llegar a ocupar, a nivel físico bytes el envío (sin contar con los bits de arranque y parada.) Así, la ventana de transmisión de comandos queda con un tamaño de 6 comandos, permitiendo ráfagas de hasta 6 órdenes. En la implementación del software de control, la ventana no se desplaza hasta haber recibido los ACKs de todos los comandos recibidos. Este servicio reenvía automáticamente los comandos no confirmados hasta que sean confirmados, o bien se envíe el comando reservado 0xFF de sincronización (función de inicio/sincronización de la conexión.) Envío de ACK de Comando: 00 LSAPID C FR ID Byte 0 Byte Figura Esquema de las tramas de ACK de comando. Para confirmar un comando, el servicio 0 de enlace manda automáticamente una trama compuesta por el separador de trama, el LSAPID 0 y en la cabecera de control, el bit más significativo (ACK) - 7 -

18 activo, seguido de los cinco bits del ID de trama. Los ACKs se envían siempre que, o bien se haya recibido un comando con FRAME ID igual al esperado o bien se haya recibido un comando ya recibido anteriormente, y que por tanto, el hueco de la ventana de recepción correspondiente a su FRAME ID contenga dicho comando. LSAPID Servicio de Datos. Este servicio es un servicio no orientado a conexión fiable y no confirmado. Independientemente de que el host remoto esté escuchando, el robot transmite continuamente el estado de la unidad y, salvo orden expresa del host de control, los datos de la cámara. Como se puede transmitir tanto el estado como píxeles de la cámara se sigue el siguiente criterio: Envío de Estado: 00 LSAPID 0 IHB GL Byte 0 Byte Figura Esquema de las tramas de estado Donde se disponen de seis bits para los datos de estado. En el apartado Protocolo de datos se explica detalladamente el uso de cada uno de ellos. Envío de Píxeles de Imágenes: 00 LSAPID I ROW# PIXELES( ) Byte 0 Byte Byte, Figura 5 Esquema de las tramas de píxeles de imágenes. La cabecera de control incluye en sus seis bits menos significativos los seis menos significativos de la fila a la que pertenecen los píxeles que se reciben. La recomposición de la imagen se detalla en el apartado Protocolo de datos... PROTOCOLO DE COMANDOS La implementación del protocolo de comandos destina un byte para el envío de comandos, permitiendo el uso de hasta 56 órdenes distintas. Las órdenes se dividen en tres tipos: mecánicas o de motores, de sistema o de imagen

19 ... ÓRDENES DE MOTORES Las órdenes de motores se enmascaran con los dos bit más significativos puestos a cero (00xxxxxx.) Se han definido catorce órdenes de movimiento distintas que recogen todas las posibilidades que se pueden realizar con los dos motores principales del robot. Estas órdenes, con la máscara 0000xxxx se envían directamente desde la tarjeta de control principal del robot hacia la tarjeta de control de motores, que automáticamente pasa al modo manual. Asimismo, la orden 0 = 0x0E, de MODO_AUTOMÁTICO no se envía a la tarjeta de control de motores. En vez de ello, lo que se hace es poner el bit MODE (PC5) a 0 (automático.) El conjunto de comandos de motores es el siguiente: Nombre HEX Descripción Recto 0x00 Desplazamiento hacia delante. Giro Derecha 0x0 Gira a la derecha. Giro Izquierda 0x0 Gira a la izquierda. Marcha Atrás 0x0 Desplazamiento hacia atrás. Desvío Derecha 0x0 Desplazamiento hacia delante y la derecha. Desvío Izquierda 0x05 Desplazamiento hacia delante y la izquierda. Gira Derecha Trasero 0x06 Desplazamiento hacia atrás y la derecha. Gira Izquierda Trasero 0x07 Desplazamiento hacia atrás y la izquierda. Acelerar 0x08 Aumentar la velocidad global. Reducir 0x09 Decrementar la velocidad global. Busca Línea Y Para 0x0a Busca la línea y para los motores. Rota Derecha 0x0b Rotación (mueve dos motores) a la derecha Rota Izquierda 0x0c Rotación (mueve dos motores) a la izquierda No Definido 0x0d No definido Modo Automático 0x0e Pasa a modo automático de seguimiento de líneas. Paro Total 0x0f Paro completo de los motores Tabla. Comandos de motores Todas las órdenes con máscara 00XXyyyy, con XX distinto de 00 e y 0 ó indistintamente no son procesadas actualmente, pero se pueden implementar nuevos movimientos del robot

20 ... ÓRDENES DEL SISTEMA Actualmente existen únicamente dos comandos de sistema a parte del comando reservado 0xff: Nombre HEX Descripción Ping 0xC Petición de respuesta, para comprobar si la unidad remota responde. System Reset 0xCF Reset completo de la tarjeta de control del robot. RESERVADO 0xFF Conexión interna, no permitido su envío. Tabla. Comandos del sistema Las órdenes de sistema se enmascaran con los dos bits más significativos puestos a uno.... ÓRDENES DE IMAGEN Las órdenes de imagen se emplean para controlar la cámara digital basada en el chip M68FP de Mitsubishi. Con estos comandos se puede iniciar o detener la captura de imágenes, cambiar los modos de captura o alterar el tiempo de exposición. También gestiona los movimientos los servos de la cámara para orientar la vista del robot. Se emplea la máscara 0xxxxxx para diferenciarlos del resto de comandos. Nombre HEX Descripción Mira Al Frente 0x0 Centra la vista al frente Mira a la derecha 0x Gira el servo horizontal a la derecha Mira a la izquierda 0x Gira el servo horizontal a la izquierda Mira arriba 0x Gira el servo vertical hacia arriba Mira abajo 0x Gira el servo vertical hacia abajo Inicia captura Activa la señal START de inicio de Reset cámara captura. Reinicia la cámara con los valores por defecto de la misma. Carga Registros 0x59 Carga los ocho registros de configuración de la cámara. Fija Registro xxx 0x50-57 Fija como registro activo el contenido en los tres bits menos significativos. Fija Dato Bajo xxxx 0x70-7f Fija los cuatro bits menos significativos del registro activo como los cuatro bits menos significativos del comando Fija Dato Alto xxxx 0x60-6f Fija los cuatro bits más significativos del registro activo como los cuatro bits menos significativos del comando. Tabla 5. Comandos de imagen - 0 -

21 Las primeras cinco órdenes se envían directamente al microcontrolador de servos basado en un PIC6F8. Se envían a través de cuatro pines, soportando el PIC6F8 ampliaciones de funciones con el puerto de expansión de cuatro contactos. Para cargar un registro de la cámara con un byte dado, primeramente se deberá fijar el registro activo mediante Fija Registro xxx. Seguidamente, se cargan, en orden indistinto la parte baja y la parte alta del byte a cargar mediante Fija Dato Bajo xxxx y Fija Dato Alto xxxx. Finalmente se manda el comando Carga Registros para que se actualicen todos los registros de la cámara... PROTOCOLO DE DATOS... ESTADO DEL ROBOT Los seis bits menos significativos del segundo byte de la trama de datos de estado contienen distintos parámetros que monitorizan el estado del robot: 00 LSAPID 0 IHB GL Byte 0 Byte Figura 6 Detalle de la trama de datos de estado IHB: bit 6, se pone a uno cuando el robot está transmitiendo las filas mayores o iguales a 6 (6-7) de la imagen. Se emplea en el gestor de imágenes para determinar la fila en la que almacenar los datos de píxeles recibidos. 5-: No usados en la implementación actual GL: bit 0, indica cuando está a uno que los sensores CNY70 de la tarjeta controladora de motores han detectado la presencia de la línea guía.... RECOMPONIENDO LA IMAGEN El software de gestión de imagen deberá encargarse de la tarea de recomposición de la imagen a partir de los píxeles que reciba del robot. - -

22 Las tramas de datos de imagen son de longitud variable de como mucho 96 bytes, y la cabecera contiene los seis bits menos significativos de la fila a la que pertenecen los píxeles recibidos. La cámara digital tiene una resolución de 8x8 píxeles y cada uno de ellos se lee con una resolución de 56 niveles de gris. Al recibir los datos, el software de gestión de cámara deberá ir alojando consecutivamente los píxeles que reciba a partir de la posición de columna cero y hasta alcanzar la posición de columna 7. La fila en la que deberá guardar los datos se calcula tomando el bit de estado IHB como bit más significativo y sumándole los seis bits menos significativos contenidos en la cabecera de la trama de imagen: 6 n fila = IHB + CABECERA [ 5..0] Para evitar problemas de desincronización entre el píxel mandado por la unidad remota y el software de control se envía siempre que se inicia la trama la información necesaria para poder determinar si se ha pasado a enviar la información de la siguiente fila. FILA COLUMNA FILA COLUMNA LSAPID I ROW# Byte * 6 LSAPID 0 IHB GL Byte Aplicación de control Figura 7 Gráfico del proceso de cálculo de la fila y columna de imagen. Finalmente, aunque la aplicación de control reciba más datos, si alcanza la columna 7, pasará automáticamente a la siguiente línea, descartando todos los datos que reciba hasta que vuelva a - -

23 encontrar un inicio de trama de imagen con un valor de línea de imagen válido. Todas estas tareas las realiza de forma automática la clase ImageCore del paquete com.theexbteam.robots que se describe en la parte de la aplicación de control remoto. - -

24 7 9 Robot con control remoto y cámara de vídeo integrada. TARJETA DE CONTROL DE MOTORES.. DESCRIPCIÓN DEL HARDWARE Esta tarjeta fue creada con la idea de independizar los sistemas motrices y de detección de línea del control de la cámara y de la tarjeta de radio. Esta tarjeta es como la de cualquier microrobot seguidor. Se pueden diferenciar cuatro bloques en la tarjeta, alimentación, sensores, driver de motores y procesado. El esquema de la tarjeta es el que muestra la figura. D READY R8 70 D DEP R 70 J5 PWR_IN + C 0uF GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE MARCHA MOT_DIR0 MOT_DIR MOT_DIR0 MOT_DIR MOSI MISO SCK XTAL XTAL RESET ,V U ICP RST XTAL XTAL VCC C 00nF PA0/AD0 PA/AD PA/AD PA/AD PA/AD PA5/AD5 PA6/AD6 PA7/AD7 GND U PB0/T0 PB/T PB/AIN0 PB/AIN PB/SS PB5/MOSI PB6/MISO PB7/SCK VIN L7805/TO0 VOUT GND AT90S855 PC0/A8 PC/A9 PC/A0 PC/A PC/A PC5/A PC6/A PC7/A5 C 00uF PD0/RXD 0 PD/TXD PD/INT0 PD/INT PD PD5/OCA 5 PD6/WR 6 PD7/RD 7 0 OCB ALE 9 + C 00nF CNY CNY CNY CNY BUMPER BUMPER BUMPER BUMPER EXP EXP MODE INT_MEC BUMP_TRAS EN_MOT EXP EXP EN_MOT J PWR_OUT C7 5pF Y R 70 R D PWR_ON R 70 D PROG D DIODO_RST INT_MEC XTAL 8 8MHz 0K RESET UC XTAL C8 5pF MOSI RST SCK MISO MOT_DIR0 MOT_DIR MOT_DIR0 MOT_DIR EN_MOT EN_MOT +7,V C9 + 00uF J6 PROGRAMADOR UA UB U A A A A /EN /EN VCC VCC L9 Y 6 Y Y Y RESET C 00nF J7 MOT D7 N00 R 0K J6 MOT SW RESET R5 K D9 N00 D8 N00 N00 +7,V D N00 +7,V D0 MARCHA C 00nF +7,V C0 00nF D N00 D6 N00 R6 0K SW MARCHA R7 K D5 C6 00nF N00 +7,V J J GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE R K J TARJ_PPAL BUMP_TRAS EXP EXP EXP EXP UD J EXPAN BUMPER BUMPER R J8 0 CNY R 7K CNY R6 J0 0 7 R J9 0 CNY R5 7K CNY R8 J 0 BUMPER R0 0K BUMPER R 0K BUMPER J BUMPER BUMPER R9 0K BUMPER R0 0K BUMPER J5 BUMPER 7 CNY R7 7K CNY CNY R9 7K CNY Title Tarjeta de control de motores para Robot LSED Size Document Number Rev A.0 Date: Monday, June, 00 Sheet of Figura 8 Esquema de la tarjeta de control de motores. Para un mayor detalle, véase la figura del apéndice B.... ALIMENTACIÓN Este es un bloque fundamental pues la alimentación tiene que estar muy estabilizada porque los motores son una fuente de ruido impulsivo en las líneas de alimentación. La estabilización se consigue separando la alimentación de los motores de la del resto de la tarjeta. - -

25 Los motores se alimentan directamente desde la batería de 7,V. El resto de la tarjeta necesita una tensión de alimentación de 5V, lo que se consigue mediante el regulador L7805. La estabilización se realiza filtrando la alimentación con unos condensadores de capacidad elevada. Los filtrados críticos se han de realizar antes y después del regulador y en la entrada de potencia de los drivers de motores. Con este montaje el ruido impulsivo no afecta al correcto funcionamiento del sistema. Los motores toman la carga almacenada en los condensadores en los picos de tensión y no de la batería por lo que se evitan caídas de tensión en la alimentación de a lógica de control. J5 PWR_IN + C 0uF +7,V U C 00nF VIN L7805/TO0 VOUT GND C 00uF + C 00nF J PWR_OUT D PWR_ON R 70 Figura 9 Sistema de alimentación de la tarjeta de control de motores.... SENSORES El robot ha de ser capaz de orientarse automáticamente. Para la orientación deberá seguir una línea negra sobre un fondo blanco. Adicionalmente se han de poder detectar posibles colisiones con obstáculos. Para poder seguir la línea se utilizan unos sensores de infrarrojos tipo CNY70. Estos sensores integran un fotodiodo que emite radiación infrarroja y un fototransistor que se polariza en función de la radiación recibida. Si el sensor está sobre una superficie negra la radiación emitida por el fotodiodo no se refleja y el fototransistor está en situación de corte. Por el contrario, si el sensor se posiciona sobre una superficie blanca el fototransistor capta la radiación emitida por el fotodiodo. La red para poder usar estos transistores es muy simple. Se ha de polarizar el fotodiodo para que emita siempre con una - 5 -

26 potencia lo suficientemente alta para que la radiación pueda ser detectada. El fototransistor también se ha de polarizar para que este en la zona activa o en corte dependiendo de la luz incidente en la base. Los niveles entregados por el transistor han de ser compatibles con la lógica empleada. El esquema de polarización es el que se muestra en la siguiente figura. R 0 R 7K CNY70 Figura 0 Polarización de los sensores CNY70. Con esta red se satisfacen los requisitos mencionados. Hay que tener cuidado al conectar los sensores a la placa. El usuario se ha de cerciorar de que la conexión al molex verifica el esquema de la siguiente. OUT R 7K R 0 J CNYx CNY70 Figura Conexión de los sensores CNY70. La lectura del valor del CNY por el microcontrolador se realiza por la línea. Un valor 0 indica que el sensor está sobre la línea negra, un valor indica todo lo contrario. Como medida de seguridad, para evitar dañar el sensor o lecturas erróneas, las conexiones se han de aislar bien. En nuestro caso se usó un aislante termoretráctil para aislar cada una de las patas del sensor de las demás. También hay que destacar que los - 6 -

27 sensores se colocan en una pieza de madera que no deja pasar la luz. Esto es importante porque contribuye a eliminar la luz ambiental haciendo las lecturas más fiables. Para poder detectar obstáculos en el camino se usaron unos sensores tipo bumper. Estos elementos no son en realidad sensores sino pulsadores en un encapsulado especial. La red de polarización será por lo tanto muy simple y se corresponde a la mostrada en la siguiente figura. R 0K BUMPER NO NC Figura Polarización de los bumpers. La conexión con los molex ha de ajustarse el esquema que se muestra a continuación para que las lecturas sean correctas. J R OUT 0K BUMPER NO NC BUMPERx Figura Conexión de los bumpers.... DRIVER DE MOTORES La tarjeta de control incluye el circuito de potencia necesario para atacar el sistema motriz del robot. Los dos motores que conforman este sistema se excitan a través de un circuito denominado puente en H. Este tipo de circuitos permiten que los niveles lógicos de la tarjeta controlen las grandes corrientes que circulan por los devanados de los motores. Se ha optado por un puente en H integrado que permite la rotación en ambos sentidos de los dos motores, el L9. La configuración elegida hace que cada motor se controla con tres bits, dos para seleccionar el sentido de giro y otro para arrancarlo. Los - 7 -

28 bits para seleccionar el sentido de giro pueden parar el motor si toman el mismo valor. Si toman distintos valores estos bits los motores girarán en distintos sentidos. Para la misma combinación cada uno de los motores gira en sentidos contrarios debido a su orientación. El tercer bit se conecta a uno de los canales PWM del microcontrolador para poder controlar la velocidad de giro. Este control se realiza variando el ciclo de trabajo del PWM. El esquema de este bloque es el de la figura siguiente. U L9 MOT_DIR0 MOT_DIR MOT_DIR0 MOT_DIR EN_MOT EN_MOT +7,V C9 + 00uF A A A A /EN /EN VCC VCC Y Y Y Y 6 J7 MOT J6 MOT D9 N00 N00 D N00 +7,V D0 +7,V C0 00nF D N00 D6 N00 D5 C6 00nF N00 +7,V D7 N00 D8 N00 +7,V Figura Esquema del driver de motores. En el esquema se puede observar que la lógica se alimenta a 5 voltios mientras que los devanados de los motores se alimentan directamente de las baterías. Se ha comentado ya que los motores producen un ruido impulsivo por lo que hay que tener en cuenta esto. Para este fin hay que filtrar la alimentación de la línea de potencia del puente en H (condensador 9 en el esquema) y las conexiones de los motores (condensadores 6 y 0 en el esquema). Este ruido impulsivo puede además dañar los motores puesto que la tensión de trabajo está ligeramente por encima de la nominal de los motores. Esta situación provoca que los devanados de los motores se puedan fundir si el ruido es demasiado fuerte. Para evitar esto es necesario conectar unos diodos de protección que eviten las oscilaciones de la tensión de alimentación y absorban los excesos de corriente que dañarían los motores

29 ... PROCESADO Este bloque de la tarjeta tiene como finalidad coordinar el funcionamiento de los bloques de sensores y driver de motores además de realizar las órdenes recibidas de la tarjeta principal. El núcleo de este bloque es el microcontrolador, como era de esperar. Este se encarga de todo el procesado. En la figura.7 se puede ver la disposición de los puertos. U AT90S855 D READY R8 70 D DEP R 70 GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE MARCHA MOT_DIR0 MOT_DIR MOT_DIR0 MOT_DIR MOSI MISO SCK XTAL XTAL RESET PA0/AD0 PA/AD PA/AD PA/AD PA/AD PA5/AD5 PA6/AD6 PA7/AD7 PB0/T0 PB/T PB/AIN0 PB/AIN PB/SS PB5/MOSI PB6/MISO PB7/SCK XTAL XTAL ICP RST VCC GND 0 PC0/A8 PC/A9 PC/A0 PC/A PC/A PC5/A PC6/A PC7/A PD0/RXD 0 PD/TXD PD/INT0 PD/INT PD PD5/OCA 5 PD6/WR 6 PD7/RD 7 ALE 0 OCB 9 CNY CNY CNY CNY BUMPER BUMPER BUMPER BUMPER EXP EXP MODE INT_MEC BUMP_TRAS EN_MOT EXP EXP EN_MOT Figura 5 Conexiones del microcontrolador. Los sensores se conectan al puerto C. Este puerto no tiene ninguna funcionalidad adicional por lo que no se sacrifican recursos en la lectura de los sensores. El control de la dirección de los motores se hace con los cuatro bits menos significativos del puerto B. El bit 5 se usa como traza de depuración, se le conecta un LED que el usuario puede encender por software para controlar la ejecución del programa. El resto de los bits de este puerto se utilizan para el programador serie. La interfaz de este programador es la que especifica el fabricante para este modelo. Su esquema se puede ver en la figura

30 R 70 D PROG J6 R 0K D DIODO_RST RESET MOSI RST SCK MISO PROGRAMADOR Figura 6 Interfaz del programación AVR. El LED PROG se ilumina mientras se esté programando el microcontrolador. El otro diodo sirve para que el programador pueda forzar un reset si pone RST a cero. Sin embargo en condiciones normales el reset estará a nivel alto. El circuito completo que se conecta a la pata de reset del microcontrolador es el que muestra la siguiente figura. R 0K RST D DIODO_RST R 0K RESET C 00nF SW RESET R5 K Figura 7 Circuito de reset. Como se puede observar, mientras que el pulsador no se presione o no se fuerce externamente RST a 0V, la señal de reset estará a nivel alto. Sin embargo, en el momento en el que se pulse el botón de reset hardware o se fuerce RST a 0V, la línea RESET tomará un voltaje que el microcontrolador interpretará como nivel bajo, ejecutándose la rutina de reset. El puerto A se destina a la interacción con agentes exteriores. Por agentes exteriores nos referimos al usuario o a la tarjeta principal. Los dos bits más significativos se destinan a interactuar con el usuario

31 Una vez se ha ejecutado la rutina de reset el robot queda en espera hasta que la línea MARCHA (bit 6 del puerto A) toma un 0 lógico. Esta situación de espera se indica encendiendo el LED READY (bit 7 del puerto A). Cuando el usuario presione el pulsador MARCHA (ver figura.) el robot empezará la ejecución del programa de modo automático tras aplicar un retardo. Los otros seis bits se utilizan para la comunicación entre tarjetas. El bit cinco indica el modo en el que se tiene que ejecutar el programa de motores. Si está a nivel alto el modo será el automático, sino, será manual. El bit menos significativo lo activa el microprocesador cuando se coloca sobre la línea al ejecutar la orden de buscar y parar. El resto de los bits determinan el código de la orden que debe ejecutar el robot en modo manual. Al puerto D se conectan otras señales de control. Los bits 0,, 6 y 7 son bits de expansión y no se usan en esta aplicación. Los bits y son las interrupciones externas. La interrupción 0 es la de modo, cuando MODE conmuta a cero se dispara la interrupción y se pasa a ejecutar el modo manual. La interrupción se dispara cuando alguno de los dos bumpers delanteros detecta un choque o el robot se separa de la línea. Sin embargo, en esta aplicación en la tarjeta se a cortado la pista que detecta que se ha separado de la línea. Para que la interrupción funcione como se ha descrito es necesario añadir la siguiente lógica de adaptación. UC 9 UA BUMPER BUMPER INT_MEC UB 5 CNY CNY 7 Figura 8 Lógica de adaptación para la interrupción mecánica. - -

32 El bit le indica al microprocesador si ha habido una colisión por detrás. Los otros dos bits que faltan por comentar son las salidas de los canales PWM que son OCA y OCB... DESCRIPCIÓN DEL SOFTWARE. El microcontrolador se ha programado íntegramente en lenguaje ensamblador. El ensamblador elegido es el suministrado por ATMEL para su familia de controladores AVR. En los siguientes apartados se describen los distintos módulos del software de la tarjeta de control.... EQUIVALENCIAS Y VECTORES DE INTERRUPCIÓN Para poder variar los parámetros del programa cómodamente sin producir errores se definen unas variables globales. Para esto se definen distintos grupos de equivalencias. El primer grupo de equivalencias se usa para poder trabajar con los registros de entrada salida y configuración del microcontrolador usando sus nombres y no sus direcciones. El código es el sigue a continuación. ; Registros de entrada y salida.equ SREG = 0xf.EQU SPH = 0xe.EQU SPL = 0xd.EQU GIMSK = 0xb.EQU GIFR = 0xa.EQU TIMSK = 0x9.EQU TIFR = 0x8.EQU MCUCR = 0x5.EQU TCCR0 = 0x.EQU TCNT0 = 0x.EQU TCCRA = 0xf.EQU TCCRB = 0xe.EQU TCNTH = 0xd.EQU TCNTL = 0xc.EQU OCRAH = 0xb.EQU OCRAL = 0xa.EQU OCRBH = 0x9.EQU OCRBL = 0x8 - -

33 .EQU ICRH = 0x5.EQU ICRL = 0x.EQU WDTCR = 0x.EQU PORTA = 0xb.EQU DDRA = 0xa.EQU PINA = 0x9.EQU PORTB = 0x8.EQU DDRB = 0x7.EQU PINB = 0x6.EQU PORTC = 0x5.EQU DDRC = 0x.EQU PINC = 0x.EQU PORTD = 0x.EQU DDRD = 0x.EQU PIND = 0x0 Los parámetros principales con los que trabaja la tarjeta son los ciclos de trabajo de los PWM y los bits de dirección de los motores. Para poder ajustar fácilmente los valores de estos parámetros se usa otro grupo de equivalencias. ;Constantes de velocidad y dirección para los motores ;Duty cycle = 80%.EQU VEL_MAX = 0x0 ;Duty cycle = 0%.EQU VEL_MED = 0x099 ;Duty cycle = 60%.EQU VEL_MAX = 0x066 ;Duty cycle = 0%.EQU VEL_MED = 0x0 ;Parada rápida.equ STOP = 0x00 ;Marcha directa.equ GO = 0x06 ;Giro a la izquierda.equ LEFT = 0x0 ;Giro a la derecha.equ RIGHT = 0x0 ;Marcha inversa.equ BACK = 0x09 ;Rotación a la izquierda - -

34 .EQU RLEFT = 0x0a ;Rotación a la derecha.equ RRIGHT = 0x05 Los últimos parámetros que conviene poder ajustar son los de la rutina de retardo. Esto es necesario para controlar la distancia que recorre el robot durante la interrupción de choque tal y como se verá más adelante. Las equivalencias mencionadas se listan a continuación. ;Constantes para la rutina de retardo ;Retardo por vuelta.equ RET_V = 0xff ;Número de vueltas.equ VUELTAS = 0xff En el mismo archivo se incluye la tabla de vectores de interrupción. Esta tarjeta solo debe procesar tres fuentes de interrupción, que son la de reset y las dos externas. Si se dispara cualquier otra interrupción se debe a un error por lo que el microprocesador ha de ejecutar la rutina de reset para que el usuario se percate de ello y depure el programa. La tabla se describe a continuación..org 0x000 ;Salto a rutina de reset rjmp RESET ;Salto a rutina de cambio de modo rjmp INT_MODE ;Salto a rutina de desvío o colisión rjmp INT_MEC ;Si saltan estas interrupciones se debe a un error rjmp RESET rjmp RESET rjmp RESET rjmp RESET rjmp RESET rjmp RESET rjmp RESET rjmp RESET rjmp RESET - -

35 rjmp RESET... RUTINA DE RESET Esta rutina debe configurar el timer para funcionar como un PWM de dos canales, los sentidos (entrada o salida) de los puertos, las fuentes de interrupción y el puntero de pila. Para esto el código a ejecutar se puede consultar en las hojas del fabricante. El código que se le ha cargado al robot es el aquí listado. ;Código de la rutina de reset RESET: clr r6 ;Interrup. deshabilitadas SREG,r6 ;Interrup. de los contadores deshabilitadas TIMSK,r6 r6,0xc0 ;Interrup. externas permitidas GIMSK,r6 r6,0x0f ;Sin RAM externa ni modo SLEEP e interrup. por flanco positivo MCUCR,r6 r6,0xa ;Timer como PWM 0-bit no invertido TCCRA,r6 r6,0x0 ;Frecuencia del timer es CLK/8 clr TCCRB,r6 r6 OCRAH,r6 OCRAL,r6 OCRBH,r6 ;Ambos canales del PWM siempre a cero (Motores parados) ;Timer0 parado OCRBL,r6 TCCR0,r6 r6,0x0 SPH,r6 r6,0x5f - 5 -

36 ;SP al final de la RAM SPL,r6 r6,0x8 r7,0x5f clr r8 r9,0x0 ;Configuración del puerto A DDRA,r6 ;Configuración del puerto B DDRB,r7 ;Configuración del puerto C DDRC,r8 ;Configuración del puerto D DDRD,r9 Después de haber configurado el microcontrolador de acuerdo con nuestras necesidades hay que notificárselo al usuario. Para esto la tarjeta debe encender el LED de READY y quedarse en espera hasta que se pulse el botón de MARCHA. Una vez pulsado se aplica un retardo y comienza la ejecución del modo automático. ;Encendemos el LED de READY sbi PORTA,7 ESP: ;Si MARCHA no está pulsado esperamos sbic PINA,6 rjmp ESP ;Apagamos el LED de READY cbi PORTA,7 ;Aplicamos un retardo antes de arrancar rcall RETARDO rcall RETARDO rcall RETARDO ;El robot siempre empieza en modo automático rjmp AUTOMAT En el momento en el que el robot se queda en espera activa ejecuta dos instrucciones. La segunda de ellas, la que cierra el bucle, se salta cuando la pista de marcha se pone a cero

37 ... MODO AUTOMÁTICO El modo automático es el modo de ejecución por defecto. Cuando la tarjeta de control se haya en este modo el robot se comporta como un microrobot seguidor normal. Esto quiere decir que sigue un camino definido por una línea negra sobre un fondo blanco. Como se ha visto en los apartados anteriores el robot dispone de cuatro sensores capaces de distinguir un fondo negro de otro blanco. Estos sensores se disponen de tal forma que dos de ellos, los centrales, deben estar siempre sobre la línea negra. Cuando se produce alguna desviación se debe modificar la marcha de los motores para recuperar la situación ideal. Adicionalmente, si se detecta alguna colisión se ejecuta una interrupción que hace que el robot rodee el obstáculo que la provocó. Sin embargo el código de esta instrucción se explica en un apartado posterior. El software correspondiente a este modo se divide en varios sectores. El primero de ellos es el que se encarga de cargar lo registros de velocidades con los valores que se van a utilizar, habilitar las interrupciones y arrancar los motores. Los registros 0 y tienen el valor de configuración del PWM para velocidad media y los y para la rápida. AUTOMAT: r0,high(vel_med) r,low(vel_med) r,high(vel_max) r,low(vel_max) ;Habilitamos las interrupciones sei ;Los registros 0 y tienen el valor VEL_MED ;Los registros y tienen el valor VEL_MAX ;Arrancamos ambos PWM a velocidad media OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r - 7 -

38 Después de haber hecho estos ajustes iniciales comienza el bucle central del programa que lo único que hace es comprobar una y otra vez lo que leen los sensores y actúa en consecuencia. Primero se miran los dos sensores centrales. BAUT: ;Leemos el puerto C in r8,pinc ;Operaremos sobre el registro mov r,r8 ;Ponemos a cero todos los bits menos el bit0 y el bit andi r,0x0 ;Si no estamos sobre la línea hay que girar brne GIR r7,go ;Si estamos sobre la línea seguimos recto PORTB,r7 OCRAH,r OCRAL,r OCRBH,r ;Fijamos la velocidad al máximo rjmp GIR: OCRBL,r BAUT ;Ponemos a cero todos los bits menos el bit andi r,0x0 ;Si el bit no es cero hay que mirar el bit0 brne GIR ;Si el bit es cero es que el bit 0 es r7,go ;Seguimos hacia delante PORTB,r7 OCRAH,r0 OCRAL,r ;El lado de la derecha se ha quedado fuera de la línea OCRBH,r ;por lo que el motor izquierdo tiene que reducir OCRBL,r ;Ponemos el flag T a uno (desviados por la derecha) - 8 -

39 set rjmp GIR: mov BAUT r,r8 ;Ponemos a cero todos los bits menos el bit0 andi r,0x0 ;Si los bits 0 y estaban a uno hemos perdido la línea brne GIR ;Si estamos aquí es que el bit0 era 0 y el bit era r7,go ;Esto quiere decir que nos hemos desviado por la izquierda PORTB,r7 OCRAH,r OCRAL,r OCRBH,r0 ;El motor derecho tiene que reducir OCRBL,r ;Ponemos el flag T a cero (desviados por la izquierda) clt rjmp BAUT Se puede ver que si alguno de los dos sensores centrales veía a la línea no se hacen más comprobaciones y se vuelve al bucle. En el caso de que los sensores centrales hayan perdido la línea se consultan los laterales. GIR: ;Tenemos que comprobar los CNY secundarios mov r,r8 ;Comprobamos el valor del CNY andi r,0x08 ;Si este CNY no está sobre la línea seguimos comprobando brne GIR ;Si tenemos la línea bajo el CNY hay que girar a la izquierda r7,right PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0-9 -

40 ;Ambos motores reducen la marcha OCRBL,r ;Ponemos el flag T a uno (desviados por la derecha) set rjmp GIR: mov BAUT r,r8 ;Comprobamos el valor del CNY andi r,0x0 ;Si no tenemos línea en ningún CNY hay que buscarla brne ROT ;Si tenemos la línea bajo el CNY hay que girar a la derecha r7,left PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 ;Ambos motores reducen la marcha OCRBL,r ;Ponemos el flag T a cero (desviados por la izquierda) clt rjmp BAUT Puede parecer cuando se quiere girar a la derecha se use la variable LEFT es una incongruencia. Sin embargo, la variable LEFT indica que el motor derecho se para y el izquierdo sigue avanzando. Finalmente si se ha perdido la línea por completo se debe parar el robot y girar sobre sí mismo hasta encontrarla. Es posible que el lector se haya percatado que en las comprobaciones anteriores se almacena en el bit T del registro de estado el flanco bajo el cual fue vista la línea por última vez. El robot rotará en el sentido que indique este bit. ROT: ;Antes de invertir los motores hay que pararlos ;( useg aprox.) brtc r7,stop PORTB,r7 ROT - 0 -

41 ;Si estamos desviados por la derecha hay que rotar hacia la izquierda rjmp ROT: RT: r7,rright RT ;Si no hay que rotar hacia la derecha r7,rleft PORTB,r7 ;Ambos motores reducen la marcha rjmp OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r BAUT Algo que es muy importante y que el usuario ha de tener en cuenta es que hay que parar los motores antes de invertirlos. Aunque en el momento de invertir los motores estos sigan girando en la dirección anterior no es problemático. En este caso se produciría un pico de tensión, que es lo que queremos evitar, pero será mucho menos intenso que si invertimos la marcha con los motores alimentados. Por este motivo es de gran importancia pasar por el estado de parada rápida antes de cambiar el sentido de giro de los motores. Otro comentario de utilidad e que al leer de los puertos externos (in rxx,pinx) hay que usar el registro PINX porque si se usara PORTX la lectura sería incorrecta. Este detalle no viene especificado en la descripción del microcontrolador y supuso un fallo en tiempo de ejecución que nos hizo perder mucho tiempo hasta dar con él.... MODO MANUAL La rutina de motores del robot se puede ejecutar en modo manual. El usuario envía órdenes que decodifica la tarjeta principal y se lo notifica a la de control. - -

42 La tarjeta de control sabe en qué modo está por el estado de la pista MODE. Si esta pata está a cero el modo ha de ser el automático. Un flanco de subida en esta pata provoca una interrupción de cambio de modo. En la rutina manual el microcontrolador ha de leer constantemente el puerto A para ver la instrucción a ejecutar. Al final del bucle ha de comprobar el estado de MODE para seguir en modo manual o cambiar al modo automático. Antes de ejecutar el bucle central de la rutina no hay que hacer ningún ajuste puesto que todos los cambios los controla el usuario. Primero se ha de leer la orden y calcular la posición de la tabla de órdenes a la que se ha de saltar. Como el microcontrolador no tiene modo indexado hay que sumar el índice, multiplicado por dos, a la base de la tabla antes del salto. ;Código para el modo manual MANUAL: in lsr r6,pina r6 ;Leemos la orden a los motores andi r6,0x0f ;Multiplicamos por dos lsl r6 ;Utilizamos el registro z para guardar un offset al que sumamos el número de orden multiplicado por dos para calcular la siguiente instrucción a procesar add ijmp r0,low(offst) r,high(offst) r0,r6 Cada celda de la tabla contiene dos instrucciones, por eso hay que multiplicar el índice por dos. Estas instrucciones son una llamada a la subrutina asociada a cada orden y un salto a las comprobaciones finales. OFFST: ;La orden 0x0 es seguir recto rcall RECTO - -

43 rjmp CMD ;La orden 0x es giro derecha rcall GD rjmp CMD ;La orden 0x es giro izquierda rcall GI rjmp CMD ;La orden 0x es dar marcha atrás rcall ATRAS rjmp CMD ;La orden 0x es desvio derecha rcall GD0 rjmp CMD ;La orden 0x5 es desvio izquierda rcall GI0 rjmp CMD ;La orden 0x6 es giro derecha trasero rcall GD rjmp CMD ;La orden 0x7 es giro izquierda trasero rcall GI rjmp CMD ;La orden 0x8 es acelerar rcall ACLR rjmp CMD ;La orden 0x9 es reducir rcall FRNR rjmp CMD ;La orden 0xa es buscar línea y parar rcall BUSCL rjmp CMD ;La orden 0xb es rotar hacia la izquierda rcall ROTI rjmp CMD ;La orden 0xc es rotar hacia la derecha rcall ROTD rjmp CMD ;La orden 0xd no está definida rcall ERR rjmp CMD - -

44 ;La orden 0xe no está definida rcall rjmp ERR CMD ;La orden 0xf es parar el robot rcall PARA Al final del bucle se actualiza el bit T tal y como se explica en la rutina automática. Esto se hace para mantener una referencia de la línea. Finalmente, tras comprobar el estado de MODE se vuelve a saltar al programa correspondiente. CMD: in r6,pina ;Actualizamos el flag T rcall FLG ;Comprobamos el flag de MODE (PA5) andi r6,0x0 ;Si seguimos en modo manual volvemos al bucle brne rjmp MANUAL..5. INTERRUPCIONES AUTOMAT Las dos interrupciones que se han de comentar son las debidas a fuentes externas puesto que la de reset se explica en otro apartado. Estas fuentes pueden indicar un cambio de modo o una colisión. El código de la interrupción de cambio de modo es muy sencillo. Simplemente saca de la pila la dirección de retorno y la cambia por la de la rutina manual. También para el motor para que se ejecute la orden que ha provocado la interrupción. ;Código de la interrupción de cambio de modo INT_MODE: r7,stop ;Paramos el robot pop pop PORTB,r7 r7 r8 ;Modificamos la dirección de retorno para que se ejecute el programa manual r7,high(manual) - -

45 r8,low(manual) push r8 push r7 reti La otra interrupción es un poco más complicada. Primero se comprueba que los bumpers siguen presionados, no sea que el obstáculo se ha desplazado y ha liberado a los bumpers. De todas formas esta situación es poco probable puesto que entre la activación de la interrupción y la comprobación pasa un tiempo muy pequeño. Después de esto, el robot da marcha atrás y aplica un retardo suficiente para apartarse del obstáculo. ;Código de la interrupción de colisión INT_MEC: push r push r8 in r8,pinc mov r,r8 ;Si los bumpers delanteros están sin presionar andi r,0x0 ;Terminamos con la interrupción breq FIN push r7 r7,stop ;Paramos antes de invertir PORTB,r7 push r0 push r r0,high(vel_med) r,low(vel_med) ;Damos marcha atrás r7,back PORTB,r7 ;Ponemos los motores a velocidad alta OCRAH,r OCRAL,r OCRBH,r OCRBL,r rcall RETARDO rcall RETARDO - 5 -

46 rcall rcall rcall rcall rcall rcall rcall rcall RETARDO RETARDO RETARDO RETARDO RETARDO RETARDO RETARDO RETARDO ;Paramos antes de invertir r7,stop PORTB,r7 Después de esto comprueba cual de los dos bumpers golpeó el obstáculo y gira en consecuencia. Si fueron ambos bumpers los que golpearon lo que hace es rotar. Después de esto el robot que da parado. La rutina principal, sea la manual o automática, se encargará de determinar el siguiente movimiento del robot. ;Comprobamos el valor del bumper andi ;Si está a cero brne r,0x0 BP el bumper está pulsado ;Si hemos chocado por la izquierda giramos a la derecha rcall r7,right PORTB,r7 RETARDO r7,stop ;Paramos después de esquivar ;Hemos terminado rjmp BP: mov PORTB,r7 TER r,r8 ;Comprobamos el valor del bumper andi r,0x0 ;si está a cero bumper está pulsado brne BP ;Si hemos chocado por la derecha giramos a la izquierda r7,left PORTB,r7-6 -

47 rcall RETARDO r7,stop ;Paramos después de esquivar ;Hemos terminado rjmp BP: PORTB,r7 TER ;Colisión frontal brtc ESQ ;Si estamos desviados por la derecha hay que rotar hacia la izquierda rjmp ESQ: r7,rleft ESQ ;Si no hay que rotar hacia la derecha ESQ: rcall RETARDO r7,rright PORTB,r7 r7,stop ;Paramos después de esquivar y terminamos TER: pop pop pop FIN: PORTB,r7 r r0 r7 ;Recuperamos registros y terminamos pop pop reti..6. SUBRUTINAS r8 r Las subrutinas asociadas a las órdenes del modo manual se agrupan en un archivo. Estas subrutinas son, en su mayoría, para avanzar, parar o girar y su código es el mismo que se utiliza en el resto del programa. Por esta razón no hay mucho que comentar sobre estas subrutinas. Su código se muestra a continuación. RECTO: r7,go - 7 -

48 ;El robot irá recto a toda velocidad PORTB,r7 OCRAH,r OCRAL,r OCRBH,r OCRBL,r ret GD: r7,right ;El robot girará a la izquierda a velocidad media PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r ret GI: r7,left ;El robot girará a la derecha a velocidad media PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r ret ATRAS: ;Hay que parar antes de invertir los motores rcall PARA r7,back ;El robot irá marcha atrás a velocidad media PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r ret - 8 -

49 GD0: r7,go ;El robot se desviará a la derecha PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r OCRBL,r ret GI0: r7,go ;El robot se desviará a la izquierda PORTB,r7 OCRAH,r OCRAL,r OCRBH,r0 OCRBL,r ret GD: ;Hay que parar antes de invertir los motores rcall PARA r7,back ;El robot se desviará a la derecha marcha atrás PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r OCRBL,r ret GI: ;Hay que parar antes de invertir los motores rcall PARA r7,back ;El robot se desviará a la izquierda marcha atrás PORTB,r7 OCRAH,r OCRAL,r - 9 -

50 ret OCRBH,r0 OCRBL,r ROTI: ;Hay que parar antes de invertir motores rcall PARA ;Rotamos hacia la izquierda r7,rleft PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r ret ROTD: ;Hay que parar antes de invertir motores rcall PARA ;Rotamos hacia la derecha r7,rright PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r ret PARA: r7,stop ;Paramos los motores PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 OCRBL,r ret Sin embargo, hay algunas subrutinas especiales. Unas de estas son las de cambio de velocidad global. Lo que hacen es cambiar los valores almacenados en los registros de velocidad de

51 acuerdo con los deseos del usuario. Como es lógico estas subrutinas van asociadas a las ordenes de acelerar y parar. ACLR: cpi r,high(vel_max) ;Si la velocidad no es la normal la aumentamos brne ACB ret ACB: r0,high(vel_med) r,low(vel_med) r,high(vel_max) r,low(vel_max) ret FRNR: cpi r,high(vel_max) ;Si la velocidad no es la reducida la reducimos brne ret FCB: ret FCB r0,high(vel_med) r,low(vel_med) r,high(vel_max) r,low(vel_max) Otra subrutina especial es la de buscar y parar. Esta subrutina hace que el robot gire sobre sí mismo hasta encontrar la línea. Una vez encontrada se queda parado. Para determinar el sentido de giro hace uso del bit T. BUSCL: ;Comprobamos los CNY y si no están ambos a cero hay que seguir buscando in andi brne r8,portc r8,0x0 NOLN ;Si tenemos la línea paramos y lo indicamos en PA0 rcall sbi ret PARA PORTA,0-5 -

52 NOLN: brtc CGIR ;Si estamos desviados por la derecha hay que rotar hacia la izquierda rjmp CGIR: r7,left SGIR ;Si no hay que rotar hacia la derecha SGIR: r7,right PORTB,r7 OCRAH,r0 OCRAL,r OCRBH,r0 ;Ambos motores reducen la marcha ret OCRBL,r La subrutina de error se asocia a instrucciones reservadas y lo que hace es encender el LED de depuración para notificar el error. ERR: ;Encendemos el LED de depuración sbi ret PORTB, La última subrutina que queda por explicar es la de actualización del bit T. Esta rutina comprueba las lecturas de los CNY70 y asigna un valor al bit T del registro de estado dependiendo de en qué flanco se encuentre la línea. FLG: ;Leemos el puerto C in r8,portc ;Operaremos sobre el registro mov andi brne r,r8 r,0x0 FLG ;Si estamos sobre la línea el flag no cambia ret FLG: andi brne r,0x0 FLG - 5 -

53 ;Si el bit0 es cero el bit es uno y T se pone a cero (desviados por la izquierda) clt ret FLG: mov andi brne r,r8 r,0x0 FLG ;Si el bit es cero y el bit era T se pone a uno (desviados por la derecha) set ret FLG: mov andi brne r,r8 r,0x0 FLG ;Si el CNY (bit) está sobre la línea estamos desviados por la izquierda (T=0) clt ret FLG: mov andi r,r8 r,0x08 ;Si el CNY (bit) está sobre la línea estamos desviados por la derecha (T=) brne set SAL: SAL ;Si hemos perdido la línea no cambiamos T ret - 5 -

54 Robot con control remoto y cámara de vídeo integrada. TARJETA DE CONTROL PRINCIPAL La tarjeta principal se tiene que ocupar de coordinar la cámara, la tarjeta de radiofrecuencia y la tarjeta de control de motores. Su función principal es convertir, formatear y agrupar la señal leída por la cámara para su envío por el enlace de radiofrecuencia. Se tiene que ocupar tanto de la señalización del canal como de la adquisición de datos. Eventualmente, recibirá alguna orden que tendrá que decodificar. Estas órdenes pueden ir dirigidas a la tarjeta de control de motores, a la cámara o al sistema de orientación de la cámara. Esta tarjeta incorpora también la circuitería necesaria para orientar la cámara mediante servomotores tipo FUTTABA... DESCRIPCIÓN DEL HARDWARE El hardware que se ajusta a las funciones que ha de desempeñar la tarjeta se puede ver en el siguiente esquema. J PWR_IN + C 0uF U L7805/TO0 VIN VOUT C GND 00nF J REGULADOR C 00uF + C 00nF J PWR_OUT D PWR_ON R 70 R7 K J0 8 GOT_LINE 7 MOTAC 6 MOTAC 5 MOTAC MOTAC0 MODE SRV J SERVO U AT90S855 TARJ_CTRL J5 PIX0 PIX PIX PIX PIX PIX5 PIX6 PIX PA0/AD0 PA/AD PA/AD PA/AD PA/AD PA5/AD5 PA6/AD6 PA7/AD7 PC0/A8 PC/A9 PC/A0 PC/A PC/A PC5/A PC6/A PC7/A GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE INCAM ADCSTR XTAL C5 5pF Y 8MHz XTAL C6 5pF SRV SERVO D DEP R 70 CAM CAM CAM CAM MOSI MISO SCK XTAL XTAL RESET PB0/T0 PB/T PB/AIN0 PB/AIN PB/SS PB5/MOSI PB6/MISO PB7/SCK XTAL XTAL ICP RST VCC GND PD0/RXD 0 PD/TXD PD/INT0 PD/INT PD PD5/OCA 5 PD6/WR 6 PD7/RD 7 0 OCB ALE 9 RX TX XRESET SIN LOAD XCLK START READ OSC C8 5pF Y 0MHz OSC C9 5pF U PIC6F8 SRV 7 6 SRV 8 RA0 RB0/INT 7 RA RB 8 RA RB 9 RA RB 0 RA/TOCKI RB OSC 6 RB5 OSC 5 OSC/CLKIN RB6 OSC/CLKOUT RB7 RESET MCLR VDD 5 GND CAM CAM CAM CAM EXP0 EXP EXP EXP J7 EXPANS RESET C7 00nF R 0K SW RESET R K 0 R5.K U J7 R 70 D PROG R 0K D DIODO_RST RESET MOSI RST SCK MISO J PROGRAMADOR U5 LM85-.5/TO VOUT ADCSTR VIN D0 D REF+ D REF- D 7 D 8 MODE D5 RD D6 CS D7 6 WR/RDY 0 VCC ADC080 0 GND INT OFL PIX0 PIX PIX PIX PIX PIX5 PIX6 PIX7 INCAM XRESET SIN LOAD XC LK START READ VOUT CAMARA J8 TX RX AURIEL Title Tarjeta Principal para Robot LSED Size Document Number Rev A. Monday, May 9, 00 Date: Sheet of Figura 9 Esquema de la tarjeta de control principal. Para un mayor detalle, véase la figura del apéndice B

55 Se puede ver que la tarjeta se puede descomponer en varios sectores. Estos sectores son alimentación, control de orientación de la cámara, interfaz de la cámara y procesado.... ALIMENTACIÓN La tarjeta principal se puede alimentar de dos formas distintas. Las distintas formas se seleccionan abriendo o cerrando un jumper. Una forma que tiene de alimentación de la tarjeta principal es suministrando directamente una tensión estabilizada de 5V a la entrada pertinente. De esta forma se puede hacer que ambas tarjetas compartan fuente de alimentación. La tarjeta de control de motores tiene una salida después del regulador que se puede utilizar para alimentar la tarjeta principal de esta forma. Para seleccionar este modo de alimentación hay que dejar abierto el jumper REGULADOR. Sin embargo, la tarjeta también cuenta con un sistema de alimentación autónomo que se utilizará cuando el jumper REGULADOR esté cerrado. El sistema de alimentación mencionado es idéntico al de la tarjeta de control de motores (ver apartado..). Conviene señalar que no es conveniente utilizar la alimentación de la tarjeta de control de motores si el jumper REGULADOR está cerrado. Esto se debe a que no conviene cortocircuitar directamente las salidas de los dos reguladores para no dañarlos.... CONTROL DE ORIENTACIÓN DE LA CÁMARA Como se ha explicado antes, la tarjeta principal puede controlar dos servomotores para orientar la cámara

56 J SERVO J5 SERVO SRV SRV OSC OSC RESET U PIC6F8 RA0 RB0/INT RA RB RA RB RA RB RA/TOCKI RB RB5 OSC/CLKIN RB6 OSC/CLKOUT RB7 MCLR VDD 5 GND CAM CAM CAM CAM EXP0 EXP EXP EXP J7 EXPANS Figura 0 Sistema de orientación de la cámara. En la figura se puede ver que el elemento central de este sistema es un microcontrolador PIC. Este microcontrolador se usa exclusivamente para generar las dos señales PWM necesarias para orientar los servomotores. Los servomotores se conectan directamente a la alimentación porque incorporan una lógica que reduce el ruido impulsivo, por eso no se filtra su alimentación. El microcontrolador PIC lee la orientación que le da el microcontrolador principal por las líneas CAM: y varia los ciclos de trabajo de los servomotores en consecuencia. También consta de un puerto de cuatro bit s de expansión por si se quisiera aprovechar la capacidad de procesamiento sobrante para alguna otra tarea.... INTERFAZ DE LA CÁMARA El chip de la cámara es un MITSUBISHI M68FP. Este CDC, pese a estar descatalogado actualmente, se puede encontrar fácilmente en el periférico GameBoy Camera para la video consola portátil GameBoy de Nintendo, que se puede adquirir de segunda mano a través de servicios de subasta on-line como e-bay por menos de 0$ USD. La cámara se conecta directamente al microcontrolador a excepción de la señal de píxel. Esta señal es analógica por lo que es necesario intercalar un conversor analógico digital para que el microcontrolador pueda procesar el píxel

57 Figura Cámara digital M68FP J7 XRESET SIN LOAD XCLK START READ VOUT U CAMARA.K R5 PIX0 PIX PIX PIX PIX PIX5 PIX6 PIX7 INCAM D0 D D D D D5 D6 D7 INT OFL 0 VIN REF+ REF- ADC080 MODE 7 RD 8 CS WR/RDY 6 VCC 0 GND ADCSTR U5 LM85-.5/TO Figura Interfaz de la tarjeta principal con la cámara. Los bits que se conectan desde la cámara directamente al microcontrolador son los bits de configuración y control de ejecución

58 La línea de datos de la cámara tiene que sufrir una conversión analógico-digital. Figura Asignación de terminales de la cámara digital al bus de datos La configuración del conversor ha sido extraída de las hojas del fabricante, Se ha configurado para ser controlado con solo dos líneas, la INCAM y la ADCSTR. El conversor es de ocho bits y el rango de conversión se ajusta de 0V a,5v. Este rango es adecuado porque la cámara entrega una señal de V pico a pico con un offset configurable.... PROCESADO La configuración de este sector es análoga a la del mismo sector en la otra tarjeta. La disposición de señales en el microcontrolador es la siguiente. U AT90S855 D DEP R 70 PIX0 PIX PIX PIX PIX PIX5 PIX6 PIX7 CAM CAM CAM CAM MOSI MISO SCK XTAL XTAL RESET PA0/AD0 PA/AD PA/AD PA/AD PA/AD PA5/AD5 PA6/AD6 PA7/AD7 PB0/T0 PB/T PB/AIN0 PB/AIN PB/SS PB5/MOSI PB6/MISO PB7/SCK XTAL XTAL ICP RST VCC 0 GND PC0/A8 PC/A9 PC/A0 PC/A PC/A PC5/A PC6/A PC7/A PD0/RXD 0 PD/TXD PD/INT0 PD/INT PD PD5/OCA 5 PD6/WR 6 PD7/RD 7 ALE 0 OCB 9 GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE INCAM ADCSTR RX TX XRESET SIN LOAD XCLK START READ Figura Conexiones del microcontrolador. El puerto A del microcontrolador se destina íntegramente a la adquisición de los datos convertidos a digital de la cámara. Este puerto no tenía ninguna otra funcionalidad por lo que no se sacrifica ningún recurso en la lectura de los datos de la cámara. El puerto B se divide en dos partes. Los cuatro bits menos significativos son los que se usan para comunicarle al

59 microcontrolador PIC la orientación deseada de la cámara. El bit 5, como pasaba en la otra tarjeta, se destina a un LED de depuración que ayude a la detección de errores en el software de la tarjeta. Puede parecer absurdo malgastar una pata para este fin pero nosotros lo hemos encontrado de vital importancia. La ayuda del LED de depuración hace que la detección de errores se pueda realizar de forma empírica, más cómoda, y nos evita tener que desentrañar el código ejecutado por el microcontrolador. Por último, los otros tres bits se destinan al programador AVR. Las conexiones son idénticas a la de la otra tarjeta, así como el circuito de reset. Por lo que para su consulta remitimos al lector al apartado de procesado de la tarjeta de control de motores. Nótese que el microcontrolador PIC carece de programador integrado en la tarjeta principal. Por consiguiente, se hace indispensable el uso de un programador PIC independiente. El puerto C se destina a la comunicación entre tarjetas y al control del conversor analógico digital. Los seis bits menos significativos constituyen el otro extremo del bus que se conecta al puerto A del microcontrolador de la tarjeta de control de motores. Los dos bits más significativos son los que se utilizan para controlar la conversión a digital de los datos de la cámara. Finalmente el puerto D se usa para configurar y controlar la cámara y para la comunicación con la tarjeta de radio. Los dos bits menos significativos son los de transmisión y recepción de la UART. Estos bits se conectan directamente a la tarjeta de radio y no hace falta ninguna pista adicional. El control de la comunicación serie por el enlace radio se hace íntegramente vía software ayudándose de los registros internos de la UART. Los otros seis bits se utilizan para encender la cámara (START), temporizarla (XCLK) y configurarla. Al iniciar la cámara es necesario cargar unos registros internos que tiene para que funcione de la forma deseada. Esto se consigue mediante una transmisión

60 serie por SIN, temporizada por XCLK y validada por LOAD. La pista READ es la notificación de la cámara de que tiene un píxel nuevo preparado para la conversión... DESCRIPCIÓN DEL SOFTWARE La tarjeta de control principal ha de gobernar todo el robot, recibiendo las órdenes del host remoto, decodificándolas y ejecutándolas. Además, debe recopilar la información del estado del robot y los datos de la cámara y enviarlos a través del enlace de radio frecuencia, implementando las rutinas necesarias para la separación de tramas y la temporización que exige la tarjeta de radio frecuencia. Una vez ejecutada la rutina primera de reset y habilitadas las interrupciones, el programa principal entra en un bucle continuo de espera activa aguardando a que se produzcan las interrupciones programadas: Interrupción del Timer0, que da lugar a la recopilación de datos y su envío a través de la radio frecuencia. Interrupción por llegada de nuevos datos desde el enlace radio frecuencia, que lanza el proceso de descodificación del tipo de dato recibido y el procesado del comando en caso de que se trate de datos del servicio de comandos.... EQUIVALENCIAS Y VECTORES DE INTERRUPCIÓN Al igual que con el otro programa se define un primer archivo en el que se especifican unas equivalencias para facilitar la programación. ;Registros de entrada y salida.equ SREG = 0xf.EQU SPH = 0xe.EQU SPL = 0xd.EQU GIMSK = 0xb.EQU GIFR = 0xa.EQU TIMSK = 0x9.EQU TIFR = 0x8.EQU MCUCR = 0x5-60 -

61 .EQU TCCR0 = 0x.EQU TCNT0 = 0x.EQU TCCRA = 0xf.EQU TCCRB = 0xe.EQU TCNTH = 0xd.EQU TCNTL = 0xc.EQU OCRAH = 0xb.EQU OCRAL = 0xa.EQU OCRBH = 0x9.EQU OCRBL = 0x8.EQU ICRH = 0x5.EQU ICRL = 0x.EQU WDTCR = 0x.EQU PORTA = 0xb.EQU DDRA = 0xa.EQU PINA = 0x9.EQU PORTB = 0x8.EQU DDRB = 0x7.EQU PINB = 0x6.EQU PORTC = 0x5.EQU DDRC = 0x.EQU PINC = 0x.EQU PORTD = 0x.EQU DDRD = 0x.EQU PIND = 0x0.EQU UDR = 0x0C.EQU USR = 0x0B.EQU UCR = 0x0A.EQU UBRR = 0x09 Se han añadido las equivalencias necesarias para manejar la UART y se ha prescindido del resto de equivalencias pues no tenía sentido mantenerlas. Sin embargo, más adelante se definirán nombres simbólicos de registros. La tabla de vectores de interrupción también sufre modificaciones porque las fuentes de interrupción son distintas. En este programa interrumpen los timers y la UART. CSEG - 6 -

62 .ORG 0x000 ;Salto a rutina de reset rjmp RESET ;Si saltan estas interrupciónes se debe a un error rjmp RESET rjmp RESET rjmp RESET rjmp RESET rjmp RESET ;TIMER asociado a la RF rjmp IRQ_TIMER ;TIMER asociado a rutina de captura de datos rjmp IRQ_TIMER0 ;Si salta esta interrupción se debe a un error rjmp RESET ;Tenemos datos del control remoto! rjmp IRQ_RX ;Se puede enviar el siguiente dato rjmp IRQ_UOBE ;Si saltan estas interrupciónes se debe a un error rjmp RESET rjmp RESET... RUTINA DE RESET Esta rutina se encarga, entre otras cosas, de configurar al microcontrolador como queremos. Hay que configurar las interrupciones de los timer y ajustar sus tiempos. También tiene que fijar los parámetros de la UART y de los puertos de entrada y salida además de las tareas típicas de configuración. ;Rutina de reset RESET: r6,0x0 SPH,r6 r6,0x5f ;SP al final de la RAM SPL,r6 clr r6 ;Interrup. deshabilitadas SREG,r6-6 -

63 ;Interrup. externas deshabilitadas GIMSK,r6 ;Sin RAM externa MCUCR,r6 r6,0x8 ;Interrup. por overflow TIMSK,r6 r6,0xb8 ;Configuración de la UART UCR,r6 r6,0x0 ;Baud rate = 500 UBRR,r6 r6,0xb7 ;Interrup cada 0us TCNT0,r6 clr r6 ;Reloj parado TCCR0,r6 TCCRA,r6 TCCRB,r6 r6,0x00 TCNTL,r6 r6,0xb8 ;Máximo retardo de 0us TCNTH,r6 clr r6 ;Configuración del puerto A DDRA,r6 r6,0x5f ;Configuración del puerto B DDRB,r6 r6,0xbe ;Configuración del puerto C DDRC,r6 r6,0x7e ;Configuración del puerto D DDRD,r6 Después de haber realizado las tareas de configuración del sistema se procede a inicializar la cámara y otras variables

64 ;Reset de la cámara rcall RCAM ;Tamaño del buffer r6,96 r0,0x0 r,0x0 ;Guardamos en la dirección 0x00 st z,r6 ;Capacidad del acumulador inicialmente al maximo r6,8 mov enacuav, r6 mov deacuav, r6 ;Empieza el programa rjmp PROG... RUTINAS DE CONFIGURACIÓN DE CÁMARA En este apartado se incluye la subrutina que carga los registros de la cámara y la rutina de reset de cámara. La rutina de reset de cámara lo que hace es que guarda en las posiciones de memoria asociadas a la cámara unos valores por defecto y llama a la subrutina de carga. RCAM: ;primero reseteamos la camara ;poner a cero reloj cbi PORTD, XCLK cbi PORTD, XRESET sbi PORTD, XCLK sbi PORTD, XRESET ;Cargamos valores por defecto mierda, 0xf sts CAMDATA, mierda mierda, 0x0 sts CAMDATA+, mierda mierda, 0x0a sts CAMDATA+, mierda mierda, 0xff - 6 -

65 sts CAMDATA+, mierda mierda, 0x0 sts CAMDATA+, mierda mierda, 0x00 sts CAMDATA+5, mierda mierda, 0x0 sts CAMDATA+6, mierda mierda, 0x0 sts CAMDATA+7, mierda rcall CAM_LOAD_REGISTERS ret Estos valores por defecto ajustan el tiempo de exposición, la ganancia, la luminancia a unos valores típicos. También se aseguran de que el rango dinámico de la señal esta de acuerdo con lo que espera el conversor analógico-digital. Es decir, V pico a pico más V de continua. La rutina de carga lo que hace es ir cogiendo cada uno de los valores asociados a los registros y cargarlos en la cámara. La cámara recibe bit a bit por la pata SIN. El reloj tiene que ir sincronizado con la transmisión. Primero se transmiten tres bits de dirección de registro (hay 8 registros) a cargar y luego el byte de dato. Una vez terminada la transmisión hay que validarla con la señal LOAD. La subrutina primero guarda el contexto y calcula la dirección del dato a cargar. Hecho esto lee el dato de la memoria y lo deja en un registro. CAM_LOAD_REGISTERS: push sucio push ocho push mierda

66 push r0 push r ;contador de 0 a 7 para los registros clr sucio buclecarga: mov r5,sucio ;Calculamos dirección y leemos dato mierda, LOW(CAMDATA) add ocho, mierda mierda, HIGH(CAMDATA) adc r5,mierda mov r0, ocho mov r, r5 ld ocho, z Se han definido nombres simbólicos para algunos registros y pines para hacer el programa más legible. Hecho esto entra en un bucle que manda bit a bit la dirección y el dato. Esto se hace mediante rotaciones. ;mandar primero los tres bits del registro ;bucle contando con mierda mierda, cargadirreg: ;poner a cero el reloj de la camara cbi PORTD, XCLK sbrs sucio, rjmp manda_cero rcall CAM_SIN_ decb: ;poner a uno sbi PORTD, XCLK ;mover a la izq sucio para mandar el siguiente bit lsl sucio dec mierda brne cargadirreg ;xsssxxxx lsl sucio ;volvemos a colocar sucio en su posicion original xxxxxsss

67 swap sucio rjmp masdat manda_cero: rcall CAM_SIN_0 rjmp decb masdat: ;ahora metemos los ocho bits de datos mierda, 8 cargadatreg: ;poner a cero el reloj cbi PORTD, XCLK sbrs ocho, 7 rjmp manda_cero_ rcall CAM_SIN_ decb: ;poner a uno sbi PORTD, XCLK ;mover a la izq sucio para mandar el siguiente bit lsl ocho dec mierda brne cargadatreg ;terminado el registro se manda el siguiente inc sucio cpi sucio, 8 breq fincargas ;mandar la señal de carga sbi PORTD, LOAD ;reloj de camara a cero cbi PORTD, XCLK cbi PORTD, LOAD; rjmp buclecarga manda_cero_: rcall CAM_SIN_0 rjmp decb Se recupera el contexto y se termina con la subrutina. fincargas: pop r

68 pop r0 pop mierda pop ocho pop sucio ret Se han utilizado dos subrutinas que lo que hacen es activar o desactivar la pata SIN del microcontrolador. CAM_SIN_: ;poner un a Serial IN de la Camara sbi PORTD, SIN ret CAM_SIN_0: ;poner a 0 la serial in de la camara cbi PORTD, SIN ret... EL PROGRAMA PRINCIPAL Simplemente realiza la habilitación de contadores, cámara e interrupciones, para acabar en el bucle de espera activa: PROG: ;activar contador TIMER0 clr mierda TCCR0,mierda ;activar la camara cbi PORTD, XCLK sbi PORTD, START; sbi PORTD, XCLK cbi PORTD, START ;habilitar interrupciones sei mainloop: nop rjmp mainloop

69 ..5. ADQUISICIÓN DE DATOS La adquisición de datos la lleva a cabo como se indicó anteriormente la rutina de atención a la interrupción periódica del contador 0, IRQ_TIMER0. Para evitar problemas de desbordamiento del buffer de salida de datos hacia el enlace de radio frecuencia, si el bit de Transmisión Enabled de la UART del Atmel está a cero, la rutina simplemente devolverá el estado a la espera activa. Si por el contrario sí que se pueden transmitir datos, la rutina primeramente determina si debe añadir las cabeceras de datos, tanto de Estado como de Imagen, con los correspondientes seis bits menos significativos de la fila a la que pertenecen los píxeles a enviar. Para ello se han habilitado los bits y del byte del registro COMM que mantiene el estado de las comunicaciones: registro COMM FR VD WC NIF NSF TE Byte Figura 5 Detalle del registro de estado COMM Así el bit estará a uno siempre que se deban incluir las cabeceras de trama de imagen ( New Image Frame ) y el indica si se debe mandar el estado o no ( New Status Frame ) Estos bits se ponen automáticamente a uno en la rutina de atención a la interrupción del TIMER, que se lanza cuando ha transcurrido el tiempo de guarda necesario que impone la tarjeta de radio frecuencia para modular los paquetes de 96 bytes que se le han mandado. Tras incluir, si procede, las cabeceras de trama, la rutina verifica si el bit DATA (PD7) está a uno, en cuyo caso deberá, por un lado mandar un uno a la señal de reloj XCLK (PD5) para que la cámara cargue a la su salida de datos analógica el siguiente píxel y por otro, activar la señal ADCSTR poniendo el bit PC7 a cero para que el conversor A/D inicie la conversión del dato que viene de la

70 cámara. En la siguiente ejecución de la rutina periódica, la señal INCAM (PC6) estará a cero, indicando que el conversor A/D ha finalizado la conversión y en el puerto A se dispondrá del píxel en formato digital. Tras poner a cero el reloj de la cámara XCLK, el byte se envía por el canal de comunicaciones y se actualizan los registros en los que se almacenan la fila y la columna por la que se va. En caso de alcanzar la columna 7, se pasa a la línea siguiente y en caso de alcanzar la línea 7, los contadores se ponen a cero y se queda en estado de espera hasta, transcurrido el tiempo de exposición, la señal READ vuelva a estar activa indicando que la nueva imagen está lista para ser leía píxel a pixel. Para determinar si se está en la primera fase de conversión A/D o en la segunda se usa el bit T del registro de estado del Atmel, que a su vez controla el reloj XCLK...6. LAS RUTINAS DE ENLACE Antes de mandar ningún dato por el canal de comunicaciones es preciso incluir las cabeceras de tramas, los separadores y evitar los datos 00 para que no se confundan con los separadores de trama. Las rutinas DEL_ENLACE, AL_ENLACE, METE_FR_SP, PROCESA_BYTE y SEND_ACK cubren todas las tareas del nivel de enlace. Los decodificadores de datos que vienen desde el canal y los codificadores de datos hacia el canal usan tres registros cada uno para mantener el estado interno de los bits que todavía no se han enviado o decodificado al haberse eliminado bits de cero de redundancia impuestos por los separadores de trama 00. Así se han asignado los siguientes registros, tanto inmediatos como no inmediatos:.def enacu = r8.def enacuav = r5.def encount = r0.def deacu = r

71 .DEF deacuav =.DEF decount = r r.def ocho = r ;registro de sucio.def sucio = r5 ;registro de guarreo.def tosend = r6.def torec = r7.def mierda = r9.def COMM = r6.def endata = r7.def dedata = r También se han definido los siguientes EQU que contienen las direcciones de la memoria de datos del Atmel que almacenan los IDs de tramas esperados, recibidos y la ventana de recepción de comandos de 6 bytes..equ expfrid = $00.EQU curfrid = $0.EQU bufffr = $0 ;esto mas 6 es la ventana Las rutinas codificadoras y decodificadoras del enlace se basan en desplazamientos lógicos con arreo y comprobación bit a bit de si es un cero o un uno. En caso de que sea un uno, los contadores encount o decount se incrementan, y si se trata de un cero, los contadores se resetean. Para el caso del codificador, al recibir cinco unos seguidos, automáticamente introduce un cero para evitar que otro uno más lo confunda por un separador de trama. Para el decodificador, si se recibe un cero y el número de unos es igual a 6, entonces se tiene un separador de trama, activando el bit más significativo del registro de comunicaciones COMM. Si por el contrario son 5 el número de unos recibido, entonces se trata de un cero redundante, que es eliminado automáticamente. Finalmente, si es inferior a cinco el número de unos, el cero es válido. C - 7 -

72 ACUMULADOR DATO COD/DEC Figura 6 Esquema de funcionamiento de los codificadores de enlace Así se tiene el codificador de enlace AL_ENLACE: tosend, 0x08 loop: lsl endata ;BMS del endata al C brcs send ;si C== enviamos encount, $06 ;como es 0, se resetea el contador alacu: rol enacu ;al acu por la derecha el C que es el dato que queremos rjmp chkacu; send: dec encount brne alacu ;no se han mandado mas de 5 unos ror endata ;volvemos a meter a endata el BMS lsl enacu ;metemos al acumulador un 0 por la derecha inc tosend; chkacu: dec enacuav ; brne sig ; ;ENVIO A LA UART DEL BYTE SI PROCEDE (AL_CANAL) del enacu rcall AL_CANAL sig: clr enacu; ocho, 0x08 mov enacuav, ocho; dec tosend brne loop; ret Y el decodificador de enlace - 7 -

73 ;Decodifica un byte recibido de la RF, quitando adecuadamente la sobrecarga ;introducida por el uso de los separadores de trama DEL_ENLACE: torec, 8 in loop: lsl dedata brcc rx0 dedata,udr inc decount alacu: rol deacu ;se meten los datos por la derecha del C dec deacuav brne deacuchk sbr COMM, 6 ;xxxxxxx, dato valido ;SALTO POR HACER AL PROCESADOR DE BYTES rcall PROCESA_BYTE clr deacu ocho, 0x08 mov deacuav, ocho; rx0: rjmp deacuchk cpi decount, $05 breq rx0 ;esto si tenemos un cero que sobra brmi rx0 ;cero legal, se mete al acu ;eso es una bonita trama ;y se indica en el BMS del byte COMM cbr COMM, 6 ;x0xxxxxx, dato no valido sbr COMM, 7 ;xxxxxxx, frame separator clr deacu ; mov deacuav, ocho; rjmp deacuchk rx0: clr decount clc el rol meta un cero rjmp alacu ;poner a cero el C para que - 7 -

74 rx0: clr decount deacuchk: dec torec brne loop Que también hace uso de la subrutina de envío de confirmaciones de comando y de la subrutina de procesado de bytes: ;procesa el byte recibido ;usa como entrada el deacu.def backup = r PROCESA_BYTE: mov backup, deacu sbrs COMM, 6 ;xxxxxxx byte valido? rjmp finpro sbrs COMM, 7 ;xxxxxxx nueva trama? rjmp sigue5 ;aqui tenemos un inicio de trama ;el dato del acu es el frame ID si es comando andi deacu, $C0 brne finpro sbr COMM, 5 ;xxxxxxx, en espera de comando cbr COMM, 7 ;0xxxxxxx, ya no es inicio de trama sts curfrid, backup rjmp finpro sigue5: ;comprobar si estamos en espera de comando sbrs COMM, 5 rjmp finpro cbr COMM, 5 ;ya lo atendemos y pasamos a modo de espera general ;comprobar si es el RESERVADO antes de nada, que tiene prioridad cpi deacu, 0xff breq COM_VALID lds ocho, curfrid lds sucio, expfrid - 7 -

75 cp ocho, sucio brne yaenviado COM_VALID: ;comando valido push ocho rcall SEND_ACK ;almacenamos el comando valido en la ventana de recepcion ;para mandar ACKs de paquetes ya recibidos mierda, bufffr add ocho, mierda;ocho contiene la pos de memoria RAM donde guardar push r0 push r mov r0, ocho st z, backup pop r pop r0 inc sucio andi sucio, $F sts expfrid, sucio ;SALTO A PROCESAR COMANDO rcall PROC_COM rjmp finpro yaenviado: mov sucio, ocho mierda, bufffr add sucio, mierda; tenemos la pos de memoria ande mirar push r0 push r ld sucio, z pop r pop r0 cp sucio, deacu brne finpro ;MANDAR ACK DEL FR ID que esta en ocho

76 push ocho;el FR ID esta en la pila rcall SEND_ACK finpro: mov deacu, backup ret SEND_ACK: ;primerito de todo, meter el FR SP rcall METE_FR_SP ;ahorita meter el ACK push endata push sucio push r0; push r; in r0, SPL in r, SPH adiw r0, ld sucio, z ;sucio tiene ahora el FR ID a mandar ori sucio, 0x0 ;enmascarar con 0xxxxxx, que indica ACK de comando mov endata, sucio rcall AL_ENLACE pop r; pop r0; pop sucio; pop endata ret La rutina encargada de procesar bytes se fija, primeramente si está activado el bit de trama nueva (FR, 7) de COMM, y en caso contrario, si está activado el bit de dato válido (VD, 6) del registro COMM. En este último caso recoge el byte decodificado y determina si se trata de un inicio de trama de comando, en cuyo caso almacena el ID de la trama en la posición de memoria de currfrid y activa el bit 5 del COMM, indicando que esta a la espera de nuevo comando (WC)

77 Si PROCESA_BYTE determina que está a la espera de un byte y el byte disponible en deacu es válido (bit 6 de COMM), entonces, cargará el valor almacenado en currfrid y en expfrid y los comparará, si son iguales, el comando es válido. En este caso, se almacena en la posición de memoria (bufffr + <frame actual>) el valor del comando recibido, se envía un ACK para el comando y se llama a la subrutina PROC_COM que se encarga de procesar el comando. En caso de que el comando recibido no tenga el identificador de trama esperado y el valor del comando sea igual al dato almacenado en la posición de memoria de datos buffrf + <frame recibido>, se trata de un comando reenviado por error, y se manda un ACK del comando. En caso de que no coincida con el valor registrado, no se hace nada y se sigue esperando a recibir una trama con el Identificador de Trama de Comando válido o bien un comando reservado para resincronizar con el host remoto. Finalmente, este módulo de rutinas de enlace dispone de la rutina METE_FR_SP encargada de introducir sin sobrecarga alguna de ceros un separador de trama 00 al canal: ;envia un separador de trama METE_FR_SP: endata, 6; la trama mov tosend, ocho ; loop: lsl endata ;BMS del endata al C ror enacu ;al acu por la derecha el C que es el dato que queremos dec enacuav ; brne sig ; ;ENVIO AL CANAL (AL_CANAL) rcall AL_CANAL sig: clr enacu; mov enacuav, ocho; dec tosend

78 brne loop; ret..7. EL NIVEL FÍSICO Las rutinas del nivel físico comprenden a AL_CANAL, ENVIA_SERIE y acttimer. Dado que las tarjetas de radio frecuencia exigen un tamaño máximo de ráfagas de 96 bytes y un tiempo de guarda entre ráfagas fijado por la expresión estas rutinas deberán respetar estas limitaciones. Para ello lo que se hace es almacenar los datos a enviar en un búfer auxliar de 9 bytes de capacidad y se activa el TIMER que, al lanzarse su interrupción TIMER lo que hace es transmitir de golpe hasta un máximo de 96 bytes almacenados en el búfer y esperar el tiempo de guarda máximo antes de volverse a ejecutar hasta vaciar el búfer de salida. Las posiciones de memoria de datos empleadas son: ;nivel fisico.equ inibuffer = 0x.EQU capbuffer = 0xC0.DEF puntenvio = r8 ;registro inmediato.def puntmete = r9 ;registro inmediato.equ serieava = 0x0 ;pos de memoria donde esta la capacidad de las RF Asimismo se definen los punteros de Envío y Mete que apuntan respectivamente a las posiciones de memoria de datos con el byte a enviar la siguiente vez que se ejecute la rutina de interrupción IRQ_UBOE y el hueco en el búfer para el siguiente byte a enviar. AL_CANAL: cpi puntmete, capbuffer breq fincanal mov ocho, puntmete clr sucio

79 mierda, LOW(iniBuffer) add ocho, mierda mierda, HIGH(iniBuffer) adc sucio,mierda push r0 push r mov r0, ocho mov r, sucio st z, enacu pop r pop r0 inc puntmete ;ACTIVAR LA TAREA DE ENVIO in sucio, TCCRB cpi sucio, 0x00 brne fincanal ;la tarea no esta activada, la activamos sucio, 0x0;modo NO PREESCALADO!!! TCCRB, sucio fincanal: ret ENVIA_SERIE: ;metemos el byte SOLO si ya esta vacio el UDRE sbic USR, 5 rjmp etiqueta rcall acttimer rjmp finenvia ;decrementar la capacidad del buffer etiqueta: push r0 push r r0, LOW(serieAVA) r, HIGH(serieAVA) ld sucio, z

80 ;ahora sucio tiene la capacidad del buffer dec sucio brne otro rcall acttimer otro: st z, sucio mov ocho, puntenvio clr sucio mierda, LOW(iniBuffer) add ocho, mierda mierda, HIGH(iniBuffer) adc sucio,mierda mov r0, ocho mov r, sucio ld sucio, z pop r pop r0 UDR, sucio inc puntenvio cpi puntenvio, capbuffer brne finenvia clr puntenvio clr puntmete finenvia: ret acttimer: ;activar tempo ocho,0x00 TCNTL,ocho ocho,0xb8 TCNTH,ocho ;Máximo retardo de 0us ocho,0x0 TCCRB,ocho cbi UCR, ;deshabilitamos la TX de la UART ret

81 La rutina acttimer es la encargada de activar el contador, cargándole además el retardo máximo de tiempo de guarda como valor iniciar. Para enviar datos al canal se usa la rutina AL_CANAL, que guarda en el búfer auxiliar el byte contenido en el registro enacu Como el canal es half-duplex, no se envían datos cuando se están recibiendo datos. De este modo, la rutina de atención a la interrupción de recepción de datos desde la UART deshabilita la transmisión poniendo el bit del registro I/O UCR a cero al entrar en la rutina y restaurando su valor a uno tras la ejecución de la misma, justo antes del reti. También mientras está el TIMER activado no se permite la transmisión

82 5. HOST DE CONTROL REMOTO Este host se encarga de controlar a la unidad móvil, recibiendo por una parte los datos que recopile ésta, y por otra parte, mandándole las órdenes pertinentes para su funcionamiento en modo manual. 5.. PLACA DE CONTROL La comunicación se realiza a través de las tarjetas de radiofrecuencia de Auriel WIZ--SML-IA que se conectan al equipo vía puerto Serie. Estas tarjetas trabajan con señales TTL, mientras que los puertos Serie, típicamente, COM, de los ordenadores trabajan con señales en RS. Para llevar a cabo la adaptación de niveles se hace uso de la siguiente placa que dispone de un conversor MAX de Maxim. Figura 7 Placa de control del host Este circuito integrado dispone de dos entradas TTL con sus correspondientes salidas en RS y dos entradas RS y sus salidas convertidas en TTL. En la placa adaptadora se ha hecho uso de únicamente un par de entradas, quedando el otro libre

83 Figura 8 Detalle del adaptador MAX La placa puede ser alimentada directamente con una pila de 9 voltios o bien usando una fuente de alimentación y los conectores hembra de tipo banana. El circuito dispone de un regulador de tensión de 5 voltios L7805 para poder usar distintas alimentaciones. La conexión con el PC se realiza mediante el conector DB9 hembra incorporado, y la tarjeta de radio frecuencia se conecta mediante un bus de 0 hilos al conector. PIN Figura 9 Detalle de la conexión con la tarjeta de radio frecuencia Cuando el circuito está correctamente alimentado, el LED rojo de la placa y el LED POW de la placa de radiofrecuencia se encenderán. Al - 8 -

84 abrirse el puerto por la aplicación de control, el LED Verde la placa se iluminará. Este LED corresponde a la señal DTR del puerto serie COM, y se alimenta de la propia señal que recibe desde el equipo PC, por lo que puede estar perfectamente encendido sin tener el circuito alimentado, en cuyo caso el enlace RF no funcionará. Cuando se transmiten o reciben datos por la radiofrecuencia, el led RTX se encenderá. DTR POWER POWER RTX Figura 0 LEDs de la placa de control De los nueve pines de la conexión DB9 serie sólo se emplean los cinco primeros: Pin DCD, Data Carrier Detect, activo a nivel bajo, se pone a cero cuando se detecta portadora. Está conectado al pin 6 de la tarjeta de radio frecuencia (XTR Carrier Detect.) Pin TXD, Transmitted Data, los datos a transmitir por radio enlace. Pin RXD, Received Data, los datos recibidos desde el radio enlace

85 Pin DTR, Data Terminal Ready, se activa cuando el equipo terminal, es decir, el PC está listo, que se produce cuando se abre el puerto de comunicaciones. Pin 5 GND, Signal Ground, la tierra del PC y que se usa en toda la placa como tierra. Está conectada internamente a los pines y de la tarjeta de radiofrecuencia. Los pines usados de la tarjeta de radio frecuencia están marcados en rojo en la siguiente ilustración: Figura Pines de contacto de la tarjeta de radiofrecuencia WIZ--SML-IA 5.. EL SOFTWARE El software del equipo de control está escrito en el lenguaje Java de Sun Microsystems, concretamente, para su versión de JSDK.._0. La elección de este lenguaje se ha debido a su práctica independencia de la plataforma en que se ejecute la máquina virtual de Java. Asimismo, para poder compilar el proyecto entero, se ha usado la herramienta ANT del grupo Jakarta de la Apache Foundation. Para más información acerca de la instalación de ANT, vea el apéndice A Instalación del Software. El acceso a los puertos de comunicaciones serie se realiza a través del paquete javax.comm que Sun Microsystems distribuye de forma separada al JSDK. Nuevamente, para su descarga e instalación, vea el apéndice A. El software de control se compone básicamente de tres módulos o paquetes de Java:

86 Paquete com.theexbteam.comm, que proporciona las clases necesarias para establecer una conexión serie a través de las tarjetas de radio frecuencia. Paquete com.theexbteam.robots, que incluye las clases de gestión y control del robot. Paquete com.theexbteam.robots.ui, que reúne las clases de la interface de usuario, tanto en línea de comandos como las gráficas. El último paquete precisa del segundo, y el segundo paquete hace uso de las clases del primero. No obstante, el paquete de comunicaciones se puede utilizar para desarrollar cualquier otra aplicación que precise de acceso a los puertos de comunicaciones serie o paralelo. Para un mayor detalle de la API de cada paquete, vea la documentación generada por la herramienta javadoc que incluye precisas descripciones de los métodos más importantes de cada clase. 5.. PAQUETE COM.THEEXBTEAM.COMM Como ya se indicó, este paquete de clases permite transmitir datos a través de un puerto de comunicaciones del equipo PC. Sus clases hacen uso de las clases de javax.comm para abrir primeramente los puertos, activar los eventos pertinentes de aviso de llegada de datos y resolver los posibles conflictos que puedan surgir entre dos aplicaciones que intenten acceder al mismo puerto. La clase AurielWizSerialConnection, que deriva de la SerialConnection, es la encargada de gestionar el uso del canal halfduplex que proporcionan las tarjetas de radio frecuencia Auriel WIZ-- SML-IA. Permite a las aplicaciones que la usen mandar y recibir de forma transparente datos, sin tener que preocuparse éstas por el acceso al canal, la fragmentación de paquetes de 96 bytes que imponen las tarjetas, o de guardar los tiempos especificados en las hojas del fabricante. Internamente esta clase lo que hace es almacenar en un buffer secundario los datos a enviar y proceder a su transmisión a la tarjeta de radio frecuencia transcurrido los tiempos de guarda, fragmentando

87 además el buffer en segmentos de 96 bytes. Finalmente, y mientras está recibiendo datos, la salida de datos hacia la radio frecuencia se inhabilita para evitar colisiones al estar los dos extremos usando el canal de forma simultánea. La clase AurielWizSerialConnection, por defecto, y a diferencia de su padre, SerialConnection, no atiende los eventos Output Buffer Empty, Buffer de Salida Vacío. En caso de que se desee recibir notificaciones de este tipo, se debe usar la función setporteventoutputemptyenabled(true). Figura Diagrama UML del paquete com.theexbteam.comm Este paquete incluye además un subpaquete llamado com.theexbteam.comm.util, que implementa las funciones necesarias para la creación de los delimitadores de trama 00 usados en el nivel de enlace del protocolo de comunicaciones. Así, intercalará automáticamente a toda secuencia de datos de cinco unos seguidos un

88 cero, independientemente de que el siguiente bit sea uno o cero, para así evitar que los datos se confundan con los separadores de tramas. Cabe destacar que el método getframedecoded(byte) de la clase FrameEncoder puede devolver tres tipos de datos: Un byte con el valor decodificado resultado de concatenar el acumulador interno de la clase que contiene bytes incompletos con el último byte introducido, eliminando pertinentemente la sobrecarga de ceros introducida tras cinco unos consecutivos. En este caso, el método isdecodedvalid() deberá devolver true. Un objeto FrameSeparator, arrojado por el método, en cuyo caso tanto isdecodedvalid() devolverá false, que indica el comienzo de una nueva trama. Un byte no válido, al devolver isdecodedvalid() false. Esto se debe a que se ha eliminado una sobrecarga de ceros y no se ha llegado a completar los ocho bits del acumulador interno y por tanto no se puede procesar el byte recibido hasta que llegue el siguiente. 5.. PAQUETE COM.THEEXBTEAM.ROBOTS La misión de este paquete es controlar la unidad remota, recibir los datos que ésta le transmita y transmitir las órdenes pertinentes de movimiento, ajuste de cámara o de sistema. El siguiente diagrama UML muestra las clases principales del paquete así como su interrelación:

89 Figura Diagrama UML del paquete com.theexbteam.robots La clase Kernel es el núcleo del sistema de control. Ella alberga las clases CommunicationsCore, ImageCore, StatusMonitor y CommandCore, encargadas de las tareas de comunicaciones, procesado de imágenes, monitor de estado del robot y control de órdenes del robot respectivamente: CommunicationsCore: implementa el nivel físico y de aplicación de la pila de protocolos de comunicaciones y realiza las conexiones con los puertos de comunicaciones serie según los parámetros que se le pasen al crear una instancia de ella. Los bytes que recibe desde el nivel físico a través de las clases del paquete com.theexbteam.comm son decodificados, separando cada trama de la anterior, determinando si pertenecen al servicio de datos o al de comandos, y, en este último caso, enviando los paquetes de confirmaciones pertinentes. Una vez extraído el servicio al que pertenece la información recibida, propaga los eventos resultantes a las clases de gestión de datos y comandos: ImageCore y StatusMonitor por un lado y CommandCore por el otro

90 Además recoge estadísticas de uso del radio enlace que pueden ser consultadas a través de la función getstats() que devuelve un objeto de la clase java.util.map con diversos valores, como son los bytes enviados y recibidos, comandos y confirmaciones enviados y recibidos y estado de las ventanas de envío y recepción del protocolo confirmado de comandos. Los comandos de sistema PING no lanzan eventos CommandEvent de tipo COMMAND_RECEIVED o COMMAND_ ACKNOWLEDGE, sino que se generan de tipo PING_ECHO_REQUESTED cuando se reciben en la unidad remota y PING_ECHO_RECEIVED cuando se recibe en la unidad que envió el comando original el ACK del mismo. ImageCore: atiende los eventos de datos de imagen que la unidad remota transmite al host controlador así como mantiene la configuración de la cámara del robot. Así, permite variar los diversos modos de adquisición de la cámara, el tiempo de exposición o la ganancia de salida de la señal de la cámara. Las modificaciones en los registros de la cámara sólo se mandan a la unidad remota cuando se llama al método loadsettings(), no cuando se modifican los valores. Para más información acerca de los valores que se pueden configurar, vea la documentación de la clase o bien el apartado dedicado a la cámara de la memoria. StatusMonitor se encarga de controlar el estado general del robot. Toma los datos de tipo status que se reciben desde el enlace de radio frecuencia. Actualmente sólo se mantiene el estado hay línea que indica que la unidad remota en modo automático está siguiendo con éxito un camino marcado. CommandCore. Esta clase facilita a la interface con el usuario el conjunto necesario de métodos para gobernar el robot en modo manual, enviando al CommunicationsCore las órdenes de comando necesarias para realizar los movimientos que se le indiquen. Para interactuar con el Kernel de la aplicación se dispone de la clase abstracta UserInterface, que se encarga de ejecutar los métodos

91 pertinentes de Kernel y sus elementos de acuerdo con las acciones que realice el usuario o la aplicación final. Se disponen de dos clases que heredan de UserInterface: CommandLineInterface, interface de línea de comandos, orientada a interpretar cadenas de comandos que se le pasen desde eventos de teclado. GraphicalUserInterface, orientada a interfaces gráficas, proporciona los métodos de escucha de los eventos principales de java.awt como son los MouseEvents. Figura Aspecto de la interface gráfica de usuario - 9 -

92 6. APÉNDICE A: INSTALACIÓN DEL SOFTWARE El software ha sido desarrollado y probado con éxito en un entorno Windows NT5 (000/Xp Home y Pro), usando para su edición JBuilder 8 Enterprise de Borland y compilando satisfactoriamente tanto con los compiladores de Borland como los del JSDK.._. Figura 5 Logotipo del lenguaje de programación Java de Sun Microsystems El entorno Jakarta-ANT proporciona una forma rápida de compilar y generar de forma automatizada la documentación de las librerías creadas, que es, además, y a diferencia de make independiente de la plataforma en que se ejecute. Jakarta-ANT pertenece al grupo de desarrollo Jakarta de la Apache Software Foundation. Figura 6 Logotipo del proyecto APACHE ANT A continuación se describe el procedimiento para instalar y ejecutar las clases compiladas distribuidas. 6.. INSTALACIÓN DEL ENTORNO JAVA Si solamente desea ejecutar las clases previamente compiladas y no tiene intención de recompilar los fuentes, deberá contar con el entorno de ejecución de Java (JRE, Java Runtime Environment), en su versión, como mínimo.._, disponible gratuitamente en: Si por el contrario desea compilar los fuentes deberá instalar el entrono de desarrollo estándar de Java (JSE-SDK, Java Standar Edition Software Development Kit), en su versión, como mínimo,.._, también disponible desde el enlace anterior para su descarga gratuita

93 Una vez descargado al equipo local la versión de Java, ejecute el archivo que iniciará el proceso automático de instalación del entorne elegido de Java. 6.. INSTALACIÓN DE LAS LIBRERÍAS JAVAX.COMM Para instalar correctamente las librerías de comunicaciones de Sun Microsystem siga los siguientes pasos: Descargue de la última versión para la plataforma que use. Actualmente hay versiones disponibles para plataformas Microsoft Windows y Sun Solares, tanto para SPARC como para x86. Descomprima el contenido del archivo comprimido a una carpeta temporal si sólo va a ejecutar el programa o bien a una carpeta de desarrollo de su conveniencia para el caso de que prefiera compilar o modificar los fuentes. Revise antes de seguir los documentos README.HTML y jdk..html por si difiriera la instalación con el procedimiento aquí descrito para la versión.0 de la API de comunicaciones javax.comm. Localice el directorio de instalación del Java Runtime Environment, JRE en su equipo, por defecto instalado en la subcarpeta <jdk>\jre si instaló conjuntamente el JSDK y el JRE o en la carpeta \jre si instaló únicamente el JRE. En la subcarpeta <jdk>\jre\lib\ext, copie el archivo comm.jar que encontrará entre los archivos comprimidos. En la subcarpeta <jdk>\jre\lib, copie el archivo javax.comm.properties. Si no va a compilar el proyecto, puede borrar ya la carpeta temporal en la que descomprimió los archivos. Si va a compilar el proyecto deberá agregar a la variable de entono CLASSPATH del sistema el archivo comm.jar, indicando tanto la ruta de acceso como el nombre del mismo. Para entornos Windows puede usar la directiva: - 9 -

94 SET CLASSPATH=%CLASSPATH%;<PATH_COMM.JAR>\comm.jar 6.. INSTALACIÓN DE LA APLICACIÓN DE CONTROL Los archivos necesarios para ejecutar la aplicación de control así como toda la documentación y los archivos fuentes de la aplicación se encuentran disponibles para su descarga desde la URL Descomprima el archivo y agregue a la variable de entorno CLASSPATH la carpeta classes que contiene la distribución con todas las clases compiladas de la forma: SET CLASSPATH=%CLASSPATH%;<PATH_CARPETA_INSTALACIÓN>\ Para ejecutar las distintas Interfaces de Usuario o programas de diagnóstico, refiérase al fichero README.TXT de la distribución, en la que encontrará detallada información acerca de los programas incluidos. 6.. INSTALACIÓN DE JAKARTA-ANT La instalación del entorno Jakarta-ANT comprende los siguientes pasos: Descargue la última distribución de Jakarta-ANT desde la página del proyecto Descomprima el contenido de la distribución. Asumiremos aquí <ant> como la ruta a la carpeta en la que descomprimió ANT. Agregue a la variable de entorno PATH en los sistemas Windows o su equivalente para otras plataformas o sistemas operativos la carpeta <ant>\bin. Para sistemas Windows: SET PATH=%PATH%;<ant>\bin\ Cree la variable de entorno ANT_HOME con la ruta a la carpeta de instalación de ANT: SET ANT_HOME=<ant> Opcionalmente, y si tiene problemas para ejecutar ANT, cree la variable de entorno JAVA_HOME que debe apuntar a la carpeta de instalación del JSDK: - 9 -

95 SET JAVA_HOME=<PATH_JSDK>\ Para poder ejecutar correctamente los build.xml de los paquetes de la aplicación, deberá crear además dos variables de entorno llamadas JAVA_LIBS y JAVA_DOC. La primera variable deberá contener la carpeta en la que se colocarán las clases compiladas y en la que se buscará a la hora de compilar el proyecto las clases dependientes (CLASSPATH) y la segunda indicará la ruta donde se copiará la documentación generada automáticamente por la tarea documentar de que cuenta cada build.xml. Adicionalmente se disponen de las tareas compilar para compilar (tarea por defecto), documentar para generar la documentación, empaquetar para generar un archivo comprimido.jar con todas las clases, limpiar para eliminar las clases y la documentación y limpiardoc para eliminar sólo la documentación generada

96 7. APÉNDICE B ESQUEMÁTICOS DE LAS PLACAS En las siguientes dos páginas se han recogido a gran tamaño los esquemáticos detallados de las dos placas de control de la unidad remota

97 J PWR_IN D DEP R 70 + C 0uF C 00nF U L7805/TO0 VIN VOUT GND C 00uF + C 00nF J PWR_OUT D PWR_ON Y C8 5pF 0MHz C9 5pF Title Size Document Number Rev A. Date: Monday, May 9, 00 Sheet J REGULADOR U AT90S XTAL XTAL ICP RST ALE 0 OCB 9 R 70 0 GND PA0/AD0 PA/AD PA/AD PA/AD PA/AD PA5/AD5 PA6/AD6 PA7/AD7 PB0/T0 PB/T PB/AIN0 PB/AIN PB/SS PB5/MOSI PB6/MISO PB7/SCK VCC PC0/A8 PC/A9 PC/A0 PC/A PC/A PC5/A PC6/A PC7/A PD0/RXD 0 PD/TXD PD/INT0 PD/INT PD PD5/OCA 5 PD6/WR 6 PD7/RD 7 Y C5 5pF 8MHz C6 5pF 0 U VIN REF+ REF- MODE RD CS VCC D0 D D D D D5 D6 D7 INT OFL GND U5 LM85-.5/TO R7 K J SRV TARJ_CTRL U PIC6F8 RA0 RA RA RA RA/TOCKI OSC/CLKIN OSC/CLKOUT MCLR VDD 5 GND RB0/INT RB RB RB RB RB5 RB6 RB WR/RDY PIX0 PIX PIX PIX PIX PIX5 PIX6 PIX7 CAM CAM CAM CAM MOSI MISO SCK XTAL XTAL RESET GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE INCAM ADCSTR RX TX XRESET SIN LOAD XCLK START READ R 70 D PROG J6 R 0K RESET MOSI RST SCK MISO TX RX XTAL XTAL OSC OSC R5.K SRV SRV OSC OSC RESET VOUT ADCSTR GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE J SERVO J5 SRV SERVO CAM CAM CAM CAM EXP0 EXP EXP EXP J7 EXPANS C7 00nF RESET R 0K R K SW RESET J7 PIX0 PIX PIX PIX PIX PIX5 PIX6 PIX7 INCAM XRESET SIN LOAD XCLK START READ VOUT D DIODO_RST PROGRAMADOR J AURIEL ADC080 CAMARA Tarjeta Principal para Robot LSED of

98 D DEP R 70 UA U L7805/TO0 VIN VOUT GND 7 UB J5 PWR_IN + C 0uF C 00nF C 00uF + C 00nF UC U L9 A A A A /EN /EN VCC VCC Y Y Y Y 6 J6 MOT 7 J7 MOT D READY R ,V J J PWR_OUT +7,V J PROGRAMADOR R 0K C 00nF SW RESET R5 K BUMPER R0 0K U AT90S XTAL XTAL ICP RST ALE 0 OCB 9 Y C7 5pF 8MHz C8 5pF R 70 D PROG D DIODO_RST C9 00uF + 0 GND GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE MARCHA MOT_DIR0 MOT_DIR MOT_DIR0 MOT_DIR MOSI MISO SCK XTAL XTAL RESET GOT_LINE MOTAC MOTAC MOTAC MOTAC0 MODE J BUMP_TRAS PA0/AD0 PA/AD PA/AD PA/AD PA/AD PA5/AD5 PA6/AD6 PA7/AD7 PB0/T0 PB/T PB/AIN0 PB/AIN PB/SS PB5/MOSI PB6/MISO PB7/SCK VCC PC0/A8 PC/A9 PC/A0 PC/A PC/A PC5/A PC6/A PC7/A PD0/RXD 0 PD/TXD PD/INT0 PD/INT PD PD5/OCA 5 PD6/WR 6 PD7/RD 7 EXP EXP EXP EXP UD BUMPER BUMPER 7 CNY CNY CNY CNY BUMPER BUMPER BUMPER BUMPER EXP EXP MODE INT_MEC BUMP_TRAS EN_MOT EXP EXP EN_MOT CNY CNY D PWR_ON R 70 XTAL XTAL MOSI R 0K RST SCK MISO RESET INT_MEC CNY R5 7K CNY R9 7K MOT_DIR0 MOT_DIR MOT_DIR0 MOT_DIR EN_MOT EN_MOT R 0 R8 0 D9 N 00 N D7 D8 N00 N00 +7, RESET MARCHA J BUMPER R 9 0K BUMPER R 0K BUMPER R 0 0K Title Tarjeta de control de motores para Robot LSED Size Document Number Rev A.0 Date: Monday, June, 00 Sheet of R K TARJ_PPAL EXPAN R 7K R7 7K R 0 J8 R6 0 CNY J0 CNY J9 CNY J CNY 00 +7,V D N00 D0 +7,V C0 00nF D N00 D6 N00 D5 C6 00nF N00 +7,V V R6 0K C 00nF SW MARCHA R7 K J BUMPER BUMPER J J5 BUMPER BUMPER

99 8. APÉNDICE F: AVISOS LEGALES 8.. PAQUETES COM.THEEXBTEAM.* Las librerías pertenecientes a los paquetes com.theexbteam.* se distribuyen bajo licencia de fuente abierta u open source. Esta licencia es la siguiente: Copyright 00 The EXB Team. Todos los derechos reservados. The EXB Team ( EXB ) garantiza al usuario una licencia de uso, modificación y redistribución del software tanto en forma de código fuente o binario, no exclusiva y libre de royalties, siempre que se mantenga: i) este aviso de copyright aparezca en todas las copias del software. ii) iii) El código fuente de este software se incluya en la distribución o al menos se indique de dónde se pueda obtener dichos fuentes. El usuario licenciado no utilice el software en manera alguna que perjudique a EXB Este software se distribuye tal cual, sin garantía alguna de cualquier tipo. Toda condición explícita o implícita, representaciones y garantías, incluyendo aquellas que impliquen garantías comerciales están excluidas. EXB y sus usuarios licenciados no serán responsables por cual daño que sufran los usuarios licenciados como resultado del uso, modificación o distribución del software o sus derivados. En ningún caso EXB o sus usuarios licenciados serán responsables por cualquier pérdida de rédito, beneficio o datos derivados del uso de este software. El uso de este software implica la aceptación de estos términos de uso. Esta licencia de uso puede cambiar en versiones futuras del software. En cualquier caso, revise la licencia que se incluya en las distribuciones. 8.. LIBRERÍAS JAVAX.COMM Las librerías javax.comm de la API de comunicaciones de Java proporcionadas por Sun Microsystems se licencian según el acuerdo de uso descrito en el formulario Form ID#080/LFI#979 disponible en el paquete de las librerías y desde la URL

100 Sun Microsystems no ofrece ningún tipo de garantía de funcionamiento del software, proveyéndolo tal cual y su única responsabilidad se limita al reemplazo del Software. 8.. TERCERAS PARTES Microsoft Windows es una marca registrada de Microsoft Corporation. Java, JSDK, JRE y JSE son marcas registradas de Sun Microsystems. El logotipo de Java pertenece a Sun Microsystems. Apache, Jakarta-ANT y ANT son marcas registradas de la Apache Software Foundation. El paquete ANT se distribuye bajo licencia Apache Software License, Version., disponible desde la URL El logotipo de Apache-ANT y Apache pertenecen a la Apache Software Foundation

101 9. BIBLIOGRAFÍA Para más información sobre este y otros proyectos, versiones actualizaciones del software y firmware del robot así como la API detallada de las librerías empleadas, consulte 9.. REFERENCIAS BIBLIOGRÁFICAS (POR HACER) [FRA88] Sergio Franco, Operational Amplifiers and Analog Integrated Circuits, McGraw-Hill International Editions, Electrical & Electronic Engineering Series. International edition 988. publicaciones, E.T.S.I. Telecomunicación. UPM, 00. [MAL98] N. R. Malik. Circuitos electrónicos. Análisis, diseño y simulación, Prentice Hall, Madrid, 998 [SAN0] Jesús Sanz Maudes et al. Manual de prácticas de Laboratorios de Electrónica Básica y Componentes, ª Parte (simulaciones PSPICE), Servicio de publicaciones, E.T.S.I. Telecomunicación UPM, 00. [WAK0] John F. Wakerly. Diseño digital, Prentice Hall, México,0. [TAN0] Andrew S. Tanenbaum, Computer Networks, fourth international edition, Prentice Hall, Upper Saddle River (NJ), 00. [HER97] Guillermo Herranz Acebo, Ingeniería Eléctrico, 997, Madrid, Departamento de Publicaciones de la E.T.S.I Telecomunicación UPM. 9.. HOJAS DE CARACTERÍSTICAS Y RECURSOS EN LA RED Se han empleado las siguientes hojas de características disponibles en Internet: [FER et al. 00] J. Ferreiros, J. Macías, et al. Aspectos prácticos de diseño y medida en laboratorios de electrónica, Servicio de - 0 -

102 Philips Semiconductors, para los componentes digitales. Maxim, para los conversores RS a TTL MAX. Atmel, para los microcontroladores. Nacional Semiconductors, para el ADC080. Microchip, para el PIC6F8. Timming tool, para los cronogramas. 9.. DIRECCIONES DE FABRICANTES Y PROVEEDORES A continuación se facilitan las siguientes direcciones de los fabricantes y proveedores del material necesario para fabricar el hardware del robot y el control remoto: AUR EL S.p.A., Via Foro dei Tigli, Modigliana [FC] ITALY, Tel.: (+9) 0569, Fax: Fabrica los enlaces radio frecuencia empleados. Para más información, ENDRICH Bauelemente S.L., c/ Balmes BARCELONA, Tel. (+) 9 7, Fax. (+) , [email protected], suministrador oficial de AUR EL en España. Para más información y pedidos, ebay, para la cámara digital

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Anexo B. Comunicaciones entre mc y PC

Anexo B. Comunicaciones entre mc y PC Anexo B Comunicaciones entre mc y PC En este apartado se hará hincapié en los comandos para el manejo del módulo de comunicaciones desde el PC. Conociendo estos comando se podrá realizar una aplicación

Más detalles

DESCRIPCION DEL SITEMA MASTER.

DESCRIPCION DEL SITEMA MASTER. DESCRIPCION DEL SITEMA MASTER. ESTRUCTURA. El sistema MASTER (Sistema Modular para Control Adaptativo en Tiempo Real) se ha implementado en base a un computador compatible PC-AT, dotado de una tarjeta

Más detalles

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA E. SÁEZ, M. ORTIZ, F. QUILES, C. MORENO, L. GÓMEZ Área de Arquitectura y Tecnología de Computadores. Departamento de Arquitectura

Más detalles

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDADES DE ALMACENAMIENTO DE DATOS 1.2 MATÉMATICAS DE REDES 1.2.1 REPRESENTACIÓN BINARIA DE DATOS Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo

Más detalles

Trabajo de Microrrobots: SENSORES DE MEDIDA POR CONTACTO

Trabajo de Microrrobots: SENSORES DE MEDIDA POR CONTACTO Trabajo de Microrrobots: SENSORES DE MEDIDA POR CONTACTO PRINCIPIO DE FUNCIONAMIENTO DE LOS SENSORES DE CONTACTO TIPOS DE SENSORES DE CONTACTO ALGUNOS DISPOSITIVOS COMERCIALES DE SENSORES DE CONTACTO APLICACIÓN

Más detalles

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation.

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. WINDOWS Windows, Es un Sistema Operativo. Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. Dentro de los tipos de Software es un tipo de software de Sistemas. Windows

Más detalles

TELEOPERACIÓN DE UN ROBOT MOVIL CON MANEJO DIFERENCIAL A BAJO COSTO

TELEOPERACIÓN DE UN ROBOT MOVIL CON MANEJO DIFERENCIAL A BAJO COSTO TELEOPERACIÓN DE UN ROBOT MOVIL CON MANEJO DIFERENCIAL A BAJO COSTO Introducción.- Asanza,V 1 ; Laica,J 1 ; Paillacho,D 1 1. Centro de Visión y Robotica {vasanza, jlaica, dpailla} @fiec.espol.edu.ec Un

Más detalles

3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE EL PLC 5. EJEMPLO DE RECEPCIÓN DE SMS EN EL PLC

3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE EL PLC 5. EJEMPLO DE RECEPCIÓN DE SMS EN EL PLC MÓDEM-GSM INDICE 1. INTRODUCCIÓN Centro Integrado Politécnico ETI Departamento de Electricidad 2. CONFIGURACIÓN PUERTO SERIE CPU 3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 3 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 3 HERRAMIENTA

Más detalles

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC Temporizadores y contadores en tiempo real: El módulo Timer0 y el aler del PIC 1. Introducción...1 2. Estructura del Timer0...1 3. Funcionamiento del Timer0...2 3.1. Entrada de reloj del modulo Timer0...

Más detalles

MANUAL BÁSICO PARA CLIENTES

MANUAL BÁSICO PARA CLIENTES 2011 MANUAL BÁSICO PARA CLIENTES DEPARTAMENTO TÉCNICO COMENERSOL WIRELESS ÍNDICE Paso 0: Qué hacer cuando internet no funciona....3 Paso 1: Comprobar que la antena está bien conectada..4 Paso 2: Comprobar

Más detalles

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el CAPÍTULO 4 Funcionamiento del Robot Después de analizar paso a paso el diseño y funcionamiento de la interfase, nos podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que

Más detalles

Departamento técnico. Guía rápida CC-LINK. Autómatas serie Q con variadores FR-E 1 / 33

Departamento técnico. Guía rápida CC-LINK. Autómatas serie Q con variadores FR-E 1 / 33 1 Posibilidades de la red CC_Link...2 2 Cableado tarjetas CC_Link...3 2.1 Distancias...3 2.2 Características del cable...4 2.3 Conexionado del cable en los bornes...5 3 Configuración tarjeta variadores

Más detalles

port@firmas V.2.3.1 Manual de Portafirmas V.2.3.1

port@firmas V.2.3.1 Manual de Portafirmas V.2.3.1 Manual de Portafirmas V.2.3.1 1 1.- Introducción 2.- Acceso 3.- Interfaz 4.- Bandejas de peticiones 5.- Etiquetas 6.- Búsquedas 7.- Petición de firma 8.- Redactar petición 9.- Firma 10.- Devolución de

Más detalles

Capítulo 4 Análisis y diseño del software de los Robots

Capítulo 4 Análisis y diseño del software de los Robots Capítulo 4 Análisis y diseño del software de los Robots En el capítulo del diseño mecánico de los robots se muestran los distintos sensores que se utilizarán como entradas, así como los motores que deberán

Más detalles

Ejercicios Tema 1 1.- Supongamos que hay exactamente un switch de paquetes entre un host que envía y un host que recibe. Las tasas de transmisión entre el host que envía y el que recibe son R 1 y R 2 respectivamente.

Más detalles

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software. ARQUITECTURA DE LAS COMPUTADORAS QUE ES UNA COMPUTADORA (UN ORDENADOR)? Existen numerosas definiciones de una computadora, entre ellas las siguientes: 1) Una computadora es un dispositivo capaz de realizar

Más detalles

INTRODUCCION A LA PROGRAMACION DE PLC

INTRODUCCION A LA PROGRAMACION DE PLC INTRODUCCION A LA PROGRAMACION DE PLC Esta guía se utilizará para estudiar la estructura general de programación de um PLC Instrucciones y Programas Una instrucción u orden de trabajo consta de dos partes

Más detalles

NOTA DE APLICACIÓN AN-P002. Programando Wiring con NXProg

NOTA DE APLICACIÓN AN-P002. Programando Wiring con NXProg NOTA DE APLICACIÓN AN-P002 Programando Wiring con NXProg Este documento se encuentra protegido por una licencia Creative Commons Creative Commons: Atribution, Non-commercial, Share Alike Atribución: Puede

Más detalles

Cómo funciona un control proporcional derivativo (PD)?

Cómo funciona un control proporcional derivativo (PD)? Cómo funciona un control proporcional derivativo (PD)? Adaptación del artículo: http://iesseveroochoa.edu.gva.es/severobot/2011/01/29/como-funciona-un-controlador-pd/ para el El tren de tracción diferencial

Más detalles

Actividad 4: Comunicación entre PLC s vía Ethernet

Actividad 4: Comunicación entre PLC s vía Ethernet Actividad 4: Comunicación entre PLC s vía Ethernet 1.- Listado de materiales: PC con Tarjeta de red 3com o similar. 2 PLC Omrom CJ1M CPU11 ETN Estos autómatas llevan integrada la tarjeta de comunicaciones

Más detalles

Creación de nuevos modelos a partir de otros ya existentes.

Creación de nuevos modelos a partir de otros ya existentes. Creación de nuevos modelos a partir de otros ya existentes. 1.- Introducción y definición. Proteus integra una librería con miles de modelos de componentes electrónicos listos para utilizar en la simulación

Más detalles

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4.

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4. Direcciones IP En redes IPv4. IMPLANTACIÓN DE SISTEMAS OPERATIVOS Cada ordenador en Internet dispone de una dirección IP única de 32 bits. Estos 32 bits,o 4 bytes, se representan normalmente como se muestra

Más detalles

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES. 1.- a) Explica qué es un bit de información. Qué es el lenguaje binario? Bit es la abreviatura de Binary digit. (Dígito binario). Un bit es un dígito del lenguaje binario que es el lenguaje universal usado

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

Capítulo 1 GESTIÓN DE LA ALIMENTACIÓN

Capítulo 1 GESTIÓN DE LA ALIMENTACIÓN Capítulo 1 GESTIÓN DE LA ALIMENTACIÓN 1 Introducción En un robot autónomo la gestión de la alimentación es fundamental, desde la generación de energía hasta su consumo, ya que el robot será más autónomo

Más detalles

Programando con Enchanting

Programando con Enchanting Programación para robótica Autor Andrés Baranzano Versión Fecha 15/11/12 Ubicación Laboratorios Digitales Índice Introducción...3 Instalación en Windows...3 Instalación en Ubuntu...3 Enchanting para NXT...4

Más detalles

Guía de Usuario Programador USB

Guía de Usuario Programador USB Guía de Usuario Programador USB Tecnología Digital del Bajío Av. Vicente Guerrero 1003, Int. A Irapuato, Gto. Mex. C.P. 36690 Teléfono: (462) 145 35 22 www.tecdigitaldelbajio.com i Guía de Usuario, Programador

Más detalles

ArduLab. 1. Qué te pasa Nerea? 2.Este robot no funciona bien y no sé que le pasa

ArduLab. 1. Qué te pasa Nerea? 2.Este robot no funciona bien y no sé que le pasa 5 ArduLab Nerea Iván 1. Qué te pasa Nerea? 2.Este robot no funciona bien y no sé que le pasa 3. Recuerda que puedes usar Ardulab para comprobar el funcionamiento de todas las partes de un robot sin necesidad

Más detalles

Curso de Iniciación a la Micro- Robótica. SigBot ACM Capítulo de estudiantes

Curso de Iniciación a la Micro- Robótica. SigBot ACM Capítulo de estudiantes Curso de Iniciación a la Micro- Robótica SigBot ACM Capítulo de estudiantes Micro-robótica? La micro-robótica es la parte de la robótica que crea los robots más económicos y de fácil construcción para

Más detalles

DISEÑADOR DE ESCALERAS

DISEÑADOR DE ESCALERAS DISEÑADOR DE ESCALERAS Guia del usuario DesignSoft 1 2 DISEÑADOR DE ESCALERAS El Diseñador de Escaleras le hace más fácil definir y colocar escaleras personalizadas en su proyecto. Puede empezar el diseñador

Más detalles

Introducción al software de programación TwidoSuite

Introducción al software de programación TwidoSuite Introducción al software de programación TwidoSuite Sistemas Automáticos Curso 2010-2011 1. Introducción El autómata programable elegido para el desarrollo de la práctica es el Twido de Schneider. Se trata

Más detalles

2_trabajar con calc I

2_trabajar con calc I Al igual que en las Tablas vistas en el procesador de texto, la interseccción de una columna y una fila se denomina Celda. Dentro de una celda, podemos encontrar diferentes tipos de datos: textos, números,

Más detalles

Cuestionario: Programación en C y máscaras (II)

Cuestionario: Programación en C y máscaras (II) Este documento es un autotest de ayuda enmarcado en la asignatura Informática Industrial y corresponde al tema Programación en C, pero es abierto y puede servir para entender el funcionamiento básico de

Más detalles

GESTOR DE DESCARGAS. Índice de contenido

GESTOR DE DESCARGAS. Índice de contenido GESTOR DE DESCARGAS Índice de contenido 1. Qué es DocumentosOnLine.net?...2 2. Qué es el Gestor de Descargas?...3 3.Instalación / Configuración...5 4.Descarga de Documentos...9 5.Búsqueda / Consulta de

Más detalles

Placa de control MCC03

Placa de control MCC03 Placa de control MCC03 Placa de control MCC03 La placa de control basada en el micro controlador PIC 16F874A de Microchip, es la encargada del procesar los datos que se introducen en el sistema y actuar

Más detalles

Curso sobre Controladores Lógicos Programables (PLC).

Curso sobre Controladores Lógicos Programables (PLC). CURSO Curso sobre Controladores Lógicos Programables (PLC). Por Ing. Norberto Molinari. Entrega Nº 9. Introducción a la Programación. Consideraciones previas sobre programación ladder Antes de empezar

Más detalles

MÓDULO DE EXPANSIÓN DW-GSM. Manual de usuario. www.iddero.com 131212-01

MÓDULO DE EXPANSIÓN DW-GSM. Manual de usuario. www.iddero.com 131212-01 MÓDULO DE EXPANSIÓN DW-GSM Manual de usuario www.iddero.com 131212-01 TABLA DE CONTENIDOS 1 INTRODUCCIÓN... 3 2 CARACTERÍSTICAS PRINCIPALES... 3 3 INSTRUCCIONES DE USO... 3 3.1 Ejecución de acciones y

Más detalles

SERVOMOTORES. Los servos se utilizan frecuentemente en sistemas de radiocontrol, mecatrónicos y robótica, pero su uso no está limitado a estos.

SERVOMOTORES. Los servos se utilizan frecuentemente en sistemas de radiocontrol, mecatrónicos y robótica, pero su uso no está limitado a estos. SERVOMOTORES Un servomotor (también llamado Servo) es un dispositivo similar a un motor DC, que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación y mantenerse estable

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

Gestión y diagnóstico básico de switches ConneXium TCSESM instalados en arquitecturas redundantes (anillo)

Gestión y diagnóstico básico de switches ConneXium TCSESM instalados en arquitecturas redundantes (anillo) Guía de Diagnóstico Gestión y diagnóstico básico de switches ConneXium TCSESM instalados en arquitecturas redundantes (anillo) Producto y Versión: Switches gestionables Connexium TCSESM v4.1 o superior

Más detalles

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente. 1 Programa 1 Utilizando el icono añadimos un movimiento a por cada línea de programa. Podremos usar 8 posibles líneas de programa (Base, Hombro, Codo, Muñeca, Pinza, Salida 1, Salida 2 y línea en blanco).

Más detalles

PLACAS FERTIRIEGO ELECTRÓNICA NUEVA

PLACAS FERTIRIEGO ELECTRÓNICA NUEVA PLACAS FERTIRIEGO ELECTRÓNICA NUEVA AVERÍAS FUENTE INTERCONEXIÓN INTERFACE C.E. INTERFACE ph LLAVE HARD RELÉS TARJETA DE 32 SALIDAS 7520 Página 1 de 20 # PLACA DE AVERÍAS 12V # AVERÍAS Página 2 de 20 CONEXIONES

Más detalles

T3-Rondas V 1.1. Help-Pc, S.L. C/ Pintor Pau Roig, 39 L-5 08330 Premià de Mar Barcelona Tel. (93) 754 90 19 Fax 93 752 35 18 marketing@t2app.

T3-Rondas V 1.1. Help-Pc, S.L. C/ Pintor Pau Roig, 39 L-5 08330 Premià de Mar Barcelona Tel. (93) 754 90 19 Fax 93 752 35 18 marketing@t2app. T3-Rondas V 1.1 1 Indice 1 Requisitos mínimos 3 2 Instalación 3 2.1 Instalación del software 3 2.2 Instalación del terminal 4 3 Configuración Inicial 4 3.1 Crear terminales 5 3.2 Crear puntos de lectura

Más detalles

Servicio Webmail. La fibra no tiene competencia

Servicio Webmail. La fibra no tiene competencia Servicio Webmail La fibra no tiene competencia Contenido 1. INTERFAZ WEBMAIL 3 2. BARRA SUPERIOR 3 3. CORREO 3 3.1. Barra de herramientas de correo 4 3.2. Sección carpetas de correo 9 3.3. Sección de contenidos

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Estructuras de Sistemas Operativos

Estructuras de Sistemas Operativos Estructuras de Sistemas Operativos Definicion de Sistema Operativos Un sistema operativo es un programa que actua como inter entre el usuario y el hardware de un computador y su proposito es proporcionar

Más detalles

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET 1 EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET La familia de protocolos TCP/IP fue diseñada para permitir la interconexión entre distintas redes. El mejor ejemplo es Internet: se trata

Más detalles

Con esta nueva versión, si un artículo que está incluido dentro de un Paquete de Ventas tiene precio 0,00, significará gratis.

Con esta nueva versión, si un artículo que está incluido dentro de un Paquete de Ventas tiene precio 0,00, significará gratis. NOVEDADES Y MEJORAS Continuando con nuestra política de mejora, innovación y desarrollo, le presentamos la nueva versión 9.50 de datahotel que se enriquece con nuevas funcionalidades que aportan soluciones

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

Manual para la utilización de PrestaShop

Manual para la utilización de PrestaShop Manual para la utilización de PrestaShop En este manual mostraremos de forma sencilla y práctica la utilización del Gestor de su Tienda Online mediante Prestashop 1.6, explicaremos todo lo necesario para

Más detalles

Aplicación práctica de la visión artificial en el control de procesos industriales

Aplicación práctica de la visión artificial en el control de procesos industriales Aplicación práctica de la visión artificial en el control de procesos industriales Conocimientos básicos de comunicaciones ETHERNET/IP con CJ2M, Xpectia y NS Fecha: Junio 2012 1 ÍNDICE 1.PRIMER PASO...

Más detalles

AD2100 10 a 24Vcc 100mA (1) SI SI SI 100 mw 1Km (2) 256 bytes AD2500 10 a 24Vcc 500mA (1) SI SI SI 500 mw 3km (2) 256 bytes

AD2100 10 a 24Vcc 100mA (1) SI SI SI 100 mw 1Km (2) 256 bytes AD2500 10 a 24Vcc 500mA (1) SI SI SI 500 mw 3km (2) 256 bytes AD2100 y AD2500 Transceptor Industrial de RF Interfaz RS232, RS485 y USB Manual de usuario e instalación Rev. 2 1. Introducción Los equipos de comunicación AD2100 y AD2500 son radio módems, los cuales

Más detalles

Guía de instalación de la carpeta Datos de IslaWin

Guía de instalación de la carpeta Datos de IslaWin Guía de instalación de la carpeta Datos de IslaWin Para IslaWin Gestión CS, Classic o Pyme a partir de la revisión 7.00 (Revisión: 10/11/2011) Contenido Introducción... 3 Acerca de este documento... 3

Más detalles

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10 CONCEPTOS BASICOS Febrero 2003 Página - 1/10 EL ESCRITORIO DE WINDOWS Se conoce como escritorio la zona habitual de trabajo con windows, cuando iniciamos windows entramos directamente dentro del escritorio,

Más detalles

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación Vicerrectorado de Tecnologías de la Información y la Comunicación Conexión mediante Escritorio Remoto de Windows Última Actualización 16 de septiembre de 2013 Histórico de cambios Fecha Descripción Autor

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez [email protected] Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

Matemática de redes Representación binaria de datos Bits y bytes

Matemática de redes Representación binaria de datos Bits y bytes Matemática de redes Representación binaria de datos Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo pueden entender

Más detalles

Web Publishing con LabVIEW (I)

Web Publishing con LabVIEW (I) 1 Web Publishing con LabVIEW (I) Una de las herramientas más útiles de LabVIEW es el Web Publishing. Gracias a esta utilidad podemos subir nuestras creaciones a Internet, para mostrar por ejemplo resultados

Más detalles

Notas para la instalación de un lector de tarjetas inteligentes.

Notas para la instalación de un lector de tarjetas inteligentes. Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

DBmessage TM. Manual de usuario

DBmessage TM. Manual de usuario TM Manual de usuario Tabla de contenidos 1.-Descripción general 2.-Inicio 3.-Envío manual 4.-Envío por filtros 5.-Listados de envíos 6.- Agenda 7.-Envíos diferidos 8.-Mensajes predefinidos 9.-Comentarios

Más detalles

Control de motor de pasos Para Pic12C508

Control de motor de pasos Para Pic12C508 Control de motor de pasos Para Pic12C508 Entre los innumerables tipos de motores, los de pasos son quizás los consentidos de los aficionados y profesionales de la electrónica y también de la robótica.

Más detalles

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático Programa de Almacenamiento y Recuperación de Datos Automático CONSEJERÍA DE EDUCACIÓN Dirección General de Participación e Innovación Educativa Centro de Gestión Avanzado de Centros TIC Fecha: 20/04/10

Más detalles

IS23 Mantenimiento de Instalaciones Informáticas Práctica 7. Análisis de redes

IS23 Mantenimiento de Instalaciones Informáticas Práctica 7. Análisis de redes IS23 Mantenimiento de Instalaciones Informáticas Práctica 7. Análisis de redes 1 Objetivos Ingeniería Técnica Informática de Sistemas Curso 2003/2004 En la presente sesión se pretende familiarizar al alumno

Más detalles

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT)

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT) MANUAL DE AYUDA MODULO SAT (Anexo Integración AGIL SAT) Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS 1 INTRODUCCION... 3 1.1 Objetivo... 3 1.2 Descripción de la aplicación Agil-SAT PDA... 3 1.3

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

Control, Instrumentación e Instalaciones Ingeniería Ambiental

Control, Instrumentación e Instalaciones Ingeniería Ambiental Control, Instrumentación e Instalaciones Ingeniería Ambiental TEMA 3. LABORATORIO. El Autómata Siemens S7-300. Programación Básica Alfredo Rosado Curso Académico 2010-2011 Control, Instrumentación e Instalaciones.

Más detalles

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico) MANUAL DE AYUDA SAT Móvil (Movilidad del Servicio Técnico) Fecha última revisión: Abril 2015 INDICE DE CONTENIDOS INTRODUCCION SAT Móvil... 3 CONFIGURACIONES PREVIAS EN GOTELGEST.NET... 4 1. INSTALACIÓN

Más detalles

Intérprete entre el Operador y el Ordenador.

Intérprete entre el Operador y el Ordenador. Introducción a Windows Generalidades Una computadora es un colaborador rápido y eficaz en la tarea administrativa de la información. La computadora en realidad es capaz de hacer muy pocas cosas, como ser:

Más detalles

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia. DISCOS RAID Raid: redundant array of independent disks, quiere decir conjunto redundante de discos independientes. Es un sistema de almacenamiento de datos que utiliza varias unidades físicas para guardar

Más detalles

TPVFÁCIL. Caja Real. Definiciones.

TPVFÁCIL. Caja Real. Definiciones. TPVFÁCIL. Caja Real. TPVFÁCIL incluye desde la versión 3.3.2 la posibilidad de manejar dos cajas, la Caja Real y la Caja normal. La idea es esconder los datos de caja que pueden alcanzar los usuarios no

Más detalles

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata Problema a resolver Ejercicio 2.1 Tomando el ejercicio 1.4 realizar los ajustes necesarios para que además de encenderse un LED en pantalla se encienda un LED físicamente sobre la placa PIC suministrada

Más detalles

INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA

INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA INTERNET Es una red mundial descentralizada, constituida por ordenadores que se conectan mediante un protocolo especial de comunicación, Internet Protocolo

Más detalles

HOOTSUITE: GESTOR DE CUENTAS EN REDES SOCIALES

HOOTSUITE: GESTOR DE CUENTAS EN REDES SOCIALES HOOTSUITE: GESTOR DE CUENTAS EN REDES SOCIALES Índice del curso 1. HootSuite Qué es?... 3 QUÉ ES?... 3 2. HootSuite Por qué?... 5 POR QUÉ?... 5 3. Registro... 6 REGISTRO... 6 4. Interfaz... 7 INTERFAZ...

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

Programación del Timer1 para la captura de flancos

Programación del Timer1 para la captura de flancos Basic Express Nota de aplicación Programación del Timer1 para la captura de flancos El temporizador Timer1 y el pin de entrada El procesador BasicX incluye un temporizador integrado denominado Timer1.

Más detalles

Capítulo 0. Introducción.

Capítulo 0. Introducción. Capítulo 0. Introducción. Bueno, por fin está aquí el esperado (espero!!) Capítulo Cero del Tutorial de Assembler. En él estableceremos algunos conceptos que nos serán de utilidad a lo largo del Tutorial.

Más detalles

Guía de instalación del servidor

Guía de instalación del servidor Guía de instalación del servidor Autores: Versión: 1.0 Jesús Manuel Rodríguez Sánchez Miguel Ángel Lorente López Fecha: 22/01/2009 Tabla de contenido Manual de Instalación del Servidor 4 Paso 1) Instalar

Más detalles

La forma de manejar esta controladora es mediante un ordenador utilizando algún lenguaje de programación (Por ejemplo.: C, Visual Basic, Logo,...).

La forma de manejar esta controladora es mediante un ordenador utilizando algún lenguaje de programación (Por ejemplo.: C, Visual Basic, Logo,...). Instituto de Tecnologías Educativas Circuito de control El circuito de control es la parte más delicada de la controladora, ya que se encarga de controlar las entradas (Puerto LPT, Entradas Analógicas,

Más detalles

Formularios. Formularios Diapositiva 1

Formularios. Formularios Diapositiva 1 Formularios Crear un formulario utilizando el Asistente para formularios Modificación en vista Diseño Adición de Controles a un Formulario Adición de un Subformulario a un formulario Formularios Diapositiva

Más detalles

Comisión Nacional de Bancos y Seguros

Comisión Nacional de Bancos y Seguros Comisión Nacional de Bancos y Seguros Manual de Usuario Capturador de Pólizas División de Servicios a Instituciones Financieras Mayo de 2011 2 Contenido 1. Presentación... 3 1.1 Objetivo... 3 2. Descarga

Más detalles

Control de accesos autónomo por huella dactilar

Control de accesos autónomo por huella dactilar Manual de software Control de accesos autónomo por huella dactilar Access FP (SOFTWARE PARA LECTOR DE HUELLA DACTILAR SIMON ALERT REF.: 8902003-039) (Versión de sofware 1.1) (Versión de documento 1.2)

Más detalles

La central reproduce un sonido largo si los datos de configuración son almacenados de forma correcta, y dos sonidos cortos si hay un error.

La central reproduce un sonido largo si los datos de configuración son almacenados de forma correcta, y dos sonidos cortos si hay un error. Programación Básica de Alarma GSM Última modificación: 15 de Octubre de 2013 Antes de nada, queremos darle las gracias por adquirir en zoominformatica.com este producto, esperamos que cubra todas sus expectativas

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

PROGRAMACION LADDER PLC BASICA. Descripción del lenguaje ladder

PROGRAMACION LADDER PLC BASICA. Descripción del lenguaje ladder PROGRAMACION LADDER PLC BASICA Descripción del lenguaje ladder Existen distintos tipos de lenguaje de programación de un PLC, quizás el más común sea la programación tipo escalera o ladder. Los diagramas

Más detalles

V i s i t a V i r t u a l e n e l H o s p i t a l

V i s i t a V i r t u a l e n e l H o s p i t a l V i s i t a V i r t u a l e n e l H o s p i t a l Manual de Restauración del PC Septiembre 2011 TABLA DE CONTENIDOS SOBRE EL SOFTWARE... 3 CONSIDERACIONES ANTES DE RESTAURAR... 4 PROCEDIMIENTO DE RECUPERACION...

Más detalles

MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE

MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE PROFESOR: Creación y puesta en marcha de un proceso de aprendizaje Delphi: En esta fase el profesor debe realizar las

Más detalles

En este capítulo se describe la forma de cómo se implementó el sistema de video

En este capítulo se describe la forma de cómo se implementó el sistema de video En este capítulo se describe la forma de cómo se implementó el sistema de video por medio de una cámara web y un servomecanismo que permitiera al usuario ver un experimento en el mismo instante en que

Más detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

Más detalles

COMUNICACIÓN I2C (INTER-INTEGRATED CIRCUIT)

COMUNICACIÓN I2C (INTER-INTEGRATED CIRCUIT) COMUNICACIÓN I2C (INTER-INTEGRATED CIRCUIT) Centro CFP/ES COMUNICACIÓN I2C 1 VENTAJAS DE LA COMUNICACIÓN I2C COMPARATIVA ESTANDAR DE TRANSMISIÓN 2 DISPOSITIVOS I2C DISPOSITIVOS I2C MAX518 3 DISPOSITIVOS

Más detalles

Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1

Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1 Traslado de Copias y Presentación de Escritos Manual de Usuario V.3.1 Página: 2 45 INDICE INTRODUCCIÓN... 3 1 ACCESO A LA APLICACIÓN... 3 2 PROCESO DE FIRMA... 4 3 TRASLADOS PENDIENTES DE ACEPTAR POR EL

Más detalles

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL

Race Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL GUIA RACE MANAGER Eventronic, SL DESCRIPCIÓN DEL PROGRAMA El Race Manager es un programa que se creó para facilitar el trabajo de la dirección de carrera de un evento durante y después de una carrera.

Más detalles