Sei sulla pagina 1di 156

UNIVERSIDAD MAYOR FACULTAD DE INGENIERIA

CONTROLADOR DE UNA CAMARA FOTOGRAFICA DIGITAL A TRAVES DE LA UTILIZACION DE MICROCONTROLADOR

Proyecto de Ttulo para Optar al Ttulo de Ingeniero de Ejecucin Electrnica

MARTIN SEBASTIAN SERRANO DUCLOS

SANTIAGO DE CHILE ABRIL - 2010

UNIVERSIDAD MAYOR FACULTAD DE INGENIERIA

CONTROLADOR DE UNA CAMARA FOTOGRAFICA DIGITAL A TRAVES DE LA UTILIZACION DE MICROCONTROLADOR

Proyecto de Ttulo para Optar al Ttulo de Ingeniero de Ejecucin Electrnica

Alumno Profesor Gua

Martn Sebastin Serrano Ducls Herman Garca Rivadeneira

SANTIAGO DE CHILE ABRIL - 2010

AGRADECIMIENTOS

Quiero agradecer a mis amigos por brindarme sus apoyos incondicional todo este tiempo. A mi profesor gua, por la informacin entregada a lo largo de este proyecto. Quiero agradecer en especial a mi amigo Hans Neumann, por haberme brindado su ayuda en el desarrollo del proyecto. A todos ellos, gracias.

DEDICATORIA

Este proyecto va dedicado desde lo ms profundo de mi corazn a mi familia, que durante este largo camino que recorr desde mi iniciacin en esta universidad hasta el da de mi tesis, por brindarme todo su apoyo, aconsejarme en qu cosas debo hacer y en darme palabras de aliento en este proceso tan importante.

INDICE RESUMEN ABSTRACT CAPITULO I : INTRODUCCION 1.1 INTRODUCCION. 1.1.1 Objetivo General. 1.1.2 Objetivo Especfico. 1.2 CARACTERISTICA DEL PRODUCTO. 1.3 ENTORNO DE TRABAJO. CAPITULO II : ESTUDIOS DE ALTERNATIVAS DE SOLUCION DEL PROBLEMA 2.1 OBJETIVO. 2.2 RESTRICCIONES. 2.3 HARDWARE. 2.3.1 Microcontroladores. 2.3.1.1 PIC 18F452 2.4 SOFTWARE. 2.4.1 C++. 2.4.2 VisualBasic. CAPITULO III : DISEO DEL HARDWARE DEL CONTROLADOR 3.1 INTRODUCCION. 3.2 COMPONENTES DEL DISPOSITIVO. 3.2.1 Regulador de tensin 78L05. 3.2.2 Interruptores y Pulsadores. 3.2.3 Pantalla LCD. 3.2.3.1 Caractersticas esenciales de una pantalla LCD. 3.2.4 Transistor 2N2222. 3.2.5 Cmara. 3.3 CIRCUITO FINAL DEL PROYECTO. 3.3.1 Detalle de cada parte del circuito. 3.4 INTRODUCCION A LAS HERRAMIENTAS USADAS EN EL DESARROLLO DE LA SOLUCION EN HARDWARE. 3.4.1 Proteus. 3.4.2 PIC C Compiler. 3.4.3 Programador universal TOPMAX. 3.4.4 PCBWIZ. 3.5 DIAGRAMA DE FLUJO DEL PROYECTO. 3.5.1 Diagrama y esquema del sistema. 3.5.1.1 Diagrama general. 3.5.1.2 Funcin de Retardo. vi vii 1 1 1 1 2 3

8 8 8 8 9 11 13 13 14 15 15 15 15 16 16 17 18 18 19 19 24 24 24 25 25 26 26 26 28
i

3.5.1.3 Funcin Hora Real. CAPITULO IV : DISEO DEL SOFTWARE DEL CONTROLADOR 4.1 DIAGRAMA DE BLOQUE. 4.2 PROGRAMA EN VISUAL BASIC. 4.3 IMPLEMENTACION FISICA. 4.4 APLICACIN EN VISUAL BASIC 4.5 CABLE CONVERSOR DE USB A RS232. 4.6.1 Conector DB9.

30 32 32 32 35 35 36 36

CAPITULO V: COMPARACION ENTRE EL CONTROLADOR DESARROLLADO Y LOS DISPOSITIVOS TC-80n3 DE CANON Y MC-36 DE NIKON Y COSTOS INVOLUCRADOS EN EL PROYECTO 38 5.1 COMPARACION ENTRE LOS DISPOSITIVOS 38 5.2 COSTOS INVOLUCRADOS EN EL PROYECTO. 40 CAPITULO VI : CONCLUSIONES BIBLIOGRAFIA 43 44

ANEXO N 1 : PROGRAMA EN EL PIC A TRAVES DEL COMPILADOR PIC C COMPILER 46 ANEXO N 2 : PROGRAMA EN VISUAL BASIC 74 ANEXO N 3 : HERRAMIENTAS COMPUTACIONALES UTILIZADOS EN EL PROYECTO 90 A.3.1 Proteus. 90 A.3.1.1 Isis. 90 A.3.1.2 Ares. 91 A.3.1.3 Caractersticas generales del programa Proteus. 92 A.3.2 PIC C Compiler 93 A.3.2.1 Entorno. 93 A.3.2.2 Compilador. 94 A.3.2.3 Entorno del programa. 94 A.3.3 TOP MAX. 97 A.3.3.1 Descripcin. 97 A.3.3.2 Caractersticas. 97 A.3.3.3 Componentes soportados. 97 A.3.3.4 Proceso de grabacin del microcontrolador. 98 A.3.4 PCBWiz. 100 A.3.4.1 Diseo del circuito impreso. 100 A.3.5 VISUAL BASIC. 102 A.3.5.1 Interfaz PC dispositivo. 102 A.3.5.2 El puerto serie en Windows. 104
ii

ANEXO N 4 : MATERIALES UTILIZADOS EN EL PROYECTO A.4.1 Pantalla LCD. A.4.1.1 Caractersticas generales de una pantalla LCD. A.4.1.2 Patillaje. A.4.1.3 DDRAM. A.4.1.4 Modos de funcionamiento. A.4.2 Comunicacin microcontrolador-PC. A.4.2.1 Patillaje puerto serie y puerto USB. A.4.2.1.1 Caractersticas del patillaje del cable DB9. ANEXO N 5 : DISEO DEL CIRCUITO A TRAVES DEL PROGRAMA PCBWiz A.5.1 Diseo el circuito impreso. A.5.1.1 Partes no fsicas. A.5.1.2 Partes fsicas. A.5.1.3 Producto terminado listo para colocar en placa.

106 106 106 107 108 108 109 111 111

113 113 114 115 115

ANEXO N 6 : MANUAL DE USO DE LOS SISTEMAS (HARDWARE Y SOFTWARE) 117 A.6.1 Hardware. 117 A.6.1.1 Funcin CUENTA REGRESIVA. 118 A.6.1.2 Funcin HORA REAL. 120 A.6.2 Software. 123 A.6.2.1 Instalacin del Driver. 123 A.6.2.2 Instalacin del Software de programacin. 123 A.6.2.3 Desarrollo del programa. 124 A.6.3 Ejemplos de aplicacin con el dispositivo en distintas funciones. 126 A.6.3.1 Para NUMERO DE FOTOS igual a 1 (una sola toma). 126 A.6.3.2 Para NMERO DE FOTOS mayores a 1. 134 A.6.3.3 Para ALMACENAR UN PERFIL en el caso de una misma aplicacin. 144

iii

INDICE DE FIGURAS Figura 1.1 Ejemplo de tiempo de exposicin de corta duracin de aproximadamente 15 minutos. 3 Figura 1.2 Ejemplo de exposicin de aproximadamente 40 minutos. 4 Figura 1.3 Ejemplo de tiempo de exposicin muy largo. 4 Figura 1.4 Ejemplo de una secuencia de tomas que muestran el desarrollo de una flor. 5 Figura 1.5 Reproduccin de una bacteria en un determinado lapsus de tiempo. 7 Figura 2.1 Grfico comparativo de microcontroladores de diferentes marcas. 10 Figura 3.1 Descripcin en bloques de la solucin Hardware. 15 Figura 3.2 Tipos de pulsadores. 16 Figura 3.3 Pantalla LCD de 16x2. 17 Figura 3.4 Crsitales de cuarzo. 19 Figura 3.5 Pulsadores. 20 Figura 3.6 Regulador de tensin LM7805. 21 Figura 3.7 Salida al conector Jack macho. 22 Figura 3.8 Conexin entre el PIC 18F452 y la cmara fotogrfica. 22 Figura 3.9 Conexin entre el PIC y la pantalla LCD. 23 Figura 3.10 Circuito completo de la solucin en Hardware. 23 Figura 3.11 Diagrama de flujo general del proyecto. 27 Figura 3.12 Diagrama de la funcin Hora Retardo del proyecto. 29 Figura 3.13 Diagrama de la funcin Hora Real del proyecto. 31 Figura 4.1 Solucin a travs de una aplicacin en un PC. 32 Figura 4.2 Ventana principal del Software. 33 Figura 4.3 Puerto COM cerrado. 33 Figura 4.4 Puerto COM abierto. 33 Figura 4.5 Seleccin de trabajo a realizar. 34 Figura 4.6 Hora real del PC con el que se est trabajando. 34 Figura 4.7 Comunicacin entre el PC y la cmara. 35 Figura 4.8 Tipos de conectores RS232 a USB2.0 mas comunes. 36 Figura 4.9 Patillaje de conectores macho y hembra en un conector DB9. 37 Figura A.1 Vista principal programa ISIS. 91 Figura A.2 Ventana de inicio programa ARES. 92 Figura A.3 Vista principal del compilador PCW. 94 Figura A.4 Editor de cdigo. 95 Figura A.5 Editor de cdigo con ventana de compilacin. 96 Figura A.6 Programador Topmax para PIC (de cualquier tipo). 98 Figura A.7 Ventana inicio Max Loader. 99 Figura A.8 Secuencia de grabacin del microcontrolador. 99 Figura A.9 Ventana de inicio del programa PCB Wizard. 101 Figura A.10 Pgina de inicio del programa Visual Basic. 103 Figura A.11 Ventana de comprobacin de la correcta instalacin del puerto USB. 103 Figura A.12 Ventana de componentes de Visual Basic. 104
iv

Figura A.13 Figura A.14 Figura A.15 Figura A.16 Figura A.17 Figura A.18 Figura A.19 Figura A.20 Figura A.21 Figura A.22 Figura A.23 Figura A.24 Figura A.25 Figura A.26 Figura A.27 Figura A.28 Figura A.29 Figura A.30 Figura A.31 Figura A.32 Figura A.33 Figura A.34 Figura A.35 Figura A.36 Figura A.37 Figura A.38 Figura A.39 Figura A.40 Figura A.41 Figura A.42 Figura A.43

Patillaje de la pantalla LCD. Esquema de asignacin de los pines de la pantalla LCD. Esquema de tipo de cable USB utilizado. Conectores tipo A (izquierda) y tipo B (derecha) del cable USB. Vista alzada y frontal del conector macho USB de los dos tipos. Vista frontal de los conectores USB macho y hembra de los dos tipos. Caractersticas de los pines del puerto serie y del puerto USB. Diseo de la placa con componentes electrnicos. Diseo de placa con las pistas y los componentes electrnicos introducidos. Diseo de la parte trasera del fotolito final que va a la insoladora. Dispositivo terminado Especificacin de los botones del dispositivo. Men principal. Men retardo. Men cuenta. Men intervalo. Mensaje ERROR INTERVALO. Men obturacin. Mensaje ERROR OBTURACION. Men de secuencia de programa. Men de grabacin de datos. Men programacin hora real. Men retardo. Men cuenta. Men intervalo. Men obturacin. Men de secuencia de programa. Men de grabacin de datos. Ventana principal del software. Ajuste en la cantidad de Horas. Mensaje de error al ejecutar el programa.

107 107 109 109 109 110 111 114 115 116 117 117 118 118 119 119 119 119 120 120 120 120 121 121 121 122 122 122 124 124 125

INDICE DE TABLAS Tabla 1 Tabla 2 Tabla 3 Tabla 4 Tabla 5 Tabla 6 Tabla 8 Parmetros operativos del 74LS05. 16 Comparacin entre los 3 productos. 39 Listado de precio de los componentes del diseo fsico del proyecto. 40 Listado de precio de la soldadura del diseo fsico del proyecto. 41 Listado de precio de los componentes del diseo del software del proyecto. 42 Sub total costo mano de obra. 42 Parmetros elctricos del puerto USB. 110

RESUMEN El proyecto Controlador de una cmara fotogrfica digital a travs de la utilizacin de Microcontrolador tiene como objetivo crear un dispositivo autnomo capaz de controlar la obturacin de una cmara fotogrfica mediante la utilizacin de un microcontrolador PIC 18F452. El trabajo tambin incluye el desarrollo de una aplicacin de software que ejecuta en un PC las mismas funciones logradas con el microcontrolador, usando Visual Basic versin 6.0 y una comunicacin por puerto USB. En el Captulo I se incluye una breve introduccin al proyecto, se plantean los objetivos generales y especficos del proyecto y, adems, se describe el entorno de trabajo del proyecto. En el Captulo II se estudian alternativan de solucin del problema propuesto, especificando el tipo de hardware y software en el que se basa el diseo. El Captulo III tiene relacin con el diseo de hardware del proyecto. Se especifican todos los componentes que forman parte de la solucin, adems de las herramientas computacionales que se utiliza en la realizacin del proyecto. En el Captulo IV se incluye el diseo de software del proyecto, utilizando el programa Visual Basic versin 6.0. En el Captulo V se efecta una comparacin entre el dispositivo desarrollado y los productos ya existentes en el mercado. Adems se realiza una evaluacin de costos del prototipo del controlador. En el Captulo VI se incluye las conclusiones finales acerca de proyecto y se hablarn sobre distintas aplicaciones propuestas, tanto en el rea de la medicina como en la astronoma. En anexos se detallan todas las caractersticas de los elementos que componen el proyecto. Como resultado final de este proyecto se logr crear dos productos: (a) un dispositivo en hardware y (b) una aplicacin que corre en un PC. Ambos productos ofrecen las mismas prestaciones, esto es, controlar a una mquina fotogrfica digital, permitiendo programar el inicio de operacin, los instantes en que se realizan las tomas, la cantidad de tomas y el tiempo de obturacin. La solucin de hardware desarrollada se compara ventajosamente con dispositivos similares existentes en el mercado ya que su programacin es ms amigable dado que se dise con un display alfanumrico y adems puede almacenar perfiles de programacin que permiten una operacin repetitiva ms eficiente.

vi

ABSTRACT

The objective of the project " Controlador de una cmara fotogrfica digital a travs de la utilizacin de Microcontrolador " is to create a standalone device capable of controlling the shutter of a camera using a microcontroller. The work also includes the development of a software application running in a PC with the same functionality achieved with the microcontroller, using Visual Basic version 6.0 and a USB communication interface. Chapter I includes a brief introduction to the project, its general and specific objectives, and a description of the working environment. In Chapter II, alternative solutions of the proposed problema are studied, specifiying the kind of hardware and software in wich the design is based. Chapter III is devoted to the hardware design of the project. All components that constitute part of the solution are specificed, together with the computing tolos employed in the realization of the project. Chapter IV includes the software design of the project, using the program Visual Basic version 6.0. In Chapter V a comparison is made between the device developed and existing products in the market. The costs of the controller are also assessed. Chapter VI includes the finals conclusions of the Project and proposed applications of the controller. Details of characteristics of the elements that take part in the Project are included in annexes. The project final result is the creation of two products: (i) a hardware device, and (ii) a software application that runs on a PC. Both products offer the same functionality, ie, the control of a digital camera allowing the programming of the starting time of operation, the instant when the shots are made, the amount of shots and the exposure time. The hardware solution developed compares advantagerously with similar devices available in the market since its programming is more friendly, due to a design that incorporates an alphanumeric display and the capacity of storing programming profiles, which make repetitive operations more efficient.

vii

CAPITULO I INTRODUCCION 1.1 INTRODUCCION. El tema de este Proyecto de memoria surge a partir de la necesidad de crear un dispositivo autnomo que controle el disparo de una cmara fotogrfica digital profesional y semiprofesional, que sea amigable para el usuario y que tambin sea capaz de satisfacer algunas necesidades para personas dedicadas al rea de la fotografa. Debido a que en la actualidad esta rea se ha masificado de tal manera que se ha creado no slo una forma de lucrar con este negocio, sino que tambin hay personas que toman esta actividad como un pasatiempo y otras personas las ocupan en tareas cientficas. 1.1.1 Objetivo General. El objetivo general del proyecto se orienta a crear un dispositivo autmata que, una vez que se ha programado, sea capaz de controlar el obturador de una cmara fotogrfica en cuanto al tiempo de obturacin e intervalos entre obturaciones, entre otras caractersticas sin la necesidad de que una persona est manejando la cmara. 1.1.2 Objetivo Especfico. Disear en hardware (circuito basado en microcontrolador) y tambin en software (programa instalado en un PC) un dispositivo programable capaz de realizar los siguientes controles sobre el obturador de una cmara fotogrfica digital: Controlar el tiempo de obturacin de una toma. Controlar la cantidad de tomas a efectuar. Controlar el intervalo de tiempo entre tomas. Controlar el tiempo de inicio de la secuencia de tomas. Permitir almacenar un perfil de operacin definido por el usuario. La programacin debe ser simple y amigable para el usuario. El dispositivo diseado en hardware, debe ser porttil.

1.2 CARACTERISTICA DEL PRODUCTO. Este proyecto nace a raz de la respuesta hacia una situacin comn de las personas, del querer hacer las cosas mediante la automatizacin de maquinarias sin la necesidad de ser intervenidos por persona alguna aparte de la programacin previa. Adems, ofrece una serie de beneficios, tales como: Ser un producto ms barato que el dispositivo ya comercializado en el mercado. Realizar las mismas funciones que el dispositivo comercial adems de otra funcin adicional que no dispone dispositivo comercial. Modo de programacin ms amigable que el producto comercial. Ser un desarrollo nacional. Si ha pedido del usuario ste quiere agregarle otras aplicaciones, stos sern posible de agregar dependiendo de la situacin a las que se refiera el usuario. Si el usuario desea controlar la cmara a travs de una computadora, sin la utilizacin del dispositivo, se crear una aplicacin que realice la comunicacin desde la computadora hacia la cmara. Una vez conocido el comportamiento de estos sistemas de automatizaciones, tambin se pueden aplicar y desarrollar en distintas reas que requieran de temporizacin, tales como en el rea de la medicina (comportamiento de una clula o bacteria, tambin en el caso de la astronoma para registrar el movimiento de una estrella, como tambin puede ser utilizado en la domtica, automatizacin de iluminacin, sistemas de regado, etc.

1.3 ENTORNO DE TRABAJO. Debido a que para este proyecto se necesitan herramientas computacionales para la programacin y desarrollo de circuitos, existen diferentes modos de desarrollo para un ptimo funcionamiento. 1) 2) 3) 4) LINUX UNIX MS-DOS Microsoft WINDOWS

Se podra haber optado por utilizar un entorno LINUX o UNIX, pero dado que su tasa de penetracin en el mercado an no est consolidada no se podra llegar a la mayora de la poblacin. MS-DOS es un entorno conocido por mucha gente pero est condenado a la desaparicin, los inconvenientes que plantea, adems de su desaparicin, el costo en horas de programacin que supone programar un entorno amigable para el usuario final en este sistema operativo, adems del costo a la hora de programar comunicaciones con dispositivos externos mediante puerto serie. Por lo tanto, la solucin adoptada es la de usar Microsoft Windows, un entorno conocido por gran parte del usuario medio. Es un entorno bastante extendido y que cuenta con buenas herramientas de programacin. Tanto en la programacin del microcontrolador como en el software de aplicacin se utilizar esta plataforma de Microsoft Windows. A continuacin se mostrarn algunos resultados con la utilizacin de este proyecto conectada hacia una cmara fotogrfica: En las figuras 1.1, 1.2 y 1.3 se muestran unas aplicaciones a travs del control de tiempo de obturacin de la cmara en el registro de la trayectoria de las estrellas.

Figura 1.1 Ejemplo de tiempo de exposicin de corta duracin de aproximadamente 15 minutos.


3

La figura 1.1 muestra un ejemplo del control de un tiempo de exposicin relativamente corto de aproximadamente 15 minutos en que se ha enfocado el polo celestial mostrando as cmo las estrellas giran alrededor del polo. Esta foto fue tomada en el sector de Valle Nevado, Chile.

Figura 1.2

Ejemplo de exposicin de aproximadamente 40 minutos.

La figura 1.2 muestra un ejemplo del control de un tiempo de exposicin largo el cual muestra el movimiento de las estrellas.

Figura 1.3

Ejemplo de tiempo de exposicin muy largo.

