MINI-ROBOT RECOLECTOR DE OBJETOS E INTERFAZ USB
|
|
|
- Josefa Moya Aranda
- hace 7 años
- Vistas:
Transcripción
1 UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA C B I REPORTE DE PROYECTO TERMINAL DE LA LIC. DE INGENIERÍA ELECTRÓNICA MINI-ROBOT RECOLECTOR DE OBJETOS E INTERFAZ USB ALUMNOS: BRAVO INFANTE ADRIÁN CERVANTES PALACIOS JAVIER Aprobado por: ASESOR DE PROYECTO: ING. JOEL RICARDO JIMÉNEZ CRUZ FECHA: 7- DICIEMBRE
2 Resumen. Nuestro proyecto consiste en el diseño e implementación de un mini-robot recolector de objetos y la interfaz para poder comunicarnos con éste, por medio del puerto USB, con estas premisas de desarrollo y configuración se llegó a la conclusión de que la mejor forma de implementar este dispositivo era hacerlo mediante microcontroladores, puesto que son dispositivos programables caracterizados principalmente por su reducido tamaño, sencillez de programación y gran diversidad de aplicaciones de control de sistemas. Para ser capaz de trabajar eficazmente el mini-robot cuenta con varias partes que describimos a continuación: sensores que utilizan señales infrarrojas instalados en dos ubicaciones, en el seguidor de línea, que es un foto detector que recibe la señal luminosa reflejada por las marcas de color negro que se encuentren en el piso, y en la parte media de la pinza de recolección. Esta pinza esta hecha en baquelita y se encuentra controlada por 1 servomotor, el cual le da el soporte necesario para realizar el esfuerzo mecánico para abrir o cerrar la pinza. El brazo up-down, también controlado por 1 servomotor, se utiliza para subir y bajar la pinza de recolección, permitiendo al descender que la pinza detecte el objeto y lo sujete, inmediatamente el brazo up-down eleva al objeto. Se cuenta con 2 detectores de obstáculos colocados en los costados delanteros del robot para evitar choques que lo desestabilicen, por último, el circuito de control se encuentra alimentado con una batería de 9V, ubicada en la parte superior del mini-robot. Al mismo tiempo se proporciona una alimentación de energía para el circuito de potencia, refiriéndose a la parte donde intervienen los motores que generan el desplazamiento. Debido a sus características tanto de programación como de aplicación, la unidad recolectora de objetos puede ajustarse a desempeñar una diversa gama de aplicaciones, mediante pequeñas variaciones en la programación y la sustitución de los transductores para trabajar con diferentes variables de control. La implementación de la interfaz USB del proyecto, pretende mostrar como enviar/recibir datos por el puerto USB desde el PIC al PC, el programa fue hecho de tal manera que fuera sencillo y entendible, por lo que sirve de introducción al uso del puerto USB. La principal línea de continuación en proyectos futuros es la preparación de software específico de comunicación vía puerto USB. A partir de este software se podrá finalizar el desarrollo de más circuitos que utilicen la comunicación vía puerto USB
3 Índice general Título Página INTRODUCCIÓN...6 DESARROLLO...7 Capítulo 1: Microcontroladores: Características generales Definición Recursos comunes a todos los microcontroladores Arquitectura básica Procesador CPU Memoria Puertas de Entrada y Salida Reloj Principal Recursos especiales Lenguajes de programación Fabricantes Capítulo 2: Microcontroladores PIC Las gamas PIC Gama baja Gama media Gama alta y gama mejorada Microcontroladores 18F2XXX Características generales Detalles individuales de la familia PIC Diagrama de conexionado del PIC18F PIC18F2XXX: Características Relevantes Organización de la memoria Memoria de programa Direccionamiento Banco de registros y memoria de datos Oscilador principal Perro guardián WDT Reset Modo de reposo Sleep Interrupciones
4 Título Página 2.4. Periféricos Modulación por anchura de pulsos (PWM) Periodo PWM Ciclo de trabajo del PWM Implementación del PWM Interfaz de comunicaciones USB Características del modulo USB de los PIC Control y estatus del USB Lectura y escritura de la memoria de datos EEPROM Lectura de la memoria de datos Escritura de la memoria de datos Capítulo 3: Diseño del mini-robot recolector de objetos Descripción de los componentes usados en el mini-robot Sensores usados Sensor Reflexivo IS471F Sensor Reflexivo CNY Sensor Mecánico Bumper Servomotores Circuito de prueba para ver el funcionamiento de los motores del mini-robot Sistema de Actuación Control de Motores Control de Motores por Medio de Microcontrolador Giro de dos motores en un único sentido Montaje del Driver L293B con el Microcontrolador PIC Etapa de Potencia Etapa de Control Placa del sensor de color negro Capítulo 4: Implementación del mini-robot recolector de objetos El seguidor La pinza recolectora El detector de obstáculos El brazo up-down Suministro de energía y movimiento Diagrama de flujo Funcionamiento del mini-robot Programa PFinal.asm del mini-robot recolector de objetos
5 Título Página Capítulo 5: Implementación de la interfaz de comunicación USB Funcionamiento de la interfaz USB Programa PicUSB.C para la interfaz de comunicación USB Anexo 1: Software de programación y lenguaje C Anexo 2: Ideas y mejoras para el mini-robot Bibliografía y Referencias
6 Introducción. Para el diseño e implementación del mini-robot recolector de objetos y la interfaz USB, es necesario seguir una serie de pautas o fases que se detallan a continuación. La primera fase comprende un estudio general de los microcontroladores. En esta etapa se definen con detalle todas las características fundamentales y sus aplicaciones principales, así como los lenguajes de programación de los mismos. Todo ello para tener un conocimiento de los microcontroladores en general y de los microcontroladores PIC de la casa MICROCHIP en particular, centrando el estudio en una familia de gama altamejorada muy comercial en estos días. Los dos primeros capítulos del desarrollo están dedicados a los fundamentos teóricos de los microcontroladores, tal y como se comenta en el párrafo anterior. El primer capítulo describe de manera general los microcontroladores hablando de sus recursos comunes, aplicaciones y fabricantes. El segundo capítulo está dedicado a la gama alta-mejorada de los microcontroladores PIC, especialmente a la familia 18FXXXX, ya que el PIC que escogimos para nuestro proyecto, el 18F2550, pertenece a esta familia. Aquí se hace un estudio detallado de todos sus recursos y aplicaciones, la organización de la memoria, sus periféricos, etc. La segunda fase del proyecto abarca la totalidad del tercer capítulo donde se encuentra la descripción detallada del diseño del mini-robot, explicando el funcionamiento de los componentes utilizados, los circuitos usados para prueba y los esquemas de las placas, con la explicación de sus conexiones, para las etapas de potencia y control. Con lo anterior se pretende que se entienda claramente, la parte del ensamblado de los circuitos en el minirobot, todo ello gobernado por el microcontrolador PIC18F2550. La tercera fase del proyecto abarca los dos últimos capítulos, en el cuarto capítulo, tenemos la explicación del armado e implementación de todos los circuitos en el minirobot, el diagrama de flujo a utilizar para el programa que gobierna al mini-robot, la descripción de su funcionamiento, con imágenes que detallan claramente cada uno de los pasos que constituyen su operación, al final encontraran su respectivo programa.asm comentado. Por ultimo, en el quinto capítulo, se encuentra la descripción de los pasos a seguir para la implementación de la interfaz USB en los microcontroladores, lo que ofrece una visión mas clara sobre el detalle que entraña este tipo de comunicación, se describe el funcionamiento de la interfaz USB y se incluye su programa.c comentado. Además de todo lo comentado anteriormente, en este proyecto se añade al final del mismo dos anexos. El primer anexo describe de manera práctica el software MPLAB, que es la herramienta necesaria para llevar acabo la programación de los PICS, incluye un resumen de las directivas empleadas por el compilador CCS que trabaja en lenguaje C. El segundo anexo es de ideas y mejoras a futuro, estas podrían ser implementadas en el mini-robot recolector de objetos, para un mejor funcionamiento ó para asignarle diferentes características de operación
7 DESARROLLO - 7 -
8 Capítulo 1. Microcontroladores: Características generales. 1.1 Definición Recibe el nombre de controlador el dispositivo que se emplea para el gobierno de uno o varios procesos. Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su implementación física ha variado frecuentemente. Hace tres décadas, los controladores se construían exclusivamente con componentes de lógica discreta, posteriormente se emplearon los microprocesadores, que se rodeaban con chips de memoria y E/S sobre una tarjeta de circuito impreso. En la actualidad, todos los elementos del controlador se han podido incluir en un chip, el cual recibe el nombre de microcontrolador. Realmente consiste en un sencillo pero completo computador contenido en el chip de un circuito integrado. 1.2 Recursos comunes a todos los microcontroladores Al estar todos los microcontroladores integrados en un chip, su estructura fundamental y sus características son muy parecidas. Todos deben disponer de los bloques esenciales: procesador, memoria de datos e instrucciones, líneas de entrada y salida, oscilador de reloj y módulos controladores de periféricos. Sin embargo, cada fabricante intenta enfatizar los recursos idóneos para las aplicaciones a las que se destintan preferentemente Arquitectura básica Aunque inicialmente todos los microcontroladores adoptaron la arquitectura clásica de Von Neumann, en el momento presente se impone la arquitectura Harvard. La arquitectura de Von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control). La arquitectura Harvard dispone de dos memorias independientes: una, que contiene sólo instrucciones y otra, sólo datos. Ambas disponen de sus respectivos sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura) simultáneamente en ambas memorias Procesador Es el elemento más importante del microcontrolador y determina sus principales características, tanto a nivel hardware como a nivel de software. Se encarga de direccionar la memoria de instrucciones, recibir el código de la instrucción en curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado. Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales: - 8 -
9 CISC: Computadores de Juego de Instrucciones Complejo: Disponen de más de 80 instrucciones máquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecución. RISC: Tanto la industria de los computadores comerciales como la de los microcontroladores están decantándose hacia la filosofía RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones máquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo.la sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador. SISC: En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, además de ser reducido, es específico, o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. Esta filosofía se ha bautizado con el nombre de SISC (Computadores de Juego de Instrucciones Específico) Memoria En los microcontroladores la memoria de instrucciones y datos está integrada en el propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos. La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa. Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia del mismo en la RAM pues se ejecuta directamente desde la ROM. Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y utilización de los mismos es diferente. Se describen las cinco versiones de memoria no volátil que se pueden encontrar en los microcontroladores del mercado. 1º. ROM con máscara Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. El elevado coste del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades. 2ª. OTP El microcontrolador contiene una memoria no volátil de sólo lectura programable una sola vez por el usuario. OTP (One Time Programmable). La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas
10 3ª EPROM Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabación se realiza, como en el caso de los OTP, con un grabador controlado desde una PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. 4ª EEPROM Se trata de memorias de sólo lectura, programables y borrables eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de una PC. Es muy cómoda y rápida la operación de grabado y la de borrado. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan grabadores en circuito que confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. Se va extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. 5ª FLASH Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es más pequeña. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es más rápida y de mayor densidad que la EEPROM. La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no volátil. Es más veloz y tolera más ciclos de escritura/borrado. Las memorias EEPROM y FLASH son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados en circuito, es decir, sin tener que sacar el circuito integrado de la tarjeta Puertos de Entrada y Salida La principal utilidad de las patitas que posee la cápsula que contiene un microcontrolador es soportar las líneas de E/S que comunican al procesador interno con los periféricos exteriores
11 1.2.5 Reloj principal Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C. 1.3 Recursos especiales Cada fabricante oferta numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el coste, el hardware y el software. Los principales recursos específicos que incorporan los microcontroladores son: 1. Temporizadores o Timers : Se emplean para controlar periodos de tiempo y para llevar la cuenta de acontecimientos que suceden en el interior. 2. Perro guardián o Watchdog : Es un temporizador que cuando se desborda y pasa por 0 provoca un reset automáticamente en el sistema. 3. Protección ante fallo de alimentación o Brownout : Se trata de un circuito que genera un reset cuando el voltaje de alimentación V DD es inferior a un voltaje mínimo establecido. 4. Estado de reposo o de bajo consumo: Es un estado del sistema donde se detiene el reloj principal y sus circuitos asociados con el objetivo de ahorrar energía en periodos de tiempo donde el microcontrolador se mantiene en espera de instrucciones. 5. Conversor A/D: Procesa señales analógicas convirtiéndolas en señales digitales. 6. Comparador analógico: Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional que actúa como comparador entre una señal fija de referencia y otra variable
12 que se aplica por una de las patitas de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. 7. Modulador de anchura de impulsos o PWM: Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a través de las patitas del encapsulado. 8. Puertos de comunicación: Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan: - UART, adaptador de comunicación serie asíncrona. - USART, adaptador de comunicación serie síncrona y asíncrona -Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores. - USB (Universal Serial Bus), que es un moderno bus serie para la PC. - Bus I 2 C, que es un interfaz serie de dos hilos desarrollado por Philips. -CAN (Controller Area Network), para permitir la adaptación con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles. 1.4 Lenguajes de programación Se han desarrollado todo tipo de lenguajes para los microcontroladores, pero los más usados son el Ensamblador, el BASIC y el C. Los programas escritos en Ensamblador son compactos y rápidos, sin embargo, utiliza mnemónicos inteligibles y si no están bien confeccionados resultarán de gran tamaño y lentos. Los lenguajes de alto nivel como el BASIC y el C son más fáciles de comprender y por tanto de diseñar. Pero como toda máquina digital, el microcontrolador es capaz de entender exclusivamente el lenguaje binario grabado en la memoria. Los compiladores son programas que se encargan de traducir el programa de trabajo escrito en cualquier lenguaje a código máquina para luego grabarlo en la memoria del microcontrolador y ejecutarlo. 1.5 Fabricantes En la actualidad, gran parte de los fabricantes de circuitos integrados disponen de su propia línea de microcontroladores. Así tendremos Intel, que ha ido siempre por delante presentando nuevos productos, así por ejemplo el 8048 se considera el primer microcontrolador de 8 bits y lo fabricó Intel en la década de los
13 Otra de las principales empresas del mundo de los dispositivos programables es Motorola y los microcontroladores PIC de la empresa americana Microchip han sido conocidos en los últimos años. Su popularidad avanza día a día, siendo incluidos en la mayoría de proyectos debido a su bajo coste, reducido consumo, pequeño tamaño, fácil programación y abundancia de herramientas económicas de soporte. En la Tabla 1.1 se muestra el avance de Microchip respecto de las otras compañías fabricantes de microcontroladores. Todos los microcontroladores que se fabrican en el presente son buenos y el mejor no siempre es el mismo. Cambian el modelo y fabricante según la aplicación y las circunstancias que lo envuelven. Tabla
14 Capítulo 2. Microcontroladores PIC. Para la realización de este proyecto se eligió la familia PIC de Microchip por diversos motivos: 1. Por la cantidad de información disponible sobre estos microcontroladores, y es que para las aplicaciones más habituales la elección de una versión adecuada de PIC es la mejor solución. 2. Por su sencillez de manejo, tienen un juego de instrucciones reducido, de 35 en la gama media, 75 en la gama alta-mejorada. 3. Por la facilidad de obtener muestras gratuitas. 4. Por su velocidad y promedio de parámetros en consumo, tamaño, etc. 5. Porque posee gran variedad de herramientas, tanto de software como de hardware, baratas y fáciles de utilizar. Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fácil emplear otro modelo. 2.1 Las gamas PIC Para resolver aplicaciones sencillas se precisan pocos recursos; en cambio, las aplicaciones grandes requieren numerosos y potentes. Siguiendo esta filosofía, Microchip construye diversos modelos de microcontroladores orientados a cubrir, de forma óptima, las necesidades de cada proyecto. Así, hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros complejos y más costosos para las de mucha envergadura. Con las gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las memorias, el número de líneas de E/S y las funciones auxiliares precisas. Sin embargo, todas las versiones están construidas alrededor de una arquitectura común, un repertorio mínimo de instrucciones y un conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen del voltaje de alimentación Gama Baja La gama baja de los PIC encuadra nueve modelos fundamentales en la actualidad. A muchos de estos microcontroladores de gama baja se les llama enanos porque solamente disponen de 8 patillas. La memoria de programa puede contener 512, 1 k. y 2 k palabras de 12 bits, y ser de tipo ROM, EPROM aunque también hay modelos con memoria OTP. La memoria de datos puede tener una capacidad comprendida entre 25 y 73 bytes. Sólo disponen de un temporizador (TMR0), un repertorio de 33 instrucciones. El voltaje de alimentación admite un valor muy flexible comprendido entre 2 y 6,25 V, lo cual posibilita el funcionamiento mediante pilas corrientes teniendo en cuenta su bajo consumo (menos de 2 ma a 5 V y 4 MHz )
15 2.1.2 Gama Media En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores. Algunos modelos disponen de una memoria de instrucciones del tipo OTP que resulta mucho más económica en la implementación de prototipos y pequeñas series. Otros en cambio, disponen de una memoria de instrucciones tipo EEPROM, que, al ser borrables eléctricamente, son mucho más fáciles de reprogramar que las EPROM, que tienen que ser sometidas a rayos ultravioleta durante un tiempo determinado para realizar dicha operación Gama Alta y Gama Mejorada Los dispositivos de la gama alta PIC17C4X responden a microcontroladores de arquitectura abierta pudiéndose expansionar en el exterior al poder sacar los buses de datos, direcciones y control. Así se pueden configurar sistemas similares a los que utilizan los microprocesadores convencionales, siendo capaces de ampliar la configuración interna del PIC añadiendo nuevos dispositivos de memoria y de E/S externas. Esta facultad obliga a estos componentes a tener un elevado número de patitas comprendido entre 40 y 44. Admiten interrupciones, poseen puerto serie, varios temporizadores y mayores capacidades de memoria, que alcanza los 8k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos. En 2002, Microchip lanzaba la gama alta-mejorada, varios modelos de microcontroladores de gran potencia y velocidad (PIC18FXXX), y se destinan a aplicaciones muy avanzadas. Con un patillaje que llega desde las 28 hasta las 84 patillas, la memoria de código alcanza las 64k palabras y una frecuencia de 40 MHz. El PIC elegido para realización de las prácticas, el 18F2550, pertenece a esta gama y en lo sucesivo, las explicaciones se centrarán en él. En la figura 2.1 se representan las gamas disponibles de PICS. Fig Gamas de PICS
16 2.2 Microcontroladores PIC18F2XXX Características generales. 1º La arquitectura del procesador sigue el modelo Harvard: En esta arquitectura, la CPU se conecta de forma independiente y con buses distintos con la memoria de instrucciones y con la de datos y así permitir su acceso simultaneo. PIC18: Arquitectura Harvard. (Fig. 2.2) Espacios separados de memoria de instrucciones y datos. Incremento de Rendimiento. Ancho del bus de datos y del programa pueden ser diferentes. Fig º Se aplica la técnica de segmentación ( pipe-line ) en la ejecución de las instrucciones: La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente. De esta forma se puede ejecutar cada instrucción en un ciclo (un ciclo de instrucción equivale a 4 ciclos del reloj) excepto las instrucciones de salto (p.e. GOTO, CALL o escribir a PC) que ocupan dos ciclos al no conocer la dirección de la siguiente instrucción hasta que no se haya completado la de bifurcación. (Fig. 3.2 ). ciclo CLK BI3 BI2 BI1 EI3 EI2 EI3 Fin INSTR2 Fig. 2.3 Fin INSTR0 Fin INSTR1-16 -
17 3º El formato de todas las instrucciones es de la misma longitud: Las instrucciones de los microcontroladores de la gama media tienen una longitud de 14 bits. Las de la gama alta tienen bits y más las de la gama alta. Esta característica es muy ventajosa en la optimización de la memoria de instrucciones y facilita enormemente la construcción de ensambladores y compiladores. 4º Procesador RISC (Computador de Juego de instrucciones reducido): Los modelos de la gama media disponen de un repertorio de 35 instrucciones y 75 los de la gama alta-mejorada. 5º Todas las instrucciones son ortogonales: Cualquier instrucción puede manejar cualquier elemento de la arquitectura como fuente o como destino. 6º Arquitectura basada en un banco de registros: Esto significa que todos los objetos del sistema (puertas de E/S, temporizadores, posiciones de memoria, etc.) están implementados físicamente como registros Detalles individuales de los miembros de la familia PIC18. Los PIC de la familia 18FXXXX (gama mejorada) tienen las siguientes diferencias respecto a los microcontroladores de la gama alta: 1. Flash program memory (hasta 32 Kbytes). 2. Canales A/D (10). 3. Puertos I/O (3 puertos bidireccionales y 1 puerto de solo entrada). 4. CCP y CCP mejorado (tiene 2 módulos CCP estándar). Todas las demás características individuales de la familia 18FXXXX; incluyendo al microcontrolador utilizado en este proyecto (PIC18F2550); se resumen en la tabla
18 Tabla 2.1. Características de la familia PIC Diagrama de conexionado del PIC 18F2550 (Fig. 2.4) Fig. 2.4: Diagrama de conexionado del PIC 18F2550 En la figura 2.4 se muestra el diagrama de conexionado de un PIC 18F2550. A continuación se nombran las funciones de todas las patitas: - MCLR/V PP : Reset externo. Por esta patita se aplica también la tensión / V PP usada en la grabación del programa. - RA0/AN0: E/S digital o entrada analógica
19 - RA1/AN1: E/S digital o entrada analógica - RA2/AN2/V REF : E/S digital, entrada analógica o salida de la tensión de referencia - RA3/AN3/ V REF : E/S digital, analógica o entrada externa de V REF - RA4/TOCKI: E/S digital o entrada del reloj para TMR0 - RA5/AN4/SS: E/S digital, analógica o selección del puerto serie síncrono - RB0/INT-RB7: E/S digitales del Puerto B. RB0/INT puede actuar como entrada de interrupción externa. RB4-RB7 pueden provocar interrupción cuando cambian de estado - RE0/RD/AN5: E/S digital del Puerto E. Señal de lectura del Puerto paralelo esclavo. Entrada analógica. - RE1/WR/AN6: E/S digital. Señal de escritura del Puerto paralelo esclavo. Entrada analógica. - RE2/CS/AN7: E/S digital. Señal de activación del Puerto paralelo esclavo. Entrada analógica. - V DD : Entrada del positivo de la alimentación - OSC1/CLKIN: Entrada al cristal cuarzo o reloj externo - OSC2/CLKOUT: Salida del cristal. En modo R-C por esta patita sale ¼ F OSC1 - RC0/T1OSO/T1CL1: E/S digital del Puerto C. Conexión del oscilador externo para el temporizador TMR1 o entrada de reloj para el TMR1 - RC1/T1OSI/CCP2: E/S digital del Puerto C. Conexión del oscilador externo para TMR1 o salida del modulo 2 de captura/comparación - RC2/CCP1: E/S digital del Puerto C. Salida del modulo 1 de captura/comparación - RC3/SCK/SCL: E/S digital. E/S de reloj para el Puerto serie síncrono (SSP) de los módulos SPI a I 2 C - RC4/SDI/SDA: E/S digital. Entrada de datos serie en el modo USB. E/S de datos serie en modo I 2 C - RC5/SD0: E/S digital del Puerto C. Salida de datos serie en el modo USB - RC6/TX/CK: E/S digital. Transmisión serie asíncrona. Entrada de reloj para comunicación serie síncrona - RC7/RX/DT: E/S digital. Recepción serie asíncrona. Línea de datos en la comunicación serie síncrona. - RD0/PSP0-RD7/PSP7: E/S digitales del Puerto D. Este Puerto puede trabajar como Puerto paralelo esclavo para interconexión con un bus de datos de 8 bits de otro microprocesador Una vez explicado el funcionamiento de cada patita del PIC18F2550, en la figura 2.5 se muestra su arquitectura interna, un diagrama de bloques donde se muestran los periféricos y las líneas de entrada y salida
20 Fig. 2.5: Arquitectura interna del 18F PIC18F2XXX: Características Relevantes. Arquitectura PIC18. Alto desempeño de 8-bit RISC CPU. 40 MHz / 10 MIPs de operación sostenida Operación de 2.0V a 5.5V Direccionamiento de memoria de programa lineal de hasta 2MB Direccionamiento de memoria de datos lineal de hasta 4KB 3 punteros de datos con 5 modos de direccionamiento. Instrucciones relativas de brinco condicional. Hasta 10MHz con 4X PLL Flash memory mejorada: o 2 Segundos de tiempo de programación o Bajo costo del soporte MPLAB-ICD-II o Protección flexible de la memoria del programa Organización de la memoria Memoria de programa Los microcontroladores de la familia PIC18F2XX implementan un contador de programa de 21-bit el cual es capaz de direccionar un espacio de 2-Mbyte de memoria de programa. Si se accesa a una locacion sobre el limite de la memoria implementada físicamente en los 2-Mbyte de direcciones, el CP regresa solamente 0 s (instrucción NOP)
21 El PIC18F2550 y el PIC18F4550 tienen cada uno 32 Kbytes de memoria Flash y pueden almacenar hasta 16,384 instrucciones de una palabra. Los PIC18 tienen dos vectores de interrupción. El vector Reset esta en la dirección 0000h y los vectores de interrupción están en las direcciones 0008h y 0018h. El mapa de memoria del PIC18FX550 se muestra en la figura 2.6. Fig Mapa de memoria del PIC18FX Direccionamiento de memoria de programa. En los PICs 18F2550, el contador de programa (CP) del microcontrolador tiene un tamaño de 21 bits, con lo que es posible direccionar un tamaño total de memoria de programa hasta 2M. El contador del programa, al estar formado por 21 bits, está compuesto por tres registros de 8 bits cada uno tal y como se muestra en la figura 2.7. El byte bajo viene del registro de PCL que puede ser leído y escrito, PCL<0> es forzado a 0. El byte alto (PC<15:8>), está alojado en el registro PCH, sobre el que no se puede leer ni escribir, pero se puede acceder a él indirectamente a través del registro PCLATH. El byte superior (PC<20:16>) está alojado en el registro PCU, sobre el que no se puede leer ni escribir, pero se puede acceder a él indirectamente a través del registro PCLATU. Fig. 2.7: Contador de programa
22 Banco de registros y memoria de datos, EEPROM. La memoria de datos en los PIC18 se implementa como una RAM estática. Cada registro en la memoria de datos es una dirección de 12-bit, permitiendo hasta 4096 bytes de memoria de datos. El espacio de memoria es dividido en 16 bancos de registros que contienen cada uno 256 bytes. Los PIC18F2455/2550/4455/4550 tienen implementados 8 bancos completos para un total de 2048 bytes. La Fig. 2.8 muestra la organización de la memoria de datos para los PIC18. La memoria de datos contiene Registros de Función Especial(SFRs) y Registros de Propósito General (GPRs). Los SFRs son usados para control y estatus del controlador y para funciones de los periféricos, mientras que los GPRs son usados para almacenamiento de datos y operaciones de aplicación de usuario. Cualquier lectura de una locacion no implementada debe ser leida como 0 s. La instrucción set y la arquitectura permiten operaciones a través de los bancos. El total de los datos en la memoria puede ser accesado en los modos de direccionamiento Directo, Indirecto o Indexado. Fig. 2.8: Banco de registros del PIC 18F2550 La memoria de datos EEPROM de 256 bytes en el PIC18F2550 puede almacenar de forma indefinida cualquier dato que se desee retener cuando se apague la alimentación. Esta memoria es de 8 bits y no forma parte del espacio normal direccionable, y sólo es accesible en lectura y escritura a través de dos registros
23 2.3.2 Oscilador principal Los PIC18 tienen una estructura de Oscilador Flexible: Cuatro formas de cristales incluido un PLL de alta precisión para USB. Dos modos de reloj externo, sobre los 48 MHz Bloque de oscilador interno: - 8 frecuencias a seleccionar por el usuario, desde 31 khz hasta 8 MHz Oscilador secundario usando el 32 khz El microcontrolador permite una opción de doble oscilador y modulo USB corriendo a diferentes velocidades de reloj. La tabla 2.2 muestra los diferentes modos del oscilador del PIC18F2550: Tabla Perro guardián (WDT) El Perro guardián vigila que el programa no deje de ejecutarse según las instrucciones secuénciales del mismo tal como lo ha previsto el diseñador. Para realizar esta labor de vigilancia, el perro guardián da un paseo por la CPU cada cierto tiempo y comprueba si el programa se ejecuta normalmente; en caso contrario, el perro provoca un reset, y reinicia el sistema. Este temporizador está controlado por un oscilador interno independiente, con una temporización nominal de 18 ms, que puede aumentarse asignando el divisor de frecuencia al perro guardián, con el cual, trabajando en el rango mayor, puede alcanzar hasta 3 segundos. Para evitar que se desborde el WDT y genere un reset, hay que recargar o refrescar su cuenta antes de que llegue el desbordamiento. Este refresco, que en realidad consiste en ponerle a 0 para iniciar la temporización, se consigue por software con las instrucciones CLRWDT y SLEEP Reset El reset de los microcontroladores puede ser originado por alguna de las siguientes causas: 1ª Conexión de la alimentación (POR: Power-On-Reset) 2ª Activación de la patita MCLR (Master Clear Reset) durante una operación normal
24 3ª Activación de MCLR en el estado de Reposo o SLEEP. 4ª Desbordamiento del Perro guardián. 5 Instrucción RESET. Como se aprecia en el esquema de la figura 2.9, cualquiera de estas posibilidades introduce un nivel bajo en la entrada S del flip-flop y pone en marcha un temporizador propio que, al cabo de 18 ms, origina un flanco ascendente en la salida Q que supone la generación del reset interno. El bloque temporizador de la figura produce un retraso en la generación del reset para dar tiempo a que se estabilice la tensión V DD de alimentación y la frecuencia del oscilador principal. Este temporizador está gobernado por un oscilador RC independiente. Fig.2.9: Diagrama de bloques del circuito de Reset Modo de reposo (Sleep) Este modo especial de funcionamiento ocasiona un consumo de energía muy bajo y se entra en él con la ejecución de la instrucción SLEEP. Con esta instrucción ocurren las siguientes acciones: 1. Si el perro guardián está activado, se refrescara su valor (se borra) pero sigue funcionando normalmente. 2. El oscilador principal del sistema deja de funcionar. 3. Los puertos de E/S mantienen el mismo estado que tenían antes de ejecutar SLEEP
25 4. Los bits TO y PD del registro de estado toman los valores 1 y 0, respectivamente. Para salir del estado de Reposo hay dos posibilidades: 1ª Se activa la patita MCLR y se genera un reset. 2ª El Perro guardián que estaba activo cuando se ejecuto SLEEP se desborda y genera un reset. Para conocer la causa por la que se ha salido del Estado de Reposo se analizan los bits TO y PD Interrupciones. Una interrupción consiste en una detención del programa en curso para realizar una determinada rutina que atienda la causa que ha provocado la interrupción. Es como una llamada a subrutina, que se origina por otra causa que por una instrucción del tipo CALL. Tras la terminación de la rutina de interrupción, se retorna al programa principal en el punto en que se abandono. Las causas que originan una interrupción pueden ser externas, como la activación de una patita con el nivel lógico apropiado, e internas, como las que pueden producirse al desbordarse un temporizador, como el TMR0. En las aplicaciones industriales, las interrupciones son un producto muy potente para atender los acontecimientos físicos en tiempo real. Las interrupciones evitan que la UCP explore continuamente el nivel lógico de una patita o el valor de un contador. Los PIC18F2XXX tienen múltiples fuentes de interrupción, sus prioridades son asignadas respecto a su fuente. los vectores de alta prioridad están en la dirección h y los vectores de baja prioridad están en h. Hay diez registros para la operación de control de las interrupciones, estos son: RCON INTCON INTCON2 INTCON3 PIR1, PIR2 PIE1, PIE2 IPR1, IPR2 Cada fuente de interrupción tiene tres bits de control y operación. La función de estos bits es : El bit de bandera indica que un evento de interrupción ha ocurrido. El bit de habilitación permite brincar en la ejecución de un programa a la dirección del vector de interrupción cuando el bit de bandera esta en set. El bit de prioridad informa si es de alta o baja prioridad
26 En la figura 2.10 se ofrece el esquema lógico que controla la generación de la interrupción, cuando aparece un nivel alto en su línea INT de salida. Fig. 2.10: Lógica de control para la generación de la interrupción Cada causa de interrupción esta controlada mediante dos líneas o señales. Una de ellas actúa como una bandera de señalización que indica si se ha producido o no el acontecimiento, mientras que la otra es el permiso o prohibición de la interrupción en si. 2.4 Periféricos. Las patitas de comunicación de los microcontroladores se agrupan en conjuntos llamados puertos porque dejan entrar y salir la información al procesador o pines. Dichos puertos deben soportar las líneas que precisan los distintos periféricos que hay integrados en la cápsula. Cuantos más periféricos dispone el modelo, exige más líneas de comunicación y mayor numero de patitas, con más multiplexado de señales. Esto es lo más destacado de los periféricos de los PIC18: Alta corriente de alimentación /25 ma Tres interrupciones externas Cuatro módulos de Timer (Timer0 a Timer3) Módulos de Capture/Compare/PWM (CCP) : - Capture es de 16-bit, máx. resolución 6.25 ns (TCY/16)
27 - Compare es de 16-bit, máx. resolución 100 ns (TCY) - Salida de PWM : su resolución es 1 a 10-bit Modulo de Capture/Compare/PWM (ECCP) - Múltiples modos de salida - Polaridad seleccionable - Programación de tiempo muerto - Auto-cerrado y Auto-Restaurado Modulo USART mejorado: - Soporta bus LIN Modulo Master Synchronous Serial Port (MSSP) soporta 3-cables SPI ( 4 modos) y modo maestro esclavo de I2C 10-bit, hasta 13-canales del modulo convertidor Análogo-a-Digital (A/D) Doble comparador análogo con entrada multiplexada. Ya que el Modulo de Anchura de Pulsos (PWM), lo ocupamos para mover los servomotores del mini-robot, explicaremos con mas detalle el funcionamiento del mismo Modulo de Anchura de Pulsos (PWM) En el modo de Pulse-Width Modulation (PWM), el pin CCPx produce hasta 10-bit de resolucion PWM de salida. Desde el pin CCP2 es multiplexado con el seguro de datos del PORTB o PORTC, el bit apropiado del TRIS debe ser limpiado para hacer del pin CCP2 una salida. La Figura 2.11 muestra el diagrama de bloques simplificado del modulo CCP en el modo PWM. Fig La salida PWM (Figura ) tiene un tiempo base (periodo) y un tiempo en el que la salida se mantiene en un nivel alto (duty cycle). La frecuencia del PWM es el inverso del periodo (1/periodo)
28 Fig Período PWM. El período del PWM se especifica escribiendo en el registro PR2. El período PWM puede ser calculado usando la siguiente ecuación: La frecuencia PWM es definida como 1/ [PWM periodo]. Cuando el TMR2 es igual a PR2, tres eventos pueden ocurrir en el siguiente ciclo de reloj: TMR2 es limpiado El pin CCPx se pone a set (exceptuando: si el ciclo de trabajo de PWM = 0%) Ciclo de Trabajo del PWM. El ciclo de trabajo del PWM se especifica escribiendo en el registro CCPRxL y en el CCPxCON<5:4> bits. Arriba de 10-bit de resolución estan disponibles. El CCPRxL contiene los ocho bits MSbs y el CPxCON<5:4> contiene los dos bits LSbs. El valor de los 10-bit es representado por CCPRxL:CCPxCON<5:4>. La siguiente ecuación es usada para calcular el ciclo de trabajo del PWM en tiempo: CCPRxL y CCPxCON<5:4> pueden ser escritos en cualquier tiempo, pero el valor del ciclo de trabajo no esta asegurado dentro del CCPRxH hasta que una comparación entre PR2 y TMR2 ocurra (i.e., se complete un periodo). En modo PWM, CCPRxH es un registro de solo lectura Implementación del PWM. Los siguientes pasos deben ser tomados en cuenta, cuando configuremos el registro (modulo) CCP para la operación del PWM: 1. Asignar el periodo del PWM escribiendo en el registro PR2. 2. Asignar el ciclo de trabajo del PWM escribiendo en el registro CCPRxL y en el CCPxCON<5:4> bits
29 3. Hacer del pin CCPx una salida, limpiando adecuadamente el bit TRIS. 4. Asignar el valor de preescalamiento del TMR2, luego habilitar el Timer2 escribiendo al registro T2CON. 5. Configurar el modulo CCPx para la operación del PWM. La tabla 2.3 muestra los registros relacionados con el Modulo de Anchura de Pulsos y con el Timer 2. Tabla 2.3: Registros asociados con el PWM y el TIMER Interfaz de comunicación Universal Serial Bus (USB) Características del modulo USB (Universal Serial Bus) de los PIC18. Cumple con los parámetros USB V2.0 Baja velocidad (1.5 Mb/s) y alta velocidad (12 Mb/s) Soporta transferencias de lotes de Control, interrupción y sincronización. Soporta hasta 32 endpoints (16 bidireccionales) 1-Kbyte dual de acceso a RAM para USB Circuito interno USB de transmisión-recepción con regulador de voltaje Interfaz para un circuito externo USB de transmisión-recepción Los PIC18FX455/X550 incorporan un completo modulo de comunicación compatible con el USB Serial Interface Engine (SIE) esto permite una rápida comunicación entre cualquier host USB y el microcontrolador PIC. El SIE puede ser una interfaz directa al puerto USB utilizando el transceptor interno, o puede ser conectado a través de un transceptor externo. Un regulador interno de 3.3V también esta disponible para alimentar al transceptor interno en aplicaciones que necesiten 5V
30 Algunas características especiales de hardware están incluidas para un mejor desempeño. La Memoria de doble puerto en el espacio de la memoria de datos (USB RAM) provee el acceso directo a memoria entre el microcontrolador y el SIE. Descriptores de buffer también están disponibles permitiendo al usuario programar los endpoint usando el espacio de la USB RAM. Un SPP(Streaming Parallel Port) provee el soporte para una transferencia ininterrumpida de un gran volumen de datos, tales como datos asíncronos a buffer externos de memoria. La Fig presenta una perspectiva general del periférico USB. Fig Perspectiva general del puerto periférico USB en el PIC 18F2550. Los PIC18F2550 incorporan un completo modulo de comunicación USB (Universal Serial Bus), el cual cumple con la especificación USB 2.0, este modulo soporta los tipos de transferencia de datos de baja y alta velocidad. La operación asíncrona del reloj dual, permita al modulo USB de los PIC18 trabajar a alta frecuencia, mientras que el resto de los microcontroladores solo tienen un reloj que proviene de un oscilador interno de bajo poder. Además de que esta disponible como fuente de reloj, el bloque de oscilador interno provee una estable referencia de reloj, esto da a la familia PIC18 la característica de operación robusta Control y estatus del USB. La operación del modulo USB es configurada y manejada a través de tres registros de control. En suma, un total de 19 registros son usados para el manejo de transferencias vía USB. Estos registros son: USB Control register (UCON) USB Configuration register (UCFG) USB Transfer Status register (USTAT)
31 USB Device Address register (UADDR) Frame Number registers (UFRMH:UFRML) Endpoint Enable registers 0 through 15 (UEPn) 2.5 Lectura y escritura de la memoria de datos EEPROM. En la familia de microcontroladores 18F2XXX tanto la memoria EEPROM de datos como la memoria de programa FLASH puede ser modificada sin necesidad de utilizar un programador exterior. Además para controlar el proceso de lectura y escritura de la memoria EEPROM y FLASH se dispone de dos registros: el EECON1 y el EECON Lectura de la memoria de datos. Para leer un dato de la EEPROM, el registro EEADR es cargado con la dirección de la EEPROM donde se encuentra el dato y luego el microcontrolador copia el dato de dicha posición a EEDATA. A continuación hay que poner a 0 el bit EEPGD (EECON1<7>), para apuntar a la memoria de datos EEPROM. Una vez que se ponga a 1 la bandera RD (EECON1<0>), el dato estará disponible en el registro EEDATA, donde permanecerá hasta la siguiente escritura o lectura Escritura de la memoria de datos La escritura, que es en realidad una programación, es más compleja por razones de seguridad. Antes de escribir un dato en la EEPROM, debe ponerse a 1 la bandera de activación de escritura WR (EECON1<1>). Para transferir el dato desde el registro EEDATA a la dirección de la EEPROM a la que apunta EEADR, debe ejecutarse una secuencia obligatoria indicada por el fabricante. Posteriormente, cuando se ha realizado con éxito la operación de la bandera EEIF (PIR1<7>) se pone a 1. Si no lo hace, el almacenamiento ha sido incorrecto y no se ha realizado. Datos en la memoria EEPROM: Tamaño de rangos entre 64 a 1024 bytes. Ciclos de borrado/escritura de 1 M (típicamente) Retención de datos >40 años. Lectura y escritura de limite un byte Borrar antes de escribir Automático Protección de código y de escritura interna Acceso vía los registros EEADR, EEDATA y EECON s
32 Capítulo 3. Diseño del mini-robot recolector de objetos. En la actualidad la automatización de procesos se ha convertido en una necesidad para aumentar la eficiencia de estos, por ello el sustituir personal humano por autómatas dentro de las líneas de proceso es cada vez mas importante, dando como resultado la reubicación del personal humano en áreas de mantenimiento y supervisión de los mecanismos automáticos, además de proveer mayores ganancias a la empresa el equipo automático ofrece mayor seguridad a cada proceso donde se le asigna. Orientados a la automatización de un proceso de recolección de objetos y atendiendo los requerimientos que este conlleve. Se pretende diseñar un robot que genere tal propósito elevando así la eficiencia del proceso y reduciendo la presencia del hombre. Basados en el uso de un microprocesador se pretende analizar las diferentes variables de posición para que mediante el principio del seguidor de línea, se siga una ruta en la cual se encontraran los objetos que mediante detección infrarroja se localizará y efectuará un proceso mecánico de obtención para su transporte y posterior almacenamiento, evitando por completo la presencia de personal humano. Tomando en cuenta las limitaciones económicas se pretende efectuar en primera instancia un modelo a escala con el fin de obtener resultados y si fuesen los deseados se planeara la construcción de varios equipos al final. 3.1 Descripción de los componentes usados en el mini-robot Sensores usados Sensor Reflexivo IS471F Descripción: Sensor basado en el dispositivo SHARP IS471F (Fig. 3.1) inmune a interferencias de luz normal. Este sensor incorpora un modulador/demodulador integrado en su carcasa y a través de su patilla 4 controla un diodo LED de infrarrojos externo, modulando la señal que este emitirá, para ser captada por el IS471F que contiene el receptor. Cuando un objeto se sitúa enfrente del conjunto emisor/receptor parte de la luz emitida es reflejada y demodulada para activar la salida en la patilla 2 que pasará a nivel bajo si la señal captada es suficientemente fuerte. Fig. 3.1 El uso de luz IR modulada tiene por objeto hacer al sensor relativamente inmune a las interferencias causadas por la luz normal de una bombilla o la luz del sol. Funcionamiento: Como puede verse en el esquema, el sensor se alimenta por sus patitas 1 y 3 y estas corresponden a Vcc y Gnd respectivamente, la patita 2 es la salida del detector y la patita 4 es la salida que modula al led emisor externo. Mediante el potenciómetro P1 se varía la distancia a la que es detectado el objeto. Contra mas baja sea la resistencia de este potenciómetro, mas intensa será la luz emitida por el diodo de IR y por lo tanto mayor la distancia a la que puede detectar el objeto
33 En la figura 3.2 vemos el circuito necesario para hacer funcionar al sensor. Fig. 3.2 Usos: Para detección de obstáculos por reflexión. Ideas y mejoras: En el circuito anterior lo que vemos es un detector de distancia fija ajustable por un potenciómetro, pero seria posible hacerlo de varias distancias o incluso un detector gradual de distancias. Para varias distancias se podría conmutar varias resistencias y así calcular la distancia del objeto haciendo pruebas antes, y creando una tabla de equivalencias. Para el detector gradual también seria posible controlando la corriente que le llega al diodo emisor mediante un conversor D/A y un circuito de potencia basado en algún transistor, todo esto controlado por un microcontrolador, que para nuestro proyecto es el PIC 18F Sensor Reflexivo CNY70 Descripción: El CNY70 es un pequeño dispositivo con forma de cubo y cuatro patitas (fig. 3.3) que aloja en su interior un diodo emisor de infrarrojos que trabaja a una longitud de onda de 950 nm. y un fototransistor (receptor) estando ambos dispuestos en paralelo y apuntando ambos en la misma dirección, la distancia entre emisor y receptor es de 2.8 mm., están separados del frontal del encapsulado Fig. 3.3 por 1 mm. El la figura 3.4 vemos la disposición interna del CNY70 mirando el encapsulado desde arriba, así pues tenemos el diodo emisor de infrarrojos a la izquierda y el fototransistor a la derecha. Fig
34 Funcionamiento: El fototransistor conducirá más, mientras más luz reflejada del emisor capte por su base. La salida de este dispositivo es analógica y viene determinada por la cantidad de luz reflejada, así pues para tener una salida digital se podría poner un disparador Trigger Schmitt y así obtener la salida digital pero esto tiene un problema, y es que no es ajustable la sensibilidad del dispositivo. Usos: Comúnmente utilizado en los robots rastreadores (Sniffers) para detección de líneas pintadas sobre el suelo, debido principalmente a su baja distancia de detección Sensor Mecánico Bumper Descripción: El bumper es un conmutador de 2 posiciones con muelle de retorno a la posición de reposo y con una palanca de accionamiento con tamaño según el modelo elegido (Fig. 3.5). Funcionamiento: En estado de reposo la patita común (C) y la de reposo (R) están en contacto permanente hasta que la presión aplicada a la palanca del bumper hace saltar la pequeña pletina acerada interior y entonces el contacto pasa de la posición de reposo a la de activo (A), se puede escuchar cuando el bumper cambia de estado, porque se oye un pequeño clic, esto sucede casi al final del recorrido de la palanca. Fig. 3.5 Usos: Se usan para detección de obstáculos por contacto directo. No son adecuados para robots de alta velocidad ya que cuando detectan el obstáculo ya están encima y no da tiempo a frenar el robot. Ideas y mejoras: Pocas mejoras puede tener un dispositivo tan simple pero una buena idea seria utilizar un multiplexor para poner mas bumpers de control en nuestro robot y usar el mínimo de líneas de control Servomotores Descripción: El servo es un pequeño pero potente dispositivo que dispone en su interior de un pequeño motor con un reductor de velocidad y multiplicador de fuerza, también dispone de un pequeño circuito que gobierna el sistema (Fig. 3.6). El recorrido del eje de salida es de 180º en la mayoría de ellos, pero puede ser fácilmente modificado para tener un recorrido libre de 360º y actuar así como un motor Fig. 3.6 Funcionamiento: El control de posición lo efectúa el servo internamente mediante un potenciómetro que va conectado mecánicamente al eje de salida y controla un PWM (modulador de anchura de pulsos) interno para así compararlo con la entrada PWM externa del servo, mediante un sistema diferencial, y así modificar la posición del eje de salida hasta que los valores se igualen y el servo pare en la posición indicada, en esta posición el motor del servo deja de consumir corriente y tan solo circula una pequeña corriente hasta
35 el circuito interno, si forzamos el servo (moviendo el eje de salida con la mano) en este momento el control diferencial interno lo detecta y envía la corriente necesaria al motor para corregir la posición. Para controlar un servo tendremos que aplicar un pulso de duración y frecuencia específicas. Todos los servos disponen de tres cables dos para alimentación (Vcc, Gnd) y otro cable para aplicar el tren de pulsos de control que harán que el circuito de control diferencial interno ponga el servo en la posición indicada por la anchura del pulso. En la tabla 3.1 están indicados los valores de control y disposición de cables de varias marcas que comercializan servos. Duración pulso (ms) disposición de cables Fabricante min. neutral. máx.. Hz + batt -batt pwm. Futaba rojo negro blanco Hitech rojo negro amarillo Graupner/Jr rojo marrón naranja Multiplex rojo negro amarillo Robbe rojo negro blanco Simprop rojo azul negro Tabla 3.1 La figura 3.7 muestra la posición del servo con los diferentes anchos de pulso del PWM. Fig Circuito de prueba para ver el funcionamiento de los motores del mini-robot Ahora que describimos los componentes utilizados, veremos como está formado el conjunto de sensores, así como los sistemas básicos para su manejo. Vamos a construir un sistema de control para conseguir un móvil reactivo, que no está controlado por un micro controlador, pero que nos servirá como paso previo para obtener conocimientos sobre cómo hacer funcionar estos circuitos
36 Comenzaremos de una manera sencilla, construyendo un circuito que dependiendo de una señal de entrada 0 o 1 haga girar un motor de corriente continua hacia delante o hacia atrás, es decir en sentido horario o en sentido antihorario. El circuito que utilizamos para el primer robot reactivo no utiliza ningún microcontrolador y lo hemos diseñado así para empezar a comprender el funcionamiento de los sensores de infrarrojos CNY7O, cuyas características se incluyen en este mismo reporte y el circuito de control de potencia para los motores. El primer circuito que hemos utilizado ha sido el de la figura 3.8, que no es más que un puente en H de transistores controlado por los sensores CNY7O y unos inversores Schmitt Trigger, que se encargan de conformar las señales del sensor a niveles lógicos más estables. Fig. 3.8 Para los sensores CNY70 son típicos los dos montajes que se indican en la figura 3.9. Los valores de las resistencias comúnmente son: RT = 10KΩ para el fototransistor, mientras que para el diodo emisor es RD = 220Ω. Fig
37 El circuito por el que nos hemos inclinado en el diseño es el de la opción a, de manera que cuando el sensor esté sobre el fondo negro la luz es absorbida y el fototransistor se mantiene en corte, por lo que a la salida el circuito entrega un nivel bajo, mientras que cuando el sensor esté sobre el fondo blanco que refleja la luz, el fototransistor se satura y a la salida del circuito obtenemos un nivel alto. El funcionamiento del circuito b es justamente al contrario, cuando el sensor está sobre la línea negra, el fototransistor permanece en corte y entregando a la salida un nivel alto en el colector, mientras que si se encuentra sobre un fondo blanco, el haz infrarrojo se refleja y el fototransistor se satura entregando, a la salida del circuito, un nivel bajo. Para obtener señales digitales desde estos sensores utilizamos compuertas inversoras Schmitt Trigger, el chip que utilizamos es el CD40106 que tiene la ventaja de que cuenta con seis inversores de este tipo. Estos dispositivos tienen una característica de transferencia, como la que se muestra en la figura Fig En esta curva se aprecia que si la tensión de entrada asciende desde 0V hasta un nivel alto, la transición se produce siguiendo la curva A y se produce para el valor VT+ denominado umbral ascendente. Por el contrario, si la entrada está a un nivel alto y se va disminuyendo hasta 0V, la transición se produce siguiendo la curva B, cuando se alcanza el denominado umbral descendente VT-. Los valores de VT+ y de VT- para las compuertas de tecnología TTL, son de 4,7V y 0,9V respectivamente, pero para el caso del CD40106 depende de la tensión de alimentación y puede tomar los valores de la tabla 3.2. Tabla
38 Estas compuertas son de gran utilidad cuando se desea controlar un circuito digital con señales provenientes de sensores como los infrarrojos. En la figura 3.11 se muestra cómo actúa un circuito no inversor, el circuito frente a una señal que no es puramente digital. Cuando la señal V1 alcanza el valor VT+ la salida V0 cambia a un nivel alto, y no vuelve a tomar un nivel bajo hasta que la entrada no llegue a VT-. Fig Sistema de Actuación Control de Motores En nuestro mini-robot, los motores están controlados por un puente en H (Fig. 3.8), formado por cuatro transistores de potencia montados en antiparalelo. Los transistores trabajan en conmutación y se comportan como interruptores controlados por la señal que les llega desde el sensor a través del inversor. Su funcionamiento es el siguiente: en la figura 3.12 vemos el puente de transistores controlado por el sensor y su inversor asociado. Fig Si el sensor con su puerta inversora entrega un nivel alto, a la base de los transistores TR3 y TR2 (NPN y PNP) les llega respectivamente un nivel alto y un nivel bajo, lo que les hace entrar simultáneamente en saturación mientras que a TR1 y TR4 que les llegan las mismas señales se quedan en corte por ser de signo contrario (PNP y NPN respectivamente), en estas condiciones el motor gira en un sentido como puede verse en la figura 3.13(a). Cuando cambian el valor de la señal que entrega el sensor, los transistores que se saturan
39 son TR1 y TR4, mientras que los que pasan al estado de corte son TR3 y TR2, como puede verse en la figura 3.13 (b). Fig. 3.13(a) Fig. 3.13(b) El problema de este tipo de circuitos es la caída de tensión real que hay en los transistores y que habrá que compensarla con la batería, que por supuesto va disminuyendo en la medida que ésta se va agotando. Para evitar estos problemas en el diseño final hemos utilizado un puente integrado, el LM293B. Este circuito es un driver de 4 canales, capaz de proporcionar una corriente de salida de hasta la por canal. Cada canal es controlado por señales de entrada compatibles TTL y cada pareja de canales dispone de una entrada de habilitación que desconecta las salidas de los mismos. El circuito dispone, además, de una patita para la alimentación de las cargas que se están controlando, de forma que dicha alimentación es independiente de la lógica de control. En la figura 3.14 se muestran su encapsulado de 16 pines. Fig La tabla 3.3 muestra su distribución de patillas y la descripción de las mismas
40 Tabla Control de Motores por Medio de Microcontrolador. Al construir el mini-robot se observa que enseguida toma velocidad, ya que tiene poco coeficiente de reducción de los motores. Haciendo un análisis detallado del funcionamiento del driver L293 para el manejo de motores de corriente continúa, gobernado por un PIC microcontrolador, hemos elegido el P1C18F2550. Las salidas OUT se asocian con las correspondientes IN. Las señales de salida son amplificadas respecto a las de entrada tanto en tensión, como en corriente (máximo la), la tabla 3.4 es la de funcionamiento para cada uno de los drivers. Tabla 3.4 En la tabla 3.5 se describen los valores absolutos máximos del driver L293B. Tabla
41 Veamos, seguidamente, algunas formas de conectar los motores de corriente continua al driver del L293B Giro de dos motores en un único sentido En la figura 3.15 se muestra el modo de funcionamiento de dos motores de corriente continua que giran en un único sentido: El motor M1 se activa al poner a nivel bajo la entrada de control A. El motor M2 se activa al poner a nivel alto la entrada de control B Fig En la figura anterior vemos la conexión de dos motores de continua, M1 activo por 0 y M2 por 1. En la tabla 3.6 vemos el modo de funcionamiento del circuito. Los diodos Dl y D2, están conectados para proteger el circuito cuando se generan los picos de arranque de los motores. Si no se trabaja a máxima potencia de trabajo, pueden eliminarse del circuito. Tabla Montaje del Driver L293B con el Microcontrolador PIC Para comprobar el funcionamiento del driver L293B con el de un microcontrolador, utilizamos el P1C16F84A. También usamos un motor de los que ya hemos empleado, un inversor tipo Schmitt Trigger del chip CD40106 y nuestro driver
42 El circuito utilizado es el de la figura 3.16, que muestra el esquema del montaje para el control de motores con el driver L293B y el P1C16F84A, para el proyecto solamente se sustituyo el PIC16F84A por el PIC 18F2550, ya que la conexión a las patillas es prácticamente la misma. Fig Enseguida se encuentran los esquemas de las placas usadas en el mini-robot para la etapa de potencia y la de control, así como la explicación de sus conexiones
43 3.1.6 Etapa de Potencia. Placa en donde se controla la etapa de potencia del mini-robot (Fig (a) y (b)), en este circuito reducimos el voltaje de 9V de la pila a 5V, que es el voltaje que necesitamos para alimentar todo el circuito. (a) (b) Fig Placa para la etapa de potencia: (a) Diseño del circuito. (b) Circuito armado. Alimentación Principal de la pila de 9V. Switch para alimentar el circuito; este se encuentra colocado en la parte inferior del mini-robot. Cabezal colocado para conectar un led y así ver que el circuito esta activado. (En el circuito final no se coloco el led, porque al encender el mini-robot tiene ya cargado una determinada secuencia a realizar, por lo cual si no se realiza esta secuencia es claro que hay problemas con la alimentación) Alimentación para los otros 2 circuitos del mini-robot. Cabezales para la conexión de los motores IN3, IN4 Se usan para el motor de arranque, las señales de control se dan por medio del puerto C del PIC es decir de RC1 y RC0. IN1, IN2 Se usan para el motor de dirección, las señales de control se dan por medio del puerto C del PIC es decir de RC6 y RC
44 3.1.7 Etapa de Control. Placa que controla todas las actividades (Fig (a) y (b)), es decir es el cerebro del mini-robot; aquí se encuentra colocado el PIC 18F2550 que contiene el programa que se encargara de dar todas las instrucciones para el correcto funcionamiento. (a) (b) Fig Placa para la etapa de control: (a) Diseño del circuito. (b) Circuito armado. Cabezal que se conecta a la mano del mini-robot, el potenciómetro es para variar la distancia de detección del sensor de proximidad que se encuentra colocado en este mismo. Cabezales en los que se conectan los 2 servomotores, que se usan para controlar el brazo y la mano, estos reciben las señales de control PWM de los puertos C y B C RC2 para el servo de la mano B RB3 para el servo del brazo Jumpers colocados para la alimentación de los servomotores; se colocaron estos previendo el consumo de corriente, es decir se puede realizar una conexión externa de alimentación independiente a la que alimenta a todo el circuito; reduciendo considerablemente el consumo de corriente. Conector colocado para programar el PIC sin necesidad de retirarlo del circuito Puerto A del PIC usado para controlar los sensores estos son: RA0 Controla el sensor de choque izquierdo RA1 Controla el sensor de choque derecho RA2 Controla el sensor detector de color negro RA3 Controla el sensor detector de objetos Conectores de los sensores de choque
45 Placa del sensor de color negro. En esta placa se instalo el sensor de color negro (Fig (a) y (b)) y con la conexión del chip CD40106 obtenemos mayor sensibilidad en la detección del color; mismo que se usa para el sensor de localización de objetos colocado en la pinza del mini-robot. (a) (b) Fig Placa del sensor de color negro: (a) Diseño del circuito. (b) Circuito armado
46 Capítulo 4. Implementación del mini-robot. Para la implementación del mini-robot recolector de objetos es necesario definir exactamente todas y cada una de las partes que componen el mini-robot y que vamos a utilizar para controlar el proceso, recordando que los sensores que utilizan señales infrarrojas se encuentran en dos ubicaciones: en el seguidor de línea y en la pinza de recolección. 4.1 El seguidor La detección de la marca del piso esta basada en la capacidad de los colores para reflejar la luz, basándose en eso se ha decidido utilizar el CNY70 que es un sensor de proximidad, constituido principalmente de una fuente emisora de luz y un foto detector que recibe la señal luminosa reflejada por las marcas de color negro que se encuentren en el piso, la principal problemática será la calibración para que pueda detectar las marcas de color negro brindando una señal lógica 0 o 1 (0 y 5V respectivamente) dependiendo si esta presente la marca o no para poder acoplarla directamente al PIC que se encargara de efectuar el proceso de toma de decisiones necesario para controlar los motores que se encargaran de la realización del desplazamiento de la unidad, figuras (4.1(a) y (b)). (a) (b) Fig. 4.1(a) y (b). Circuito seguidor ya implementado en el mini-robot. 4.2 La pinza recolectora Esta hecha en baquelita y se encuentra controlada por 1 servomotor, figuras (4.2(a) y (b)), el cual le dará el soporte necesario para realizar el esfuerzo mecánico con el que podrá abrir o cerrar la pinza, dependiendo si ha encontrado o no un objeto en su trayecto, cuando la unidad motriz se detenga procederá a la sujeción y carga de dicho objeto. Contara con un sensor reflexivo IS471F, el cual estará conformado por una fuente infrarroja y un fototransistor que crearan una barrera que al ser interrumpida indique que se ha encontrado con algún objeto el cual deberá recolectar para después continuar su trayecto
47 (a) (b) Fig. 4.2(a) y (b). Pinza recolectora implementada en el mini-robot. 4.3 El detector de obstáculos Está basado en los diferentes estados en los que se podrá encontrar el motor que se encargan de la tracción: adelante y atrás para controlar el desplazamiento en línea recta y dirección derecha y dirección izquierda para los giros a la derecha e izquierda respectivamente. Se cuenta con 2 detectores colocados en los costados delanteros del robot, figuras (4.3(a) y (b)), cada uno dará una señal que se procesara de acuerdo a la tabla 4.1: (a) (b) Fig. 4.3(a) y (b). Detector de obstáculos implementado en el mini-robot. Detector1 Detector2 Motor1 Motor2 0 0 Atrás Atrás Derecha 1 0 A delante Izquierda 1 1 Adelante ---- Tabla 4.1. Sentido de los motores según la presencia de obstáculos
48 4.4 El brazo up-down El sensor detector de color mandara la señal de interrupción que inhibirá el funcionamiento de los motores dejándolos en espera, hasta que el proceso de recolección haya concluido, este consiste en lo siguiente: al detenerse el mini-robot, el brazo up-down, también hecho en baquelita y gobernado por 1 servomotor, siempre al inicio se encuentra en su posición más alta, desciende a la posición mas baja, permitiendo a la pinza la detección del objeto y su sujeción, inmediatamente el brazo up-down comienza a elevar el objeto sujetado por la pinza, por encima del chasis del robot hasta quedar en su posición más alta, en este momento se activa una señal que accionara el proceso de continuar. (a) (b) Fig. 4.4(a) y (b). El brazo up-down implementado en el mini-robot. 4.5 Suministro de energía y movimiento El circuito de control se encontrara alimentado con un batería de 9V, la cual estará ubicada en la parte superior del mini-robot (Figuras 4.5(a) y (b)). Al mismo tiempo se proporciona una alimentación de energía para el circuito de potencia, refiriéndose así a la parte donde estarán interviniendo los motores que generan el desplazamiento así como los servomotores. Debido a sus características tanto de programación como de aplicación, la unidad recolectora de objetos puede ajustarse a desempeñar una diversa gama de aplicaciones, mediante pequeñas variaciones en la programación y la sustitución de los transductores para trabajar con diferentes variables de control. (a) (b) Fig. 4.5(a) y (b). Circuito para el suministro de energía implementado en el mini-robot
49 4.6 Diagrama de flujo El diagrama de flujo (Fig. 4.6) muestra los pasos a seguir para la elaboración del programa final del mini-robot recolector de objetos Inicio Si Detecto Marca No Interrupción del desplazamiento Avanza de frente Coloca brazo en su posición mas baja Detecto marca No Si Detecta el objeto y lo levanta Brazo en su posición más alta No Si Avanza de frente Fig Diagrama de flujo del comportamiento del mini-robot recolector
50 4.7 Funcionamiento del mini-robot. Estos son los pasos del funcionamiento del mini-robot recolector de objetos, de acuerdo al diagrama de flujo: Paso 1: Al inicio del funcionamiento del mini-robot recolector de objetos, el brazo up-down se eleva a su posición más alta, como lo muestra la figura 4.7. Fig Paso 2: El mini-robot avanza hasta detectar la marca de color negro, en donde se detiene, como lo muestra la figura 4.8. Fig
51 Paso 3: El brazo up-down se mueve hacia su posición mas baja, permitiendo al sensor instalado en la parte de en medio de la pinza, detectar el objeto, tal como lo muestra la figura 4.9. Fig Paso 4: El sensor de la pinza detecta el objeto y manda una señal al microcontrolador, el cual inicia la secuencia para cerrar la pinza y sujetar el objeto, como lo muestra la figura Fig
52 Paso 5: Al sujetar la pinza el objeto, el brazo up-down se eleva hasta su posición más alta, como lo muestra la figura Fig Paso 6 El mini-robot recolector continua su recorrido con el objeto sujetado por la pinza, como lo muestra la figura Fig De acuerdo a la información antes descrita, nuestro programa PFinal.asm para el control del mini-robot recolector de objetos se muestra a continuación:
53 4.8 Programa PFinal.asm del mini-robot recolector de objetos: ; ======================================================================== ; Nombre del Archivo: Proyecto Final ; ; Descripcion del programa: Este programa se encarga de controlar los motores del carro los cuales son el Motor de arranque (M1) y el Motor de direccion (M2), estos motores seran controlados por medio del puerto C, los bits que se utilizaran seran RC<0:1> para M1 y RC<6:7> para M2. ; Se utiliza RC2 para controlar el servo de la mano recolectora, y RB3 para controlar el servo del brazo. Los bits del registro RA contendran el sensor de choque izquierdo (RA0), el sensores de choque derecho (RA1),el sensor detector de color negro (RA2) y el sensor detector de objetos (RA3). ; ; Version de Archivo: 1.06 ; ; Autores: Adrian Bravo Infante - Javier Cervantes Palacios ; ; Escuela: UAM-I ; ;======================================================================== LIST P=18F2550 ; Directiva que define el procesador. #include <P18F2550.INC> ; Directiva para definir el procesador y el formato del archivo. RADIX HEX ; Valores por default hexadecimales. ;<===================== Configuracion de los bits ================> ; Oscillator Selection bits: CONFIG FOSC = XT_XT ;XT oscillator, XT used by USB ; Watchdog Timer Enable bit: CONFIG WDT = OFF ;HW Disabled ; PORTB A/D Enable bit: CONFIG PBADEN = OFF ;PORTB<4:0> pins are configured as digital I/O on Reset ; CCP2 MUX bit: CONFIG CCP2MX = OFF ;CCP2 input/output is multiplexed with RB3 ; Single-Supply ICSP Enable bit: CONFIG LVP = OFF ;Single-Supply ICSP disabled ; Extended Instruction Set Enable bit: CONFIG XI NST = OFF ;In struction set extension and Indexed Addressing mode disabled ;< ==== ================ Definicion de variables ================== ==> PDel0 EQU 0X40 PDel1 EQU 0X41 PDel2 EQU 0X42 VAR EQU 0X43 ;<===== ===== ==== == == Inicio cada que haya un reset =================> ORG 00h ; Inicio del codigo cada que ocurra un reset. GOTO PUERTOS ; Salta a la configuracion de los puertos. ORG 30H ; Inicio del programa
54 ;<================= Configuracion de los puertos ================= => PUERTOS CLRF PORTA ; Inicializa puerto A poniendo todas sus salidas en 0. CLRF PORTB ; Inicializa puerto B poniendo todas sus salidas en 0. CLRF PORTC ; Inicializa puerto C poniendo todas sus salidas en 0. MOVLW 0FH ; Configuracion digital I/O MOVWF ADCON1 ; para los pines de los puertos MOVLW 3FH ; Configurando puerto A <5:0> MOVWF TRISA ; como entradas. MOVLW 00H ; Configurando puerto B <7:0> MOVWF TRISB ; como salidas. MOVWF TRISC ; Configurando puerto C <2:0>, <7:6> como salidas ; los pines C <5:4> por no tener relacion con TRISC ; solo funcionan como entradas. ;<=============== Configuracion para usar el PWM =======================> MOVLW 0FFH ; Se establece el valor para el periodo del PWM MOVWF PR2 MOVLW 7H ; Activamos el TIMER2 y seleccionamos un preescalamiento MOVWF T2CON ; de 16 MOVLW 0FH ; se cargan los bits del ciclo de trabajo MBL <1:0> MOVWF CCP2CON ; y se establece el modo de PWM MOVWF CCP1CON ; ;=================== Inicio programa principal ================== INICIO CALL SERVOOP ; Abre la mano CALL SERVOUP ; Sube el brazo RUTINA MOVLW 02H ; Carga el valor para mover el carro hacia enfrente. MOVWF BTFSC LATC PORTA,0 ; Activamos el motor M1. ; Verifica sensor de choque izquierdo CALL SENIZ Q ; Llama a subrutina de sensor izquierdo BCF LATC,6 BTFSC PORTA,1 ; Verifica sensor de choque derecho CALL SENDER ; Llama a subrutina de sensor derecho BCF LATC,7 BTFSS PORTA,2 ; Verifica sensor detector color negro CALL SENCN ; Llama a subrutina detectora de color negro BTFSS PORTA,3 GOTO RUTINA
55 SIGUE BTFSC PORTA,0 ; Verifica sensor de choque izquierdo CALL SENIZQ ; Llama a subrutina de sensor izquierdo BCF LATC,6 BTFSC PORTA,1 ; Verifica sensor de choque derecho CALL SENDER ; Llama a subrutina de sensor derecho BCF LATC,7 GOTO SIGUE ;<=================== Subrutinas para los sensores ===================> SENIZQ BSF LATC,6 dirección izquierda BTFSC PORTA,0 sigue activado GOTO SENIZQ RETUR N ; El carro toma la ; Verifica si el sensor SENDER BSF LATC,7 ; El carro toma la dirección derecha BTFSC PORTA,1 ; Verifica si el sensor sigue activado GOTO SENDER RETUR N SENCN BCF LATC,1 ; Detenemos el carro CALL SERVOLOW ; Bajamos el brazo BSF LATC,1 ; Avanza el carro BTFSC PORTA,3 ; Verifica si el sensor detecto el objeto CALL SENOBJ ; Llama a la subrutina que detecta el objeto RETURN SENOBJ BCF LATC,1 CALL SERVOCL ; Cerramos la mano CALL SERVOUP ; Levantamos el brazo BSF LATC,1 ; Avanza el carro RETURN ;<================ Subrutinas de control de los servos ===============> ; Aqui accionamos el servo1 en la posicion 0 es desir abrimos la mano SERVOOP MOVLW 1FH ; Carga el valor para establecer el ciclo de trabajo MOVWF CCPR1L ; estos son los bits MSB <9:2> CALL RETARDO1 RETURN ; Aquí ponemos al servo1 en la posición 180 es decir cerramos la mano SERVOCL MOVLW 9CH ; Carga el valor para establecer el ciclo de trabajo MOVWF CCPR1L ; estos son los bits MSB <9:2> CALL RETARDO1 RETURN
56 ; Aqui ponemos al servo2 en la posici on 0 es decir bajamos el brazo SERVOLOW MOVLW 1FH ; Carga el valor para establecer el ciclo de trabajo MOVWF CCPR2L ; estos son los bits MSB <9:2> CALL RETARDO1 RETURN ; Aqui ponemos al servo en la posicion 180 es decir subimos el brazo SERVOUP MOVLW 9CH ; Carga el valor para establecer el ciclo de trabajo MOVWF CCPR2L ; estos son los bits MSB <9:2> CALL RETARDO1 RETURN ;================= Retardo de 2 segundos ====================== RETARDO1 movlw.167 ; 1 set numero de repeticion (C) movwf PDel0 ; 1 PLoop0 movlw.41 ; 1 set numero de repeticion (B) movwf PDel1 ; 1 PLoop1 movlw.72 ; 1 set numero de repeticion (A) movwf PDel2 ; 1 PLoop2 clrwdt ; 1 clear watchdog decfsz PDel2,1 ; 1 + (1) es el tiempo 0? (A) goto PLoop2 ; 2 no, loop decfsz PDel1,1 ; 1 + (1) es el tiempo 0? (B) goto PLoop1 ; 2 no, loop decfsz PDel0,1 ; 1 + (1) es el tiempo 0? (C) goto PLoop0 ; 2 no, loop PDelL1 goto PDelL2 ; 2 ciclos delay PDelL2 clrwdt ; 1 ciclo delay return ; 2+2 Fin. ;========= == ====== Retardo de 1 segundo ========= ============= RETARDO2 movlw.14 ; 1 set numero de repetición (C) movwf PDel0 ; 1 RLoop0 movlw.72 ; 1 set numero de repeticion (B) movwf PDel1 ; 1 RLoop1 movlw.247 ; 1 set numero de repeticion (A) movwf PDel2 ; 1 RLoop2 clrwdt ; 1 clear watchdog decfsz PDel2,1 ; 1 + (1) es el tiempo 0? (A) goto RLoop2 ; 2 no, loop decfsz PDel1,1 ; 1 + (1) es el tiempo 0? (B) goto RLoop1 ; 2 no, loop decfsz goto PDel0,1 RLoop0 ; 1 + (1) es el tiempo 0? (C) ; 2 no, loop RDelL1 goto RDelL2 ; 2 ciclos delay RDelL2 clrwdt ; 1 ciclo delay return ; 2+2 Fin. ;========= == ===================================== = END ; Fin del programa. ;=================================================
57 Capítulo 5. Implementación de la interfaz de comunicación USB. La implementación de la interfaz USB del proyecto, pretende mostrar como enviar/recibir datos por el puerto USB desde el PIC al PC, el programa fue hecho de tal manera que fuera entendible, por lo que realmente no tiene ninguna utilidad mas que servir de introducción al uso del puerto USB. Este programa es usado sobre la placa que se diseño para usar el puerto USB (PicUSB), puesto que el funcionamiento del PicUSB se limita a encender/apagar cada uno de los led, y a realizar una suma de dos operandos. El diseño de la placa para la interfaz USB y el circuito armado se muestran en las figuras 5.1(a) y (b): (a) (b) Fig Placa para la interfaz USB: (a) Diseño del circuito. (b) Circuito armado
58 La implementación de la interfaz USB consta de tres partes: - Programación de la aplicación para PC. - Programación de la aplicación para el PIC. - Edición del Driver suministrado por Microchip. Para la programación de la aplicación para el PIC se optó por usar el compilador extendido CCS, utilizando para ello la versión 3.227, el cual se puede encontrar en Internet. El código de la aplicación se encuentra en la carpeta PicUSB_CCS, así como el archivo con extensión.hex para ser programado en el PIC. Tanto el PicUSB.c, como el PicUSB.h están basados en el ex_usb_scope.c suministrado por CCS (Documentación en Ingles). Se decidió usar el PIC 18F2550 ya que este es uno de la familia PIC que tiene integrada la interfaz para el puerto USB, pero puede usarse cualquiera de la serie 18Fxx5x que incorporan el USB 2.0. Para la programación de la aplicación para PC se optó por usar el Visual C# Express 2005, actualmente va por la versión beta 2 y puede ser descargado gratuitamente de la página de Microsoft, aquí agregamos el link: Se decidió usar este lenguaje por su sencillez de programación. Es un lenguaje con muchísimas posibilid ades y es relativamente fácil empezar a trabajar con él. Para poder ejecutar el programa PicUSB.exe se necesita el programa de Visual C#; si no se cuenta con el se necesitara tener instalada la última versión del.net Framework, para poder ejecutar el programa. Se puede encontrar el código fuente en la carpeta PicUSB_CCS, donde también se encuentran funciones_dll.txt en el que se detalla el uso de las funciones contenidas en la mpusbapi.dll proporcionada por Microchip, creemos que no hay problema para entender el uso de las funciones mas habituales. El último paso ha sido la edición del Driver suministrado por Microchip para ser usado junto con la DLL, encontraran un documento (leer.txt) dentro de la carpeta PicUSB_Driver donde se explica como editar el PicUSB.inf, a continuación se explica como instalar el driver para que no exista ningún problema. 5.1 Funcionamiento de la interfaz USB. Al conectar el PicUSB por primera vez, nos saldrá el asistente para la instalación de nuevo hardware, marcamos la opción de instalar desde una lista o ubicación específica, oprimimos el botón de siguiente, (figura 5.2)
59 Fig. 5.2 En la siguiente pantalla marcamos la opción de Buscar el controlador más adecuado en estas ubicaciones, presionamos sobre Incluir esta ubicación en la búsqueda, le damos a Examinar, y seleccionamos la carpeta PicUSB_Driver, le damos Siguiente, (figura 5.3). Fig. 5.3 Enseguida, nos saldrá una pantalla de advertencia, le damos Continuar, (figura 5.4). Fig
60 La instalación del Driver estará terminada y el dispositivo listo para ser usado (figura 5.5). Fig. 5.5 Dentro de la carpeta PicUSB_VisualC se podrá encontrar la aplicación PicUSB.exe así como la dll necesaria suministrada por Microchip, para poder ejecutar el programa una vez instalado el driver del PicUSB. Al ejecutarlo nos reconoce inmediatamente el nuevo hardware encontrado y podemos empezar a trabajar con el (figura 5.6). Fig. 5.6 Interfaz USB funcionando. Más a detalle, la figura 5.7 muestra la interfaz USB en la parte superior podemos encontrar el sumador, introducimos dos números del 00 hasta el 99 en cada uno de los sumandos, hacemos click sobre PIC Suma!, estos dos operandos serán enviados al PIC, el cual realizará la suma, devolviendo el resultado que se mostrará en la tercera casilla. Por otro lado tenemos los botones, Leds Off, Led Verde On y Led Rojo On, que envían el código correspondiente para cada uno de los casos. Al hacer click sobre la imagen del logo de la UAM-I se abrirá el explorador de Internet y nos enviara a la pagina principal de la UAM-I. Fig. 5.7 Interfaz USB
61 5.2 Programa PicUSB.C para la interfaz de comunicación USB. ///////////////////////////////////////////////////////////////////////// //// PicUSB.c //// //// //// //// Este ejemplo muestra como desarrollar un sencillo dispositivo //// //// USB con el PIC18F2550, aunque puede ser fácilmente adaptado //// //// para la serie 18Fxx5x. Se suministra el PicUSB.exe, así como //// //// su código fuente para Visual C# //// //// //// //// Cuando el dispositivo sea conectado al PC, saldrá el asistente //// //// para la instalación del driver. Instala el suministrado junto //// //// a este ejemplo, lo encontraran dentro de la carpeta Driver. //// //// Una vez instalado podran usar el PicUSB.exe para encender o //// //// apagar los leds del PicUSB, y para realizar la suma de dos //// //// números introducidos. //// //// //// //// Realizado con el compilador CCS PCWH //// //// //// //// Por: Adrian Bravo Infante - Javier Cervantes Palacios //// //// //// ///////////////////////////////////////////////////////////////////////// #include <18F2550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN #use delay(clock= ) ///////////////////////////////////////////////////////////////////////// //// // // CCS Library dynamic defines. For dynamic configuration of the CCS Library // for your application several defines need to be made. See the comments // at usb.h for more information // ///////////////////////////////////////////////////////////////////////// //// #define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID #define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers #define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers #define USB_EP1_TX_SIZE 1 //size to allocate for the tx endpoint 1 buffer #define USB_EP1_RX_SIZE 3 //size to allocate for the rx endpoint 1 buffer ///////////////////////////////////////////////////////////////////////// //// // // If you are using a USB connection sense pin, define it here. If you are // not using connection sense, comment out this line. Without connection // sense you will not know if the device gets disconnected. // (connection sense should look like this: // 100k
62 // VBUS /\/\/\/\/\----- (I/O PIN ON PIC) // // +----/\/\/\/\/\-----GND // 100k // (where VBUS is pin1 of the USB connector) // ///////////////////////////////////////////////////////////////////////// //// //#define USB_CON_SENSE_PIN PIN_B2 //CCS 18F4550 development kit has optional conection sense pin ///////////////////////////////////////////////////////////////////////// //// // // Include the CCS USB Libraries. See the comments at the top of these // files for more information // ///////////////////////////////////////////////////////////////////////// //// #include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver #include <PicUSB.h> //Configuración del USB y los descriptores para este dispositivo #include <usb.c> //handles usb setup tokens and get descriptor reports ///////////////////////////////////////////////////////////////////////// //// // // Al conectar el PicUSB al PC encendemos el Led Rojo hasta que el dispositivo // halla sido configurado por el PC, en ese momento encederemos el Led Verde. // Esperaremos hasta que se reciba un paquete proveniente del PC. Comprobaremos // el primer byte del paquete recibido para comprobar si queremos entrar en el // modo Suma, donde se realizará una suma de dos operandos, que corresponderan // con los dos bytes restantes del paquete recibido; una vez realizada la suma // enviaremos el paquete con el resultado de vuelta al PC. Si entramos en el // modo Led comprobaremos el segundo byte del paquete recibido para comprobar // si deberemos apagar los leds, encender el verder o el rojo. // ///////////////////////////////////////////////////////////////////////// //// #define LEDV PIN_B6 #define LEDR PIN_B7 #define LED_ON output_high #define LED_OFF output_low #define modo recibe[0] #define param1 recibe[1] #define param2 recibe[2] #define resultado envia[0]
63 void main(void) { int8 recibe[3]; int8 envia[1]; LED_OFF(LEDV); LED_ON(LEDR); usb_init(); usb_task(); interrupciones usb_wait_for_enumeration(); configurado por el host LED_OFF(LEDR); LED_ON(LEDV); //declaramos variables //encendemos led rojo //inicializamos el USB //habilita periferico usb e //esperamos hasta que el PicUSB sea //encendemos led verde while (TRUE) { if(usb_enumerated()) //si el PicUSB está configurado { if (usb_kbhit(1)) //si el endpoint de salida contiene datos del host { usb_get_packet(1, recibe, 3); //recojemos el paquete de tamaño 3bytes del EP1 y almacenamos en recibe if (modo == 0) // Modo_Suma { resultado = param1 + param2; //hacemos la suma usb_put_packet(1, envia, 1, USB_DTS_TOGGLE); //enviamos el paquete de tamaño 1byte del EP1 al PC } if (modo == 1) // Modo_Led { if (param1 == 0) {LED_OFF(LEDV); LED_OFF(LEDR);} //apagamos los leds if (param1 == 1) {LED_ON(LEDV); LED_OFF(LEDR);} //encendemos led verde if (param1 == 2) {LED_OFF(LEDV); LED_ON(LEDR);} //encendemos led rojo } } } } }
64 ANEXO 1. Software de programación y lenguaje C. MPLAB IDE es un conjunto de herramientas que permite el desarrollo completo de proyectos siguiendo las siguientes fases: 1) Editar el programa: Estas prácticas serán diseñadas en lenguaje C en el editor de textos de MPLAB, pero se pueden realizar en cualquier otro lenguaje, ya sea de bajo nivel como el ensamblador u otros de alto nivel como el Visual Basic etc. 2) Compilar o ensamblar el programa fuente, es decir, convertir a código máquina ejecutable el programa fuente editado en la fase anterior. Para poder compilar el programa será necesario tener instalado el Plug-in de CCS y para ensamblarlo habrá que emplear el programa MPASWIN que incluye MPLAB IDE. 3) Simular el programa: Antes de grabar el programa en la memoria del PIC, conviene comprobar si el funcionamiento del programa es correcto. Para ello se puede simular por software con el simulador que incluye MPLAB. No es una fase obligatoria, es opcional pero conveniente. 4) Grabación del PIC: Para la grabación del microcontrolador se utilizará el grabador de PICS conectado al PC. Cómo usar MPLAB Creación de proyectos MPLAB es un Entorno de Desarrollo Integrado (IDE) fácil de aprender y fácil de usar. La característica IDE proporciona a los desarrolladores de software para aplicaciones la flexibilidad para editar, compilar, emular, simular, desarrollar y depurar su propio software para las familias de microcontroladores PIC18 de Microchip. Para crear un nuevo proyecto se debe ir a Project>Project Wizard, tal y como se indica en la figura siguiente. Una vez ahí, se abrirá un asistente de creación de proyectos donde habrá que seguir unos pasos sencillos para la configuración del proyecto
65 1) Selección del modelo de microcontrolador a emplear de una lista. En el caso de estas prácticas se elegirá el PIC18F ) Selección del lenguaje y compilador a emplear así como la ubicación de este en la PC, en este caso, se utilizará el compilador de Ccs tal y como se indica en la figura. Si el programa se realiza en otro lenguaje habrá que seleccionar otro compilador. Por ejemplo si se ha realizado en lenguaje ensamblador, en este paso habrá que seleccionar MPASM Assembler que se encuentra en la carpeta donde se ha instalado el MPLAB IDE. 3) Dar un nombre al proyecto y elegir la carpeta donde se desea guardar. 4) Seleccionar los archivos de código fuente y las librerías necesarias para llevar a cabo el proyecto
66 En caso de no haber creado todavía el código fuente, no habría más que crearlo en el editor de textos del propio programa o en cualquier otro editor de textos. En MPLAB sería File>New, una vez escrito se guarda pulsando File>Save. Después de seguir todos los pasos el programa realiza un resumen, ahí se pulsa Finalizar y se sale del asistente. En este punto cabe destacar que lo realizado hasta ahora es simplemente la creación del código fuente y la configuración de las aplicaciones que se van a emplear. El siguiente paso es la compilación. Compilación del programa Una vez realizado el proyecto es tan sencillo como darle al botón de compilar tal y como se indica en la figura de la página siguiente. Si el programa no tiene fallos nos saldrá un mensaje de que se ha compilado con éxito Build Sucedded, si tiene algún error saldrá un mensaje e indicará en que línea o parte del programa se ha producido, habrá que corregirlo y volver a compilar. Una vez compilado correctamente se habrá generado en la carpeta previamente seleccionada un archivo de igual nombre al código fuente pero con extensión.hex. Este archivo es el mismo pero traducido a código máquina, de tal forma que el PIC pueda comprender las ordenes indicadas en el programa
67 Si el programa ha sido realizado en lenguaje ensamblador en vez de en lenguaje C simplemente en vez de aparecer la opción Compile aparecerá la opción Assemble y todo lo demás será exactamente igual a lo explicado para el lenguaje C. Programación Una vez generado el archivo en código máquina solamente queda pasarlo de la PC al microcontrolador. Para ello será necesario un programador que, en este caso, será el MPLAB ICD 2 de Microchip. Una vez conectado vía USB a la PC y después al grabador de PICS. Habrá que seleccionarlo y conectarlo en el MPLAB IDE tal y como se ve en la figura: Programmer>Select Programmer>Mplab Icd 2 Una vez seleccionado habrá que pulsar el icono Program tarjet device y el programa quedará grabado en el PIC
68 Lenguaje C. En este punto de proyecto no se pretende explicar cómo se programa en este lenguaje, sino hacer un listado de las directivas y funciones permitidas por el compilador PCW de CCS, compilador específico para microcontroladores de la casa Microchip. Así pues, se parte de la idea de que el lector posee conocimientos básicos de este lenguaje u otros lenguajes de alto nivel. Operadores y expresiones Una expresión de asignación tradicional es de la forma expr1 = expr1 operador expr2, pero también puede ser representada por otra más corta expr1 operador = expr2. En la siguiente tabla se resumen los operadores de asignación compuesta y su significado: Los operadores aritméticos empleados para realizar operaciones matemáticas son: La misión de los operadores relacionales es comparar dos operandos y dar un resultado entero, 1 si es verdadero y 0 si es falso:
69 Los operadores lógicos, al igual que los operadores relacionales, devuelve 1 o 0 tras la evaluación de sus operandos. En la tabla siguiente se ilustran estos operadores: Los operadores de manejo de bits permiten actuar sobre los operandos a nivel de bits y sólo pueden ser de tipo entero (incluyendo el tipo char). Son los que siguen: Las expresiones empleadas se exponen en la siguiente tabla: Directivas del preprocesador Todas las directivas del preprocesador comienzan con el carácter # seguido por un comando específico. Algunas de estas directivas son extensiones del C estándar. El C proporciona una directiva del preprocesador, que los compiladores aceptan, y que permite ignorar o actuar sobre los datos que siguen. El compilador de CCS admite cualquier directiva del preprocesador que comience con PRAGMA, lo que asegura la compatibilidad con otros compiladores. A continuación se describen algunas directivas del compilador que se emplearán para programar los microcontroladores PIC en estas prácticas. Control de memoria #BIT identificador = x.y Esta directiva creará un identificador "id" que puede utilizarse como cualquier SHORT INT (entero corto; un bit). El identificador hará referencia a un objeto en la posición de memoria x más el bit de desplazamiento y
70 #BYTE identificador = X Esta directiva creará un identificador id que puede utilizarse como cualquier INT (un byte). El identificador hará referencia a un objeto en la posición de memoria x, donde x puede ser una constante u otro identificador. Si x es otro identificador, entonces éste estará localizado en la misma dirección que el identificador id. #RESERVE Permite reservar posiciones de la RAM para uso del compilador. #RESERVE debe aparecer después de la directiva #DEVICE, de lo contrario no tendrá efecto. Directivas del C estándar #DEFINE identificador CADENA Se utiliza simplemente para reemplazar el identificador (ID) con CADENA #IF expresión_constante #ELSE #ENDIF El preprocesador evalúa la expresión_constante y si es distinta de cero procesará las líneas hasta el #ELSE o en su defecto hasta el #ENDIF. #INCLUDE <Nombre_Fichero> #INCLUDE "Nombre_Fichero" Esta directiva hace que el compilador incluya en el fichero fuente el texto que contiene el archivo especificado en <Nombre_Fichero>. Especificación de dispositivos #FUSES opciones Esta directiva define qué fusibles deben activarse en el dispositivo cuando se programe. Esta directiva no afecta a la compilación; sin embargo, esta información es necesaria para algunos programadores de dispositivos. Algunas de las opciones más usadas son: Librerías incorporadas LP, XT, HS, RC WDT, NOWDT PROTECT, NOPROTECT PUT, NOPUT (Power Up Timer) BROWNOUT, NOBROWNOUT SWAP #USE DELAY (CLOCK=frecuencia)
71 Esta directiva indica al compilador la frecuencia del procesador, en ciclos por segundo, a la vez que habilita el uso de las funciones DELAY_MS() y DELAY_US(). #USE FAST_IO (puerto) Esta directiva afecta al código que el compilador generará para las instrucciones de entrada y salida. Este método rápido de hacer I/O ocasiona que el compilador realice I/O sin programar el registro de dirección. #USE I2C (master/slave, SDA=Pin, SCL=Pin opciones) La librería I2C contiene funciones para implementar un bus I2C. La directiva #USE I2C permanece efectiva para las funciones I2C_START, I2C_STOP, I2C_READ, I2C_WRITE e I2C_POLL hasta que se encuentre otra directiva #USE I2C. Las opciones son: #USE RS232 (BAUD=baudios, XMIT=pin, RCV=pin...) Esta directiva le dice al compilador la velocidad en baudios y los pines utilizados para la I/O serie. Esta directiva tiene efecto hasta que se encuentra otra directiva RS232. La directiva #USE DELAY debe aparecer antes de utilizar #USE RS232. Esta directiva habilita el uso de funciones tales como GETCH, PUTCHAR y PRINTF. Las opciones son:
72 #USE STANDARD_IO (puerto) Esta directiva afecta al código que el compilador genera para las instrucciones de entrada y salida. El método estándar de hacer I/O causará que el compilador genere código para hacer que un pin de I/O sea entrada o salida cada vez que se utiliza. En los procesadores de la serie 5X esto necesita un byte de RAM para cada puerto establecido como I/O estándar. Funciones Funciones de i/o serie rs232 c = GETC() c = GETCH() c = GETCHAR() Estas funciones esperan un carácter por la patilla RCV del dispositivo RS232 y retorna el carácter recibido. Es preciso utilizar la directiva #USE RS232 antes de la llamada a esta función para que el compilador pueda determinar la velocidad de transmisión y la patilla utilizada. La directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la anterior. Los procedimientos de I/O serie exigen incluir #USE DELAY para ayudar a sincronizar de forma correcta la velocidad de transmisión. PUTC() PUTCHAR() Estas funciones envían un carácter a la patilla XMIT del dispositivo RS232. Es preciso utilizar la directiva #USE RS232 antes de la llamada a esta función para que el compilador pueda determinar la velocidad de transmisión y la patilla utilizada. La directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la anterior. PUTS(string) Esta función envía cada carácter de string a la patilla XMIT del dispositivo RS232. Una vez concluido el envío de todos los caracteres la función envía un retorno de carro CR o RETURN (ASCII 13) y un avance de línea LF o LINE-FEED (ASCII 10). PRINTF([function], string, [values]) La función de impresión formateada PRINTF saca una cadena de caracteres al estándar serie RS-232 o a una función especificada. El formato está relacionado con el argumento que ponemos dentro de la cadena (string). Cuando se usan variables, string debe ser una constante. El carácter % se pone dentro de string para indicar un valor variable, seguido de uno o más caracteres que dan formato al tipo de información a representar
73 Si ponemos %% obtenemos a la salida un solo %. El formato tiene la forma genérica %wt, donde w es optativo y puede ser 1,2,...,9. Esto es para especificar cuántos carácteres son representados; si elegimos el formato 01,...,09 indicamos ceros a la izquierda, o también 1.1 a 9.9 para representación en punto flotante. t es el tipo de formato y puede ser uno de los siguientes: SET_UART_SPEED(baud) Esta función cambia la velocidad de transmisión de la UART (Universal Asynchronous Receiver Transmitter) en tiempo de ejecución. SETUP_ADC(mode) Esta función configura (permite establecer los parámetros) del conversor analógico/digital. Los modos son los siguientes: ADC_OFF ADC_CLOCK_DIV_2 ADC_CLOCK_DIV_8 ADC_CLOCK_DIV_32 ADC_CLOCK_INTERNAL Funciones de I/O discreta INPUT(pin) Devuelve el estado '0' o '1' de la patilla indicada en pin. El método de acceso de I/O depende de la última directiva #USE *_IO utilizada. El valor de retorno es un entero corto. OUTPUT_BIT(pin, value) Esta función saca el bit dado en value(0 o 1) por la patilla de I/O especificada en pin. El modo de establecer la dirección del registro, está determinada por la última directiva #USE *_IO
74 OUTPUT_HIGH(pin) Pone a 'uno' el pin indicado. El método de acceso de I/O depende de la última directiva #USE *_IO utilizada. OUTPUT_LOW(pin) Pone a 'cero' el pin indicado. El método de acceso de I/O depende de la última directiva #USE *_IO. SET_TRIS_A(value) SET_TRIS_B(value) SET_TRIS_C(value) SET_TRIS_D(value) SET_TRIS_E(value) Estas funciones permiten escribir directamente los registros tri-estado para la configuración de los puertos. Esto debe usarse con FAST_IO() y cuando se accede a los puertos de I/O como si fueran memoria, igual que cuando se utiliza una directiva #BYTE. Cada bit de value representa una patilla. Un '1' indica que la patilla es de entrada y un '0' que es de salida. Funciones de retardos DELAY_CYCLES(count) Esta función realiza retardos según el número de ciclos de instrucción especificado en count; los valores posibles van desde 1 a 255. Un ciclo de instrucción es igual a cuatro periodos de reloj. DELAY_MS(time) Esta función realiza retardos del valor especificado en time. Dicho valor de tiempo es en milisegundos y el rango es Es preciso utilizar la directiva #use delay(clock=frecuencia) antes de la llamada a esta función, para que el compilador sepa la frecuencia de reloj. DELAY_US(time) Esta función realiza retardos del valor especificado en time. Dicho valor es en microsegundos y el rango va desde 0 a Es necesario utilizar la directiva #use delay antes de la llamada a esta función para que el compilador sepa la frecuencia de reloj. Funciones de control del procesador DISABLE_INTERRUPTS(level)
75 Esta función desactiva la interrupción del nivel dado en level. El nivel GLOBAL prohíbe todas las interrupciones, aunque estén habilitadas o permitidas. Los niveles de interrupción son: ENABLE_INTERRUPTS(level) Esta función activa la interrupción del nivel dado en level. Queda a cargo del técnico definir un procedimiento o rutina de atención, para el caso que se produzca la interrupción indicada. El nivel GLOBAL permite todas las interrupciones que estén habilitadas de forma individual. SLEEP() Esta función pone al micro en un estado de REPOSO. Contadores/Temporizadores GET_RTCC() GET_TIMER0() GET_TIMER1() i=get_timer2() Estas funciones devuelven el valor de la cuenta de un contador en tiempo real. RTCC y Timer0 son el mismo. Timer1 es de 16 bits y los otros son de 8 bits. RESTART_WDT() Esta función reiniciará el timer del watchdog. Si habilitamos el timer del watchdog, debe llamarse periódicamente a RESTART_WDT() para prevenir el reseteo del procesador. SET_RTCC(value) SET_TIMER0(value) SET_TIMER1(value) SET_TIMER2(value) Estas funciones activan el timer o temporizador al valor especificado. RTCC y Timer0 son el mismo. Timer1 es de 16 bits y los otros son de 8 bits. SETUP_TIMER_1(mode)
76 Esta función inicializa el timer1. Los valores de mode deben ordenarse juntos, tal como se muestra en el ejemplo. El valor del timer puede leerse y puede escribirse utilizando GET_TIMER1() y SET_TIMER1(). Los valores de mode son: SETUP_TIMER_2(mode, period, postscale) Esta función inicializa el timer2; mode especifica el divisor del reloj del oscilador. Period es un número comprendido entre 0-255, y determina el momento en el que el valor del reloj se resetea a 0. postscale es un número de 0 a 15, que determina cuántos reset del timer se han producido antes de una interrupción. 0 significa 1 reset, 1 significa 2 reset, y así sucesivamente. El valor del timer puede leerse y puede escribirse utilizando GET_TIMER2() y SET_TIMER2(). Los valores de mode son: - T2_DISABLED - T2_DIV_BY_1 - T2_DIV_BY_4 - T2_DIV_BY_16 Funciones de entrada A/D SETUP_ADC_PORTS(value) Esta función configura los pines del ADC para que sean analógicos, digitales o alguna combinación de ambos. SETUP_ADC(mode) Esta función prepara o configura el conversor A/D. Los modos de funcionamiento son: - ADC_OFF - ADC_CLOCK_DIV_2 - ADC_CLOCK_DIV_8 - ADC_CLOCK_DIV_32 - ADC_CLOCK_INTERNAL SET_ADC_CHANNEL(canal) Especifica el canal a utilizar por la función READ_ADC(). El número de canal empieza en 0. Es preciso esperar un corto espacio de tiempo después de cambiar el canal de adquisición, antes de que se puedan obtener lecturas de datos válidos
77 i=read_adc() Esta función lee el valor digital del conversor analógico digital. Deben hacerse llamadas a SETUP_ADC() y SET_ADC_CHANNEL() en algún momento antes de la llamada a esta función. Funciones CCP SETUP_CCP1(mode) SETUP_CCP2(mode) Estas funciones inicializa el contador CCP. Para acceder a los contadores CCP se utilizan las variables CCP_1 y CCP_2. Los valores para mode son: CCP_OFF CCP_CAPTURE_FE CCP_CAPTURE_RE CCP_CAPTURE_DIV_4 CCP_CAPTURE_DIV_16 CCP_COMPARE_SET_ON_MATCH CCP_COMPARE_CLR_ON_MATCH CCP_COMPARE_INT CCP_COMPARE_RESET_TIMER CCP_PWM CCP_PWM_PLUS_1 (sólo si se utiliza un ciclo de trabajo de 8 bits) CCP_PWM_PLUS_2 (sólo si se utiliza un ciclo de trabajo de 8 bits) CCP_PWM_PLUS_3 (sólo si se utiliza un ciclo de trabajo de 8 bits) SET_PWM1_DUTY(value) SET_PWM2_DUTY(value) Estas funciones escriben los 10 bits de value al dispositivo PWM para establecer el ciclo de trabajo. Se puede usar un valor de 8 bits si no son necesarios los bits menos significativos. Funciones para el manejo de la Eeprom interna READ_EEPROM(address) Esta función lee un byte en la dirección (address) de Eeprom especificada. La dirección puede ser WRITE_EEPROM(address, value) Esta función escribe un byte de datos en la dirección de memoria Eeprom especificada. Value es el byte de datos a escribir
78 Definición de datos Si TYPEDEF se pone delante de la definición de un dato, entonces no se asigna espacio de memoria al identificador a menos que sea utilizado como un especificador de tipo en otras definiciones de datos. Si delante del identificador ponemos CONST entonces, el identificador es tratado como constante. Las constantes deben ser inicializadas y no pueden cambiar en tiempo de ejecución. typedef [calificador_tipo] [especificador_tipo] [identificador] Especificadores de tipo: unsigned unsigned int int char long long int signed signed int signed long float short short int define un número de 8 bits sin signo define un número de 8 bits sin signo define un número de 8 bits sin signo define un número de 8 bits sin signo define un número de 16 bits sin signo define un número de 16 bits sin signo define un número de 8 bits con signo define un número de 8 bits con signo define un número de 16 bits con signo define un número de 32 bits en punto flotante define un bit define un bit Definición de una función El formato de la definición de una función es como sigue: [calificador_tipo] identificador ([[especificador_tipo identificador]) { [cuerpo de la función] } El calificador_tipo para una función pueden ser void o un especificador de tipo (véase la lista de la página anterior) La definición de una función puede ir precedida por una de las siguientes directivas del preprocesador (calificadores de función) para identificar una característica especial de la función: #separate #inline #int_... Cuando utilizamos una de las directivas mencionadas y la función tiene un prototipo (declaración anterior a la definición de la función, y colocada al principio del fichero fuente) hay que incluir la misma #directiva en el prototipo y en la definición de la función. Una función que tiene un parámetro de tipo char aceptará una constante de cadena. El compilador generará un bucle que llama a la función una vez para cada carácter de la cadena
79 ANEXO 2 IDEAS Y MEJORAS PARA EL MINI-ROBOT El siguiente sensor puede ser utilizado en lugar del sensor mecánico bumper que usamos en nuestro mini-robot para evitar los choques. Sensor Reflexivo GP2Dxx Descripción: El sensor GP2DXX (Fig. 1) de SHARP es un dispositivo de reflexión por infrarrojos con medidor de distancia proporcional al ángulo de recepción del haz de luz que incide en un sensor lineal integrado, dependiendo del modelo utilizado, la salida puede ser analógica ó digital (Tabla 1). Fig. 1 Funcionamiento: El dispositivo emite luz infrarroja por medio de un led emisor de IR, esta luz pasa a través de una lente que concentra los rayos de luz formando un único rayo lo mas concentrado posible para así mejorar la dirección del sensor, la luz viaja recta hacia delante y cuando encuentra un obstáculo reflejante rebota y retorna con cierto ángulo de inclinación dependiendo de la distancia, la luz que retorna es concentrada por otra lente y así todos los rayos de luz inciden en un único punto del sensor de luz infrarroja que contiene en la parte receptora del dispositivo (Fig. 2). Este sensor es un CCD lineal y dependiendo del ángulo de recepción de la luz incidirá esta en un punto u otro del sensor pudiendo de esta manera obtener un valor lineal y proporcional al ángulo de recepción del haz de luz. Dependiendo del modelo elegido leeremos de una manera u otra la salida de este con lo cuál tendremos que remitirnos al datasheet del modelo elegido para ver su funcionamiento interno. En los modelos analógicos la salida es un voltaje proporcional a la distancia medida. En los modelos digitales la lectura será de 8 bits serie con reloj externo. En los modelos Booleanos la salida será de 1 bit y este marcara el paso por la zona de histéresis del sensor con lo cual solo tendremos una medición de una distancia fija. Fig
80 Modelos Rango de medida Tipo de salida GP2D a 80 cm. Digital 8 bits GP2D a 80 cm.(adj, micro pot.) Lógica 1 bit GP2D a 80 cm Analógica (0-3V) GP2D-15 adj. a 24cm de fabrica Lógica 1 bit GP2D a 30 cm. Analógica (0-3V) Tabla 1 Usos: Debido a su gran rango de medida este sensor es adecuado para detectar obstáculos reflectantes como paredes, usados en robots de exploradores para los de laberintos entre otros. Ideas y mejoras: Debido a su gran dirección se puede montar un sensor GPD2 en un servo y así tener un radar de IR cubriendo de esta manera un radio de 180º aprox. Descripción de uso del GP2D02: Este sensor proporciona una salida en serie digital con un valor de un byte proporcional al ángulo de recepción del haz de luz, este valor no es lineal a la distancia medida así que hay que usar un cálculo para saber la medida de distancia en centímetros. En el ejemplo mostrado mas abajo se usa otro método, que es simplemente una tabla de conversión de valores conocidos. En la figura 3 vemos la disposición de pines en el conector de salida del GP2D02: 1.-GND 2.-Vin 3.-Vcc 4.-Vout El dispositivo se alimenta poniendo a +5V el pin VCC y GND a 0V (masa). El pin Vout es la salida de datos en serie con lógica positiva y niveles TTL. Fig. 3 Vin es la entrada con la que comandaremos el funcionamiento del sensor, hay que tener muy en cuenta una característica de este pin y es que la salida es a drenador abierto y esta prohibido poner esta entrada a una salida TTL o CMOS ya que esto provocaría la destrucción de la entrada, solo acepta niveles bajos y por lo tanto para acoplarla a la salida de un microcontrolador es necesario poner un diodo (p.ej.: 1N4148) tal como se muestra a continuación en la figura 4: Fig
81 Una vez que se tenga conectado el sensor, nos queda mandarle hacer una captura y leer el resultado, para conseguir esto hay que seguir unos sencillos pasos: 1. La entrada Vin en reposo a de ser nivel lógico alto con lo que el diodo bloqueara este estado y solo cuando se ponga un nivel lógico bajo será cuando el sensor reciba la orden, sabido esto, indicamos al sensor que inicie una captura poniendo a nivel lógico bajo el pin Vin y mantendremos el estado bajo un tiempo de 70mS, transcurridos los cuales volveremos a poner Vin a nivel lógico alto. Ahora el sensor ya tiene el dato listo para ser transmitido y como el bus de salida es serie tenemos que sincronizar para saber cuando salen los bits, el sensor lo consigue poniendo cada bit en Vout por cada flanco de bajada de la señal Vin. 2. Espera de 0,2mS o menos para iniciar el primer flanco de bajada. 3. Poner Vin a nivel lógico bajo con lo cual iniciamos el primer flanco de bajada de la señal y el sensor nos responde poniendo el bit de mayor peso "MSB" en Vout. 4. Leer el bit de Vout y almacenarlo debidamente para completar el byte correspondiente al dato de salida. 5. Poner Vin a nivel lógico alto. 6. Repetir 7 veces más, los pasos de 3 a 5 teniendo en cuenta que hay que tardar un mínimo de 1mS para leer los 8 bits con lo que si lo hacemos muy rápido el sensor no responderá debidamente. 7. Una vez leídos los 8 bits tenemos que esperar un mínimo de 1,5mS o más para poder ordenar al sensor otra captura de distancia. Se puede acelerar la medida comprobando cuando pasa a nivel alto la señal Vout, mientras se mantiene a nivel bajo Vin, en los 70mS de inicio de medición aunque es mejor esperar los 70mS
82 Para mejorar el desempeño del mini-robot, en la parte inferior se dejo el espacio necesario para que sea colocado un paquete de pilas recargables el cual proporcionara de mejor forma, la corriente necesaria para todos los circuitos y motores, (Figura 5). Fig. 5 Previendo que el consumo de corriente sea demasiado, se decidió colocar dos jumpers en la placa de control (Figura 6), los cuales controlan la alimentación de los 2 servomotores usados; al desconectarlos se puede realizar la conexión de otra fuente de alimentación exclusiva para los servos, logrando con esto mejorar el desempeño del mini-robot. Fig. 6 Por ultimo, como mencionamos en la introducción, la principal línea de continuación en proyectos futuros es la preparación de software específico de comunicación vía puerto USB. A partir de este software se podrá finalizar el desarrollo de más circuitos que utilicen la comunicación vía puerto USB. Se podría implementar en el mini-robot la interfaz USB y conectarle cualquier dispositivo que utilice este puerto, como por ejemplo, las nuevas tarjetas bluetooh para comunicación inalámbrica, al contar con uno o más mini-robots, estos se podrían comunicar con la PC por este medio
83 BIBLIOGRAFÍA Y REFERENCIAS. Libros: - MICROCONTROLADORES PIC, LA CLAVE DEL DISEÑO. Martín Cuenca, Angulo Usategui y Angulo Martínez. Ed Thomson, MICROCONTROLADORES PIC, DISEÑO PRÁCTICO DE APLICACIONES. Angulo Usategui y Angulo Martínez. Ed Mc Graw Hill, Datasheet: - PIC18F2550: 28/40-Pin 8-Bit CMOS FLASH Microcontrollers Páginas Web: - página de la empresa Microchip
84
Capítulo 2. Microcontroladores: Características y aplicaciones generales
1. Definición Capítulo 2. Microcontroladores: Características y aplicaciones generales Recibe el nombre de controlador el dispositivo que se emplea para el gobierno de uno o varios procesos. Por ejemplo,
Microcontroladores ( C)
Microcontroladores ( C) Bibliografia: Hoja de datos del PIC 16F84 y 16F628 (www.microchip.com) Microcontroladores PIC: la clave del diseño (biblioteca) Microcontroladores PIC: diseño práctico de aplicaciones
MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI
MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI DEFINICIÓN Es un microcontrolador de Microchip Technology fabricado en tecnología CMOS, completamente estático es decir si el reloj se detiene los datos
MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627)
MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627) TEMARIO Objetivo: El estudiante comprenderá la evolución de los microcontroladores y microprocesadores así como sus diferencias, desarrollara su habilidad
Elección de un microcontrolador
Elección de un microcontrolador Decisión multivariable. No hay un óptimo evidente Factores: Herramientas de desarrollo Base de conocimientos Precio y disponibilidad Familia versátil y en desarrollo Cantidad
MICROCONTROLADOR PIC DE MICROCHIP
MICROCONTROLADOR PIC DE MICROCHIP PIC16F877-28-PIN 8-BIT CMOS FLASH MICROCONTROLLER PIC16F877: ESTRUCTURA INTERNA Bus de Datos Bus de Datos (programa) Registro de trabajo (acumulador) Conversor A/D Contador/Temporizador
Sistemas con Microprocesadores I
Sistemas con Microprocesadores I 1 Microcontroladores Introducción Harvard vs. von-neumann Clasificación del procesador Segmentado o Pipeline Ortogonal vs. No ortogonal 2 Microcontroladores PIC Siglas
AUTOMATIZACION. Reconocer la arquitectura y características de un PLC Diferenciar los tipos de entradas y salidas MARCO TEORICO. Estructura Interna
AUTOMATIZACION GUIA DE TRABAJO 3 DOCENTE: VICTOR HUGO BERNAL UNIDAD No. 3 OBJETIVO GENERAL Realizar una introducción a los controladores lógicos programables OBJETIVOS ESPECIFICOS: Reconocer la arquitectura
Qué es un Microcontrolador?
Qué es un Microcontrolador? Es un circuito integrado programable que contiene todos los componentes de un computadora, aunque de limitadas prestaciones y se destina a gobernar una sola tarea. Cómo se compone
Capítulo 3. Microcontroladores 3.1 Definiciones
Capítulo 3. Microcontroladores En este capítulo se define el microcontrolador, con una breve semblanza histórica sobre procesadores. Se habla más detenidamente sobre los PICs y se muestran características
Qué es un Microcontrolador?
Qué es un Microcontrolador? Es un circuito integrado programable que contiene todos los componentes de un computadora, aunque de limitadas prestaciones y se destina a gobernar una sola tarea. Cómo se compone
Arquitectura de Computadores II
Facultad de Ingeniería Universidad de la República Instituto de Computación Temas Repaso de conceptos Microcontroladores CISC vs RISC CISC Complex Instruct Set Computers RISC Reduced Instruct Set Computers
PANORAMA GENERAL DE LOS µc
PANORAMA GENERAL DE LOS µc Sistemas Digitales II Este tipo de dispositivos en la actualidad se encuentran en los supermercados, artículos electrodomésticos, instrumentos musicales, juguetes, equipo automotriz
Microcontroladores PIC
Microcontroladores PIC Departamento de Electrónica Fundación San Valero Ventajas Existen varias razones por las cuales conviene utilizar PIC: Por la cantidad de información disponible sobre estos microcontroladores,
Capítulo 1. Introducción a los PIC de 8 bits
Capítulo 1. Introducción a los PIC de 8 bits 1.1 Memorias y Registros Entre los componentes básicos de un microcontrolador podemos definir el contador, sus registros, la memoria, el watchdog timer, el
Microcontroladores PIC
Microcontroladores PIC Procesador RISC. Arquitectura Harvard Pipeline Formato de instrucciones ortogonal Arquitectura basada en banco de registros Distintos periféricos: temporizadores, puertos paralelo/serie,
Microcontrolador PIC16F84: Arquitectura
Microcontrolador PIC16F84: Arquitectura La arquitectura del PIC es tipo Harvard: Mem. de Programa (instrucciones) (tipo FLASH) Control DIR DATOS µp (tipo RISC, pipeline de 2 etapas) Control DIR DATOS 14
Características PIC16F84
Departamento de Electrónica Fundación San Valero del Toda la información que grabamos (memoria de programa y de datos) se puede modificar con el microcontrolador conectado a la aplicación. (ICSP = In-Circuit
UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTÁ FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA
UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTÁ FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA INTRODUCCIÓN AL PIC NOMENCLATURA ARQUITECTURA. TEMPORIZACIÓN. SET DE INSTRUCCIONES. MODOS DE DIRECCIONAMIENTO.
xl PIC16F877
4.6.8.- PIC16F877 xl 4.6.9.- PIC 16F84 xli xlii 4.7.- ANEXO3 4.7.1.- El Microcontrolador PIC16F84: Este microcontrolador es un Circuito Integrado Programable o PIC por sus siglas en Inglés: (Programmable
Arquitectura y Periféricos
Arquitectura y Periféricos Departamento de Electrónica Fundación San Valero Características fundamentales: Arquitectura RISC avanzada Harvard: 16- bit con 8- bit de datos. 77 instrucciones Desde 18 a 80
Memoria y Entrada/Salida Tecnología Organización - Expansión
Universidad Simón Bolívar Departamento de Electrónica y Circuitos EC2721 Arquitectura del Computador I Prof. Osberth De Castro Clase 05 Memoria y Entrada/Salida Tecnología Organización - Expansión La memoria
PIC 18F45XX CARACTERÍSTICAS GENERALES
PIC 18F45XX CARACTERÍSTICAS GENERALES 1. Características generales CPU con arquitectura Harvard (77 instrucciones) Todas las instrucciones constan de 1 sola palabra de 16 bits (2 bytes) excepto las de
Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación
Taller de Firmware Introducción al PIC16F877 Facultad de Ingeniería Instituto de Com putación Contenido Introducción a los microcontroladores PIC. Presentación del PIC 16F877. Introducción a los microcontroladores
UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA. Ingeniería en Electrónica EL MICROCONTROLADOR PIC16F84 PRESENTA: M. C. Felipe Santiago Espinosa
UNIVERSIDAD TECNOLÓGICA DE LA MIXTECA Ingeniería en Electrónica EL MICROCONTROLADOR PIC16F84 PRESENTA: M. C. Felipe Santiago Espinosa Noviembre de 2007 Objetivos 2 Que los participantes adquieran el conocimiento
INDICE Capitulo 1. Microcontroladores Programables: La Solución está en un CHIP Capitulo 2. Microcontroladores de 8 BITS: Los <<PIC>>
INDICE Prólogo XIII Capitulo 1. Microcontroladores Programables: La Solución está en un CHIP 1 1.1. Qué es un microcontrolador? 1 1.1.1. Diferencia entre microprocesador y microcontrolador 3 1.4. Arquitectura
ÍNDICE INTRODUCCIÓN...17
ÍNDICE INTRODUCCIÓN...17 CAPÍTULO 1. MICROCONTROLADORES...19 1.1 MICROCONTROLADOR...19 1.1.1 Controlador y microcontrolador...19 1.1.2 Diferencia entre microprocesador y microcontrolador...21 1.1.3 Aplicaciones
RECURSOS FUNDAMENTALES
RECURSOS FUNDAMENTALES Los recursos que se considerarán son : Temporizadores Puertos de E/S La Palabra de Configuración EEPROM de datos 1 TEMPORIZADORES Una labor habitual en los programas de control suele
UNIDAD 2. Unidad de Microprocesador (MPU) Microprocesadores Otoño 2011
1 UNIDAD 2 Unidad de Microprocesador (MPU) Microprocesadores Otoño 2011 Contenido 2 Unidad de Microprocesador Generalizada Memoria Dispositivos de Entrada y Salida Sistemas basados en Microprocesadores
LOS PIC16F87X. Características Generales. IES Juan de la Cierva (Madrid). Desarrollo de Productos Electrónicos
LOS PIC6F87X Características Generales D. de B L O Q U E S Los Pic6F87X Fernando Remiro D. de B L O Q U E S Características () Procesador de arquitectura RISC avanzada Juego de solo 35 instrucciones con
Sistema de Desarrollo para el Microcontrolador PIC18F452
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN Sistema de Desarrollo para el Microcontrolador PIC18F452 Alumno: Andrés Valverde Villarán Tutora: Carmen Aracil Fernández Sevilla,
INTRODUCCIÓN A LOS MICROPROCESADORES Y MICROCONTROLADORES
INTRODUCCIÓN A LOS MICROPROCESADORES Y MICROCONTROLADORES TEC Digital ÍNDICE Parte I Microprocesadores Parte II Memorias Parte III Periféricos Parte IV Integración de periféricos, memorias y microprocesadores
ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES
ÍNDICE CAPÍTULO 1 FUNDAMENTOS DE LOS MICROCONTROLADORES 1.1 Introducción 1.2 Fundamentos de los procesadores digitales secuenciales 1.2.1 Introducción 1.2.2 Arquitectura interna 1.2.2.1 Procesadores digitales
PIC16C5X (GAMA BAJA) Solo en dispositivos de 28 pins. Encapsulado y patillaje:
PIC6C5X (GAMA BAJA) Oscilador RESET SLEEP WatchDog Timer (WDT) Protección de código e IDs Periféricos: Timer/Contador de 8bits (T) con prescaler compartido para WDT o TMR Hasta 3 puertos I/O (RA,RB,RC)
ARQUITECTURA DEL PIC16F84A
ARQUITECTURA DEL PIC16F84A Arquitectura interna del PIC16F84A CPU ALU Decodificador de Instrucciones - Buses Registro de trabajo W PC Contador de Programa Organización de la memoria Memoria de Programa
Universidad Nacional de Ingeniería Arquitectura de Maquinas I. Unidad III: Introduccion a los Microcontroladores PIC MICROCHIP
Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad III: Introduccion a los Microcontroladores PIC MICROCHIP Qué es un Microcontrolador? Es un circuito integrado que incluye en su interior
MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits
1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits MICROCONTROLADORES 2. La memoria de programa del PIC 16F84A es de tipo: a) ROM b) OTP c) RAM d) EPROM e)
MICROCONTROLADORES: FUNDAMENTOS Y APLICACIONES CON PIC. Autores: Fernando E. Valdés Pérez Ramon Pallàs Areny. Título de la obra:
Título de la obra: MICROCONTROLADORES: FUNDAMENTOS Y APLICACIONES CON PIC Autores: Fernando E. Valdés Pérez Ramon Pallàs Areny Composición y preimpresión: Carles Parcerisas Civit (3Q Editorial) Reservados
2.2-1 Visión Interna PIC16F873/876. SBM
2.2-1 Visión Interna PIC16F873/876. 1 2.2-2 Visión Interna PIC16F874/877. 2 2.2-3 Sistema de memoria. Tienen arquitectura Harvard, separa la memoria de datos y la memoria de programa, y se accede a ellas
Registros SFR vistos hasta ahora: Microcontroladores PIC
Registros SFR vistos hasta ahora: Microcontroladores PIC Microcontroladores PIC: Timer Características del Timer TMR0: Cumple básicamente la función de contador de eventos (o divisor de frecuencia). El
Introducción. Modo monitor. Cuaderno técnico 4: Grabación de microcontroladores PIC
Cuaderno técnico 4: Grabación de microcontroladores PIC [Introducción] [Modo monitor] [Arquitectura] [Autores] [Licencia] [Download] [Links] [Noticias] Introducción Los microcontroladores PIC se graban
Anexo II: Lógica programada y lógica cableada. Ventajas e inconvenientes. MSP430G2553.
Anexo II: Lógica programada y lógica cableada. Ventajas e inconvenientes. MSP430G2553. 1. Introducción Como se observa a lo largo de este proyecto, en casi todas las tarjetas esclavo recurrimos a usar
Tema: Microprocesadores
Universidad Nacional de Ingeniería Arquitectura de Maquinas I Unidad I: Introducción a los Microprocesadores y Microcontroladores. Tema: Microprocesadores Arq. de Computadora I Ing. Carlos Ortega H. 1
Tema 2 INTRODUCCION A LOS MICROCONTROLADORES
Tema 2 INTRODUCCION A LOS MICROCONTROLADORES 1 2.1 Introducción 2.2 Características 2.3 Los microcontroladores más utilizados 2.4 Lenguajes de programación 2.5 Herramientas de desarrollo 2 2.1. Introducción
ESTRUCTURA BÁSICA DEL µc AT89C51
Desde mediados de la década de los 80 s gran parte de los diseños basados en la automatización (electrodomésticos, sencillas aplicaciones Industriales, instrumentación medica, control numérico, etc.) utilizaban
ARQUITECTURA DE VON NEUMANN Y HARVARD
ARQUITECTURA DE VON NEUMANN Y HARVARD ARQUITECTURA VON NEUMANN En esta arquitectura se observa que las computadoras utilizan el mismo dispositivo de almacenamiento para datos e instrucciones conectados
TEMA 2: MICROPROCESADORES Y MICROCONTROLADORES
12/31/2011 1 TEMA 2: MICROPROCESADORES Y MICROCONTROLADORES Sistemas Digitales basados en Microprocesador Grado en Ingeniería Telemática Raúl Sánchez Reíllo Sistemas Digitales Basados en Microprocesador
Medidas de Distancia mediante Rayos Infrarrojos
Medidas de Distancia mediante Rayos Infrarrojos Con un nuevo módulo sensor de proximidad. La casa Sharp ha fabricado un nuevo sensor, en la forma del módulo GP2D02 que, con la ayuda de un microcontrolador,
Sensores inalámbricos de bajo
Sensores inalámbricos de bajo consumo. Parte 1. El sistema de telemetría con microcontroladores PIC Autor: Marc Ralita Álvarez Director proyecto: Francesc Sánchez Robert Sensores inalámbricos de bajo consumo
Informática Industrial Parte I
Facilitadores MsC. Jesús Pérez A. Dr. Eladio Dapena Gonzalez Contenido Microprocesadores Arquitecturas PIC 2 Dr. Eladio Dapena G / MsC. Jesus Perez.A. 1 3 Dentro del campo de la producción industrial,
PIC16F88. Características
Osciladores PIC16F88. Características Osciladores a cristal: LP, XT y HS hasta 20Mhz Oscilador externo hasta 20Mhz Oscilador interno: 31Khz 8Mhz Periféricos Módulo PWM/CCP CCP (captura/comparación) ->
Introducción a la arquitectura PIC
18 de septiembre de 2012 Contenido 1 Microprocesadores y Microcontroladores 2 3 4 Microprocesadores y Microcontroladores Microcomputadora consiste básicamente de: Unidad central de procesamiento (CPU),
5. Microcontroladores de 32 bits. (C) 2007 Ibercomp S. A.
0LFURFRQWURODGRUHVGHELWV Cada vez existen más equipos que incorporan un microcontrolador en su sistema con el fin de aumentar de manera importante sus prestaciones, reducir su tamaño y coste, mejorar su
Bibliografía básica de referencia: Fundamentos de Informática para Ingeniería Industrial, Fernando Díaz del Río et al.
1 Informática E.P.S. Universidad de Sevilla TEMA 2: Estructura de Computadores 2 BIBLIOGRAFIA Bibliografía básica de referencia: Fundamentos de Informática para Ingeniería Industrial, Fernando Díaz del
CURSO MICROCONTROLADORES PIC
CURSO MICROCONTROLADORES PIC INTRODUCCIÓN Desde la invención del circuito integrado, el desarrollo constante de la electrónica digital ha dado lugar a dispositivos cada vez más complejos. Entre ellos los
INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata
Muestreo de señales analógicas Principal requerimiento que surge al muestrear una señal continua: Definir el periodo de muestreo con suficiente exactitud. Ajustar el mismo a un valor adecuado de acuerdo
Guia para examen de Sistemas Embebidos I Para primer parcial Febrero 2013 Revisión 2 Ing. Julio Cesar Gonzalez Cervantes
Qué significa ALU? Arithmetic Logic Unit Guia para examen de Sistemas Embebidos I Para primer parcial Febrero 2013 Revisión 2 Ing. Julio Cesar Gonzalez Cervantes que operaciones realiza un ALU? suma, resta,
PRODUCTO P05 SOFTWARE EMBEBIDO PARA EL CONTROL DEL CIRCUITO GENERADOR DE CORRIENTE DE LAS FORMAS DE ONDAS PARA ELECTROTERAPIA
PRODUCTO P05 SOFTWARE EMBEBIDO PARA EL CONTROL DEL CIRCUITO GENERADOR DE CORRIENTE DE LAS FORMAS DE ONDAS PARA ELECTROTERAPIA Actividades: A05-1: Elaboración del diagrama de flujo de las funciones de control
Contenidos. Arquitectura de ordenadores (fundamentos teóricos) Elementos de un ordenador. Periféricos
Arquitectura de ordenadores (fundamentos teóricos) Representación de la información Estructura de un microprocesador Memorias Sistemas de E/S Elementos de un ordenador Microprocesador Placa base Chipset
Contenido MICROCONTROLADORES PIC16F877A Y PIC16F887 / SALVATIERRA. Alfaomega. 3.4 Soporte Muestras... 25
Contenido Introducción 1 Parte 1 Conceptos básicos 3 1.0 Componentes de un MCU... 3 1.1 Partes básicas... 3 1.1.1 ALU (Unidad lógica aritmética). 4 1.1.2 I/O (INPUT/OUTPUT)... 4 1.1.3 Memoria (RAM, ROM...
Tema 4. Organización de la memoria
Tema 4 Organización de la memoria 1 ARQUITECTURA DEL PIC16F84 Tema 4. Organización de la memoria Memoria de programa tipo ROM Flash de 1024 registros de 14 bits Memoria de datos dividida en dos áreas:
Señales de interfase del Z80
Señales de interfase del Z80 El microprocesador Z80 está integrado en una pastilla de 40 pines. Estos terminales pueden agruparse funcionalmente como muestra la figura: Bus de direcciones El bus de direcciones
Lógica cableada: Lógica programada:
1-1 Lógica cableada: Circuitos vistos en Diseño Lógico (Combinatoria, Modo reloj, RTL, ) Función fija determinada en el momento del diseño por las conexiones físicas entre los componentes del circuito
Memorias. Docente: Ing. Víctor Cárdenas Schweiger
Memorias Docente: Ing. Víctor Cárdenas Schweiger 2016 1 Qué es una memoria RAM? Es la memoria donde se almacenan los datos (programas) con los que se están trabajando en ese momento. Es un dispositivo
Practica 1 (3.5 %) 1. Realice el diseño y montaje de un R_S discreto activo en bajo.
TITULO : Biestables, Monoestables y Astables 1.-Objetivos: Practica 1 (3.5 %) Estudiar y analizar el comportamiento de los biestables asíncronos y sincronos. Realizar montajes con diferentes tipo de Monoestables.:
T E S I N A D E S E M I N A R I O D E G R A D U AC I O N : I N T E G R A N T E S :
T E S I N A D E S E M I N A R I O D E G R A D U AC I O N : I N T E G R A N T E S : ANTECEDENDES INTERFAZ: Q u é e s? : Es la conexión entre dos ordenadores o máquinas de cualquier tipo dando una comunicación
tarea determinada y, debido a su reducido tamaño, suele ir incorporado en el propio dispositivo al que gobierna.
* * Es un circuito integrado programable que contiene todos los componentes de un computadora * Se emplea para controlar el funcionamiento de una tarea determinada y, debido a su reducido tamaño, suele
Velocidades Típicas de transferencia en Dispositivos I/O
Entradas Salidas Velocidades Típicas de transferencia en Dispositivos I/O Entradas/Salidas: Problemas Amplia variedad de periféricos Entrega de diferentes cantidades de datos Diferentes velocidades Variedad
Arquitectura de Computadoras
Arquitectura de Computadoras Dr. Andrés David García García Escuela de Diseño, Ingeniería y Arquitectura Departamento de Mecatrónica 1 Microprocesadores y Periféricos Objetivos: Analizar la arquitectura
Introducción al PLC Simatic Siemens S7-200.
Francisco J. Jiménez Montero. Málaga, Febrero de 2007. Revisado: Noviembre de 2010. Ciclo Formativo de Grado Medio de Instalaciones Eléctricas y Automáticas. Introducción al PLC Simatic Siemens S7-200.
Electrónica Digital II
Electrónica Digital II TIPOS DE MEMORIAS MEMORIA DDR MEMORIA DDR2 MEMORIA DDR3 COMPARACIÓN TIEMPOS DE ACCESO TIPOS DE LATENCIAS RAS CAS ACTIVIDAD PRECARGA TIPOS DE CONFIGURACIONES SINGLE CHANNEL DUAL CHANNEL
MICROCONTROLADORES : COMPILADOR MPLAB 16FXX, UNA INTRODUCCION. ING. YESID EUGENIO SANTAFE RAMON DOCENTE PROGRAMA DE INGENIERIA ELECTRONICA
MICROCONTROLADORES : COMPILADOR MPLAB 16FXX, UNA INTRODUCCION. ING. YESID EUGENIO SANTAFE RAMON DOCENTE PROGRAMA DE INGENIERIA ELECTRONICA [] Tendencias Video Walls & Virtual-Real Meetings In the Office
TARJETA DE ENTRADAS Y CONTADORES RÁPIDOS (MTC-3052)
Pag:1 Descripción Tarjeta de entradas y contadores rápidos diseñada para controles complejos en tiempo real. A través de software sencillo permite su configuración al usuario. Cuenta con diversidad de
Introducción a las Computadoras. Capítulo 3 Buses del Sistema
Introducción a las Computadoras Capítulo 3 Buses del Sistema Concepto de Programa Los sistemas de propósito específico no son flexibles El Hardware de propósito general puede realizar diferentes tareas,
UNIVERSIDAD TECNICA DE AMBATO NOVENO SEMESTRE INGENIERIA ROBOTICA MICROCONTROLADORES Y SU APLICACION EN ROBOTICA PROFESOR: UTA 2009 ING. G.
MICROCONTROLADORES Y SU APLICACION EN UTA 2009 PROFESOR: ING. G. ALMEIDA SEMESTRE MARZO - JULIO 2009 OBJETIVOS DISTINGUIR LOS ASPECTOS GENERALES, CARACTERISTICAS Y FUNCIONAMIENTO DE UN MICROCONTROLADOR.
Tema 7. Entrada / Salida
Tema 7 Entrada / Salida Problemática Entrada/Salida Elementos claves en un computador: Procesador, memoria y módulos de E/S Cada módulo de E/S se conecta al bus del sistema y controla a uno o a más periféricos
El Microprocesador. Tecnología y Funcionamiento
El Microprocesador Tecnología y Funcionamiento EL MICROPROCESADOR (I) El microprocesador aparece como un circuito integrado con una muy elevada escala de integración VHSI. El empleo de los microprocesadores
INTERIOR DEL PROCESADOR
1 INTERIOR DEL PROCESADOR En esta sección se pretende: Conocer la arquitectura y funcionamiento de los microcontroladores de la familia PIC16X8X La organización de su memoria, y Sus registros de funciones
INDICE Programa Entrada Unidad de control Unidad aritmética y lógica (ALU)
INDICE Capitulo 1. Qué es un computador? 1.1. Introducción 1 1.2. El computador como dispositivo electrónico 2 1.3. Cómo se procesa la información? 3 1.4.Diagrama de bloques de un computador 1.4.1. Información
INTRODUCCIÓN. Comunicación Serial.
INTRODUCCIÓN La función principal de este tipo de comunicación es la de convertir datos de salida de forma paralela a serial y la de convertir datos de entrada de forma serial a paralela. El acceso al
Estructura de los sistemas de cómputo
Estructura de los sistemas de cómputo Introducción Elementos básicos de un computador Registro del procesador Ejecución de las instrucciones Interrupciones Hardware de protección Introducción Qué es un
4. Tarjeta de control
4. Tarjeta de control 4.1. Características Esta tarjeta permite conectar cualquier microcontrolador del mercado al resto de tarjetas esclavo. Como se detalla en la sección 2 de este documento (Bus de Intercomunicación),
Preguntas claves (y sus respuestas)
1 Preguntas claves (y sus respuestas) Qué es un microprocesador? Es un Circuito Integrado Secuencial Síncrono Qué necesita para funcionar? Qué hace? Para qué? Una tensión continua estable (5V, 3.3V, 2.5V,
Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
AUTOMATIZACIÓN INDUSTRIAL
Departamento de Ingenieria de Sistemas y Automática AUTOMATIZACIÓN INDUSTRIAL 1 AUTOMATIZACION INDUSTRIAL 2 AUTOMATIZACION INDUSTRIAL 3 AUTOMATAS PROGRAMABLES Surgen de la necesidad de controlar automáticamente
Motherboard. Daniel Rúa Madrid
Motherboard Daniel Rúa Madrid Qué es? La Motherboard es la placa principal de circuitos impresos y contiene los buses, que permiten que los datos sean transportados entre los diferentes componentes de
}Transparencias de clase en
Sistemas de memoria Conceptos básicos Jerarquía de memoria Memoria caché }Transparencias de clase en campusvirtual.udc.es Memoria principal Memoria virtual Memoria principal Antiguamente: Matriz de pequeños
La Familia del Microcontrolador 8051
La Familia del Microcontrolador 8051 Generalidades de la familia del 8051 Es uno de los µc s más viejos (Intel MCS-51 en 1981) y probablemente el más popular, ya que ha sido comercializado por un gran
Tutoría 2. Banco de memoria de 8 y 16 bits (8086)
Tutoría 2. Banco de memoria de 8 y 16 bits (8086) RESUMEN Cuando el procesador opera en modo mínimo, éste genera las señales de control para la memoria y los dispositivos de E/S. [1, pág. 292]. Para utilizar
CARRERA DE INGENIERÍA ELECTRÓNICA E INSTRUMENTACIÓN
CARRERA DE INGENIERÍA ELECTRÓNICA E INSTRUMENTACIÓN Autoras: Jessica Maricela Alvarez Murillo Aida Liliana De La Cruz Vaca El presente proyecto busca ayudar a personas con discapacidad visual a percibir
MICROCONTROLADOR PIC DE MICROCHIP
MICROCONTROLADOR PIC DE MICROCHIP Sistema Microprocesador (varios C.I. en una PCB) Microcontrolador (único C.I.) MICROCONTROLADOR PIC DE MICROCHIP PIC16F877-28-PIN 8-BIT CMOS FLASH MICROCONTROLLER Manuel