La figura 1.3 muestra un ejemplo del control de un tiempo de exposicin bastante largo (90 minutos) el cual muestra el movimiento de las estrellas y en que se ha enfocado el polo celestial mostrando as cmo las estrellas giran alrededor del polo. En la figura 1.4 se muestran un ejemplo del control de una secuencia de tomas en el que se controla la cantidad de tomas y el tiempo entre ellas de modo de mostrar el desarrollo de una flor

Figura 1.4

Ejemplo de una secuencia de tomas que muestran el desarrollo de una flor.

Tal como se mencion anteriormente, otras de las aplicaciones que pueden requerir de temporizacin es en el rea de la medicina, tal como se muestra en la figura 1.5, que muestra la reproduccin de una sola bacteria, que durante un lapsus de tiempo se puede reproducir en cientos de miles de bacterias.

Figura 1.5

Reproduccin de una bacteria en un determinado lapsus de tiempo.

CAPITULO II ESTUDIOS DE ALTERNATIVAS DE SOLUCION DEL PROBLEMA 2.1 OBJETIVO. El objetivo de este proyecto tiene como funcin principal la creacin y aplicacin de un dispositivo que sea capaz de controlar en forma autnoma la obturacin de una cmara fotogrfica. Consta de 2 partes, un dispositivo fsico (Hardware) que controle en forma autmata la obturacin de la cmara, y otro desarrollo en Software que desarrolle la misma aplicacin que en Hardware pero controlada desde el computador. 2.2 RESTRICCIONES. Este dispositivo debe cumplir ciertas caractersticas puesto que debe competir con unos dispositivos ya existentes en el mercado. Es por eso que su interfaz con el usuario debe ser amigable, en este caso debe tener un display alfanumrico ya que los dispositivos comerciales existentes tienen slo un display numrico. Otra de las aplicaciones que tiene este proyecto es la adicin de una aplicacin programable en Software que realice las mismas funciones que la solucin en Hardware. Otra de las restricciones de este proyecto tiene que ver con el costo del proyecto. El costo de este dispositivo deber ser menor que el de los ya existentes en el mercado. En el captulo V se evaluar el costo de este dispositivo. 2.3 HARDWARE. Para la implementacin del Hardware es necesaria la utilizacin de elementos programables que tengan la capacidad de ejecutar ciertas funciones. Existen 2 dispositivos en el mercado que son los necesarios para satisfacer las necesidades del proyecto. Estos son los Microprocesadores y Microcontroladores. Microprocesador: Se define Microprocesador como un dispositivo integrado digital capaz de interpretar y ejecutar un conjunto secuencial de instrucciones (programa). Bsicamente contiene circuitos electrnicos que realizan operaciones aritmticas, lgicas y de control. Se trata de un sistema muy complejo, por eso debe ir integrado en chips. Microcontrolador: El Microcontrolador est formado por un Microprocesador y el conjunto de subsistemas que normalmente requiere un microprocesador: memoria voltil (clculo temporal), memoria no voltil (donde almacena el programa), entrada y salida. El Microcontrolador es un computador completo, aunque de limitadas prestaciones, que est contenido en el chip de un circuito integrado programable y se destina a gobernar una sola tarea con el programa que reside en su memoria. Sus lneas de entrada/salida soportan el conexionado de los sensores y actuadores del dispositivo a controlar.

A continuacin se detallarn algunas de las diferencias entre Microprocesador y Microcontrolador: La configuracin mnima bsica de un Microprocesador est constituida por un Micro de 40 Pines, una memoria RAM, una memoria ROM y un decodificador de direcciones; Un microcontrolador incluye todo estos elementos del Microprocesador en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores en el circuito impreso por su amplia simplificacin de circuitera. El costo para un sistema basado en Microcontrolador es mucho menor, mientras que para el basado en Microprocesador, es bastante ms alto. Los Microprocesadores tradicionales se basan en la arquitectura de Von Newmann, mientras que los microcontroladores trabajan con arquitectura de Harvard. El tiempo de desarrollo de su proyecto electrnico es menor para los Microcontroladores. En los microprocesadores todas las operaciones se realizan sobre el acumulador. La salida del acumulador est conectada a una de las entradas de la Unidad Aritmtica y Lgica (ALU), y por lo tanto ste es siempre uno de los dos operandos de cualquier instruccin, las instrucciones de simple operando (borrar, incrementar, decrementar, complementar), actan sobre el acumulador. En los microcontroladores, la salida de la ALU va al registro W y tambin a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. La gran ventaja de esta arquitectura(Microcontroladores ) es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instruccin que opere con la memoria, ya sea de simple o doble operando, puede dejarse en la misma posicin de memoria o en el registro W, segn se seleccione con un bit de la misma instruccin . Las operaciones con constantes provenientes de la memoria de programa (literales) se realizan slo sobre el registro W. Debido a las prestaciones entre un dispositivo y otro, y tambin en funcin de este proyecto, es que se decide trabajar con los MICROCONTROLADORES. 2.3.1 Microcontroladores. Los microcontroladores son utilizados en diversos circuitos electrnicos comerciales desde hace unos aos de forma masiva, debido a que, por sus capacidades internas, permiten reducir el tamao y el precio de los equipos. En estos ltimos aos se ha facilitado enormemente el trabajo con los microcontroladores al bajar los precios, aumentar las prestaciones y simplificar los montajes, de manera que en muchas ocasiones merece la pena utilizarlos en aplicaciones donde antes se utilizaba la lgica discreta.

Diversos fabricantes ofrecen amplias gamas de microcontroladores para todas las necesidades. Pero, sin duda, hoy en da los microcontroladores ms aceptados para diseos aficionados (y buena parte de los profesionales) son los microcontroladores PIC. Actualmente hay una enorme cantidad de productos que funcionan en base de uno o varios microcontroladores. La variedad de los microcontroladores es grande, y se debe elegir adecuadamente el dispositivo. Esta es una muestra de las marcas que fabrican microcontroladores: 1) 2) 3) 4) 5) 6) 7) MICROCHIP NATIONAL SEMICONDUCTOR MOTOROLA ZILOG INTEL THOMSON ATMEL

Un estudio comparativo entre microcontroladores de estas marcas muestran las diferencias entre microcontroladores de mismas caractersticas pero de diferentes marcas. Esto ayudar a ir descartando posibilidades. El estudio consiste en hacerles pasar una serie de pruebas, una de las cuales es el tamao promedio que ocupa el cdigo de los programas de prueba que son los siguientes: - Empaquetamiento de dos dgitos BCD. - Control de un bucle que decrementa un contador hasta cero. - Transmisin sncrona por desplazamiento en serie de 8 bits.

Figura 2.1 Grfico comparativo de microcontroladores de diferentes marcas. En la figura 2.1 se hace notoria la capacidad que tienen lo microcontroladores de la marca MICROCHIP en relacin a las otras marcas. Una vez echado un vistazo a los microcontroladores MICROCHIP y las posibilidades que ofrece se obtiene las siguientes conclusiones. Hay ms acceso a las herramientas de
10

programacin y grabacin de microcontroladores de MICROCHIP que de otro tipo de microcontroladores. Hay una muy abundante bibliografa. Adems de programarse en lenguaje ensamblador tambin es posible programarlo en lenguaje C. Por ltimo, MICROCHIP ha sacado una nueva gama de microcontroladores PIC capaces de trabajar con la comunicacin USB, y con sus respectivos drivers. Entre los microcontroladores PIC utilizados en este proyecto, la primera incursin fue con el PIC 16F84, pero debido a que no fue capaz de almacenar todo el programa utilizado en este proyecto, se opt por uno de mayor capacidad como el PIC 16F877, pero a medida que se avanz en el programa y como tambin se quiso agregar otras funciones, tampoco fue capaz de soportar el crecimiento del programa. Fue as que se lleg a la conclusin de utilizar al PIC 18F452 dada su mayor capacidad para poder almacenar completamente el programa. Este modelo es uno de los ms populares, siendo un simple chip de 40 patillas, cuya estructura de plstico contiene mucha de la tecnologa que se necesita conocer para entender los sistemas de control con microcontroladores. El PIC 18F452, en definitiva, pudo almacenar todo el programa, y quedando capacidad para almacenar perfiles de operacin. 2.3.1.1 PIC 18F452. En todo este proyecto, y como cerebro del sistema, todo el sistema hardware diseado se regir a travs de la utilizacin de PIC 18F452. Caractersticas generales. El PIC18F452 tiene un procesador de alto rendimiento RISC capaz de procesar hasta 10MIPS (con un reloj de 40MHZ) con instrucciones de 16 bits y un camino de datos de 8 bits: Adems incorpora un multiplicador de 8x8 en hardware de un solo ciclo. La memoria de programa puede direccionar hasta 32KBytes (FLASH) la memoria de datos hasta 1,5KBytes, y una EEPROM de 256 bytes. Las interrupciones disponen de diferentes niveles de prioridad. Otras caractersticas de este microcontrolador son:

Cdigo compatible con la familia 16 y 17 de los PIC. Reloj que puede trabajar por encima de los 10 MIPs. o Uso de cristal de 40 MHZ. o Cristales de 4 MHZ. a 10 MHZ. utilizando un multiplicador de frecuencia PLL. Instrucciones de 16 bits con bus de datos de 8 bits. Prioridad de interrupciones.
11

Multiplicador hardware de 8 x 8 que funciona en un solo ciclo de mquina. Tres pines para manejo de interrupciones externas. Manejo de niveles de corriente de 25 mA. En modo fuente. Timer 1 de 16 bits, Timer 2 de 8 bits. Timer 3, (no lo posee la gama media), de 16 bits (65535 conteos). Dos mdulos de Captura/Comparacin/PWM. Mdulos de comunicacin en serie con soporte para RS-485 y RS-232. El PIC18F452 posee un contador de programa de 21 bits que permite ubicar una capacidad de memoria de 2 Mega Palabras. Las posiciones de memoria ms all de la memoria fsica construida se leen como 0. El PIC 18F452 posee 32 K Bytes de memoria FLASH de programa, agrupados de a 2 Mbytes, con el fin de contener instrucciones complejas. Por lo tanto este dispositivo puede almacenar 16.000 instrucciones simples. El vector de RESET se halla en la direccin 0000h y el de interrupciones en las posiciones 0008h y 0018h. El microcontrolador PIC18F452 tiene cinco puertos de entrada/salida paralelo de usos generales llamados PUERTO A, PUERTO B, PUERTO C, PUERTO D y PUERTO E. Algunos pines de estos puertos estn multiplexados con funciones especficas de algunos perifricos. Para ahorrar energa, (factor clave en los aparatos porttiles), los microcontroladores disponen de una instruccin especial (SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son mnimos.

12

2.4 SOFTWARE. Como ya se mencion anteriormente, este proyecto consta de 2 partes, un desarrollo fsico y un Software programable que se explicar en este captulo. En principio se utilizar el sistema operativo Windows puesto que es el ms extendido en los PCs y que la mayora de las personas utiliza, adems posee las mayores interfaces de comunicacin con los dispositivos, tal como se mencion en el captulo 1.3. Por otra parte, en cuanto a lenguajes de programacin se encuentran 2 lenguajes que sirven para el desarrollo del software: el lenguaje C (y sus derivados como C++) y el lenguaje Visual Basic. 2.4.1 C++. Un ncleo del lenguaje simple, con funcionalidades aadidas importantes, como funciones matemticas y de manejo de archivos, proporcionadas por bibliotecas. Es un lenguaje muy flexible que permite programar con mltiples estilos. Uno de los ms empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). Un sistema de tipos que impide operaciones sin sentido. Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir mltiples archivos de cdigo fuente. Acceso a memoria de bajo nivel mediante el uso de punteros. Interrupciones al procesador con uniones. Un conjunto reducido de palabras clave. Por defecto, el paso de parmetros a una funcin se realiza por valor. El paso por referencia se consigue pasando explcitamente a las funciones las direcciones de memoria de dichos parmetros. Punteros a funciones y variables estticas, que permiten una forma rudimentaria de encapsulado y polimorfismo. Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una nica variable "empleado"). Lenguaje muy eficiente puesto que es posible utilizar sus caractersticas de bajo nivel para realizar implementaciones ptimas. A pesar de su bajo nivel es el lenguaje ms portado en existencia, habiendo compiladores para casi todos los sistemas conocidos.
13

Proporciona facilidades para realizar programas modulares y/o utilizar cdigo o bibliotecas existentes. 2.4.2 VisualBasic. Posee una curva de aprendizaje muy rpida. Integra el diseo e implementacin de formularios de Windows. Permite usar con suma facilidad la plataforma de los sistemas Windows dado que tiene acceso prcticamente total a la API de Windows incluidas libreras actuales. El cdigo en Visual Basic es fcilmente migrable a otros lenguajes. Es un lenguaje muy extendido por lo que resulta fcil encontrar informacin, documentacin y fuentes para los proyectos. Fcilmente extensible mediante libreras DLL y componentes ActiveX de otros lenguajes. Posibilidad de aadir soporte para ejecucin de scripts, VBScript o JScript, en las aplicaciones mediante Microsoft Script Control. Acceso a la API multimedia de DirectX (versiones 7 y 8). Tambin est disponible, de forma no oficial, un componente para trabajar con OpenGL 1.1: VBOpenGL type library Existe una versin integrada en las aplicaciones de Office, versiones tanto Windows como Mac, que permite programar macros para extender y automatizar funcionalidades en documentos como por ejemplo una hoja de clculo de EXCEL o una base de datos ACCESS (VBA) Es un entorno perfecto para realizar pequeos prototipos rpidos de ideas.

Para efectos de este proyecto y por su simplicidad se escogi el programa VISUAL BASIC

14

CAPITULO III DISEO DEL HARDWARE DEL CONTROLADOR 3.1 INTRODUCCION. Este captulo tiene varias partes, en la primera parte se detalla seccin por seccin y en un diagrama de bloque los componentes que hay en el hardware. En la segunda parte se mostrar el circuito final del proyecto con una breve explicacin acerca de las herramientas computacionales utilizadas en este proyecto. En la tercera parte y final del proyecto se mostrar en un diagrama de flujo la programacin del dispositivo. En la figura 3.1 se muestra el diagrama de bloque necesario para el desarrollo del dispositivo. Consta de 3 partes, la primera parte es la entrada de los comandos, o botones de entrada, y la fuente de poder que no es ms que la alimentacin del microcontrolador. La segunda parte consta del cerebro del sistema, que es la que cumple todas las funciones programadas por el usuario. La tercera y ltima parte consta del display LCD que es la pantalla que muestra la informacin de lo que se quiera programar y tambin consta de la salida de la corriente que debe ir hacia la cmara.

Figura 3.1

Descripcin en bloques de la solucin Hardware.

3.2 COMPONENTES DEL DISPOSITIVO. A continuacin, se detallarn parte por parte los componentes del dispositivo: 3.2.1 Regulador de tensin 78L05. Este regulador pertenece al bloque fuente de poder que aparece en la figura 3.1. Normalmente el microcontrolador PIC18F452 se alimenta con 5 voltios aplicados entre los pines Vdd y Vss que son, respectivamente, la alimentacin y la masa del chip. Como en este proyecto se va a trabajar con una batera a una tensin de 9v y de hasta 70 mA. y slo se deben obtener 5 voltios, es necesario el uso de un regulador de tensin. En este proyecto se usar el 78L05. Se dispone adems de un diodo a la entrada para protegerlo en el caso que se apliquen tensiones con la polaridad invertida. En la tabla 2

15

se muestran las caractersticas especficas del regulador de tensin 7805, como tambin los rangos operativos.

Tabla 1

Parmetros operativos del 74LS05.

3.2.2 Interruptores y Pulsadores. Estos dispositivos permiten introducir un nivel lgico 0 o 1 segn la posicin en que se encuentren, cerrado o abierto. La lectura del estado de interruptores y pulsadores, indicados en la figura 3.2, se ejecuta con la conexin de estos dispositivos entre una entrada y masa para as forzar la entrada a un nivel lgico alto (5 V) mediante una resistencia Pull-Up de 10 kohms.

Figura 3.2

Tipos de pulsadores.

Mientras el dispositivo est abierto, la entrada mantiene una tensin de 5 V que corresponde a un nivel lgico 1. Cuando se cierra, la entrada pasa a valer 0 V correspondiente al nivel lgico 0. 3.2.3 Pantalla LCD. En el bloque display LCD de la figura 3.1, se muestra la pantalla que debe mostrar la informacin que el ususario desea programar. Las pantallas de cristal lquido o display LCD (Liquid Crystal Display) para mensajes tienen la capacidad de mostrar caracteres alfanumricos, permitiendo representar la informacin que genera un equipo electrnico de una manera fcil, econmica y amigable para el usuario. La pantalla consta de una matriz de caracteres (normalmente de 5x7 puntos) distribuidos en una, dos, tres o cuatro lneas de 16 hasta 40 caracteres cada lnea. El proceso de visualizacin es gobernado
16

por un microcontrolador incorporado a la pantalla, siendo el Hitachi 44780 el modelo ms utilizado. Para este proyecto se utiliz la pantalla de 16 caracteres y 2 lneas (16x2) que aparece en la figura 3.3.

Figura 3.3

Pantalla LCD de 16x2

Debido a que una de las caractersticas deseadas es que el dispositivo presente una interfaz amigable es que se usar una pantalla LCD de modo que la comunicacin con el usuario sea amigable y alfanumrica. Esta es una gran caracterstica que hace la gran diferencia con los dispositivos ya existentes en el mercado, tal como se mencionar en el captulo V. Adems existe una versin de estas pantallas LCD que vienen con luz incluida, lo cual facilita al usuario, con un click, el uso del dispositivo en lugares de baja o nula luminosidad, como por ejemplo al tomar fotografas de noche. 3.2.3.1 Caractersticas esenciales de una pantalla LCD. Consumo muy reducido, del orden de 7,5 mW. Pantalla de caracteres ASCII, adems de los caracteres japoneses Kanji, caracteres griegos y smbolos matemticos. Desplazamiento de los caracteres hacia la izquierda o a la derecha. Memoria de 40 caracteres por lnea de pantalla, visualizaciones 16 caracteres por lnea. Movimiento del cursor y cambio de su aspecto. Luminosidad incorporada. Esto sirve para su utilizacin nocturna o en lugares con baja luminosidad. Pueden ser gobernados de dos formas principales: o Conexin con bus de 4 bits. o Conexin con bus de 8 bits.

17

3.2.4 Transistor 2N2222. En el bloque salida se usar como conmutador electrnico uns transistor bipolar, al cual se har trabajar en corte y saturacin. Para esta funcin se ha elegido el transistor 2N2222 el cual es un transistor bipolar NPN de baja potencia de uso general y muy rpido. Sirve tanto para aplicaciones de amplificacin como de conmutacin. Puede amplificar pequeas corrientes a tensiones pequeas o medias; por lo tanto, slo puede tratar potencias bajas (no mayores de medio vatio). Puede trabajar a frecuencias medianamente altas. Las hojas de especificaciones sealan como valores mximos garantizados 500 miliamperios en la corriente del colector, 50 voltios de tensin de colector-emisor, y hasta 500 mW. de potencia. La frecuencia de transicin es de 250 a 300 MHZ, lo que permite utilizarlo en aplicaciones de radio de alta frecuencia (hasta 300 MHZ). El beta (factor de amplificacin) del transistor es de por lo menos 100; valores de 150 son tpicos. La utilizacin de este transistor es de suma importancia para este proyecto puesto que su funcin es operar como conmutador que obturar la cmara fotogrfica. Para esto, se trabajar este transistor en corte y saturacin. 3.2.5 Cmara. Este producto es compatible con cmaras fotogrficas que tengan la capacidad de trabajar con estos mandos a distancia. Estos mandos de conectan a travs de un conector jack. En el captulo 3.3 se mostrar cmo se conecta el dispositivo hacia la cmara. El dispositivo es compatible con ciertas cmaras, por ejemplo, para las cmaras Canon es compatible con lo modelos EOS 10D, EOS 1D Mark II N, EOS 1V, EOS 20D, EOS 20Da, EOS 3, EOS 30D, EOS 5D, EOS D30, EOS D60, EOS-1D, EOS-1D MARK II, EOS-1D Mark III, EOS-1Ds y EOS-1Ds MARK II.

18

3.3 CIRCUITO FINAL DEL PROYECTO. 3.3.1 Detalle de cada parte del circuito. Dentro del bloque microcontrolador existe adems del microcontrolador propiamente tal, otros elementos que no deben faltar a fin de que pueda funcionar correctamente. Uno muy importante es el reloj que todo microcontrolador debe tener.

Figura 3.4

Cristales de cuarzo.

En la Figura 3.4 se muestra el oscilador de cristal de cuarzo que, como se est trabajando con la configuracin oscilador XT, permite una frecuencia de reloj muy estable comprendida entre 100 KHz y 4 MHZ. En este trabajo de usar una frecuencia de 4 MHz. Este oscilador va conectado a los pines OSC1/CLKIN y OSC2/CLKOUT del PIC 18F452. El circuito y los valores son obtenidos de la hoja de datos del microcontrolador. Como se muestra en el diagrama de bloque de la figura 3.1 otro bloque es el de botones de entrada. Este bloque tiene como misin el permitir al usuario programar el dispositivo. La disposicin de estos pulsadores se muestra en la figura 3.5.

19

Figura 3.5

Pulsadores.

Las funciones de los pulsadores se describen a continuacin: El Botn <<<< que se muestra en la figura 3.5 se ubica en el pin 2 (puerta A, lnea 0) del PIC 18F452. Tiene las siguientes funciones: - Sirve para avanzar el men hacia la izquierda para cambiar de funcin (tiempo real y funcin retardo). - Tambin sirve para decrementar la cantidad de tiempo o de disparos de cada una de las funciones. El Botn ENTER sirve para almacenar los datos que el usuario requiera. Este botn se ubica en el pin 3 (puerta A, lnea 1). El Botn >>>> se ubica en el pin 4 (puerta A, lnea 2) del PIC 18F452. Tiene las siguientes funciones: - Sirve para avanzar el men hacia la derecha para cambiar de funcin (tiempo real y funcin retardo). - Tambin sirve para incrementar la cantidad de tiempo o de disparos de cada una de las funciones.

El Botn EXE sirve para ejecutar el programa o tambin para volver al men de inicio una vez que se tenga una dificultad con la programacin. Este botn va en el pin 5 (puerta A, lnea 3).

20

El bloque fuente de poder de la figura 3.1, se encuentra compuesto por un regulador de tensin, que para este proyecto se eligi el circuito integrado LM7805, que tiene la funcin de energizar el circuito final completo. En la figura 3.6 se muestra el regulador de tensin LM7805 que alimentar todo el circuito. En el pin 1 se conecta la batera de 9 volts y en el pin 3 sale el voltaje regulado a 5 volts que alimentar todo el circuito.

Figura 3.6

Regulador de tensin LM7805.

Por ltimo, en el diagrama de bloque de la figura 3.1 est la funcin bloque de salida. La funcin de este bloque es muy importante debido a que es el encargado de producir la obturacin de la cmara fotogrfica. La cmara fotogrfica tiene una entrada por donde es posible obturarla a travs de un interruptor mecnico. Este bloque reemplaza esto por un interruptor electrnico. En la figura 3.7 se muestra la salida de todo el circuito hacia el cable jack que posteriormente va hacia la cmara. Este paso es de suma importancia puesto que la funcionalidad del transistor NPN 2N2222 es actuar como interruptor y lograr la obturacin de la cmara fotogrfica. La cmara entrega un voltaje de 3,5 V que polariza al transistor. Se elije una resistencia de colector (que en este caso es de 100K) tal que permita un mnimo de consumo de corriente, con el fin de no agotar la batera de la cmara y adems permita la correcta obturacin de la cmara fotogrfica.

21

Figura 3.7

Salida al conector Jack macho.

A continuacin, en la figura 3.8 se muestra la conexin entre el microcontrolador PIC y la cmara pasando a travs del transistor 2N2222. Aqu se muestra lo que se mencion en la figura 3.7 acerca de la funcin del interruptor. Como se aprecia a la base de transistor se le aplica la salida del PIC. Cuando es una tensin baja (0 volts) el transistor no conduce porque est en el corte. Luego si la salida del PIC es un voltaje alto (aproximadamente 5 volts) el transistor se satura, realizando el cerrado del circuito de obturacin de la cmara fotogrfica.

Figura 3.8

Conexin entre el PIC 18F452 y la cmara fotogrfica.

Para conectar el PIC con la pantalla LCD se utiliz el puerto B del PIC. Como se muestra en la figura 3.9 se utiliz una conexin de 4 bits hacia la pantalla LCD. Esta pantalla tiene la caracterstica que tiene luz propia, a travs de una botonera se puede encender la luz y ver la informacin en la pantalla en plena oscuridad.

22

Figura 3.9 Conexin entre el PIC y la pantalla LCD Por ltimo, en la figura 3.10 se mostrar el producto terminado. Se muestra el esquema total del proyecto que al final ser diseada en forma fsica.

Figura 3.10

Circuito completo de la solucin en Hardware.

23

3.4 INTRODUCCION A LAS HERRAMIENTAS USADAS EN EL DESARROLLO DE LA SOLUCION EN HARDWARE. A continuacin se describir brevemente cada una de las herramientas utilizadas para llevar a cabo el diseo e implementacin de la solucin del Hardware. El detalle de cada una de estas herramientas se encuentra en el Anexo 4 de este proyecto. 3.4.1 Proteus. A fin de simular, hacer pruebas y disear el circuito impreso del circuito diseado se us el programa PROTEUS. PROTEUS es un entorno integrado diseado para la realizacin completa de proyectos de construccin de equipos electrnicos en todas sus etapas: diseo, simulacin, depuracin y construccin. El juego de herramientas se compone de dos elementos, perfectamente integrados entre s: Isis: Es la herramienta para la elaboracin avanzada de esquemas electrnicos, que incorpora una librera de ms de 6.000 modelos de dispositivos digitales y analgicos. Ares: Es la herramienta para la elaboracin de placas de circuito impreso con posicionador automtico de elementos y generacin automtica de pistas, que permite el uso de hasta 16 capas. 3.4.2 PIC C Compiler. Aunque la solucin es en hardware, existe una parte de programacin con el fin de realizar el programa que se imprimir en el PIC. Para este proyecto se us el compilador PIC C Compiler, el cual producir los archivos .HEX que se cargarn en el microcontrolador. El PICC Compiler fue desarrollado para cumplir con las especificaciones del lenguaje ANSI C. El compilador produce tres tipos de archivos. Archivos con extensin .hex que permite grabar el programa ejecutable en el PIC por medio del uso de un programador. El archivo con extensin .asm contendr un listado en assembler del programa compilado con la informacin del mapeo de memoria. Estos archivos son muy tiles para la depuracin de los programas y para determinar la cantidad de pasos de programas (ciclos de ejecucin) que tiene la aplicacin. Los archivos con extensin .pre contienen la informacin preprocesada del programa, #defines, #includes, etc. La cual es expandida y guardada en el archivo.

24

3.4.3 Programador universal TOPMAX. Una vez que se ha simulado y probado el circuito diseado, es necesario implementar todo fsicamente. Por lo tanto ser necesario en un momento dado, cargar fsicamente el programa diseado en el PIC. Para realizar eta tarea, se us un programado universal denominado Top Max. El programador Top Max es un programador universal, que adems tiene la capacidad de comprobar las RAMS. Posee un zcalo de 48 patillas DIP universal y un zcalo TTL expandible. Esta tecnologa permite programar cualquier componente de hasta 48 patillas sin necesidad de adaptador. El Top Max permite adems de programar, probar componentes lgicos TTL y CMOS, as como comprobar memorias estticas y dinmicas. 3.4.4 PCBWIZ. Llegado el momento de armar fsicamente el circuito diseado, es necesario disear un circuito impreso en donde se ubicarn todos los elementos ocupados. Para esta tarea se us el programa PCBWiz. El software PCBWiz permite la implementacin del circuito en una placa PCB de manera ptima para crear un circuito abarcando el mnimo espacio posible, con la ventaja de poder dar forma a esta placa.

25

3.5 DIAGRAMA DE FLUJO DEL PROYECTO. 3.5.1 Diagrama y esquema del sistema. En este captulo se describe el funcionamiento de las rutinas del programa (tanto en Hardware como en Software) utilizado para llevar a cabo las funciones del lector, tanto de lectura de los cdigos como los procesos que realiza el programa en el PC. Todo esto se explica mediante tres diagramas de flujo. Cada uno de los diagramas muestra sus respectivas configuraciones para su fcil y rpida comprensin. 3.5.1.1 Diagrama general. La figura 3.11 muestra el diagrama de flujo general con el que fue diseado el proyecto, ya sea tanto para el producto fsico como para el Software. Este es el funcionamiento bsico general de todo el proyecto. Se desglosar cada parte en sucesivos diagramas para ms especificacin. A continuacin se detalla cada apartado esencial (funcin de Retardo y funcin de Hora Real) que hay que comprender para leer el cdigo fuente.

26

INICIO

Figura 3.11

Diagrama de flujo general del proyecto.


27

3.5.1.2 Funcin de Retardo. La figura 3.12 muestra el diagrama de flujo de los pasos a seguir al programar la funcin Retardo. Consiste en indicar en qu momento deber comenzar a operar una vez terminada la programacin. Dentro de esta parte se encuentran dos opciones: Fijar cantidad de retardo: en este caso se le indica cunto tiempo debe transcurrir para que comience a operar una vez terminada la programacin. Una vez comenzada la ejecucin del programa, la pantalla LCD va mostrando en forma de cuenta regresiva cunto tiempo resta para ejecutar las funciones que se programaron. Esto se muestra en formato de Horas, Minutos y Segundos. Cantidad de disparos: tal como su nombre lo indica, le pregunta al usuario la cantidad de disparos que desea ejecutar. Tiene un lmite de cantidad de fotos a almacenar dependiendo de la cantidad de memoria que tiene la cmara, o tambin, de la memoria externa que se le introduce a esta cmara. Esta opcin lo lleva a programar dos aspectos importantes: a) Ingrese Intervalo: es el intervalo de tiempo de espera entre cada disparo. b) Obturacin: esta funcin permite programar el tiempo que el diafragma de la cmara deber permanecer abierto. c) Perfil: esta funcin le permite al usuario guardar los datos ingresados para una segunda aplicacin en el caso que el usuario apague el equipo y despus vuelva a encenderlo y desee usar la misma secuencia.

28

Figura 3.12 Diagrama de la funcin Hora Retardo del proyecto.


29

3.5.1.3 Funcin Hora Real. La figura 3.13 muestra el diagrama de flujo de los pasos a seguir al programar la funcin de Hora Real. Indicando tiempo real: Otra de las funciones que hay en el men consiste en preguntarle al usuario si quiere trabajar con la hora real. Una vez entrado en esta funcin, lo primero que se le pide al usuario es poner la hora actual (hora real) y, una vez ya programado, le pregunta al usuario las funciones de: fijar hora de inicio del programa, cantidad de disparos, intervalo y obturacin definidas en el men de cuenta regresiva. Una vez que se ejecuta el programa la funcin retardo empieza a funcionar una vez que la hora ajustada sea igual a la hora real. En esta funcin tambin se aplica la funcin de perfiles, ya que una vez ingresados los datos y almacenados para una segunda aplicacin, slo se le pedir al usuario ingresar la hora real y, a travs del perfil, hacer las comparaciones correspondientes.

30

Figura 3.13

Diagrama de la funcin Hora Real del proyecto.


31

CAPITULO IV DISEO DEL SOFTWARE DEL CONTROLADOR 4.1 DIAGRAMA DE BLOQUES En este captulo se incluye la segunda parte del dispositivo, la del desarrollo del software que controle las temporizaciones de la cmara a travs de un PC. Esta solucin consta de 3 secciones, tal como se muestra en la figura 4.1. En la primera parte se muestra el software de programacin, en la segunda parte se muestra el cable conversor USB-RS232 puesto que salida de los datos desde el PC es de forma lgica (1 y 0). La tercera parte consiste en la interfaz 2N2222 ya que como se habl anteriormente el transistor 2N2222 tiene la funcin de actuar como interruptor y lograr la obturacin de la cmara fotogrfica.

Figura 4.1 Solucin a travs de una aplicacin en un PC Para este proyecto se ha optado por utilizar Microsoft Visual Basic, dado que el realizar entornos amigables para el usuario es una tarea sencilla, con lo que se gana tiempo de programacin para implementar las tareas realmente necesarias. Adems gestionan eficientemente las comunicaciones con dispositivo externos mediante el puerto serie.

4.2 PROGRAMA EN VISUAL BASIC Como se mencion anteriormente, una de las aplicaciones fue el control de la cmara fotogrfica a travs de la utilizacin de un software de programacin. Las funciones de esta aplicacin son similares a las del circuito fsico (tambin trabaja con Retardo y con Hora Real). A continuacin, en la figura 4.2, se muestra la pantalla de programacin presentada al usuario.

32

Figura 4.2 Ventana principal del Software. Esta aplicacin es de manejo sencillo, puesto que slo hay que ingresar datos en los espacios correspondientes. El programa est hecho de forma tal que va validando de inmediato los datos que se ingresan, a fin de evitar un mal funcionamiento posterior. Primer paso: se le pide al usuario ingresar el puerto COM al que est conectado el puerto USB del cable, como se muestran en las figuras 4.3 y 4.4.

Figura 4.3 Puerto COM cerrado.

Figura 4.4 Puerto COM abierto. Una vez que el equipo reconozca el puerto, el programa le pregunta al usuario el tipo de trabajo que desea realizar (figura 4.5).

33

Figura 4.5 Seleccin de trabajo a realizar. Hora Real: Esta funcin es idntica a la funcin Hora Real del Hardware. La ventaja que ofrece este programa es que la hora real trabaja en funcin de la hora real del computador con el que el usuario est trabajando. Al costado superior derecho indica cul es la hora del computador (figura 4.6).

Figura 4.6 Hora real del PC con el que se est trabajando.

Una vez que los datos hayan sido ingresados en sus correspondientes casillas se procede a presionar el botn Activar Programacin para poder realizar la operacin. Retardo: Esta funcin es la ms sencilla puesto que slo le pregunta al usuario en cuanto tiempo ms quiere realizar la operacin, sin necesidad de estar dependiendo de la hora del computador. En ambas funciones, cuando se quiera enviar la informacin hacia la cmara para su obturacin, se conecta el PC con la cmara a travs de una interfaz de comunicacin que es un circuito que contiene el transistor 2N2222 el cual cumple con la funcin de interruptor, cumpliendo la misma funcin explicada anteriormente en la solucin con hardware. En el captulo 4.3 se mostrar mediante una implementacin fsica la conexin entre el PC y la cmara fotogrfica. En el anexo N 6 se mostrar en detalle el correcto uso de esta aplicacin.

34

4.3 IMPLEMENTACION FISICA. Para un mejor entendimiento acerca de la implementacin fsica fue necesario el programa de simulacin Proteus, puesto que a travs de esta simulacin se llevar a cabo el diseo fsico de la comunicacin entre el PC y la cmara fotogrfica. En la figura 4.7 se muestra el diseo virtual de la comunicacin. Esta consiste de una entrada desde el puerto USB del PC pasa por el transistor NPN 2N2222 (haciendo el mismo procedimiento que el diseo fsico del proyecto hablado anteriormente) saliendo a travs de una puerto Jack macho que se conectar hacia la cmara.

Figura 4.7

Comunicacin entre el PC y la cmara.

4.4 APLICACIN EN VISUAL BASIC. Como se mencion anteriormente en el software de programacin, el envo de datos desde el PC hacia la cmara se hace a travs del pin 4 (DTR) que cumple la funcin de activar el puerto cuando se quiera activar la cmara. El valor de la salida es similar a la salida del PIC 18F452, as que la interaccin entre el software y la cmara es a travs del transistor NPN 2N2222. A travs de la comunicacin de la cmara con el PC los datos que se transmiten en los niveles lgicos RS232 es de lgica negativa (es decir, un voltaje positivo en la conexin representa un 0, mientras que un voltaje negativo representa un 1). Para garantizar un 0 lgico, una lnea debe mantenerse un voltaje entre +3 y +15 V. Del mismo modo para un 1 lgico una lnea debe mantener estar entre -3 y -15 V. Es importante resaltar que cuando un puerto serie no est transmitiendo mantiene el terminal de transmisin en 1 lgico a -12 V, normalmente.

35

Como se quiere en este proyecto trabajar con valores TTL (de 0 a +5 V) se requiere la necesidad de un circuito integrado que convierta los valores negativos que arroja la comunicacin RS232, es por esta razn que se va a trabajar con el circuito MAX232. El MAX232 convierte los niveles RS232 (que trabaja entre +12 y -12 V) a voltajes TTL y viceversa sin requerir ms que una fuente de +5 V y unos condensadores. Este chip contiene dos drivers TTL RS232 y dos RS232 TTL. Necesita cuatro condensadores externos de unos pocos microfaradios para generar el voltaje RS232 internamente.

4.5 CABLE CONVERSOR DE USB A RS232. Hoy en da existen situaciones donde es necesario convertir, o bien, emular un puerto serie RS232 a partir de un puerto USB. Esto se debe a que muchas de las computadoras modernas ya no incluyen el puerto serie RS232, ya que para aplicaciones informticas se considera obsoleto. Sin embargo existen muchas aplicaciones en electrnica donde resulta muy conveniente usar el puerto serie RS232 para el intercambio de informacin y en el PC resulta la interfaz ms conveniente. Afortunadamente hay en el mercado una variedad de convertidores de USB a RS232 integrados en un cable o bien como adaptador, tal como se muestra en la figura 4.8, que muestra 2 tipos de conexiones: a la izquierda se muestra un par de conectores USB 2.0 y RS232 conectados con cables de entre 1 metro y 1,5 de largo y a la derecha se muestran conectados los puertos USB y RS232 sin un cable de por medio.

Figura 4.8 4.5.1 Conector DB9.

Tipos de conectores RS232 a USB2.0 mas comunes.

El conector DB9 (originalmente DE-9) es un conector analgico de 9 clavijas de la familia de conectores D-Subminiature (D-Sub o Sub-D). El conector DB9 se utiliza principalmente para conexiones en serie, ya que permite una transmisin asncrona de datos segn lo establecido en la norma RS-232 (RS-232C). En la figura 4.9 se muestra el patillaje de los conectores macho y hembra que hay en un conector DB9
36

Figura 4.9

Patillaje de conectores macho y hembra en un conector DB9.

Se debe tener en cuenta que existen adaptadores DB9-DB25 para convertir fcilmente un enchufe DB9 en uno DB25 y viceversa.

37

CAPITULO V COMPARACION ENTRE EL CONTROLADOR DESARROLLADO Y LOS DISPOSITIVOS TC-80n3 DE CANON Y MC-36 DE NIKON Y COSTOS INVOLUCRADOS EN EL PROYECTO 5.1 COMPARACION ENTRE LOS DISPOSITIVOS Estudios hechos sobre este tema muestran que este producto ya existe a nivel comercial (grandes empresas como Canon y Nikon ya poseen este dispositivo, como es el caso del TC-80N3 de la Canon y el MC-36 de la Nikon). Estos dispositivos ofrecen entre s casi las mismas funciones, pero a diferencia de lo que se propone en este proyecto, estos dispositivos ofrecen una comunicacin con el usuario slo en forma numrica, lo cual no es tan amigable y podra complicar al usuario si no es un conocedor sobre el tema a tratar. Lo que se ofrece con el dispositivo desarrollado en este trabajo es una comunicacin alfanumrica con el usuario, lo cual es de fcil manejo, uso y entendimiento logrando as una interfaz mucho ms amigable. Uno de los problemas que se present fue el querer demostrar cmo el dispositivo competir con los dispositivos ya instalados en el mercado (el TC-80n3 y el MC-36) y convencer al usuario que lo diseado ofrece otras prestaciones y de ptimo entendimiento. A continuacin, se mostrar en la tabla 2 una comparacin entre las caractersticas de estos 3 productos. Se ver las ventajas que ofrece nuestro producto frente a los ya existentes en el mercado:

38

TC-80n3

MC-36

ESTE PROYECTO

CUENTA REGRESIVA TRABAJO EN HORA REAL MEDICION DE INTERVALO MEDICION DE OBTURADOR

SI

SI

SI

NO

NO

SI

SI

SI

SI

DE 1 SEGUNDO A 99 HORAS 59 MNUTOS 59 SEGUNDOS DE 0 A 99

DE 1 SEGUNDO A 99 HORAS 59 MNUTOS 59 SEGUNDOS DE 0 A 99

A PEDIDO DEL USUARIO (Con un mnimo de 1 segundo) A PEDIDO DEL USUARIO

CANTIDAD DE DISPAROS COMUNICACIN CON EL USUARIO

NUMERICO

NUMERICO

ALFA-NUMERICO (DE 16X2 CARACTERES)

PANTALLA LCD CON LUMINOSIDAD COMUNICACIN SOFWARECMARA

SI

SI

SI

NO

NO

SI

Tabla 2 Comparacin entre los 3 productos.

39

5.2 COSTOS INVOLUCRADOS EN EL PROTOTIPO Este proyecto se concibe desde diversos puntos de vista: Diseo fsico: La tabla 3 muestra la cantidad y el costo de los diferentes componentes utilizados para el montaje del dispositivo:

COMPONENTES

PRECIO UNIDAD $ 6.900 $ 7.900 $ 310

CANTIDAD

PRECIO TOTAL $ 6.900 $ 7.900 $ 310

PIC 18F452 LCD c/luminosidad REGULADOR DE VOLTAJE LM7805 SWITCH ON/OFF PULSADORES RESISTENCIAS 10 K RESISTENCIAS 330 CRISTAL OSCILADOR 4 MHZ CONDENSADORES 22 Pf POTENCIOMETRO 1 K TRANSISTOR 2N2222 RESISTENCIA 27 K RESISTENCIA 100 K CONECTOR JACK MACHO CAJA HARDWARE

1 1 1

$ 230 $ 130 $ 10 $ 10 $ 380 $ 160 $ 50 $ 230 $ 10 $ 10 $ 250 $ 1.820

1 6 6 6 1 2 1 1 1 1 1 1

$ 230 $ 780 $ 60 $ 60 $ 380 $ 320 $ 50 $ 230 $ 10 $ 10 $ 250 $ 1.820

SUB TOTAL

$ 19.310

Tabla 3 Listado de precio de los componentes del diseo fsico del proyecto.

40

Tambin hubo un trabajo de diseo de placa y, posteriormente, un trabajo de soldadura en el diseo fsico. Este costo se muestra en la tabla 4 CONCEPTO PRECIO UNIDAD CANTIDAD PRECIO TOTAL $ 15.000

DISEO PLACA PCB SOLDADURA ARMADO

$ 15.000

$ 5.000 $ 5.000

1 1

$ 5.000 $ 5.000

SUB TOTAL

$25.000

Tabla 4 Listado de precio de la soldadura del diseo fsico del proyecto.

Diseo del software: Componentes partes SOFTWARE. A continuacin en la tabla 5 se muestra el costo involucrado en elementos usados en la solucin del software. CONCEPTO PRECIO UNIDAD CANTIDAD PRECIO TOTAL $ 200 $ 380 $ 10 $ 10 $ 3.900

CONECTOR JACK MACHO TRANSISTOR 2N2222 RESISTENCIA DE 27 K RESISTENCIA DE 45 K CABLE ADAPTADOR USB RS-232 SOFTWARE PROGRAMACION DIODO 1N4007 CAJA SOFTWARE

$ 200 $ 380 $ 10 $ 10 $ 3.900

1 1 1 1 1

$ 5.000

$ 5.000

$ 15 $ 420

1 1

$ 15 $ 420

SUB TOTAL

$ 9.735
41

Tabla 5 Listado de precio de los componentes del diseo del software del proyecto.

En la tabla 6 se muestran los costos involucrados en la mano de obra utilizada.

Mano de obra: CALADO SOLDADURA PROGRAMACION $ 5.000 $ 1.000 $ 35.000

SUB TOTAL

$ 41.000

Tabla 6

Sub total costo mano de obra.

TOTAL FINAL PRODUCTO: Como ya se mencion en el captulo anterior acerca de las caractersticas de este dispositivo con los ya existentes en el mercado, a continuacin se mostrar las diferencias econmicas entre estos 3 productos. En el mercado se encuentran los dispositivos TC-80n3 a un precio que vara entre los US$ 149.99 (aproximadamente $ 82.500 con un dlar a $ 550) y los USS 160 y el MC36 a un precio desde los US$ 153.99, en cambio el producto que se desarrollar tiene un precio mercado por el producto general de $ 95.310. Este costo es levemente superior a los de los productos del mercado, pero hay que hacer notar que es el costo total del prototipo de dos soluciones diferentes. Si esto se fabricara a escala, el costo bajara considerablemente. A pesar del costo levemente superior, se debe hacer notar que este producto en relacin a los ya diseados ofrece mejores caractersticas.

42

CAPITULO VI CONCLUSIONES Los objetivos planteados en el proyecto se cuplieron satisfactoriamente. Se logr un dispositivo que realiza ms funciones que los dispositivos existentes en el mercado y con una interfaz mucho ms amigable, lo cual lo hace fcil de usar por cualquier persona. Se ha diseado un equivalente en software para ser usado en un PC que controle la cmara fotogrfica. Este trabajo tiene adems proyecciones de uso en otras actividades en donde se necesite un temporizador inteligente, como en el caso de: (a) La medicina, en donde se puede necesitar tomar una serie de fotografas a intervalos de tiempo adecuados para registrar fotogrficamente, por ejemplo, la mitosis celular, el desarrollo de un cultivo bacteriano, etc., en donde se utilizar la caracterstica de tomas de fotos en secuencia. (b) La astronoma, para registrar la trayectoria de los cuerpos celestes, en este caso se usa la caracterstica de control de tiempo de obturacin (largos tiempos) o registrar el movimiento del sol en un amanecer o atardecer a travs de una secuencia de tomas. (c) La botnica, para registrar fotogrficamente el desarrollo de una flor, usando en este caso una secuencia de tomas. (d) La domtica, como por ejemplo el control de riego de un jardn o de un parque, o el control de luces de una habitacin para simular que hay gente en la casa cuando est deshabitada. En general este trabajo tiene mltiples aplicaciones en donde se necesite temporizar eventos.

43

BIBLIOGRAFIA

Libros Enrique Palacios, Fernando Remiro, Lucas J. Lpez (2006). Microcontrolador PIC desarrollo de proyecto. 2 edicin Alfaomega Ra-Ma Manuales http://www.librospdf.net/programacoin-de-pics/1/ . Tutorial_hi_tech.pdf. Introduccin al lenguaje C http://www.taringa.net/posts/downloads/1314901/PCB-Wizard. Todo sobre el programa PCWiz http://www.ieeproteus.com/ares.html Proteus .Todo sobre el programa de simulacin

http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/VisualBasic6/b basic60.pdf. .Manual sobre programa Visual Basic. http://web.media.mit.edu/~jackylee/mas742/CCS_Manual.pdf. .Manual sobre el programa PIC C Compiler http://www.monografias.com/trabajos27/microcontroladores/microcontroladores .shtml#concl .Todo sobre Microcontroladores

Sitios Web www.forosdeelectronica.com www.pablin.com.ar www.alldatasheet.com www.electronica2000.com

44

ANEXOS

45

ANEXO N 1 PROGRAMA EN EL PIC A TRAVES DEL COMPILADOR PIC C COMPILER #include <18f452.h> //pic posible a utilizar #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador #use delay (clock=4000000) //Fosc=4Mhz #define use_portb_lcd TRUE //definir portb lcd #include <lcd.c> //libreria manejo lcd #include <internal_eeprom.c> #use fast_io(a) // con esta instruccion evitamos que se #use fast_io(b) // este configurando cada vez que usamos #use fast_io(c) #byte porta = 5 #byte portb = 6 // se definen las direcciones de memoria #byte portc = 7 // se definen las direcciones de memoria void mostrar(char *men[], int x, int y) //men=mensaje,x,y=posicion,t=tiempo { char LAST_VOLUME=0; lcd_init(); write_eeprom(LAST_VOLUME,men); lcd_gotoxy(x,y); printf(lcd_putc,men); } void mostrar2(char *men1[], char *men2[], int x, int y) //men=mensaje,x,y=posicion, { //t=tiempo char LAST_VOLUME=0,vol1,vol2; lcd_init(); write_eeprom(LAST_VOLUME,men1); LAST_VOLUME++; write_eeprom(LAST_VOLUME,men2); LAST_VOLUME++; LAST_VOLUME=0; vol1 = read_EEPROM (LAST_VOLUME); lcd_gotoxy(x,y); printf(lcd_putc,men1,vol1); LAST_VOLUME++; vol2 = read_EEPROM (LAST_VOLUME); y++; lcd_gotoxy(x,y); printf(lcd_putc,men2,vol2); } void mostrar4(char *men1[], char i, int x, int y) //men=mensaje,x,y=posicion,t=tiempo
46

{ char LAST_VOLUME=0,vol1,vol2; lcd_init(); write_eeprom(LAST_VOLUME,men1); LAST_VOLUME++; LAST_VOLUME=0; vol1 = read_EEPROM (LAST_VOLUME); lcd_gotoxy(x,y); printf(lcd_putc,men1,vol1); LAST_VOLUME++; vol2 = read_EEPROM (LAST_VOLUME); y++; lcd_gotoxy(x,y); printf(lcd_putc,"%u",i); } Void mostrar6(char *men1[], char h, char m, char s, char c, int x, int y) //men=mensaje, { //x,y=posicion,t=tiempo char LAST_VOLUME=0,vol1;//,vol2,vol3,vol4; lcd_init(); write_eeprom(LAST_VOLUME,men1); LAST_VOLUME++; LAST_VOLUME=0; vol1 = read_EEPROM (LAST_VOLUME); lcd_gotoxy(x,y); printf(lcd_putc,men1,vol1); lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",h); x=x+3; LAST_VOLUME++; lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",m); x=x+3; LAST_VOLUME++; lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",s); x=x+5; lcd_gotoxy(x,y); lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",c); } void mostrar7(char *men1[], char *men2[], char h, char m, char s, char c, int x, int y) { //men=mensaje,x,y=posicion,t=tiempo
47

char LAST_VOLUME=0,vol1,vol2;//,vol3,vol4; lcd_init(); write_eeprom(LAST_VOLUME,men1); LAST_VOLUME++; write_eeprom(LAST_VOLUME,men2); LAST_VOLUME++; LAST_VOLUME=0; vol1 = read_EEPROM (LAST_VOLUME); lcd_gotoxy(x,y); printf(lcd_putc,men1,vol1); LAST_VOLUME++; vol2 = read_EEPROM (LAST_VOLUME); lcd_gotoxy(16,y); printf(lcd_putc,men2,vol2); LAST_VOLUME++; lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",h); x=x+4; LAST_VOLUME++; lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",m); x=x+4; LAST_VOLUME++; lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",s); x=x+5; lcd_gotoxy(x,(y+1)); printf(lcd_putc,"%u",c); } void escribir(int tipo, int hret, int mret, int sret, int cant, int hobt, int mobt, int sobt, int hint, int mint, int sint) //tipo= CuentarRegresiva o TiempoReal { int a=0; write_int16_eeprom(0x02,hret); write_int16_eeprom(0x03,mret); write_int16_eeprom(0x04,sret); write_int16_eeprom(0x05,cant); write_int16_eeprom(0x06,hint); write_int16_eeprom(0x07,mint); write_int16_eeprom(0x08,sint); write_int16_eeprom(0x09,hobt); write_int16_eeprom(0x10,mobt); write_int16_eeprom(0x11,sobt);
48

} int eeprom[10]; void leer(int n) { int numPerfil=0; if(n==1) { numPerfil=0; } eeprom[0]=read_int16_eeprom(0x02);//hret eeprom[1]=read_int16_eeprom(0x03);//mret eeprom[2]=read_int16_eeprom(0x04);//sret eeprom[3]=read_int16_eeprom(0x05);//cant eeprom[4]=read_int16_eeprom(0x06);//hint eeprom[5]=read_int16_eeprom(0x07);//mint eeprom[6]=read_int16_eeprom(0x08);//sint eeprom[7]=read_int16_eeprom(0x09);//hobt eeprom[8]=read_int16_eeprom(0x10);//mobt eeprom[9]=read_int16_eeprom(0x11);//sobt } int hr=0; int mr=0; int sr=0; void reloj(int *h, int *m, int *s) { if(*s<59) { *s=*s+1; } else { if(*m<59) { *m=*m+1; } else { if(*h<23) { *h=*h+1; } else
49

//Hora Real

{ *h=0; } *m=0; } *s=0; } } void ajuste(int *h, int *m, int *s) { char men16[]="HORA"; char men17[]="MINUTOS"; char men18[]="SEGUNDOS"; int p=0; int tt=1; int hh=0; int mm=0; int ss=0; while(p==0) { while(tt==1) { mostrar4(men16,hh,1,1);//int delay_ms(955); reloj(&hr, &mr, &sr); if(input(PIN_A1)==0) { hh++; if(hh==24) { hh=0; } } if(input(PIN_A2)==0) { if(hh==0) { hh=24; } if(hh>0) { hh--;
50

} } if(input(PIN_A3)==0) { tt=2; } if(input(PIN_A0)==0) { tt=4; p=1; *h=hh; *m=mm; *s=ss; } } while(tt==2) { mostrar4(men17,mm,1,1);//int delay_ms(955); reloj(&hr, &mr, &sr); if(input(PIN_A1)==0) { mm++; if(mm==60) { mm=0; } } if(input(PIN_A2)==0) { if(mm==0) { mm=60; } if(mm>0) { mm--; } } if(input(PIN_A3)==0) { tt=3; }

51

if(input(PIN_A0)==0) { tt=4; p=1; *h=hh; *m=mm; *s=ss; } } while(tt==3) { mostrar4(men18,ss,1,1);//int delay_ms(955); reloj(&hr, &mr, &sr); if(input(PIN_A1)==0) { ss++; if(ss==60) { ss=0; } } if(input(PIN_A2)==0) { if(ss==0) { ss=60; } if(ss>0) { ss--; } } if(input(PIN_A3)==0) { tt=1; } if(input(PIN_A0)==0) { tt=4; p=1; *h=hh; *m=mm; *s=ss;
52

} } } } boolean ver(int hrr, int mrr, int srr, int hret, int mret, int sret) { boolean b=false; int real=0,retardo=0,br=0; int hx=0, mx=0, sx=0; while(hx<24) { mx=0; while(mx<60) { sx=0; while(sx<60) { if((hx==hrr)&&(mx==mrr)&&(sx==srr)) { real=1; } if((hx==hret)&&(mx==mret)&&(sx==sret)) { retardo=1; } if((real==1)&&(retardo==0)) { b=true; br=1; break; } if((real==0)&&(retardo==1)) { b=false; br=1; break; } sx++; } if(br==1) {

53

break; } mx++; } if(br==1) { break; } hx++; } return (b); } char men1[]="BIENVENIDO"; char men2[]="ELIJA:"; char men3[]="=> RETARDO:"; char men4[]="=> CUENTA:"; char men6[]="=> OBTURACION:"; char men10[]="NUMERO DE FOTOS"; char men13[]="INTERVALO"; char men14[]="H M S C"; char men15[]="AJUSTE HORA REAL"; char men16[]="DESEA GUARDAR?"; char men17[]="DESEA CONTINUAR?"; char men18[]="<EXE>SI <ENT>NO"; char men19[]="MEMORIA"; char men20[]="OOOOOO"; char men21[]="AJUSTE RETARDO"; char men22[]="R"; char men23[]="I"; char men24[]="O"; char men25[]="CUENTA REGRESIVA"; char men26[]="TIEMPO REAL"; char men27[]="ERROR INTERVALO";//ERROR INTERVALO char men28[]="ERROR OBTURACION";//ERROR OBTURACION

//////////////////////////////////////// hReal void hReal(int memHabilitado) { int b=0; int c=0; int hret=0; int mret=0;
54

int sret=0; int hin=0; int min=0; int sin=0; int hob=0; int mob=0; int sob=0; int hi=0; int mi=0; int si=0; int ho=0; int mo=0; int so=0; int ban2=0; int ban3=0; int ban4=0; int ban5=0; int ban=0; int cantAux=0; int bb=0; int cant=1; if(memHabilitado==0) { mostrar(men15,1,1); delay_ms(955); reloj(&hr, &mr, &sr); ajuste(&hr,&mr,&sr); mostrar(men1,1,1); delay_ms(955); reloj(&hr, &mr, &sr); b=0; ban4=0; while(b<=3) { while(b==0) { mostrar2(men2,men3,1,1); delay_ms(955); reloj(&hr, &mr, &sr); while(ban4==0) { mostrar(men21,1,1); delay_ms(955);
55

reloj(&hr, &mr, &sr); ajuste(&hret,&mret,&sret); if(ver(hr,mr,sr,hret,mret,sret)) { ban4=1; b=1; } if(input(PIN_A0)==0) { b=1; mostrar2(men2,men4,1,1); delay_ms(955); reloj(&hr, &mr, &sr); while(bb==0) { mostrar4(men10,cant,1,1); delay_ms(955); reloj(&hr, &mr, &sr); if(input(PIN_A1)==0) { if(cant==100) { cant=0; } else { cant++; } } if(input(PIN_A2)==0) { if(cant==0) { cant=100; } else { cant--; } } if(input(PIN_A3)==0) {
56

if(cant>1) { c=0 } else { c=1; } bb=2; } if(cant==1) { if(input(PIN_A0)==0) { b=2; bb=2; c=1; } } } if(c==0) { mostrar(men13,1,1); delay_ms(955); reloj(&hr, &mr, &sr); while((hin==0)&&(min==0)&&(sin==0)) { ajuste(&hin,&min,&sin); if((hin==0)&&(min==0)&&(sin==0)) mostrar(men27,1,1); delay_ms(955); } } } if(input(PIN_A0)==0) { b=2; c=0; bb=0; mostrar1(men2,men6,1,1); delay_ms(955); reloj(&hr, &mr, &sr);
57

while((hob==0)&&(mob==0)&&(sob==0)) { ajuste(&hob,&mob,&sob); if((hob==0)&&(mob==0)&&(sob==0)) { mostrar(men28,1,1); delay_ms(955); } } if(input(PIN_A0)==0) { b=3; } } } } while(b==3)//sigue o no { mostrar2(men17,men18,1,1); delay_ms(955); reloj(&hr, &mr, &sr); if(input(PIN_A3)==0) { b=0; } if(input(PIN_A0)==0) { while(b==3) { mostrar2(men16,men18,1,1); delay_ms(955); if(input(PIN_A0)==0)//<exe> si { escribir(2,hret,mret,sret,cant,hob,mob,sob,hin,min,sin); b=4; } if(input(PIN_A3)==0)//<ent> no { b=4; } } }
58

} } if(memHabilitado==1) { hret=eeprom[0];//hora retardo mret=eeprom[1]; sret=eeprom[2]; cant=eeprom[3]; hin=eeprom[4];//hora obturacion min=eeprom[5]; sin=eeprom[6]; hob=eeprom[7];//hora intervalo mob=eeprom[8]; sob=eeprom[9]; } output_low(PIN_c2);//off ban=0; ban2=0; ban3=0; hi=0; mi=0; si=0; ho=0; mo=0; so=0; ban4=0; cantAux=cant; while(cantAux>0) { while(hr<24) { while(mr<60) { while(sr<60) { if(ban4==0) mostrar7(men14,men22,hr,mr,sr,cantAux,1,1);//R if(ban4==1) mostrar7(men14,men23,hr,mr,sr,cantAux,1,1);//I if(ban4==2) mostrar7(men14,men24,hr,mr,sr,cantAux,1,1);//O delay_ms(955); if((hr==hret)&&(mr==mret)&&(sr==sret)) {
59

ban=1; ban4=1; ban5=1; } if(ban==1) { if((hi==hin)&&(mi==min)&&(si==sin)) { ban2=2; ban4=2; } if(ban2==2) { output_high(PIN_c1); //Led on ban5=0; if((ho==hob)&&(mo==mob)&&(so==sob)) { output_low(PIN_c1); //Led off cantAux--; ho=0; mo=0; so=0; hi=0; mi=0; si=0; ban=1; ban5=1; ban2=0; ban4=1; if(cantAux==0) { sr=60; mr=60; hr=24; } } } } sr++; if(ban5==1) { si++; if(si==60) {
60

si=0; mi++; if(mi==60) mi=0; hi++; if(hi==24) { hi=0; } } } } if(ban2==2) { so++; if(so==60) { so=0; mo++; if(mo==60) { mo=0; ho++; if(ho==24) { ho=0; } } } } } sr=0; mr++; } hr++; } hr=0; } } void cReg(int memHabilitado) { int b=0; int c=0;
61

int hret=0;//hora retardo int mret=0; int sret=0; int hin=0;//hora intervalo int min=0; int sin=0; int hob=0;//hora obturacion int mob=0; int sob=0; int hi=0;//hora auxiliar intervalo int mi=0; int si=0; int ho=0;//hora obturacion auxiliar int mo=0; int so=0; int ban2=0; int ban3=0; int ban4=0; int ban6=0; int ban=0; int cantAux=0;// int bb=0; int cant=1; int br=0; hr=23; mr=59; sr=55; b=0; ban4=0; if(memHabilitado==0) { while(b<=3) { while(b==0)//RETARDO { mostrar2(men2,men3,1,1); delay_ms(955); mostrar(men21,1,1); delay_ms(955); ajuste(&hret,&mret,&sret); if(input(PIN_A0)==0) { b=1; }
62

} while(b==1)//CUENTA { mostrar2(men2,men4,1,1); delay_ms(955); while(bb==0) { mostrar4(men10,cant,1,1); delay_ms(955); if(input(PIN_A1)==0) { if(cant==100) { cant=0; } else { cant++; } } if(input(PIN_A2)==0) { if(cant==0) { cant=100; } else { cant--; } } if(input(PIN_A3)==0) { if(cant>1) { c=0; } else { c=1; } bb=2; } if(cant==1)
63

{ if(input(PIN_A0)==0) { b=2; bb=2; c=1; } } } if(c==0) { mostrar(men13,1,1); delay_ms(955); while((hin==0)&&(min==0)&&(sin==0)) { ajuste(&hin,&min,&sin); if((hin==0)&&(min==0)&&(sin==0)) { mostrar(men27,1,1); delay_ms(955); } } } if(input(PIN_A0)==0) { b=2; } } c=0; bb=0; while(b==2)//OBTURACION { mostrar2(men2,men6,1,1); delay_ms(955); ajuste(&hob,&mob,&sob); if(input(PIN_A0)==0) { b=3; } } while(b==3)//sigue o no { mostrar2(men17,men18,1,1);
64

delay_ms(955); if(input(PIN_A3)==0) { b=0; } if(input(PIN_A0)==0) { while(b==3) { mostrar2(men16,men18,1,1); delay_ms(955); if(input(PIN_A0)==0)//<exe> si { escribir(1,hret,mret,sret,cant,hob,mob,sob,hin,min,sin); b=4; } if(input(PIN_A3)==0)//<ent> no { b=4; } } } } } } if(memHabilitado==1) { leer(1); hret=eeprom[0];//hora retardo mret=eeprom[1]; sret=eeprom[2]; cant=eeprom[3]; hin=eeprom[4];//hora intervalo min=eeprom[5]; sin=eeprom[6]; hob=eeprom[7];//hora obturacion mob=eeprom[8]; sob=eeprom[9]; } hr=hret; mr=mret; sr=sret; ban=0;
65

ban2=0; ban3=0; hi=hin; mi=min; si=sin; ho=hob; mo=mob; so=sob; output_low(PIN_c2);//off if(si==0 && mi==0 && hi>0) { si=59; mi=59; if(hi==1) { hi=0; } else { hi=hi-1; } } else { if(si==0 && mi>0) { mi=mi-1; si=59; } else { if(si>0) { si=si-1; } } } if(so==0 && mo==0 && ho>0) { so=59; mo=59; if(ho==1) { ho=0;
66

} else { ho=ho-1; } } else { if(so==0 && mo>0) { mo=mo-1; so=59; } else { if(so>0) { so=so-1; } } } br=0; ban4=0; cantAux=cant; while(cantAux>0) { if(ban==0) { while(hr>=0) { while(mr>=0) { while(sr>=0) { mostrar7(men14,men22,hr,mr,sr,cantAux,1,1);//R delay_ms(955);//BIEN if(sr==0) { sr=59; break; } sr--; } if(mr==0)
67

{ mr=59; break; } mr--; } if(hr==0) { hr=23; break; } hr--; } ban=1; } if(ban==1) { while(hi>=0) { while(mi>=0) { while(si>=0) { mostrar7(men14,men23,hi,mi,si,cantAux,1,1);//I delay_ms(955);//BIEN if(si==0) si=59; break; } si--; } if(mi==0) { mi=59; break; } mi--; } if(hi==0) { hi=23; break; }
68

hi--; } ban=2; } hi=hin; mi=min; si=sin; if(si==0 && mi==0 && hi>0) { si=59; mi=59; if(hi==1) { hi=0; } else { hi=hi-1; } } else { if(si==0 && mi>0) { mi=mi-1; si=59; } else { if(si>0) { si=si-1; } } } if(ban==2) { while(ho>=0) { while(mo>=0) { while(so>=0) { mostrar7(men14,men24,ho,mo,so,cantAux,1,1);//O
69

output_high(PIN_c1);//on delay_ms(955);//BIEN if(so==0) { so=59; break; } so--; } if(mo==0) { mo=59; break; } mo--; } if(ho==0) { ho=23; break; } ho--; } ban=1; } output_low(PIN_c1);//off ho=hob; mo=mob; so=sob; if(so==0 && mo==0 && ho>0) { so=59; mo=59; if(ho==1) { ho=0; } else { ho=ho-1; } } else {
70

if(so==0 && mo>0) { mo=mo-1; so=59; } else { if(so>0) { so=so-1; } } } cantAux--; } } void main() { int iEeprom=0; set_tris_a(0xff); // se configura el puerto A como entrada set_tris_b(0x00); // se configura el puerto B como salida set_tris_c(0x00); // se configura el puerto C como salida while(iEeprom<12) { eeprom[iEeprom]=0; iEeprom++; } iEeprom=0; output_low(PIN_c1);//off output_high(PIN_c2);//on while(true) { int ban=0; int op=0; while(ban==0) { while(op==0) { mostrar(men25,1,1);//CUENTA REGRESIVA delay_ms(955); if(input(PIN_A2)==0) { output_high(PIN_c2);//on
71

op=2; } if(input(PIN_A1)==0) { output_high(PIN_c2);//on op=1; } if(input(PIN_A0)==0) { output_high(PIN_c2);//on ban=1; break; } } while(op==1) { mostrar(men26,1,1);//TIEMPO REAL delay_ms(955); if(input(PIN_A2)==0) { output_high(PIN_c2);//on op=0; } if(input(PIN_A1)==0) { output_high(PIN_c2);//on op=2; } if(input(PIN_A0)==0) { output_high(PIN_c2);//on ban=1; break; } } while(op==4) { mostrar(men19,1,1);//MEMORIA delay_ms(955); if(input(PIN_A2)==0) { output_high(PIN_c2);//on op=1; }
72

if(input(PIN_A1)==0) { output_high(PIN_c2);//on op=0; } if(input(PIN_A0)==0) { output_high(PIN_c2);//on ban=1; break; } } } if(op==0) { cReg(0); output_low(PIN_c2);//off } if(op==1) { hReal(0); output_low(PIN_c2);//off } if(op==2) { cReg(1); leer(1); mostrar6(men1,eeprom[0],eeprom[1],eeprom[2],eeprom[3],1,1); delay_ms(955); mostrar6(men1,eeprom[4],eeprom[5],eeprom[6],eeprom[3],1,1); delay_ms(955); mostrar6(men1,eeprom[7],eeprom[8],eeprom[9],eeprom[3],1,1); delay_ms(955); output_low(PIN_c2);//off } op=0; } }

73

ANEXO N 2 PROGRAMACION EN VISUAL BASIC

Dim mi_txthoras As String Dim mi_txtminutos As String Dim mi_txtsegundos As String Dim mo_txthoras As String Dim mo_txtminutos As String Dim mo_txtsegundos As String Dim ora As Double: Dim minut As Double: Dim secunde As Double Private Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long Private Type POINTAPI X As Long Y As Long End Type Private pnt As POINTAPI Private Sub Boton_Abrir_Click() Call ap End Sub Private Sub ap() On Error GoTo manejar_errores MSComm1.CommPort = nro_puerto MSComm1.Settings = Str$(velocidad) + ",N,8,1" MSComm1.PortOpen = True Etiq_Puerto.Caption = "COM" + Str$(nro_puerto) + ":" Etiq_Velocidad.Caption = Str$(velocidad) + " bauds" Etiq_Estado.ForeColor = &HFF00& Etiq_Estado.Caption = "Abierto"

manejar_errores: MsgBox ("Error al intentar abrir COM" + Str$(nro_puerto)) MsgBox ("Error detectado por Visual Basic: " + Err.Description) Resume Salir
74

Salir: End Sub Private Sub Boton_Cerrar_Click() Call cp End Sub Private Sub cp() On Error GoTo manejar_errores MSComm1.PortOpen = False Etiq_Estado.ForeColor = &HFF& Etiq_Estado = "CERRADO" GoTo Salir

'Rojo

manejar_errores: MsgBox ("Error al intentar cerrar COM" + Str$(nro_puerto)) MsgBox ("Visual basic detect: " + Err.Description) Resume Salir Salir: End Sub Sub cerrarpto() On Error GoTo manejar_errores MSComm1.PortOpen = False MsgBox ("Puerto COM" + Str$(nro_puerto) + ": cerrado OK") Etiq_Estado.ForeColor = &HFF& Etiq_Estado = "CERRADO" GoTo Salir manejar_errores: MsgBox ("Error al intentar cerrar COM" + Str$(nro_puerto)) MsgBox ("Visual basic detect: " + Err.Description) Resume Salir Salir: End Sub Private Sub Command2_Click() Label2.Caption = Time End Sub Private Sub Bt_Abrir_Click() Dim IniFile As String If Combo1 = "" Then Exit Sub

75

On Error Resume Next ComDlg.ShowOpen IniFile = ComDlg.FileName If IniFile = "" Then Exit Sub End If p_txthoras = GetIniString(Combo1, "Real_Hora", "", IniFile) p_txtminutos = GetIniString(Combo1, "Real_Min", "", IniFile) p_txtsegundos = GetIniString(Combo1, "Real_Seg", "", IniFile) r_TxtHoras = GetIniString(Combo1, "Ret_Hora", "", IniFile) r_TxtMinutos = GetIniString(Combo1, "Ret_Min", "", IniFile) r_txtsegundos = GetIniString(Combo1, "Ret_Seg", "", IniFile) i_TxtHoras = GetIniString(Combo1, "Int_Hora", "", IniFile) i_TxtMinutos = GetIniString(Combo1, "Int_Min", "", IniFile) i_txtsegundos = GetIniString(Combo1, "Int_Seg", "", IniFile) o_TxtHoras = GetIniString(Combo1, "Obt_Hora", "", IniFile) o_TxtMinutos = GetIniString(Combo1, "Obt_Min", "", IniFile) o_txtsegundos = GetIniString(Combo1, "Obt_Seg", "", IniFile) qdisparos = GetIniString(Combo1, "Cantidad", "", IniFile) End Sub Private Sub Bt_Guardar_Click() Dim IniFile As String If Combo1 = "" Then Exit Sub End If On Error Resume Next ComDlg.ShowSave IniFile = ComDlg.FileName If IniFile = "" Then Exit Sub End If Call WritePrivateProfileString(Combo1, "Real_Hora", p_txthoras, IniFile) Call WritePrivateProfileString(Combo1, "Real_Min", p_txtminutos, IniFile) Call WritePrivateProfileString(Combo1, "Real_Seg", p_txtsegundos, IniFile) Call WritePrivateProfileString(Combo1, "Ret_Hora", r_TxtHoras, IniFile) Call WritePrivateProfileString(Combo1, "Ret_Min", r_TxtMinutos, IniFile) Call WritePrivateProfileString(Combo1, "Ret_Seg", r_txtsegundos, IniFile) Call WritePrivateProfileString(Combo1, "Int_Hora", i_TxtHoras, IniFile) Call WritePrivateProfileString(Combo1, "Int_Min", i_TxtMinutos, IniFile) Call WritePrivateProfileString(Combo1, "Int_Seg", i_txtsegundos, IniFile) Call WritePrivateProfileString(Combo1, "Obt_Hora", o_TxtHoras, IniFile) Call WritePrivateProfileString(Combo1, "Obt_Min", o_TxtMinutos, IniFile) Call WritePrivateProfileString(Combo1, "Obt_Seg", o_txtsegundos, IniFile)
76

Call WritePrivateProfileString(Combo1, "Cantidad", qdisparos, IniFile) End Sub Private Sub Bt_Stop_Click() Timer1.Enabled = False Timer3.Enabled = False Timer2.Enabled = False Call Bloquear(False) p_txthoras.Text = "0" p_txtminutos.Text = "0" p_txtsegundos.Text = "0" r_TxtHoras.Text = "0" r_TxtMinutos.Text = "0" r_txtsegundos.Text = "1" i_TxtHoras.Text = "0" i_TxtMinutos.Text = "0" i_txtsegundos.Text = "0" o_TxtHoras.Text = "0" o_TxtMinutos.Text = "0" o_txtsegundos.Text = "1" qdisparos = 1 End Sub Private Sub Combo1_Click() If Combo1.Text = "Hora Real" Then Call HORA_REAL End If If Combo1.Text = "Retardo" Then Call RETARDO End If End Sub Private Sub Command3_Click() Call programt End Sub Sub programt() If Combo1.Text = "Hora Real" Then If p_txthoras >= ora Then r_TxtHoras.Text = p_txthoras.Text - 0 - ora Else r_TxtHoras.Text = 24 + p_txthoras.Text - 1 - ora End If
77

If p_txtminutos >= minut Then r_TxtMinutos.Text = p_txtminutos.Text - 1 - minut Else r_TxtMinutos.Text = 60 + p_txtminutos.Text - minut End If If p_txtsegundos >= secunde Then r_txtsegundos.Text = p_txtsegundos.Text - secunde Else r_txtsegundos.Text = 60 + p_txtsegundos.Text - secunde End If If r_TxtHoras < 0 Then r_TxtHoras = "0" End If If r_TxtMinutos < 0 Then r_TxtMinutos = "0" End If End If End Sub Private Sub Command6_Click() Timer2.Enabled = True End Sub Private Sub Command8_Click() MSComm1.Output = Chr$(5) & vbCrLf End Sub Private Sub Command9_Click() End End Sub Private Sub Form_Load() Combo1.AddItem "Hora Real" Combo1.AddItem "Retardo" r_CmdCuentaAtras.Enabled = False p_txthoras.Enabled = False p_txtminutos.Enabled = False p_txtsegundos.Enabled = False r_TxtHoras.Enabled = False r_TxtMinutos.Enabled = False r_txtsegundos.Enabled = False qdisparos.Enabled = False i_TxtHoras.Enabled = False i_TxtMinutos.Enabled = False
78

i_txtsegundos.Enabled = False o_TxtHoras.Enabled = False o_TxtMinutos.Enabled = False o_txtsegundos.Enabled = False Timer1.Interval = 1000 Timer1.Enabled = False Timer2.Interval = 1000 Timer2.Enabled = False Timer3.Interval = 1000 Timer3.Enabled = False Timer4.Interval = 1000 Timer4.Enabled = True p_txthoras.Text = "0" p_txtminutos.Text = "0" p_txtsegundos.Text = "0" r_TxtHoras.Text = "0" r_TxtMinutos.Text = "0" r_txtsegundos.Text = "1" i_TxtHoras.Text = "0" i_TxtMinutos.Text = "0" o_TxtHoras.Text = "0" o_TxtMinutos.Text = "0" o_txtsegundos.Text = "1" qdisparos = 1 mensajes_cambios = False velocidad = 1200 nro_puerto = 9600 Combo_Puerto.ListIndex = 0 Combo_Velocidad.ListIndex = 0 Check_Salto_Carro.Value = 1 incluye_salto_carro = True mensajes_cambios = False MSComm1.InputLen = 0 ' El valor 0 hace que se lea todo MSComm1.RThreshold = 1 MSComm1.SThreshold = 1 Etiq_Estado.ForeColor = &HFF& 'Rojo Etiq_Estado.Caption = "Cerrado" End Sub Sub HORA_REAL() r_CmdCuentaAtras.Enabled = True
79

p_txthoras.Enabled = True p_txtminutos.Enabled = True p_txtsegundos.Enabled = True r_TxtHoras.Enabled = False r_TxtMinutos.Enabled = False r_txtsegundos.Enabled = False qdisparos.Enabled = True i_TxtHoras.Enabled = (qdisparos > 1) i_TxtMinutos.Enabled = (qdisparos > 1) i_txtsegundos.Enabled = (qdisparos > 1) o_TxtHoras.Enabled = True o_TxtMinutos.Enabled = True o_txtsegundos.Enabled = True End Sub Sub RETARDO() r_CmdCuentaAtras.Enabled = True p_txthoras.Enabled = False p_txtminutos.Enabled = False p_txtsegundos.Enabled = False r_TxtHoras.Enabled = True r_TxtMinutos.Enabled = True r_txtsegundos.Enabled = True qdisparos.Enabled = True i_TxtHoras.Enabled = (qdisparos > 1) i_TxtMinutos.Enabled = (qdisparos > 1) i_txtsegundos.Enabled = (qdisparos > 1) o_TxtHoras.Enabled = True o_TxtMinutos.Enabled = True o_txtsegundos.Enabled = True End Sub Private Sub KeyNum(keyascii As Integer) If keyascii = 8 Then Exit Sub If Chr(keyascii) < "0" Or Chr(keyascii) > "9" Then keyascii = 0 End If End Sub Private Sub Frame2_DragDrop(Source As Control, X As Single, Y As Single) End Sub Private Sub i_TxtHoras_Validate(Cancel As Boolean) If ValidarDato(i_TxtHoras, 23) = False Then Cancel = True
80

End If End Sub Private Sub i_TxtMinutos_Validate(Cancel As Boolean) If ValidarDato(i_TxtMinutos, 59) = False Then Cancel = True End If End Sub Private Sub i_txtsegundos_Validate(Cancel As Boolean) If ValidarDato(i_txtsegundos, 59) = False Then Cancel = True End If End Sub Private Sub o_TxtHoras_Validate(Cancel As Boolean) If ValidarDato(o_TxtHoras, 23) = False Then Cancel = True End If End Sub Private Sub o_TxtMinutos_Validate(Cancel As Boolean) If ValidarDato(o_TxtMinutos, 59) = False Then Cancel = True End If End Sub Private Sub o_txtsegundos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub o_txtHoras_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub o_txtminutos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub o_txtsegundos_Validate(Cancel As Boolean) If ValidarDato(o_txtsegundos, 59) = False Then Cancel = True End If End Sub

81

Private Sub p_txthoras_Validate(Cancel As Boolean) If ValidarDato(p_txthoras, 23) = False Then Cancel = True End If End Sub Private Sub p_txtminutos_Validate(Cancel As Boolean) If ValidarDato(p_txtminutos, 59) = False Then Cancel = True End If End Sub Private Sub qdisparos_Validate(Cancel As Boolean) Dim nDisparos As Integer nDisparos = Val(qdisparos) If nDisparos < 1 Then qdisparos.BackColor = vbYellow qdisparos.ToolTipText = "Valor mayor que uno." Cancel = True Else qdisparos.BackColor = vbWindowBackground i_TxtHoras.Enabled = (nDisparos > 1) i_TxtMinutos.Enabled = (nDisparos > 1) i_txtsegundos.Enabled = (nDisparos > 1) End If End Sub Private Sub r_txthoras_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub r_TxtHoras_Validate(Cancel As Boolean) If ValidarDato(r_TxtHoras, 23) = False Then Cancel = True End If End Sub Private Sub r_txtminutos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub r_TxtMinutos_Validate(Cancel As Boolean) If ValidarDato(r_TxtMinutos, 59) = False Then Cancel = True End If
82

End Sub Private Sub r_txtsegundos_Validate(Cancel As Boolean) If ValidarDato(r_txtsegundos, 59) = False Then Cancel = True End If End Sub Private Sub r_txtsegundos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub p_txthoras_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub p_txtminutos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub p_txtsegundos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub i_txthoras_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub i_txtminutos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub i_txtsegundos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub qdisparos_KeyPress(keyascii As Integer) Call KeyNum(keyascii) End Sub Private Sub r_CmdCuentaAtras_Click() If Validar() = False Then MsgBox "Parmetros invlidos.", vbExclamation Exit Sub End If If p_txthoras <> "00" Or p_txtminutos <> "00" Or p_txtsegundos <> "00" Then
83

Call programt End If mi_txthoras = i_TxtHoras.Text mi_txtminutos = i_TxtMinutos.Text mi_txtsegundos = i_txtsegundos.Text mo_txtminutos = o_TxtMinutos.Text mo_txtsegundos = o_txtsegundos.Text If Combo1.Text = "Hora Real" Then Timer1.Enabled = True Else Timer1.Enabled = True End If If i_TxtHoras = "0" And i_TxtMinutos = "0" And i_txtsegundos = "0" Then Timer3.Enabled = True Call cantobtu i_TxtHoras = "0": i_TxtMinutos = "0": i_txtsegundos = "0" End If Call condbasic Call Bloquear(True) End Sub Private Sub r_CmdStop_Click() End Sub Private Sub Timer1_Timer() If r_TxtHoras = "" Then: r_TxtHoras = 0 If r_TxtMinutos = "" Then: r_TxtMinutos = 0 If r_txtsegundos = "" Then: r_txtsegundos = 1 r_txtsegundos = r_txtsegundos - 1 If CInt(r_TxtHoras) = 0 And CInt(r_TxtMinutos) = 0 And CInt(r_txtsegundos) = 0 Then Call cantdisp Timer1.Enabled = False Else If CInt(r_txtsegundos) = -1 Then r_txtsegundos = 59 r_TxtMinutos = r_TxtMinutos - 1 End If End If
84

r_txtsegundos = Format(r_txtsegundos, "00") End Sub Private Sub r_TxtMinutos_Change() If CInt(r_TxtMinutos) = -1 Then r_TxtMinutos = 59 r_TxtHoras = r_TxtHoras - 1 r_TxtHoras = Format(r_TxtHoras, "00") End If End Sub Sub cantdisp() For i = 1 To qdisparos.Text Timer2.Enabled = True If i_TxtHoras = "0" And i_TxtMinutos = "0" And i_txtsegundos = "0" Then Timer2.Enabled = False End If If qdisparos.Text = 1 Then i_TxtHoras.Enabled = False i_TxtMinutos.Enabled = False i_txtsegundos.Enabled = False Timer2.Enabled = False Timer3.Enabled = True Picture1.Visible = True If MSComm1.PortOpen = False Then Call ap End If End If Next End Sub Sub condbasic() If Len(qdisparos.Text) = 0 Then qdisparos.Text = 1 End If End Sub Sub cantobtu() Picture1.Visible = True If MSComm1.PortOpen = False Then Call ap End If

85

Timer3.Enabled = True Call i_memotime Call o_memotime Call cantdisp End Sub Private Sub Timer2_Timer() If i_TxtHoras = "" Then: i_TxtHoras = 0 If i_TxtMinutos = "" Then: i_TxtMinutos = 0 If i_txtsegundos = "" Then: i_txtsegundos = 1 i_txtsegundos = i_txtsegundos - 1 If CInt(i_TxtHoras) = 0 And CInt(i_TxtMinutos) = 0 And CInt(i_txtsegundos) = 0 Then Call cantobtu Timer2.Enabled = False Else If CInt(i_txtsegundos) = -1 Then i_txtsegundos = 59 i_TxtMinutos = i_TxtMinutos - 1 End If End If i_txtsegundos = Format(i_txtsegundos, "00") End Sub Private Sub i_TxtMinutos_Change() If CInt(i_TxtMinutos) = -1 Then i_TxtMinutos = 59 i_TxtHoras = i_TxtHoras - 1 i_TxtHoras = Format(i_TxtHoras, "00") End If End Sub Private Sub Timer3_Timer() If o_TxtHoras = "" Then: o_TxtHoras = 0 If o_TxtMinutos = "" Then: o_TxtMinutos = 0 If o_txtsegundos = "" Then: o_txtsegundos = 1 o_txtsegundos = o_txtsegundos - 1 If CInt(o_TxtHoras) = 0 And CInt(o_TxtMinutos) = 0 And CInt(o_txtsegundos) = 0 Then Call cantobtu Picture1.Visible = False Call cp

86

Form1.Refresh If qdisparos > 0 Then qdisparos = qdisparos - 1 End If Timer3.Enabled = False Else If CInt(o_txtsegundos) = -1 Then o_txtsegundos = 59 o_TxtMinutos = o_TxtMinutos - 1 End If End If o_txtsegundos = Format(o_txtsegundos, "00") End Sub Private Sub o_TxtMinutos_Change() If CInt(o_TxtMinutos) = -1 Then o_TxtMinutos = 59 o_TxtHoras = o_TxtHoras - 1 o_TxtHoras = Format(o_TxtHoras, "00") End If End Sub Sub i_memotime() i_TxtHoras.Text = mi_txthoras i_TxtMinutos.Text = mi_txtminutos i_txtsegundos.Text = mi_txtsegundos End Sub Sub o_memotime() o_TxtHoras.Text = mo_txthoras o_TxtMinutos.Text = mo_txtminutos o_txtsegundos.Text = mo_txtsegundos End Sub Private Sub MSComm1_OnComm() Dim envio As Boolean envio = False If MSComm1.CommEvent = comEvReceive Then Texto_Recibido.Text = Texto_Recibido.Text + MSComm1.Input End If If MSComm1.CommEvent = comEvSend Then Texto_Mensajes = "Se envi texto"
87

End If End Sub Private Sub Combo_Puerto_Click() Dim viejo_puerto As Integer viejo_puerto = nro_puerto nro_puerto = Combo_Puerto.ListIndex nro_puerto = Combo_Puerto.ItemData(nro_puerto) If (nro_puerto <> viejo_puerto) And (mensajes_cambios = True) _ Then MsgBox "Debe abrir este puerto antes de usarlo" End Sub Private Sub Combo_Velocidad_Click() Dim vieja_velocidad As Integer vieja_velocidad = velocidad velocidad = Combo_Velocidad.ListIndex velocidad = Combo_Velocidad.ItemData(velocidad) If (vieja_velocidad <> velocidad) And (mensajes_cambios = True) _ Then MsgBox "Cambi la velocidad. Si el puerto ya estaba abierto," _ + Chr$(13) + " debe cerrarlo y luego abrirlo antes de usarlo" End Sub Private Sub Timer4_Timer() timp = Format(Time, "hh:mm:ss") ora = Val(Left(timp, 2)) minut = Val(Mid(timp, 4, 2)) secunde = Val(Right(timp, 2)) Label2.Caption = timp End Sub Private Function ValRango(ByVal Value As Integer, ByVal Lo As Integer, ByVal Hi As Integer) As Boolean End Function Private Function Validar() As Boolean Validar = Fals If ValRango(Val(p_txthoras), 0, 23) = False Then Exit Function If ValRango(Val(p_txtminutos), 0, 59) = False Then Exit Function If ValRango(Val(p_txtsegundos), 0, 59) = False Then Exit Function If ValRango(Val(r_TxtHoras), 0, 23) = False Then Exit Function If ValRango(Val(r_TxtMinutos), 0, 59) = False Then Exit Function If ValRango(Val(r_txtsegundos), 0, 59) = False Then Exit Function If ValRango(Val(i_TxtHoras), 0, 23) = False Then Exit Function
88

If ValRango(Val(i_TxtMinutos), 0, 59) = False Then Exit Function If ValRango(Val(i_txtsegundos), 0, 59) = False Then Exit Function If ValRango(Val(o_TxtHoras), 0, 23) = False Then Exit Function If ValRango(Val(o_TxtMinutos), 0, 59) = False Then Exit Function If ValRango(Val(o_txtsegundos), 0, 59) = False Then Exit Function If ValRango(Val(qdisparos), 1, 999) = False Then Exit Function Validar = True End Function Private Sub Bloquear(ByVal bLock As Boolean) p_txthoras.Locked = bLock p_txtminutos.Locked = bLock p_txtsegundos.Locked = bLock r_TxtHoras.Locked = bLock r_TxtMinutos.Locked = bLock r_txtsegundos.Locked = bLock i_TxtHoras.Locked = bLock i_TxtMinutos.Locked = bLock i_txtsegundos.Locked = bLock o_TxtHoras.Locked = bLock o_TxtMinutos.Locked = bLock o_txtsegundos.Locked = bLock qdisparos.Locked = bLock r_CmdCuentaAtras.Enabled = Not bLock Bt_Stop.Enabled = bLock End Sub Public Function ValidarDato(tx As TextBox, ByVal valorMax As Integer) As Boolean Dim Valor As Integer Valor = Val(tx) If Valor < 0 Or Valor > valorMax Then tx.BackColor = vbYellow tx.ToolTipText = "Valor entre 0 y " & valorMax ValidarDato = False Else tx.BackColor = vbWindowBackground ValidarDato = True End If End Function

89

ANEXO N 3 HERRAMIENTAS COMPUTACIONALES UTILIZADOS EN EL PROYECTO A.3.1 Proteus. A.3.1.1 Isis. Es la herramienta para la elaboracin avanzada de esquemas electrnicos, que incorpora una librera de ms de 6.000 modelos de dispositivos digitales y analgicos. Es el corazn del entorno integrado Proteus. Es mucho ms que un simple programa de dibujo de esquemas electrnicos por que combina un entorno de diseo de una potencia excepcional con una enorme capacidad de controlar la apariencia de los dibujos Este programa es la herramienta ideal para una rpida realizacin de complejos diseos de esquemas electrnicos destinados tanto a la construccin de equipos electrnicos como a la realizacin de tareas de simulacin y prueba. Adems, se encontrar en Isis una herramienta excepcional para la realizacin de atractivos esquemas electrnicos destinados a su publicacin en libros, manuales o documentos tcnicos. Posibilita adems la configuracin del estilo aplicado a cada dibujo en formas de plantillas de estilo. Esta capacidad es especialmente potente para aquellas empresas que aplican un diseo propio a todas sus realizaciones. La capacidad de utilizar plantillas de estilo en Isis incluye a los elementos incluidos en la librera de componentes, con lo que es muy sencillo lograr que stos tengan el mismo aspecto visual que se ha elegido para ser nuestro diseo estndar. Por todo ello, Isis se convierte en una herramienta ideal para su uso con fines de elaboracin de libros, revistas cientficas, manuales de usuario y documentacin de proyectos. En la figura A.1 se muestra la ventana de inicio del programa ISIS.

90

Figura A.1 Vista principal programa ISIS. A.3.1.2 Ares. Es la herramienta para la elaboracin de placas de circuito impreso con posicionador automtico de elementos y generacin automtica de pistas, que permite el uso de hasta 16 capas. Con ARES el trabajo duro de la realizacin de placas electrnicas recae sobre el PC en lugar de sobre el diseador. En la figura A.2 se muestra la ventana de inicio del programa ARES. Ares es la herramienta de la suite Proteus dedicada al diseo de placas de circuito impreso (PCB). Est plenamente integrada con la herramienta Isis. Una vez diseado en Isis el esquema electrnico, se genera automticamente la lista de redes (NETLIST). Una red es un grupo de pines interconectados entre s y la lista de redes es una lista con todas las redes que forman el diseo. Ares es capaz de recibir esta lista de redes para disear, a partir de ella, la de circuito impreso. De esta forma es posible asegurar que la placa tendr unidos entre s los pines de forma idntica a como ha definido en el esquema electrnico. Cualquier modificacin que realice al esquema, podr ser reenviado desde Isis a Ares donde aparecern resaltados los cambios que se hayan producido. De esta forma la modificacin y rediseo de la placa se realizar de forma mucho ms simple y segura. Al igual que Isis era capaz de enviar su listas de redes a programas de terceras partes, tambin Ares es capaz de importar listas de redes procedentes de otros programas que utilicen los formatos estndar Tango o Multiwire.
91

Figura A.2 Ventana de inicio programa ARES.

A.3.1.3 Caractersticas generales del programa Proteus. Entorno de diseo grfico de esquemas electrnicos (ISIS) extremadamente fcil de utilizar y dotado de poderosas herramientas para facilitar el trabajo del diseador. Entorno de simulacin prospice mixto entre el estndar SPICE3F5 y la tecnologa exclusiva de Proteus de Modelacin de Sistemas Virtuales (VSM) Entorno de diseo de placas de circuito impreso (ARES) de ultra-altas prestaciones con bases de datos de 32 bits, posicionador automtico de elementos y generacin automtica de pistas con tecnologas de autocorte y regeneracin. Moderna y atractiva interfaz de usuario estandarizado a lo largo de todas las herramientas que componen el entorno PROTEUS. Ejecutable en los diferentes entornos Windows: 98, Me, 2000, XP,2007. Herramienta de mximas prestaciones, basadas en los ms de 15 aos de continuo desarrollo y presencia en el mercado.

92

A.3.2 PIC C Compiler. A.3.2.1 Entorno. El PIC C Compiler fue desarrollado para cumplir con las especificaciones del lenguaje ANSI C. El compilador produce tres tipos de archivos. Archivos con extensin .hex que le permitir grabar el programa ejecutable en el PIC por medio del uso de un programador. El archivo con extensin .asm contendr un listado en assembler del programa compilado con la informacin del mapeo de memoria. Estos archivos son muy tiles para la depuracin de los programas y para determinar la cantidad de pasos de programas (ciclos de ejecucin) tiene la aplicacin. Los archivos con extensin .pre contienen la informacin preprocesada del programa, #defines, #includes, etc. La cual es expandida y guardada en el archivo. Es el producto ideal para aquellas personas que le gusta desarrollar en bajo nivel con los recursos de un lenguaje de alto nivel como el C. Se recomienda ser utilizado por personas vinculadas con la programacin y sintaxis de C. Beneficios Est basado en el ANSI C. Soporte completo de la familia de microcontroladores PIC de 14 bit. Salida Assembly. Industry standard Intel Hex 8 bit Merged format (INHX8M). Soporta interrupciones. Tipos de datos 8 y 16 bit - int, char, long, pointers, unsigned, etc. Insercin de cdigo asembler asm( ). Todos los operadores aritmticos incluyendo multiplicacin, divisin, mdulo y otros. Las variables y funciones no utilizadas son borradas automticamente. Reutilizacin de RAM. Instrucciones simples en castellano. Dispositivos soportados: 16F84, 16C83, 16C554, 16C556, 16C558, 16C61, 16C62, 16C620, 16C621, 16C622, 16C63, 16C64, 16C641, 16C642, 16C65, 16C66, 16C661, 16C662, 16C67, 16C71, 16C710, 16C711, 16C715, 16C72, 16C73, 16C74, 16C76, 16C77, 16C9xx, 14C000, 16CE623, 16CE624, 16CE625, 12C671, 12C672, 12C673, 12C674, 16F873, 16F874, 16F876, 16F877. Notas de aplicaciones:

93

A.3.2.2 Compilador. Los lenguajes ms extendidos son el ASM, Basic y C, aunque tambin se pueden encontrar para lenguajes de programacin basados en objetos, como son C++ y java, aunque estos compiladores no estn lo suficientemente desarrollados y optimizados como para que puedan ser considerados como opcin vlida para el desarrollo de una aplicacin de este tipo. El lenguaje de programacin elegido para este proyecto ha sido el C. Se ha elegido por su facilidad para la realizacin de tareas complejas, a diferencia de lo que ocurre en ASM, por lo compacto del cdigo generado y lo comprensible que resulta. Cada vez los compiladores de C estn ms optimizados, llegando en ocasiones a generar cdigos tanto o ms compactos que los desarrollados puramente en ASM. Una vez determinado el lenguaje de programacin con el que se va a trabajar, en este caso el C, el siguiente paso es seleccionar el compilador. Es posible encontrar una amplia gama de compiladores, unos gratuitos como puede ser el C18, realizado por la empresa Microchip y otro de pago, como PICC de la empresa Hi-Tech o CSCC de la empresa CCS. El compilador elegido para este proyecto es el de la empresa Hi-Tech. Soporta a toda la familia de PICs y prximamente tambin a los DsPIC. Ha sido elegido por su gran compactacin del cdigo generado y por su alta difusin en el mundo de la enseanza. Se puede adquirir una versin de prueba gratuita, con ciertas limitaciones con respecto a la versin completa. A.3.2.3 Entorno del programa. En la figura A.3 se muestra el aspecto que tiene el programa PCW:

Figura A.3 Vista principal del compilador PCW.


94

En la figura A.4 se muestra el editor de cdigo del progama PCW. Una vez ejecutado, se crea un nuevo fichero o se abre uno ya creado. Como ya se ha comentado, es un compilador de C y, por lo tanto, la extensin de dichos archivos es *.c.

Figura A.4 Editor de cdigo. Una vez escrito el cdigo hay que compilarlo para crear el archivo. HEX que se necesita para grabar el programa en el PIC. Adems, el compilador crea otros archivos como el ERR, SYM, LST, COF, PJT, TRE y STA, destinados a otros usos. Para compilar el cdigo se ha de pulsar el cono Compile, o simplemente pulsando el botn F9. Cuando ha finalizado la compilacin y no ha habido ningn error en el cdigo, el entorno presenta en la figura A.5 el siguiente aspecto:

95

Figura A.5 Editor de cdigo con ventana de compilacin.

96

A.3.3 TOP MAX. A.3.3.1 Descripcin. Para la utilizacin de Top Max, el paquete estndar le permite conectar su PC a travs de cualquier puerto paralelo sin necesidad de ninguna tarjeta especial. A.3.3.2 Caractersticas. * Zcalo ZIF 48 patillas DIP. * Programa: EPROM / EEPROM / BPROM, MONOCHIP / PAL / GAL-EPLD/ PRO Serie. * Acepta todos los formatos DIP,PLCC,TSOP... * Comprobacin de la buena insercin de componentes. * Comprobacin de TTL (series 54 / 74S / LS / L / H / HC / HCT), CMOS (serie 40, 45) DRAM (4164 - 1Mbit), SRAM (6116 - 6256), vectores PLD. * Programacin ultra-rpida. * Funcionamiento por puerto paralelo. * Programa componentes de bajo voltaje. * Funciona bajo DOS y WINDOWS. A.3.3.3 Componentes soportados. - EPROM (series 27xxx, 27Cxxx de 16Kbit 32Mbit) - EEPROM (series 27EExxx, 28xxx et 28Cxxx) - Flash EPROM (256Kbit 32Mbit, series 28Fxxx, 29Fxxx, 29Cxxx, 29BVxxx, 29LVxxx, 29Wxxx, 49Fxxx) - Serial E(E)PROM (24Cxx, 24Fxx, 25Cxx, 59Cxx, EPC1/1213/1648 et93Cxx) - BPROM (27Sxx, 7Cxx, 71xx, 74Sxx, 87Sxx, 82Sxx) - Dallas NV RAM (series DS12xx, DS13xx, DS15xx, DS16xx) - PAL/PALCE/GAL (serie 16V8, 20V8, 22V10, 20RA10, 26V12) - PEEL (series 153, 173, 253, 273, 18CV8, 20CG10) - EPLD (series PLCxxx, PLSxxx, PLUSxxx, EPxxx, EPMxxx, PLDxxx, 5Cxxx, 85Cxxx) - SPLD/CPLD (ATF16/20/22/Vxx, ATV750/1500/2500) - MACH (series MACH1xx/2xx/4xx et xxx-SP) - MAX (series MAX5000, MAX7000) - Microcontroladores (series 8741,8742,8748,8749), sries 89Cxx, 89Sxx, 89LVxx, 89Cxxx, 87C751/752, series ST62xx - EPLD (series XC72xx, XC73xx)
97

- PSD (series PSD3xx, PSD4xx, PSD5xx) - PIC (series PIC12xxx, PIC16xxx, PIC17xxx) - Microcontroladores Motorola (series MC68705, MC68HC705, MC68HC711, MC68HC811) - Microcontroladores Zilog (series Z86Cxx, Z86Exx)

A.3.3.4 Proceso de grabacin del microcontrolador.

Figura A.6

Programador Topmax para PIC (de cualquier tipo).

En la figura A.6 se ve el programador TOPMAX en el cual se debe insertar el microcontrolador a utilizar. Para hacer la programacin se debe crear el archivo que contenga la rutina especfica a realizar. La programacin de ste debe hacerse en un programa especial para luego abrir el programa en el TOPMAX. Una vez descargado el archivo del programa en formato .HEX, se abre con el Max Loader, tal como se muestra en la figura A.7.

98

Figura A.7 Ventana inicio Max Loader. Una vez abierto el archivo, se debe proceder a borrar el contenido del microcontrolador para cargar el programa nuevo. Para ello se hace click tal como lo indican los nmeros de la figura A.8.

Figura A.8 Secuencia de grabacin del microcontrolador. Primero hacer click en el cono Erase, que borra todo el contenido que hay en el microcontrolador antes de ser nuevamente utilizado. Luego Verify, como su nombre lo indica, verifica que el microcontrolador est en buen estado (si les lanza un error es normal). Despus hacer click en el cono Prog. que graba el archivo que se quiere colocar en el microcontrolador. Finalmente hacer click nuevamente en Verify, que n este caso debiese lanzar un OK. Ahora que ya se tiene el microcontrolador programado se procede a la implementacin del circuito.
99

A.3.4 PCBWiz. La implementacin del circuito en una placa PCB es la manera ptima para crear un circuito abarcando el mnimo espacio posible, con la ventaja de poder dar forma a esta placa. Antes de proceder al diseo del circuito impreso final, antes se crea un circuito de prueba sobre una placa de topos, para comprobar que la seleccin de los componentes y el diseo del esquema elctrico son correctos. Una vez probada esta placa que sirve de prototipo, y viendo que funciona correctamente, se procede al diseo del PCB. La tarea de la creacin del PCB se puede dividir en dos fases: - Diseo del circuito impreso - Fabricacin y montaje del PCB A.3.4.1 Diseo del circuito impreso. Para empezar, el programa utilizado para crear dicha PCB ha sido PCBWiz, el cual parece ser el ms sencillo de usar y da ms posibilidades y rapidez que otros. Antes que nada, hay que crear el circuito en el editor de esquemticos del PCBWiz. Se van eligiendo los componentes requeridos en el diseo de una extensa lista de componentes que tienen las libreras del PCBWiz por defecto. A la vez que se elige el smbolo del componente, a un lado se muestra el diseo en alzado del encapsulado junto a sus dimensiones para una posterior creacin del layout. Una vez realizado las conexiones convenientes entre los componentes, ya est listo para que el programa vuelque los componentes en el layout, es decir, en la pantalla donde se tendr que organizar los componentes sobre la superficie de la placa PCB a la que se dar forma y tamao. La forma que se ha dado ha sido rectangular, por la sencillez y por tener menos trabajo a la hora de recortar la placa despus. Tanto la colocacin de los componentes como el recorrido de las pistas se realizarn de forma que se puedan conseguir los siguientes objetivos: - Minimizar la longitud de las pistas. - Minimizar el nmero de pistas. - Facilitar el soldado de los componentes. El elemento central del diseo es el microcontrolador, el emplazamiento del resto de los componentes depender de l, hacindose en funcin de la conexin de cada uno de estos elementos con el microcontrolador y poniendo especial atencin a los interruptores, de forma que se pueda acceder a ellos con facilidad. En la figura A.9 se muestra la ventana de inicio del programa PCB Wizard.

100

Figura A.9 Ventana de inicio del programa PCB Wizard.

101

A.3.5 VISUAL BASIC. A.3.5.1 Interfaz PC dispositivo. Existen diferentes tipos de conexiones: 1) Puerto paralelo 2) Puerto PS/2 3) IrDA 4) Puerto USB Se podra haber usado como interfaz entre el PC y el dispositivo actuador el puerto paralelo del PC, pero ste es un recurso bastante limitado y que normalmente est ocupado por impresoras y scanners Tambin se pudo haber usado un puerto PS/2, pero habitualmente estn ocupados por teclado y mouse, por lo que resultara bastante complicada su implantacin en un sistema domstico normal. El puerto IrDA es un puerto que est experimentando una baja en su uso debido a que est siendo reemplazado por el bluetooth. Por lo tanto, la solucin adoptada es utilizar puerto USB, por que es un puerto muy extendido y hace que la prctica con el PC sea muy fcil para el usuario. Slo se tiene que conectar el dispositivo, instalar un driver que se puede descargar fcilmente de internet y el sistema operativo reconocer el dispositivo. Esto es una buena idea para el lector, ya que dar ms facilidad de utilizacin. Adems, ahora con la aparicin del USB 2.0 se ha convertido en un puerto de comunicacin muy rpido, y no presenta problema de compatibilidad con la cmara. En las figuras A.10 y A.11 se muestran las pginas de inicio del programa Visual Basic y la ventana de comprobacin de la instalacin del puerto USB.

102

Figura A.10 Pgina de inicio del programa Visual Basic.

Figura A.11 Ventana de comprobacin de la correcta instalacin del puerto USB.

103

A.3.5.2 El puerto serie en Windows. En las comunicaciones en serie usando la norma RS232 se debe tomar en cuenta de que la recepcin de un dato ocurre de manera asncrona, es decir, puede ocurrir en cualquier momento. El hardware de la computadora se encarga de interrumpir cualquier proceso que est en ejecucin cuando un nuevo dato llega al puerto. Es posible que el sistema operativo no pueda atender al nuevo dato de entrada, por lo que lo almacena en un buffer que contiene la secuencia de datos que van llegando. Windows se encarga de la gestin de los puertos y es posible acceder a ellos de dos formas: Mediante las funciones de la API de Windows o bien usando el control de comunicaciones de Visual Basic. El mtodo ms recomendado es usar la API de Windows ya que fundamentalmente este sistema operativo es multitarea y es de lo ms conveniente que las aplicaciones no se apropien de los recursos del sistema, es mejor dejar a Windows la tarea de la operacin sobre el puerto. Sin embargo Visual Basic permite manipular las comunicaciones serie por medio de un control llamado Microsoft Comm Control. Mediante este control se gestionan las comunicaciones de manera simple y por medio de propiedades y mtodos tpicos de Visual Basic. Este control se agrega desde la ventana Components de Visual Basic, como se muestra en la figura A.12.

Figura A.12 Ventana de componentes de Visual Basic. Dentro de una aplicacin, este control permite configurar las comunicaciones serie mediante el puerto COM (Visual Basic 6 slo se permite abrir hasta un puerto COM16), el BaudRate, la paridad, el control de flujo, etc.

104

Una secuencia de cmo configurar un puerto en VB puede ser la siguiente: Conexin.ComPort = 5 'Selecciona el puerto COM5 Conexin.Settings = "2400,n,8,1" ' BaudRate =2400, n: sin paridad, 8 bits de 'informacin, 1 bit de parada Conexin.PortOpen = Trae ; Abre el puerto

105

ANEXO N 4 MATERIALES UTILIZADOS EN EL PROYECTO A.4.1 Pantalla LCD. A.4.1.1 Caractersticas generales de una pantalla LCD. Consumo muy reducido, del orden de 7,5 mW. Pantalla de caracteres ASCII, adems de los caracteres japons. Las pantallas de cristal lquido o display LCD (Liquid Crystal Display) para mensajes tienen la capacidad de mostrar cualquier carcter alfanumrico, permitiendo representar la informacin que genera cualquier equipo electrnico de una manera fcil y econmica. La pantalla consta de una matriz de caracteres (normalmente de 5x7 puntos) distribuidos en una, dos, tres o cuatro lneas de 16 hasta 40 caracteres cada lnea. El proceso de visualizacin es gobernado por un microcontrolador incorporado a la pantalla, siendo el Hitachi 44780 el modelo ms utilizado. Para este proyecto se utiliz la pantalla de 16 caracteres y 2 lneas (16x2), con caracteres griegos y smbolos matemticos. Desplazamiento de los caracteres hacia la izquierda o a la derecha. Memoria de 40 caracteres por lnea de pantalla, visualizaciones 16 caracteres por lnea. Movimiento del cursor y cambio de su aspecto. Luminosidad incorporada. Esto sirve para su utilizacin durante la noche. Pueden ser gobernados de dos formas principales: o Conexin con bus de 4 bits. o Conexin con bus de 8 bits.

106

A.4.1.2 Patillaje. Las pantallas de 16x2 tienen 14 pines. Se conectan de forma fcil a cualquier sistema microcontrolador, tal como se muestra en la figura A.13:

Figura A.13 Patillaje de la pantalla LCD.

En la figura A.14 se muestra en un esquema la asignacin de los pines de la pantalla LCD:

Figura A.14

Esquema de asignacin de los pines de la pantalla LCD.

107

A.4.1.3 DDRAM. Este modelo posee una zona de memoria RAM llamada DDRAM (Data Display Ram) donde se almacenan los caracteres que se pueden representar. Tiene una capacidad de 80 byte, 40 por cada lnea, de los cuales slo 32 se pueden visualizar a la vez (16 bytes por lnea). La DDRAM almacena los cdigos ASCII de los caracteres que aparecern, en pantalla y existe una correspondencia entre las filas de pantalla y las posiciones consecutivas de memoria. De las 80 posibles, las dos direcciones ms importantes de la DDRAM son: Direccin 00h, que es el comienzo de la primera lnea. Direccin 40h, que es el comienzo de la segunda lnea. A.4.1.4 Modos de funcionamiento. Esta pantalla tiene tres modos de funcionamiento principales: Modo Comando. Cuando por el bus de datos el LCD recibe instrucciones como Borrar Display, Mover Cursor, Desplazar a izquierda, etc. Para trabajar en modo comando, el pin RS debe estar a 0. El pin R/W tambin debe ser 0 para indicar que se est realizando una operacin de escritura. Una operacin en este modo tarda un mximo de 1,64 ms. Modo Carcter o Dato. Cuando por el bus de datos el visualizador LCD recibe un carcter a escribir de la DDRAM. Es decir, cuando se enva al LCD el carcter ASCII a visualizar. Para trabajar en este modo, el pin RS debe estar a 1. El pin R/W debe ser 0 para indicar que est realizando una operacin de escritura. Tambin se le puede llamar modo carcter o modo registro. Una operacin en este modo tarda un mximo de 40 us. Modo lectura del Busy flag o LCD Ocupada. En el bit 7 del bus de dato el LCD informa al microcontrolador de que est ocupado, (este bit es denominado Busy Flag). Para ello se lee el bus de dato con RS=0 y R/W=1, si el bit 7 del bus de dato es 1 indica que la pantalla LCD est ocupada realizando operaciones internas y no puede aceptar nuevas instrucciones ni datos. Hay que esperar a que el Busy Flag sea 0 para enviarle la siguiente instruccin de carcter.

108

A.4.2 Comunicacin microcontrolador-PC. En la figura A.15 se muestra la configuracin interna de un puerto USB. Consta de un VBUS, que es el voltaje que alimenta un dispositivo desde el PC. Consta adems de un cable tierra (GND) y de 2 cables (D+ y D-) que sirven para el envo y la recepcin de datos.

Figura A.15 Esquema de tipo de cable USB utilizado. Los datos se transmiten de forma balanceada a velocidades entre 1,5 Mbps y 12 Mbps. La seal se transmite codificada en un cdigo de lnea de no retorno a cero invertido (NRZI) para poder incluir junto con los datos informacin de sincronizacin. Las lneas de alimentacin (Vbus y GND) evitan la necesidad de utilizar fuentes de alimentacin externas. Tiene una tensin de 5 V y la corriente se limita a un mximo de 500 mA por razones de seguridad, siendo el consumo y la configuracin elctrica totalmente transparente al usuario. La distancia entre dos perifricos conectados al mismo cable no debe ser superior a 5 metros para evitar problemas de cadas de tensin. Al comienzo se detectan los dispositivos conectados midiendo los niveles de voltaje de las lneas. Si un dispositivo est conectado, entonces el dispositivo enva informacin sobre el tipo o clase a la que pertenece, qu modo de transferencia utilizar y cules son sus necesidades de ancho de banda. El aspecto real de los cables USB es el siguiente, como aparece en la figura A.16, siendo el conector de la izquierda del tipo A y el de la derecha del tipo B.

Figura A.16

Conectores tipo A (izquierda) y tipo B (derecha) del cable USB.

Y ste (figura A.17) es el esquema del cabezal de los dos tipos de conectores USB, del tipo A a la izquierda y del tipo B a la derecha:

Figura A.17 Vista alzada y frontal del conector macho USB de los dos tipos.
109

Y por ltimo la vista frontal de los conectores USB macho (a la izquierda) y de los conectores USB hembra (a la derecha), como aparece en la figura A.18:

Figura A.18

Vista frontal de los conectores USB macho y hembra de los dos tipos.

Los conectores macho suelen ir en los dispositivos porttiles que vayan a conectarse al hardware del PC, y el que est en el PC es el conector hembra. El dispositivo del proyecto lleva incorporado un conector hembra del tipo B en la placa. El motivo de ser hembra es por que no venden conectores macho que se suelden a placa. Y el motivo por el que es de tipo B es por que ocupa menos espacio superficial en el PCB que el tipo A, y es ms robusto y se engancha mejor en la placa. A continuacin, en la tabla 8 se mostrar las caractersticas elctricas del puerto USB:

Tabla 8 Parmetros elctricos del puerto USB. Lo que hacen estos adaptadores es emular un puerto serie RS232 mediante el puerto USB Estos adaptadores vienen con un software que una vez instalado crea un puerto serie (COM) virtual a travs del puerto USB. En la ventana de administrador de dispositivos de Windows, accesible desde el panel de control/Sistema se muestran los puertos COM y, previa instalacin del controlador, se observa el puerto Prolific USB-to Serial Comm Port, en este caso asignado como el COM10. El nmero de COM que se le asigna a este puerto se configura automticamente en la instalacin pero se puede cambiar a cualquier otro que est disponible hasta 256, basta con ver las propiedades de ese puerto dando doble clic sobre el COM y posteriormente modificar el nmero. No puede haber dos puertos con el mismo nmero. De esta manera se puede intercambiar informacin entre una PC y un dispositivo externo que utilice la norma RS232 mediante el puerto USB.

110

A.4.2.1 Patillaje puerto serie y puerto USB. Debido a que se trabajar con algunos pines del puerto de serie, se detallar en la figura A.19 las caractersticas del patillaje del puerto: Puerto Serie Puerto USB

Puerto Serie Seal 1 2 3 4 5 6 7 8 9 CD Tx Rx DTR GND DSR RTS CTS RI Puerto USB Seal 1 2 3 4 +5VDC USBDM USBDP GND

Figura A.19 Caractersticas de los pines del puerto serie y del puerto USB. A.4.2.1.1 Caractersticas del patillaje del cable DB9. Nmero de clavija Nombre 1 CD: Detector de transmisin. 2 RXD: Recibir datos. 3 TXD: Transmitir datos. 4 DTR: Terminal de datos lista. 5 GND: Seal de tierra. 6 DSR: Ajuste de datos listo. 7 RTS: Permiso para transmitir. 8 CTS: Listo para enviar. 9 RI: Indicador de llamada. Proteccin. Para la comunicacin entre el programa y el dispositivo se pueden utilizar slo tres patillas del puerto serie RS232. stas son: Pin de transmisin (TXD). Pin de recepcin (RXD).
111

Pin de masa (GND). Para efectos del proyecto slo ser necesario ocupar el pin de transmisin (TXD) debido a que solamente se va a controlar la cmara a travs del software. Para probar que efectivamente hay conexin entre el puerto COM y el dispositivo es necesario agregar otra patilla, que para el proyecto se utilizar la patilla 4 (DTR) la cul indicar con un LED si hay comunicacin o no.

112

ANEXO N 5 DISEO DEL CIRCUITO A TRAVES DEL PROGRAMA PCBWiz La implementacin del circuito en una placa PCB es la manera ptima para crear un circuito abarcando el mnimo espacio posible, con la ventaja de poder dar forma a esta placa. Antes de proceder al diseo del circuito impreso final, se crea un circuito de prueba sobre una placa, para comprobar que la seleccin de los componentes y el diseo del esquema elctrico son correctos. Una vez probada esta placa que sirve de prototipo, y viendo que funciona correctamente, se procede al diseo del PCB. La tarea de la creacin del PCB se puede dividir en dos fases: - Diseo del circuito impreso. - Fabricacin y montaje del PCB. A.5.1 Diseo el circuito impreso. Para empezar, el programa utilizado para crear dicho PCB ha sido el programa PCBWiz. PCBWiz es un programa muy fcil de aprender y fcil de utilizar. Tiene una amplia gama de herramientas que cubren todos los pasos tradicionales de produccin en PCB (diseo de circuitos impresos), incluyendo dibujos esquemticos, capturas esquemticas, ubicacin de componentes y archivos de generacin para producir kits y prototipos. En suma, PCB Wizard es un programa que ofrece una gran cantidad de herramientas inteligentes que permiten que disear circuitos impresos sea muy fcil. Este laboratorio virtual simulador de circuitos electrnicos posee las siguientes caractersticas: Smbolos de circuitos y paquetes de componentes. Herramientas para el diseo de circuitos inteligentes, que unen su circuito automticamente mientras trabaja. Produce la simulacin de circuitos interactivos, tal como si trabajaran en el mundo real. Permite la simulacin realista de ms de 600 componentes ya almacenados en el programa. Posee instrumentos virtuales que incluyen osciloscopios y analizadores lgicos, que ayudan a la investigacin y diseo de circuitos. Tambin tiene multmetros, fuentes de alimentacin y muchos otros instrumentos.
113

Produce la simulacin realista de todos los componentes y si hace algo mal, stos explotarn o se destruirn. Si conecta una lamparita de 12V sobre una fuente de 24V, podr ver en pantalla cmo se quema dicha lmpara. Ofrece publicaciones integradas de textos, grficos y soporte para ortografa y gramtica. La simulacin en tiempo real permite localizar y solucionar fallas.

A.5.1.1 Partes no fsicas. En la figura A.20 se muestra una imagen de cmo debe quedar la placa con la silueta de los componentes electrnicos para despus su futuro conexionado.

Figura A.20 Diseo de la placa con componentes electrnicos.

114

A.5.1.2 Partes fsicas. A continuacin, en la figura A.21, se muestra la placa con los componentes electrnicos ya introducidos. Tambin se muestra el respectivo cableado de estos componentes.

Figura A.21 Diseo de placa con las pistas y los componentes electrnicos introducidos. A.5.1.3 Producto terminado listo para colocar en placa. En la fabricacin del PCB, se necesita el fotolito de la placa diseada anteriormente. Este fotolito se imprime en una hoja transparente preparada para impresoras de tinta de inyeccin. El objetivo es que la parte transparente sea lo ms transparente posible y la parte de las pistas sea lo ms negro y opaco posible, tan opaco que no pase la luz. Es el requisito que se demanda para fabricar el PCB. Este fotolito se enva a fabricar. Una vez creada el PCB se procede a una inspeccin visual para detectar posibles defectos de fabricacin y se comprobarn mediante un multmetro las conexiones. El soldado de los componentes se realiza de forma manual mediante un soldador de montaje superficial. Terminada la soldadura de los componentes, se realiza una inspeccin de las conexiones mediante un multmetro para comprobar que no existen cortocircuitos entre las seales y que cada pata de los componentes est correctamente soldada. En la figura A.22 se muestra la parte trasera del fotolito final.

115

Figura A.22 Diseo de la parte trasera del fotolito final que va a la insoladora.

116

ANEXO N 6 MANUAL DE USO DE LOS SISTEMAS (HARDWARE Y SOFTWARE) A.6.1 Hardware. El dispositivo tiene 5 botones, 4 botones para la programacin del dispositivo y otro botn para la iluminacin de la pantalla en el caso que se quiera trabajar de noche o en lugares con escasez de luz. En la figura A.23 se muestra el dispositivo listo para su aplicacin.

Figura A.23

Dispositivo terminado

En la figura A.24 se especifican los botones del dispositivo. Los 2 botones superiores son para configurar el men (si se desea trabajar en Hora Real o en Cuenta Regresiva, como tambin para ajustar los tiempos de trabajo) y los 2 botones inferiores son para ejecutar el programa y para almacenar los datos ingresados en un perfil (para ser usados nuevamente sin tener que reprogramar el dispositivo).

Figura A.24

Especificacin de los botones del dispositivo.


117

En el men principal estn las 4 partes del proyecto, que se seleccionan con los botones <<<< y >>>> y despus se selecciona la aplicacin a trabajar con el botn EJECUTAR. En la figura A.25 se muestran las opciones a trabajar.

Figura A.25

Men principal.

A.6.1.1 Funcin CUENTA REGRESIVA. Al encender el dispositivo el primer men que aparece es CUENTA REGRESIVA. Presionando el botn EJECUTAR se pasa al siguiente men en donde ser posible seleccionar RETARDO, NUMERO DE FOTOS, INTERVALO Y OBTURACION. Lo primero que aparece es la funcin RETARDO. Esta parte del programa cumple la funcin de programar el tiempo de retardo que consiste en indicar cunto tiempo despus de terminar de programar se desea que el programa comience a funcionar. Una vez en RETARDO se pasa al siguiente men de HORA. Aqu se indicar la cantidad de horas que el usuario desea trabajar. La seleccin de las HORAS, MINUTOS Y SEGUNDOS se hacen con el botn ENTER. En la figura A.26 se muestra la secuencia de la programacin en la funcin RETARDO. Esta parte del programa cumple la funcin de programar el tiempo de retardo (el momento en que deber comenzar la temporizacin). Con los botones <<<< y >>>> se escogen los tiempos de programacin y con el botn ENTER se cambia de HORAS a MINUTOS y SEGUNDOS. Una vez que est listo la programacin del RETARDO con el botn EJECUTAR se cambia de funcin a NUMERO DE FOTO.

Figura A.26

Men retardo.

En la figura A.27 se muestra la programacin de CUENTA (consiste en escoger la cantidad de fotos que el usuario desee sacar). Con los botones <<<< y >>>> se escoge la cantidad de fotos (tiene un lmite de 100 fotos que puede variar dependiendo de los requerimientos del usuario) y una vez que el usuario haya seleccionado la cantidad con
118

el botn ENTER se cambia a la funcin INTERVALO u OBTURACION (esto se debe a que si el usuario selecciona 1 sola foto no es necesario el tiempo de intervalo puesto que el intervalo es el tiempo que transcurre entre cada foto, de esta manera se va directo al tiempo de OBTURACION.

Figura A.27

Men cuenta.

Si el usuario seleccion ms de una foto en la siguiente funcin se debe programar el tiempo de INTERVALO entre cada foto (el cual es el mismo para todos los intervalos), tal como se muestra en la figura A.28. Esta programacin es similar a la funcin RETARDO, con los botones <<<< y >>>> se programan los tiempos y con el botn ENTER se cambia de HORA a MINUTOS y SEGUNDOS y para almacenar los datos digitar el botn EJECUTAR.

Figura 2.28

Men intervalo.

Si el usuario errneamente pulsa el botn EJECUTAR sin haber ingresado un valor en el tiempo de INTERVALO, en pantalla aparecer ERROR INTERVALO (figura 2.29) lo que le indica al usuario que debe ingresar un valor para esta funcin.

Figura 2.29

Mensaje ERROR INTERVALO.

A continuacin, en la figura A.30 se programa el tiempo de OBTURACION (que consiste en el tiempo en que el obturador de la cmara se mantiene abierto). Su programacin es del mismo procedimiento que el tiempo de RETARDO e INTERVALO.

Figura A.30

Men obturacin.

119

Si el usuario errneamente pulsa el botn EJECUTAR sin haber ingresado un valor en el tiempo de OBTURACION, en pantalla aparecer ERROR OTURACION (figura 2.31) lo que le indica al usuario que debe ingresar un valor para esta funcin.

Figura A.31

Mensaje ERROR OBTURACION.

Una vez guardado todos los datos el programa pregunta si se DESEA CONTINUAR, esto es, que el programa corra y cumpla con las funciones programadas por el usuario. En la figura A.32 se muestra lo que sale en pantalla, si el usuario desea continuar debe apretar el botn EJECUTAR, pero si desea cambiar unos datos con el botn ENTER vuelve a la funcin inicial (RETARDO) y se pueden volver a ingresar los datos.

Figura A.32

Men de secuencia de programa.

Tambin si el usuario desea crear un perfil, en la figura A.33 se le pregunta al usuario si desea almacenar estos datos para una posterior aplicacin o no. Si se desea almacenar los datos presionar el botn EJECUTAR y si no lo desea, presionar el botn ENTER.

Figura A.33 A.6.1.2 Funcin HORA REAL.

Men de grabacin de datos.

Dentro de la funcin HORA REAL estn las funciones de AJUSTE HORA REAL, RETARDO, NUMERO DE FOTOS, INTERVALO Y OBTURACION. La seleccin de las HORAS, MINUTOS Y SEGUNDOS se hacen con el botn ENTER. En la figura A.34 se le pide a usuario ajustar la HORA REAL puesto que todo el trabajo se hace en funcin a esta operacin

Figura A.34

Men programacin hora real.


120

Una vez ajustado la HORA REAL, en la figura A.35 se muestra la secuencia de la programacin en la funcin RETARDO. Esta parte del programa cumple la funcin de programar el tiempo de RETARDO en funcin de la HORA REAL. Con los botones <<<< y >>>> se escogen los tiempos de programacin y con el botn ENTER se cambia de HORAS a MINUTOS y SEGUNDOS. Una vez que est listo la programacin del RETARDO con el botn EJECUTAR se cambia de funcin a NUMERO DE FOTO.

Figura A.35

Men retardo.

En la figura A.36 se muestra la programacin de CUENTA (consiste en escoger la cantidad de fotos que el usuario desea tomar). Con los botones <<<< y >>>> se escoge la cantidad de fotos (tiene un lmite de 100 fotos que puede variar dependiendo de los requerimientos del usuario) y una vez que el usuario haya seleccionado la cantidad con el botn ENTER se cambia a la funcin INTERVALO u OBTURACION (esto se debe a que si el usuario selecciona 1 sola foto no es necesario el tiempo de intervalo puesto que el intervalo es el tiempo que transcurre entre cada foto, de esta manera se va directo al tiempo de OBTURACION).

Figura A.36

Men cuenta.

Si el usuario seleccion mas de una foto en la siguiente funcin se debe programar el tiempo de INTERVALO entre cada foto, tal como se muestra en la figura A.37. Esta programacin es similar a la funcin RETARDO, con los botones <<<< y >>>> se programan los tiempos y con el botn ENTER se cambia de HORA a MINUTOS y SEGUNDOS y para almacenar los datos digitar el botn EJECUTAR.

Figura A.37

Men intervalo.

A continuacin, en la figura A.38 se programa el tiempo de OBTURACION (que consiste en el tiempo en que el obturador de la cmara se mantiene abierto). Su

121

programacin es semejante al procedimiento que el tiempo de RETARDO e INTERVALO.

Figura A.38

Men obturacin.

Una vez que el usuario haya guardado todos los datos el programa le pregunta si DESEA CONTINUAR, esto es, que el programa corra y cumpla con las funciones programadas por el usuario. En la figura A.39 se muestra lo que aparece en pantalla. Si el usuario desea continuar debe apretar el botn EJECUTAR, pero si desea cambiar unos datos, entonces con el botn ENTER vuelve a la funcin inicial (HORA REAL) y se pueden volver a ingresar los datos.

Figura A.39

Men de secuencia de programa.

Tambin si el usuario desea crear un perfil, en la figura A.40 se le pregunta si desea almacenar estos datos para una posterior aplicacin o no. Si se desea almacenar los datos presionar el botn EJECUTAR y si no lo desea, presionar el botn ENTER.

Figura A.40

Men de grabacin de datos.

122

A.6.2 Software. Junto con el Hardware tambin viene un Software que cumple con las mismas funciones que el dispositivo fsico, pero con la diferencia que el software trabaja con la hora del PC. La comunicacin del Software con la cmara se hace a travs de una interfaz de comunicacin que consta de un cable USB-RS232 ms un circuito que cumple con la funcin de interruptor de la cmara A.6.2.1 Instalacin del Driver. Antes de ejecutar el programa, primero se debe instalar el DRIVER (que viene incluido en el CD) que permita la conexin del cable USB-RS232 con el PC 1) Introducir el CD que normalmente viene con el driver conversor RS232-USB.

2) Instalar el Driver PL2303_Prolific_DriverInstaller, o puede ser cualquier cable conversor. Este driver puede ser instalado en todos los sistemas operativos del Windows. 3) En la seccin Administrador de dispositivos en propiedades del sistema verificar si el puerto es reconocido o no. Si no es reconocido en el tem Puertos (COM & LPT) aparece en signo de interrogacin. 4) Comprobar si el puerto COM del cable es reconocido por el Driver.

5) Para verificar el puerto al que est conectado el dispositivo, hay que dirigirse a la seccin Administrador de dispositivos y ver en el tem Puertos (COM & LPT) en qu puerto est conectado el conversor. A.6.2.2 Instalacin del Software de programacin. En el CD viene incluido el COMDLG32.OCX, recordando que dependiendo del sistema operativo, se debe escribir el siguiente comando para registrar el archivo OCX: Windows 95, 98 o Me: Windows NT o 2000: Windows XP: Windows 7: C:\windows\system\COMDLG32.OCX C:\WINNT\system32\COMDLG32.OCX C:\windows\system32\COMDLG32.OCX C:\windows\system32\COMDLG32.OCX

A continuacin se detallarn las partes del programa y se ensear cmo usar este programa. La figura A.41 muestra la pantalla de inicio del programa.

123

A.6.2.3 Desarrollo del programa.

Figura A.41 Ventana principal del software.

1) Al inicio del programa, en la casilla marcada con azul con la leyenda Seleccione opcin de trabajo se debe elegir entre dos opciones: Hora Real o Cuenta Regresiva. 2) Una vez seleccionada la opcin de trabajo se procede a ingresar los datos correspondientes. En cada funcin el usuario se encuentra con 3 casillas, que van a corresponder a las Horas, Minutos y Segundos respectivamente. 3) Si el usuario ha ingresado un dato errneo en la casilla correspondiente aparece marcado en Amarillo la casilla que debe ajustar. En la figura A.42 se muestra un ejemplo en que el usuario ingresa un nmero mayor a 24 (que es la cantidad mxima de horas que se va a trabajar) sta aparece en Amarillo y el usuario deber ajustar.

Figura A.42

Ajuste en la cantidad de Horas.


124

4) Una vez que el usuario ha terminado de ingresar los datos mediante el teclado, en la opcin Activar Programacin se guardan los datos y se procede a iniciar el programa. 5) En el caso que el usuario desea ingresar una cantidad de fotos mayor que 1, el programa le indica con un mensaje al usuario que debe ingresar un valor para los tiempos de intervalo, de lo contrario, al apretar el botn Activar Programacin el programa no se ejecuta y le indica un mensaje de error de ejecucin (figura A.43).

Figura A.43

Mensaje de error al ejecutar el programa.

6) Si el usuario desea salir del programa con el botn Detener de reinician los datos para una segunda aplicacin. 7) Este software tiene la capacidad de, si el usuario lo desea, crear un perfil y almacenarlo para una segunda aplicacin. En el botn guardar el usuario puede crear un archivo con el perfil que desea crear, y despus para volver a ocupar el mismo perfil, con el botn abrir busca el perfil ya creado para una siguiente aplicacin. Para ambos sistemas se utiliza el mismo modo de funcionamiento de la cmara. Esta tiene dos funciones, que son de importancia si el usuario desea trabajar con un tiempo inferior a 1 segundo, de modo que sea la propia cmara la que controle el tiempo de obturacin. Modo Bulb: funcin que le permite al usuario trabajar el obturador en forma manual, esto es, el diafragma permanece abierto mientras se mantenga presionado el pulsador. Modo Normal: funcin que le permite al usuario configurar el tiempo de obturacin directamente con la cmara. Esta funcin se debe usar cuando el tiempo de obturacin sea menor a 1 segundo. En este modo, al presionar el pulsador la cmara abre el obturador un tiempo controlado por la propia cmara. Si el pulsador permanece presionado, el diafragma no permanece abierto.

125

A.6.3

Ejemplos de aplicacin con el dispositivo en distintas funciones.

A.6.3.1 Para NUMERO DE FOTOS igual a 1 (una sola toma). Para este ejemplo, tanto en TIEMPO REAL como en CUENTA REGRESIVA se utiliza slo la programacin de la funcin RETARDO y la funcin OBTURACION, dado que programar INTERVALO no tiene sentido en este ejemplo. CUENTA REGRESIVA: A continuacin se ensear a programar el dispositivo para la funcin CUENTA REGRESIVA. Para este ejemplo se usar un tiempo de RETARDO de 1 Hora, 2 Minutos y 3 Segundos y con una OBTURACION de 5 Segundos. a) Encender dispositivo. Se obtiene la pantalla CUENTA REGRESIVA. b) Presionar EJECUTAR (1).

(1) c) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (2). Se obtiene en pantalla la cifra deseada.

(2) Despus con el botn ENTER se cambia a funcin MINUTOS. d) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (3). Se obtiene en pantalla la cifra deseada.

(3) Despus con el botn ENTER se cambia a funcin SEGUNDOS.


126

e) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (4). Se obtiene en pantalla la cifra deseada.

(4) Finalmente con el botn EJECUTAR se guarda la programacin de RETARDO. f) Presionar <<<< o >>>> para ingresar el NUMERO DE FOTOS. Ahora en funcin NUMERO DE FOTOS se le pide al usuario que ingrese la cantidad de fotos que desea trabajar (5). Como slo se seleccionar una sola foto con el botn EJECUTAR se guardan los datos y se cambia a funcin OBTURACION.

(5) g) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (6). Se obtiene en pantalla la cifra deseada.

(6) Despus con el botn ENTER se cambia a funcin MINUTOS. h) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (7). Se obtiene en pantalla la cifra deseada.

(7)
127

Despus con el botn ENTER se cambia a funcin SEGUNDOS. i) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (8). Se obtiene en pantalla la cifra deseada.

(8) Finalmente con el botn EJECUTAR se guarda la programacin de OBTURACION.

j) Una vez que el usuario guard todos los datos aparece la pregunta si desea continuar (9) y despus si desea almacenar los datos en un perfil para una segunda aplicacin (10). Para este ejemplo no se va a almacenar la informacin.

(9)

(10) k) A continuacin en pantalla aparece el desarrollo del programa. Primero aparece el programa en funcin RETARDO (11).

128

(11) En esta imagen se puede apreciar que H es la cantidad de horas programadas, M es la cantidad de minutos programados, S es la cantidad de segundos programados y C es la cantidad de fotos a tomar. l) Una vez que se haya cumplido el tiempo de RETARDO se dirige automticamente al tiempo de OBTURACION que es el momento en que el diafragma de la cmara est abierto (12).

(12)

HORA REAL: En esta funcin se le pide al usuario ingresar la hora actual, y despus programar las mismas funciones como en el punto anterior. Todo este trabajo se basa en la hora actual programada inicialmente por el usuario. Para este ejemplo se usar como HORA REAL las 9 Horas, 0 Minutos y 5 Segundos, un tiempo de RETARDO de 9 Hora, 30 Minutos y 5 Segundos (que debe ser la hora en la que debe comenzar a funcionar el dispositivo) y con una OBTURACION de 5 Segundos. a) Una vez que se enciende el dispositivo, se llega al men principal, entonces con el botn >>>> se cambia de funcin CUENTA REGRESIVA a TIEMPO REAL (13) y con el botn EJECUTAR se entra a la funcin (14).

129

(13)

(14) b) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas en la funcin HORA REAL(15). Se obtiene en pantalla la cifra deseada.

(15) Despus con el botn ENTER se cambia a funcin MINUTOS. c) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (16).. Se obtiene en pantalla la cifra deseada.

(16) A continuacin con el botn ENTER se cambia a funcin SEGUNDOS.

e) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (17). Se obtiene en pantalla la cifra deseada.

130

(17) Finalmente con el botn EJECUTAR se guarda la programacin de HORA REAL y se dirige a la funcin RETARDO.

f) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas en funcin RETARDO (18). Se obtiene en pantalla la cifra deseada.

(18) Despus con el botn ENTER se cambia a funcin MINUTOS. g) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (19). Se obtiene en pantalla la cifra deseada.

(19) A continuacin con el botn ENTER se cambia a funcin SEGUNDOS. h) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (20). Se obtiene en pantalla la cifra deseada.

(20) Finalmente con el botn EJECUTAR se guarda la programacin de RETARDO.


131

i) Presionar <<<< o >>>> para ingresar el NUMERO DE FOTOS. Ahora en funcin NUMERO DE FOTOS se le pide al usuario que ingrese la cantidad de fotos que desea trabajar (21).

(21) Con el botn EJECUTAR se guardan los datos y se cambia de funcin a OBTURACION j) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (22). Se obtiene en pantalla la cifra deseada.

(22) Despus con el botn ENTER se cambia a funcin MINUTOS.

k) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (23). Se obtiene en pantalla la cifra deseada.

(23) A continuacin con el botn ENTER se cambia a funcin SEGUNDOS.

l) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (24). Se obtiene en pantalla la cifra deseada.

132

(24) Finalmente con el botn EJECUTAR se guarda la programacin de OBTURACION. m) Finalmente, una vez que el usuario almacen todos los datos se le pregunta si desea continuar (25) y despus si desea almacenar los datos en un perfil para una posterior aplicacin (26). Para este ejemplo no se va a almacenar la informacin.

(25)

(26) n) A continuacin en pantalla aparece el desarrollo del programa. Primero aparece el programa en funcin RETARDO, que es similar a la que aparece en la foto 11 en el punto (k) de la funcin CUENTA REGRESIVA. o) Una vez que se haya cumplido el tiempo de RETARDO se dirige automticamente al tiempo de OBTURACION que es el momento en que el diafragma de la cmara est abierto. Este punto es similar al que aparece en la foto 12 en el punto (l) de la funcin CUENTA REGRESIVA.

133

A.6.3.2

Para NMERO DE FOTOS mayores a 1.

Para este ejemplo, tanto en TIEMPO REAL como en CUENTA REGRESIVA se utilizan las tres funciones: RETARDO, INTERVALO Y OBTURACION. Esto se diferencia del programa anterior puesto que debe existir un intervalo de tiempo entre cada foto. CUENTA REGRESIVA: A continuacin se ensear a programar el dispositivo para la funcin CUENTA REGRESIVA. Para este ejemplo se usar un tiempo de RETARDO de 1 Hora, 2 Minutos y 3 Segundos, NUMERO DE FOTOS igual a 4, un INTERVALO de 4 Horas, 5 Minutos y 4 Segundos y con una OBTURACION de 5 Segundos. a) Encender dispositivo. Se obtiene la pantalla CUENTA REGRESIVA. b) Presionar EJECUTAR (27).

(27) c) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (28) en funcin RETARDO. Se obtiene en pantalla la cifra deseada.

(28) Despus con el botn ENTER se cambia a funcin MINUTOS. d) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (29). Se obtiene en pantalla la cifra deseada

(29)
134

Despus con el botn ENTER se cambia a funcin SEGUNDOS. e) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (30). Se obtiene en pantalla la cifra deseada

(30) Finalmente con el botn EJECUTAR se guarda la programacin de RETARDO y aparece el men NUMERO DE FOTOS. f) Presionar <<<< o >>>> para ingresar el NUMERO DE FOTOS. Ahora en funcin NUMERO DE FOTOS se le pide al usuario que ingrese la cantidad de fotos que desea trabajar (31).

(31) Con el botn ENTER se guardan los datos y se cambia a funcin INTERVALO. g) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (32). Se obtiene en pantalla la cifra deseada.

(32) Despus con el botn ENTER se cambia a funcin MINUTOS. h) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (33). Se obtiene en pantalla la cifra deseada
135

(33) Despus con el botn ENTER se cambia a funcin SEGUNDOS. i) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (34). Se obtiene en pantalla la cifra deseada.

(34) Finalmente con el botn EJECUTAR se guarda la programacin de OBTURACION.

j) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (35). Se obtiene en pantalla la cifra deseada.

(35) Despus con el botn ENTER se cambia a funcin MINUTOS. k) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (36). Se obtiene en pantalla la cifra deseada.

(36)
136

Despus con el botn ENTER se cambia a funcin SEGUNDOS. l) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (37). Se obtiene en pantalla la cifra deseada. Finalmente con el botn EJECUTAR se guarda la programacin de OBTURACION.

(37) m) Una vez que el usuario almacen todos los datos aparece la pregunta si desea continuar (38) y despus si desea almacenar los datos en un perfil para una segunda aplicacin (39). Para este ejemplo no se almacenar la informacin.

(38)

(39) n) Una vez que el usuario guard todos los datos aparece la pregunta si desea continuar (40) y despus si desea almacenar los datos en un perfil para una segunda aplicacin (41). Para este ejemplo no se va a almacenar la informacin

(40)
137

(41) o) A continuacin en pantalla aparece el desarrollo del programa. Primero aparece el programa en funcin RETARDO, que es similar a la que aparece en la figura (11). p) Una vez que se haya cumplido el tiempo de OBTURACION se dirige automticamente al tiempo de INTERVALO que es el momento en que el diafragma de la cmara est abierto. Este punto es similar al que aparece en la figura (12). q) Una vez que se haya cumplido el tiempo de OBTURACION se dirige automticamente al tiempo de INTERVALO (42) que es el intervalo de tiempo que hay entre cada nmero de foto.

(42)

HORA REAL: En esta funcin se le pide al usuario ingresar la hora actual, y despus programar las mismas funciones como en el punto anterior. Todo este trabajo se basa en la hora actual programada inicialmente por el usuario. Para este ejemplo se usar como HORA REAL las 9 Horas, 0 Minutos y 5 Segundos, un tiempo de RETARDO de 9 Hora, 30 Minutos y 5 Segundos (que debe ser la hora en la que deber comenzar a funcionar el dispositivo) y un tiempo de INTERVALO de 5 Segundos y con una OBTURACION de 5 Segundos. a) Una vez que se enciende el dispositivo, se llega al men principal, entonces con el botn >>>> se cambia de funcin CUENTA REGRESIVA a TIEMPO REAL (43) y con el botn EJECUTAR se entra a la funcin (44).

138

(43)

(44) b) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas en la funcin HORA REAL(45). Se obtiene en pantalla la cifra deseada.

(45) Despus con el botn ENTER se cambia a funcin MINUTOS. c) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (46). Se obtiene en pantalla la cifra deseada.

(46) A continuacin con el botn ENTER se cambia a funcin SEGUNDOS. d) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (47). Se obtiene en pantalla la cifra deseada.

139

(47) Finalmente con el botn EJECUTAR se guarda la programacin de HORA REAL y se dirige a la funcin RETARDO. e) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas en funcin RETARDO (48). Se obtiene en pantalla la cifra deseada.

(48) Despus con el botn ENTER se cambia a funcin MINUTOS. f) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (49). Se obtiene en pantalla la cifra deseada.

(49) A continuacin con el botn ENTER se cambia a funcin SEGUNDOS. g) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (50). Se obtiene en pantalla la cifra deseada.

(50) Finalmente con el botn EJECUTAR se guarda la programacin de RETARDO.

140

h) Presionar <<<< o >>>> para ingresar el NUMERO DE FOTOS. Ahora en funcin NUMERO DE FOTOS se le pide al usuario que ingrese la cantidad de fotos que desea trabajar (51).

(51) Con el botn ENTER se guardan los datos y se cambia de funcin a INTERVALO. i) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (52). Se obtiene en pantalla la cifra deseada.

(52) Despus con el botn ENTER se cambia a funcin MINUTOS. j) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (53). Se obtiene en pantalla la cifra deseada

(53) Despus con el botn ENTER se cambia a funcin SEGUNDOS. k) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (54). Se obtiene en pantalla la cifra deseada.

141

(54) Finalmente con el botn EJECUTAR se guarda la programacin de OBTURACION.

l) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Horas (55). Se obtiene en pantalla la cifra deseada.

(55) Despus con el botn ENTER se cambia a funcin MINUTOS. m) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Minutos (56). Se obtiene en pantalla la cifra deseada.

(56) A continuacin con el botn ENTER se cambia a funcin SEGUNDOS.

n) Presionar >>>> o <<<< para aumentar o disminuir la cantidad de Segundos (57). Se obtiene en pantalla la cifra deseada.

(57) Finalmente con el botn EJECUTAR se guarda la programacin de OBTURACION.


142

o) Finalmente, una vez que el usuario almacen todos los datos le pregunta si desea continuar (58) y despus si desea almacenar los datos en un perfil para una segunda aplicacin (59). Para este ejemplo no se almacenar la informacin

(58)

(59) p) A continuacin en pantalla aparece el desarrollo del programa. Primero aparece el programa en funcin RETARDO, que es similar a la que aparece en la figura (11). q) Una vez que se haya cumplido el tiempo de RETARDO se dirige automticamente al tiempo de OBTURACION que es el momento en que el diafragma de la cmara est abierto. Este punto es similar al que aparece en la figura (12). r) Una vez que se haya cumplido el tiempo de OBTURACION se dirige automticamente al tiempo de INTERVALO (60) que es el intervalo de tiempo que hay entre cada nmero de foto.

(60)

143

A.6.3.3

Para ALMACENAR UN PERFIL en el caso de una misma aplicacin.

Para este ejemplo se va a tomar el mismo ejemplo del punto A.7.3.1 cuando se aprendi a programar el dispositivo en funcin CUENTA REGRESIVA y HORA REAL. Una vez que estos datos hayan sido ingresados en la programacin al final se le pregunta al usuario si desea almacenar o no (61). Esta funcin es similar para las dos funciones

(61) Si el usuario desea almacenar los datos con el botn <EXE> se guarda y el usuario si desea puede desconectar el dispositivo y si desea volver a la misma programacin se dirige a la funcin MEMORIA C. REG. (62) o la funcin H. REAL (63) dependiendo el tipo de funcin que el usuario desea trabajar.

(62)

(63)

144

145

Potrebbero piacerti anche