UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica MEJORA DE LA ELECTRONICA DE CONTROL DE LOS FILTROS SINTONIZABLES DE OSIRIS. Por Guillermo Alfonzo Herrera Carlés. Sartenejas, 0ctubre de 2004 UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica MEJORA DE LA ELECTRONICA DE CONTROL DE LOS FILTROS SINTONIZABLES DE OSIRIS. Por Guillermo Alfonzo Herrera Carlés. Realizado con la Asesoría de Ing. José Vicente Gigante. Prof. Juan Claudio Regidor. PROYECTO DE GRADO Presentado ante la Ilustre Universidad Simón Bolívar como requisito parcial para optar al título de Ingeniero Electrónico. Sartenejas, 0ctubre de 2004 2 UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica MEJORA DE LA ELECTRONICA DE CONTROL DE LOS FILTROS SINTONIZABLES DE OSIRIS. PROYECTO DE GRADO presentado por Guillermo Alfonzo Herrera Carlés. REALIZADO CON LA ASESORIA DE Ing. José Vicente Gigante, Prof. Juan Claudio Regidor. RESUMEN La razón de este trabajo viene dada por la necesidad de ampliar las prestaciones del controlador original CS100, para un Filtro Sintonizable Fabry-Perot, según las exigencias del proyecto OSIRIS. Para lograr esto, se intervino al CS100, aprovechando sus partes útiles: el servocontrol de paralelismo, los circuitos de sensado de posición y los circuitos de alta tensión. Esta intervención se hizo a través de distintos conectores presentes en el CS100. De esta manera, se ha diseñado para tal fin, una tarjeta de aplicación, y una tarjeta de control. La tarjeta de aplicación lleva a cabo la generación y la captura de las señales necesarias, y la tarjeta de control, basada en una FPGA con un microcontrolador embebido, se encarga del control digital. Se configuró un banco de pruebas ópticas, para probar el alcance del prototipo. Los resultados iniciales son excelentes y muy alentadores, cumpliendo con todas las especificaciones del proyecto OSIRIS, y aún más allá, se logra una resolución sobre el Filtro Sintonizable Fabry-Perot de 0,15nm, que era más de lo previsto. PALABRAS CLAVES Astrofísica, Telescopios, Filtros Sintonizables, Fabry-Perot, FPGA, Nanoposicionamiento. Aprobado con mención:_______ Postulado para el premio:_______ Sartenejas, 0ctubre de 2004 3 INDICE GENERAL 1. INDICE DE FIGURAS................................................................................................................................. 8 2. INDICE DE TABLAS................................................................................................................................. 11 3. LISTA DE ABREVIATURAS Y NOMENCLATURA............................................................................ 12 4. INTRODUCCION ...................................................................................................................................... 16 5. FUNDAMENTOS TEORICOS ................................................................................................................. 19 5.1 LOS TELESCOPIOS........................................................................................................................... 19 5.1.1 Definición. ...................................................................................................................................... 19 5.1.2 Tipos de telescopios........................................................................................................................ 19 5.1.3 Monturas......................................................................................................................................... 20 5.1.4 Estaciones focales........................................................................................................................... 21 5.1.5 Solares y nocturnos. ....................................................................................................................... 22 5.1.6 Óptica activa y adaptativa.............................................................................................................. 23 5.1.7 Espectro electromagnético. ............................................................................................................ 24 5.1.8 Instrumentación de los telescopios. ................................................................................................ 25 5.1.8.1 Fotómetro. ............................................................................................................................. 25 5.1.8.2 Cámara. ................................................................................................................................. 26 5.1.8.3 Espectrógrafo. ....................................................................................................................... 27 5.1.8.4 Cámaras-espectrógrafos. ....................................................................................................... 28 5.1.8.5 Espectroscopia multiobjeto. .................................................................................................. 29 5.1.8.5.1 Máscaras de aperturas..................................................................................................... 29 5.1.8.5.2 Máscaras reconfigurables. .............................................................................................. 30 5.1.8.5.3 Robot Posicionador de Fibras Ópticas............................................................................ 30 5.1.8.6 Espectroscopia de campo integral. ........................................................................................ 32 5.1.8.7 Analizadores de polarización. ............................................................................................... 32 5.1.8.8 Coronografía. ........................................................................................................................ 32 5.1.8.9 Filtros sintonizables............................................................................................................... 32 5.2 GRANTECAN .................................................................................................................................... 33 5.2.1 Propósito. ....................................................................................................................................... 33 5.2.2 Funcionamiento. ............................................................................................................................. 33 5.2.3 Ventajas. ......................................................................................................................................... 34 5.2.4 Instrumentación. ............................................................................................................................. 35 5.2.5 Óptica. ............................................................................................................................................ 35 5.3 OSIRIS ................................................................................................................................................ 36 5.3.1 Descripción general........................................................................................................................ 36 5.3.2 Funcionamiento. ............................................................................................................................. 37 5.3.3 Modos de observación. ................................................................................................................... 38 5.3.3.1 Imagen................................................................................................................................... 38 5.3.3.2 Espectroscopía. ..................................................................................................................... 39 5.3.3.3 Modos rápidos....................................................................................................................... 39 5.3.4 Características principales............................................................................................................. 39 5.4 FILTROS SINTONIZABLES FABRY-PEROT. ................................................................................ 40 5.4.1 Teoría. ............................................................................................................................................ 40 5.4.2 Estructura del etalón. ..................................................................................................................... 45 5.4.3 Resumen de propiedades del etalón de OSIRIS.............................................................................. 46 5.5 CONTROLADOR CS-100. ................................................................................................................. 47 5.5.1 Descripción general........................................................................................................................ 47 5.5.2 Descripción del panel frontal. ........................................................................................................ 48 4 5.5.3 5.5.4 5.5.5 6. PLANTEAMIENTO DEL PROBLEMA. ................................................................................................. 54 6.1 6.2 6.3 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 7. Funcionamiento. ............................................................................................................................. 48 Explicación del esquema de conexión. ........................................................................................... 50 Comentarios.................................................................................................................................... 53 OBJETIVOS........................................................................................................................................ 54 SOLUCION......................................................................................................................................... 55 JUSTIFICACION................................................................................................................................ 56 ESPECIFICACIONES A CUMPLIR. ................................................................................................. 56 Capacidad de control remoto. ........................................................................................................ 56 Control de las señales de consigna................................................................................................. 56 Capacidad de sincronización. ........................................................................................................ 56 Control Automático de cuadratura................................................................................................. 56 Capacidad de comunicación. ......................................................................................................... 57 DISEÑO PRELIMINAR ............................................................................................................................ 58 7.1 MÓDULO 1. .......................................................................................................................................... 58 7.1.1 Estudio del sistema actual. ............................................................................................................. 58 7.1.2 Propuesta de control e intervención de señales. ............................................................................ 58 7.1.3 Características de los componentes necesarios.............................................................................. 59 7.1.4 Diagrama de bloques...................................................................................................................... 60 7.2 MÓDULO 2. .......................................................................................................................................... 63 7.2.1 Estudio del sistema actual. ............................................................................................................. 63 7.2.2 Propuesta de control e intervención de señales. ............................................................................ 64 7.2.3 Características de los componentes necesarios.............................................................................. 64 7.2.4 Diagrama de bloques...................................................................................................................... 65 7.3 MÓDULO 3. .......................................................................................................................................... 66 7.3.1 Estudio del sistema actual. ............................................................................................................. 66 7.3.2 Propuesta de control e intervención de señales. ............................................................................ 66 7.3.3 Características de los componentes necesarios.............................................................................. 66 7.3.4 Diagrama de bloques...................................................................................................................... 67 7.4 MÓDULO 4. .......................................................................................................................................... 67 7.4.1 Estudio del sistema actual. ............................................................................................................. 67 7.4.2 Propuesta de control e intervención de señales. ............................................................................ 68 7.4.3 Características de los componentes necesarios.............................................................................. 68 7.4.4 Diagrama de bloques...................................................................................................................... 69 7.5 MÓDULO 5. .......................................................................................................................................... 69 7.5.1 Estudio del sistema actual. ............................................................................................................. 69 7.5.2 Propuesta de control e intervención de señales. ............................................................................ 70 7.5.3 Características de los componentes necesarios.............................................................................. 70 7.5.4 Diagrama de bloques...................................................................................................................... 71 7.6 RESUMEN DE SEÑALES PARA EL CONTROL DIGITAL............................................................................... 71 7.6.1 Módulo 1......................................................................................................................................... 71 7.6.1.1 Entradas................................................................................................................................. 71 7.6.1.2 Salidas ................................................................................................................................... 72 7.6.2 Módulo 2......................................................................................................................................... 73 7.6.2.1 Entradas................................................................................................................................. 73 7.6.2.2 Salidas ................................................................................................................................... 73 7.6.3 Módulo 3......................................................................................................................................... 73 7.6.3.1 Entradas................................................................................................................................. 73 7.6.3.2 Salidas ................................................................................................................................... 73 7.6.4 Módulo 4......................................................................................................................................... 74 7.6.4.1 Entradas................................................................................................................................. 74 7.6.4.2 Salidas ................................................................................................................................... 74 7.6.5 Módulo 5......................................................................................................................................... 74 5 7.6.5.1 7.6.5.2 8. Entradas................................................................................................................................. 74 Salidas ................................................................................................................................... 74 DISEÑO DETALLADO. ............................................................................................................................ 75 8.1 CONSIDERACIONES DEL CONTROL DIGITAL A IMPLEMENTAR. ............................................................... 75 8.2 FPGA XILINX SPARTAN -IIE. ............................................................................................................... 76 8.2.1 Descripcion de la familia Spartan- IIE........................................................................................... 76 8.2.2 Especificaciones Técnicas. ............................................................................................................. 77 8.3 TARJETA DE EVALUACIÓN DE AVNET. ................................................................................................ 78 8.3.1 Descripción..................................................................................................................................... 78 8.3.2 Especificaciones Técnicas. ............................................................................................................. 78 8.4 XPS (XILINX PLATFORM STUDIO). ....................................................................................................... 80 8.4.1 Descripción..................................................................................................................................... 80 8.4.2 Características................................................................................................................................ 80 8.5 EDK 6.1 ( EMBEDDED DEVELOPMENT KIT). ........................................................................................ 81 8.6 MICROBLAZE (MICROCONTROLADOR EMBEBIDO). ............................................................................... 81 8.6.1 Descripción..................................................................................................................................... 81 8.6.2 Características................................................................................................................................ 82 8.7 MÓDULOS CIRCUITALES DEFINIDOS. ..................................................................................................... 84 8.7.1 Breve introducción a Protel 99SE. ................................................................................................. 84 8.7.2 Módulo CAQ................................................................................................................................... 85 8.7.2.1 Funcionamiento. .................................................................................................................... 85 8.7.2.2 Selección de componentes..................................................................................................... 86 8.7.2.3 Esquemático. ......................................................................................................................... 87 8.7.3 Módulo DACs. ................................................................................................................................ 91 8.7.3.1 Funcionamiento. .................................................................................................................... 91 8.7.3.2 Selección de componentes..................................................................................................... 91 8.7.3.3 Esquemático. ......................................................................................................................... 93 8.7.4 Módulo Relés. ................................................................................................................................. 97 8.7.4.1 Funcionamiento. .................................................................................................................... 97 8.7.4.2 Selección de componentes..................................................................................................... 97 8.7.4.3 Esquemático. ......................................................................................................................... 98 8.7.5 Módulo LEDs................................................................................................................................ 101 8.7.5.1 Funcionamiento. .................................................................................................................. 101 8.7.5.2 Selección de componentes................................................................................................... 102 8.7.5.3 Esquemático. ....................................................................................................................... 102 8.7.6 Módulo Señales............................................................................................................................. 105 8.7.6.1 Funcionamiento. .................................................................................................................. 105 8.7.6.2 Selección de componentes................................................................................................... 105 8.7.6.3 Esquemático. ....................................................................................................................... 106 8.7.7 Módulo Galvanómetros. ............................................................................................................... 108 8.7.7.1 Funcionamiento. .................................................................................................................. 108 8.7.7.2 Selección de componentes................................................................................................... 109 8.7.7.3 Esquemático. ....................................................................................................................... 110 8.7.8 Módulo Sincronización-CCD. ...................................................................................................... 112 8.7.8.1 Funcionamiento. .................................................................................................................. 112 8.7.8.2 Selección de componentes................................................................................................... 112 8.7.8.3 Esquemático. ....................................................................................................................... 113 8.7.9 Módulo Interfaz. ........................................................................................................................... 113 8.7.9.1 Funcionamiento. .................................................................................................................. 113 8.7.9.2 Selección de componentes................................................................................................... 114 8.7.9.3 Esquemático. ....................................................................................................................... 115 8.7.10 Lista de materiales. .................................................................................................................. 119 8.7.11 Realización del diseño del circuito impreso. ........................................................................... 119 8.7.11.1 Consideraciones generales. ................................................................................................. 119 6 8.7.11.2 8.7.11.3 8.7.11.4 8.7.11.5 9. Consideraciones técnicas..................................................................................................... 120 Fases del diseño................................................................................................................... 122 Presentación. ....................................................................................................................... 126 Resumen. ............................................................................................................................. 127 MONTAJE Y PRUEBAS DE LOS MODULOS. ................................................................................... 128 9.1 9.2 9.3 10. TEST ELÉCTRICO................................................................................................................................. 128 TEST FUNCIONAL MÓDULO A MÓDULO. .............................................................................................. 128 INTERFAZ CON LA FPGA .................................................................................................................... 129 DESARROLLO DEL SOFTWARE DE APLICACIÓN. ................................................................. 132 10.1 ASPECTOS GENERALES. ...................................................................................................................... 132 10.2 ESTRUCTURA DEL MICROCONTROLADOR EMBEBIDO. ......................................................................... 132 10.3 CÓDIGO DEL PROGRAMA..................................................................................................................... 147 10.4 EXPLICACIÓN DEL CÓDIGO.................................................................................................................. 147 10.5 PRUEBA DEL SOFTWARE EN EL BANCO ÓPTICO. .................................................................................. 151 10.5.1 Descripcion del banco optico y sus elementos......................................................................... 151 10.5.2 Pruebas electrónicas realizadas y sus resultados.................................................................... 155 10.5.2.1 Prueba de los comandos básicos. ........................................................................................ 156 10.5.2.2 Prueba de los comandos avanzados..................................................................................... 157 10.5.3 Pruebas opticas........................................................................................................................ 162 11. CONCLUSIONES Y RECOMENDACIONES.................................................................................. 165 12. REFERENCIAS BIBLIOGRAFICAS................................................................................................ 167 13. APENDICES......................................................................................................................................... 168 13.1 13.2 13.3 APÉNDICE A. LISTA DE MATERIALES.................................................................................................. 168 APÉNDICE B. CODIGO DEL PROGRAMA DEL MICROCONTROLADOR EMBEBIDO MICROBLAZE. ............ 169 APÉNDICE C. PRESUPUESTO DEL PROYECTO Y HORAS DE TRABAJO INVERTIDAS. ............................... 184 7 1. INDICE DE FIGURAS. Figura 1. - Algunos tipos de telescopios ..................................................................................20 Figura 2. - Esquema de las estaciones focales del GTC. En la imagen de la derecha se ven las plataformas Nasmyth (IAC).......................................................................................................22 Figura 3. - Esquema ejemplo de Observatorio Solar................................................................23 Figura 4. - Absorción atmosférica desde el ultravioleta al infrarrojo lejano. En la parte superior se indica la posición de los filtros estándar más utilizados. ........................................25 Figura 5. - Esquema de un fotómetro .......................................................................................26 Figura 6. - Esquema de un espectrógrafo de prisma.................................................................28 Figura 7. - Esquema óptico de OSIRIS. La luz del telescopio incide desde la derecha sobre la máscara de rendijas y llega al espejo colimador. De allí sale un haz colimado que es desviado por un espejo plano y pasa por un filtro y el grisma para llegar a la cámara donde es focalizado sobre el detector. Tanto el grisma como el filtro están sobre sendas ruedas. ............................29 Figura 8. - Unidad criogénica de rendijas configurables propuesta para EMIR. Las varillas azules de cada uno de los lados se acercan para formar una rendija en el lugar deseado..........30 Figura 9. - Ejemplo de robots posicionadores de fibras. Arriba derecha, simulación de una distribución de fibras de Hectospec. Abajo, sistema de sujeción de las fibras de Hectospec. ..31 Figura 10. - Diseño mecánico de OSIRIS. El esquema óptico de la figura 7, y los requerimientos ópticos y mecánicos han dado lugar a este diseño. Al ser un instrumento en el rango visible, el criostato mantiene frío al detector solamente (IAC). ......................................37 Figura 11. - Esquema de conexiones de los Filtros Sintonizables en Osiris ............................38 Figura 12. - Foto de un etalón Fabry Pérot...............................................................................41 Figura 13. - Esquema de los rayos dentro un Fabry Pérot........................................................42 Figura 14. - Gráfica de la intensidad luminosa a la salida de un filtro Fabry Pérot en función de la frecuencia normalizada. ....................................................................................................43 Figura 15. - Red de Interferencias ............................................................................................44 Figura 16. - Diagrama de los piezoeléctricos en el etalón........................................................45 Figura 17. - Foto del CS100 .....................................................................................................47 Figura 18. - Conexión de los capacitores del Fabry Pérot........................................................50 8 Figura 19. - Contínua a la izquierda : Vx, por ejemplo. Contínua a la derecha : señal a la entrada del P.S.D fuera de la posición de equilibrio. Punteada, la señal desfasada cuando tocamos a la manilla de cuadratura. En líneas de pequeños segmentos, la amplitud modificada usando el botón x.......................................................................................................................52 Figura 20. - Línea contínua: señal a la entrada del P.S.D. Abajo: la señal de reloj. Punteada Arriba : la señal a la salida mandada hacia el piezo. Punteada abajo: señal a la salida con una mala sincronización ...................................................................................................................53 Figura 21. - Diagrama de bloques del módulo 1. Parte 1 .........................................................61 Figura 22. - Diagrama de bloques del módulo 1. Parte 2 .........................................................62 Figura 23. - Diagrama de bloques del módulo 1. Parte 3 .........................................................63 Figura 24. - Diagrama de bloques del módulo 2 ......................................................................65 Figura 25. - Diagrama de bloques del módulo 3 ......................................................................67 Figura 26. - Diagrama de bloques del módulo 4 ......................................................................69 Figura 27. - Diagrama de bloques del módulo 5 ......................................................................71 Figura 28. - Diagrama de la arquitectura del MicroBlaze ........................................................82 Figura 29. - Esquemático del Módulo CAQ para el canal X....................................................88 Figura 30. - Esquemático del Módulo CAQ para el canal Y....................................................89 Figura 31. - Esquemático del Módulo CAQ para el canal Z. ...................................................90 Figura 32. - Circuito para operación del DAC en modo bipolar. .............................................92 Figura 33. - Esquemático del Módulo DACs para el canal X. .................................................94 Figura 34. - Esquemático del Módulo DACs para el canal Y. .................................................95 Figura 35. - Esquemático del Módulo DACs para canal Z. .....................................................96 Figura 36. - Esquemático del Módulo Reles para la cuadratura en X e Y. ..............................99 Figura 37. - Esquemático del Módulo Relés para la cuadratura en Z.......................................99 Figura 38. - Esquemático del Módulo Relés para el Offset fino en X e Y.............................100 Figura 39. - Esquemático del Módulo Relés para el Offset fino en Z y grueso en X ............100 Figura 40. - Esquemático del Módulo Relés para el Offset grueso en Y y Z. ........................101 Figura 41. - Esquemático del Módulo LEDs para la salida de la FPGA. ...............................103 Figura 42. - Esquemático del Módulo LEDs para la entrada a la FPGA................................104 Figura 43. - Esquemático del Módulo Señales para la entrada a la FPGA.............................107 9 Figura 44. - Esquemático del Módulo Señales para la salida de la FPGA. ............................108 Figura 45. - Circuito del ADC propuesto por el fabricante. ...................................................110 Figura 46. - Esquemático del Módulo Galvanómetros...........................................................111 Figura 47. - Esquemático del Módulo Sincronización-CCD..................................................113 Figura 48. - Esquemático 1 de conexiones con el CS100. .....................................................115 Figura 49. - Esquemático 2 de conexiones con el CS100. .....................................................116 Figura 50. - Esquemático de conexiones de señales coaxiales y alimentación. .....................117 Figura 51. - Esquemático de conexiones con la FPGA. .........................................................118 Figura 52. - Presentación del PCB .........................................................................................126 Figura 53. - Presentación y descripción del banco óptico. .....................................................151 Figura 54. - Vista superior del banco de pruebas. ..................................................................152 Figura 55. - Interconexion con el CS100................................................................................153 Figura 56. - Generador de señales. .........................................................................................153 Figura 57. - Presentación de la Cónsola de comandos. ..........................................................155 Figura 58. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada cero (salida -Ref).........................................................................................................158 Figura 59. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 16384. .........................................................................................................................158 Figura 60. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 32768(salida cero).......................................................................................................159 Figura 61. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 49150. .........................................................................................................................159 Figura 62. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 65535 (salida +Ref). ...................................................................................................160 Figura 63. - Comenzando positiva, la señal de referencia, y comenzando negativa, la salida del DAC Z para el valor cero, donde se denota la perfecta simetría de +Ref (de la referencia) con – Ref (del DAC). ........................................................................................................................160 Figura 64. - Espectro en frecuencia de la señal de referencia donde se nota la componente de 15,6Khz, sin otras contribuciones relevantes en otras frecuencias..........................................161 Figura 65. - Señal del fotómetro con un paso de 10 cuentas a 500ms por paso.....................163 10 Figura 66. - Señal del fotómetro con un paso de 3 cuentas a 300ms por paso.......................164 Figura 67. - Señal del fotómetro con un paso de una cuenta a 100ms por paso.....................164 2. INDICE DE TABLAS. Tabla 1.- Resumen de características principales de OSIRIS. ..................................................40 Tabla 2.- Resumen de propiedades del etalón de OSIRIS. .......................................................46 Tabla 3.- Características principales para la familia Spartan IIE según modelo.......................76 Tabla 4.- Cantidad de I/O disponibles para la familia Spartan IIE según modelo. ...................77 Tabla 5.- Relación de conversión del DAC. .............................................................................92 Tabla 6.- Resumen del PCB. ...................................................................................................127 Tabla 7.- Interfaz con la FPGA. ..............................................................................................131 Tabla 8.- Resumen de pruebas y resultados de los comandos básicos....................................156 Tabla 9.- Resumen de pruebas y resultados de los comandos avanzados. Parte 1..................157 Tabla 10.- Resumen de pruebas y resultados de los comandos avanzados. Parte 2................157 Tabla 11.- Resumen de pruebas y resultados de los comandos avanzados. Parte 3................161 Tabla 12.- Lista de materiales. ................................................................................................169 11 3. LISTA DE ABREVIATURAS Y NOMENCLATURA IAC Intituto de Astrofísica de Canarias. CSIC Consejo Superior de Investigaciones Científicas de España. ENO Observatorio Norte Europeo. GTC Gran Telescopio Canarias. GRANTECAN Gran Telescopio Canarias. ORM Observatorio del Roque de los Muchachos. INAOE Instituto Nacional de Astrofísica, Óptica y Electrónica. IA-UNAM Instituto de Astronomía de la Universidad Nacional Autónoma de México. CONACYT Consejo Nacional de Ciencia y Tecnología de México. OSIRIS Optical System for Imaging and Low Resolution Integrated Spectroscopy. CCD Charge Coupled Device. CCC Closed Cycle Cooler. ELMER Instrumento de Imágenes Convencionales. CANARI-CAM Cámara y Espectrógrafo en el Infrarrojo Térmico. EMIR Espectrógrafo Multiobjeto en el Infrarrojo. UBVRI U=Ultraviolet, B=Blue, V=Visual, R=Red, I=Infrared. SDSS Sloan Digital Sky Survey. FWHM Full Width Half Maximum. TF Tunable Filter. UART Universal Asynchronous Receiver / Transmitter. FPGA Field Programmable Gate Arrays. CLB Configurable Logic Blocks. IOB Input/Output Blocks. DLL Delay-Locked Loops. RAM Ramdom Access Memory. IP Integrated Peripheral. DSP Digital Signal Processing. 12 VHDL Very High Speed Integrated Circuit Hardware Description Language. JTAG Joint Test Action Group. PROM Programmable Read Only Memory. LVDS Low Voltage Differential Swing. MICTOR Centerline Matched Impedance Connector. MDR Metadata Repository. XPS Xilinx Platform Studio. MHS Microprocessor Hardware Specification. MSS Microprocessor Software Specification. GNU Complete UNIX tyle operating system which is free software. ACE Adaptative Communication Environment. EDK Embedded Development Kit. CPU Central Processor Unit. EST Embedded System Tools. RISC Reduced Instruction Set Computer. ILMB Instruction Local Memory Bus. DLMB Data Local Memory Bus. IOPB Instruction On-chip Peripheral Bus. DOPB Data On-chip Peripheral Bus. OPB On-chip Peripheral Bus. LMB Local Memory Bus. FSL Fast Simplex Link. ATM Modo de Transferencia Asíncrona. MAC Media Access Control. HDLC High level Data Link Control. PCI Peripheral Component Interconnect. SPI Serial Peripheral Interface. PCB Printed Circuit Board. CAQ Control Automático de Cuadratura. 13 DAC Digital – Analog Converter. ADC Analog – Digital Converter. CL Control Logic. FP Front Panel. TA Tarjeta de Aplicación. BAL Balance. MQUAD Quadrature Mode. DIS Disable. OPER Operate. MOFFS Offset Mode. PWR Power. OOR Out Of Range. AGND Analog Ground. DGND Digital Ground. GND Ground. QX, QY, QZ Quadrature X, Quadrature Y, Quadrature Z. XCOAR Coarse X Adjust. YCOAR Coarse Y Adjust. ZCOAR Coarse Z Adjust. XFINE Fine X Adjust. YFINE Fine Y Adjust. ZFINE Fine Z Adjust. DRC Design Rule Check. FSR Free Spectral Range. ISE Integrated Software Environment. n0 Indice del medio de propagación del haz. d Diferencia de camino óptico. d Distancia entre espejos. ? Angulo de incidencia del haz. 14 I Período espacial. R Reflectividad. fp Frecuencia de resonancia. p Número del modo de la componente del haz. c Velocidad de la luz en el vacío. ?p Longitud de onda relacionada con fp. ? Longitud de onda. f Frecuencia. dfsr Rango espectral libre. d?fsr Rango espectral libre en términos de longitud de onda. Vx Señal de consigna para el paralelismo X. Vy Señal de consigna para el paralelismo Y. Vz Señal de consigna para el desplazamiento Z. Vcom Señal de referencia para las señales de consigna. Nmodos Número de modos del haz. 15 4. INTRODUCCION Este proyecto se ha realizado en las instalaciones del Instituto de Astrofísica de Canarias (IAC), situado en la isla de Tenerife, Islas Canaria, España. Específicamente se ha llevado a cabo en el Dpto. de Ingeniería Electrónica (Área de Instrumentación). El IAC reúne a un gran número de investigadores astrofísicos provenientes de todo el mundo, y a través de su departamento de ingeniería, construye las soluciones y resuelve las solicitudes demandadas por estos investigadores, respecto a la instrumentación necesaria para nuevos estudios. Están integrados en el IAC la Administración del Estado (Ministerio de Ciencia y Tecnología, la Comunidad autónoma de Canarias, la Universidad de La Laguna y el Consejo Superior de Investigaciones Científicas (CSIC). Aunque fue inaugurado oficialmente en 1985, el IAC llevaba trabajando desde mucho antes en la labor de desarrollo de la Astronomía y la Astrofísica. Una fecha histórica es el año 1979, en que se firman los "Acuerdos de Cooperación en Astrofísica", por los que España internacionaliza los Observatorios del IAC. A través de ellos, más de 62 instituciones científicas de Alemania, Bélgica, Dinamarca, España, Estados Unidos, Finlandia, Francia, Irlanda, Italia, Noruega, Países Bajos, Polonia, Portugal, Reino Unido, República de Armenia, Rusia, Suecia, Taiwán y Ucrania, tienen hoy instrumentos astrofísicos instalados en Canarias. Canarias es de hecho el Observatorio Norte Europeo (ENO), uno de los tres paraísos astronómicos más importantes de nuestro planeta. El Instituto de Astrofísica de Canarias (IAC) empezó a promover la idea de construir un gran telescopio en Canarias en 1987, cuando entró en servicio el telescopio William Herschel, de 4.2 metros de diámetros, un instrumento muy avanzado en aquel momento. Allí nace la idea del Gran Telescopio Canarias (GTC)[8]. El Gran Telescopio CANARIAS estará equipado con una instrumentación avanzada que aprovechará al máximo sus posibilidades científicas. El GTC se está construyendo sobre 16 una superficie de 5.000 m2 en el Observatorio del Roque de los Muchachos (ORM), en la isla canaria de La Palma. Este observatorio, situado al borde del Parque Nacional de la Caldera de Taburiente, en el término municipal de Garafía, se encuentra a 2.400 metros sobre el nivel del mar, por encima del “mar de nubes”. Se trata de un lugar privilegiado para la actividad astrofísica por la atmósfera transparente y estable que le proporcionan los Vientos Alisios. Allí, geografía y clima se unen, proporcionando unas condiciones excepcionales para la observación astronómica, de ahí que en el ORM se encuentre una de las baterías de telescopios más completa del mundo. Es además uno de los lugares mejor estudiados para la observación astronómica. Se llevan a cabo campañas constantes, y continuas prospecciones con el fin de analizar sistemáticamente la calidad y transparencia de la atmósfera, garantizando así la calidad de observación. En cuanto a la participación internacional en el proyecto, de momento ya se cuenta con la participación del Instituto Nacional de Astrofísica, Óptica y Electrónica de México (INAOE) del Instituto de Astronomía de la Universidad Nacional Autónoma de México (IAUNAM), que, financiados por el Consejo Nacional de Ciencia y Tecnología de México (CONACYT), aportan un 5% del presupuesto de construcción, operación y demás actuaciones e inversiones preparatorias previas a su explotación (en total, unos 5,5 millones de euros), al igual que la Fundación para la Investigación de la Universidad de Florida. Además, tanto las instituciones mexicanas como la Universidad de Florida están ya implicadas en la construcción de instrumentación para el telescopio [1]. Uno de los instrumentos más innovadores presentes en el GTC es el OSIRIS. OSIRIS, un espectrógrafo de baja resolución con sistema de imagen, es un instrumento que trabaja en el rango visible, e incorpora el uso de filtros variables o sintonizables. Estos permiten observar de manera muy precisa una línea determinada del espectro de luz, situada en cualquier posición dentro del rango visible. Por dicha razón, OSIRIS será un instrumento único con respecto a otros instrumentos parecidos que existen en EE.UU. y en Europa. OSIRIS está siendo diseñado y construido por el IAC, con la participación del Instituto de Astronomía de la 17 Universidad Nacional Autónoma de México (IA-UNAM) [8]. Para entender el significado real de este trabajo y su finalidad, se considera pertinente el relacionarse con el área que va a disfrutar de las bondades de la realización de este proyecto, a través de conocimientos básicos en telescopios, detalles del Proyecto GRANTECAN y OSIRIS, una base teórica de los filtros sintonizables y la presentación del controlador actual. Por ello, los próximos puntos, contenidos en el capítulo de fundamentos teóricos, trataran de estos temas, ayudando al lector a lograr el entendimiento pleno del contenido del proyecto que abarca este escrito. Luego se pasará al capítulo del planteamiento del problema, donde se discuten las dificultades tecnológicas que se desean superar, incluyendo las especificaciones en concreto. Después, se discute el capítulo del diseño preliminar, en el cual se dará un bosquejo del diseño a cumplir, el cual será abordado con lujo de detalles, en el capítulo siguiente, llamado diseño detallado. Después, un capítulo que reseña las pruebas realizadas al diseño ya fabricado, dará una primera visión de su funcionamiento y resultados parciales. Seguido, se entrará en el capítulo de desarrollo del software de aplicación, donde se definen los componentes restantes para el funcionamiento completo del diseño, incluyendo pruebas ópticas al instrumento en cuestión, con la incorporación de este prototipo de control. Finalmente, se presentará un capítulo de conclusiones respecto al trabajo desarrollado y la experiencia proporcionada por el proyecto, como también unas recomendaciones para una optimización a futuro del prototipo, en vías del desarrollo del equipo final. 18 5. FUNDAMENTOS TEORICOS 5.1 5.1.1 LOS TELESCOPIOS Definición. Un telescopio es un instrumento en el que un sistema de lentes o espejos “acerca” visualmente la imagen de objetos alejados, por lo que estos aparecen más grandes y nítidos, suficientemente brillantes y con detalles para ser vistos, fotografiados o registrados para su estudio. Un telescopio tiene dos propiedades principales, por un lado nos permite distinguir objetos muy lejanos y, al mismo tiempo, recoge una gran cantidad de luz [2]. 5.1.2 Tipos de telescopios. Hay dos tipos básicos de telescopios: refractores y reflectores. Los primeros están basados en lentes y suelen ser de un tamaño pequeño. Presentan problemas de cromaticidad, es decir, las distintas longitudes de onda no focalizan en el mismo punto. Este efecto es debido a que el índice de refracción de la lente depende de la longitud de onda. Los telescopios reflectores (de espejos) no tienen el problema de la cromaticidad y pueden hacerse muy grandes. Los espejos monolíticos más grandes que se han fabricado tienen alrededor de 8 metros de diámetro, y la solución que se ha encontrado para superar esas dimensiones y hacer telescopios mayores es fabricar muchos segmentos pequeños, que luego se ponen uno al lado del otro siguiendo la forma de la superficie óptica ideal [2]. 19 Figura 1. - Algunos tipos de telescopios 5.1.3 Monturas. Hay dos tipos básicos de monturas: ecuatoriales y altazimutales. Las monturas ecuatoriales tienen dos ejes de movimiento perpendiculares, en el que uno de ellos es paralelo al eje de rotación de la Tierra. Este eje en Canarias, por ejemplo, tiene una inclinación de 28º18’ respecto del horizonte. Cuando el telescopio está apuntado, para efectuar el seguimiento del objeto sólo hay que girar todo el telescopio respecto de este eje, compensando así la rotación terrestre. Los telescopios altazimutales tienen dos ejes de movimiento coincidentes con la vertical y la horizontal del lugar. Es decir, es una montura similar a la que podría tener un cañón que gira horizontalmente y luego levanta el tubo para apuntar a un determinado objetivo. Para efectuar el seguimiento, sin embargo, hay que actuar 20 simultáneamente sobre los dos ejes, ya que los objetos celestes en su movimiento siguen trayectorias oblícuas [2]. 5.1.4 Estaciones focales. Las estaciones focales son aquellos lugares donde se encuentra el foco del telescopio y donde se puede colocar la instrumentación que va a analizar la luz proveniente del objeto. En el caso del telescopio Cassegrain, el tipo más común entre los grandes telescopios, el foco más utilizado es el llamado foco Cassegrain que se encuentra debajo del espejo primario M1 (ver figura 2). No obstante, mediante el uso de un espejo terciario (M3) el haz de luz puede ser desviado lateralmente dando lugar a otras estaciones focales. El foco Nasmyth se diferencia del Cassegrain doblado en que coincide con el eje de giro de elevación. Esa particularidad permite situar en dicha estación focal una plataforma grande donde colocar instrumentación pesada. El foco primario se encuentra detrás del espejo secundario (M2) y para su uso hay que quitar dicho espejo. El foco Coudé es otra estación focal, utilizada más en los telescopios ecuatoriales, que tiene la particularidad de que está fija físicamente en un punto y es independiente del movimiento del telescopio. Para ello, la luz sale por un lateral, similar al foco Nasmyth, y luego es reconducida mediante espejos planos por el interior de la montura del telescopio para acabar saliendo por el eje de giro. Usualmente, a la salida del telescopio la luz es llevada por debajo del mismo hasta un laboratorio [2]. 21 Figura 2. - Esquema de las estaciones focales del GTC. En la imagen de la derecha se ven las plataformas Nasmyth (IAC). 5.1.5 Solares y nocturnos. Los telescopios para el estudio del Sol y los nocturnos están basados en los mismos principios. Sin embargo, es común ver una diferencia en los edificios que alojan a unos y a otros. Esta diferencia viene marcada por el hecho de que durante el día, y debido al calor, la turbulencia atmosférica disminuye mucho con la altura respecto al suelo, y ello conduce a situar los telescopios solares en edificios más altos (torres solares). Por otro lado, es común el uso de celostatos, que es un conjunto de dos espejos planos que siguen al Sol y que envían su luz a un punto fijo, hacia abajo, en el interior del edificio. De esta manera el telescopio puede estar en una posición fija y mucho más estable ya que no requiere seguir el movimiento del Sol durante toda la observación, de ello se encargan los dos espejos planos del celostato [2]. 22 Figura 3. - Esquema ejemplo de Observatorio Solar. 5.1.6 Óptica activa y adaptativa. La única manera de luchar por acercarse al límite de difracción y así tener unas imágenes más nítidas, es utilizar la óptica activa y adaptativa. Con la óptica activa se corrige la forma del espejo primario o secundario para mantenerla en sus valores nominales. Esto se hace mediante actuadores situados detrás del espejo que empujan o tiran para contrarrestar las deformaciones no deseadas. Estas correcciones se realizan a baja velocidad (cada segundo aproximadamente) y dan cuenta de las flexiones debidas a la gravedad y a los cambios de temperatura más que a los efectos de la atmósfera. Los cambios rápidos de la atmósfera se compensan, en primer orden, con espejos planos que se mueven muy rápido en dos direcciones angulares y recentran la imagen en x e y (corrección llamada de “tip-tilt”). Para corregir órdenes mayores es necesario usar espejos deformables, que son espejos con muchos actuadores detrás. Estos espejos se controlan a altas 23 frecuencias, por encima de 100 o 500 veces por segundo y, naturalmente, son más pequeños, de 5 a 20 cm., normalmente. Los sistemas de óptica adaptativa, por lo tanto, son sistemas que van colocados entre el telescopio y el instrumento y que van a intentar suministrar al instrumento una calidad de imagen (poder resolutivo) cercana al límite de difracción del telescopio. Para el funcionamiento de la óptica adaptativa es necesario utilizar estrellas de referencia cercanas al objeto de interés. Y para suplir el hecho de que a veces no hay estrellas cercanas, se han desarrollado sistemas de láser que envían un haz a la atmósfera y forman una estrella guía artificial (láser) [2]. 5.1.7 Espectro electromagnético. Antes de comenzar a hablar acerca de los instrumentos es necesario hacerse una idea de las longitudes de onda en las que trabajan y para ello hay que saber cuál es la radiación que la atmósfera deja pasar. Desde las ondas de radio hasta los rayos gamma provenientes del espacio, no todas las radiaciones llegan al suelo. Muchas son absorbidas por la atmósfera y otras son atenuadas. En el rango visible (aproximadamente de 400 a 1000 nm) la atmósfera es transparente y también en algunas zonas del infrarrojo cercano y medio. Estos tramos de longitudes de onda en los que la atmósfera deja pasar las radiaciones se llaman ventanas. En el infrarrojo cercano, y centrados en las ventanas, se encuentran los filtros estándar denominados J, H, K, L y M. Los tres primeros filtros están en el rango de 1 a 2,5 micras (1000 a 2500 nm) y los dos últimos de 2,5 a 5 micras. Más allá en el espectro se encuentra el infrarrojo medio hasta unas 15 micras donde la atmósfera atenúa mucho pero donde todavía se puede observar desde sitios muy altos y con poca humedad. Longitudes de onda más largas son absorbidas, hasta llegar a las ondas milimétricas y ondas de radio que sí atraviesan la atmósfera. Las ondas de radio por encima de 50 m son rebotadas en la ionósfera y tampoco alcanzan el suelo. En el otro extremo, desde los rayos ultravioleta hasta los rayos gamma, la atmósfera no deja pasar nada, con la excepción de los rayos ultravioletas más cercanos (de 300 a 400 nm). En la figura 4 se muestran las ventanas de absorción de la atmósfera y el lugar donde están centrados los filtros estándar que más se suelen utilizar. No 24 obstante, los astrónomos durante las observaciones, aparte de los filtros estándar, utilizan otros filtros situados en longitudes específicas de su interés [2]. Figura 4. - Absorción atmosférica desde el ultravioleta al infrarrojo lejano. En la parte superior se indica la posición de los filtros estándar más utilizados. 5.1.8 5.1.8.1 Instrumentación de los telescopios. Fotómetro. El fotómetro es uno de los instrumentos más simples. Consiste en hacer llegar la luz del telescopio hasta un detector sensible a la luz. Este instrumento se usa cuando se requiere conocer con mucha precisión el brillo de las estrellas u otros objetos. Al no ser un detector bidimensional, en la salida no tendremos una imagen del objeto sino un valor preciso de su nivel de luminosidad. Con una buena electrónica y las técnicas de observación adecuadas se pueden conseguir niveles de ruido muy bajos. En la figura 5 se puede ver el esquema de un fotómetro. La apertura tiene como misión dejar pasar sólo la luz del objeto eliminando ruido de fondo. Su tamaño suele ser 2 o 3 veces mayor que el tamaño esperado del objeto en el foco del telescopio para así evitar que los errores en el movimiento del telescopio o las vibraciones saquen al objeto fuera y se pierda la calidad de la medida. El filtro selecciona la banda de longitudes de onda que se quiere observar. La lente que sigue a continuación se llama lente de Fabry y genera una imagen de la pupila de entrada del telescopio (normalmente el espejo primario) sobre el detector. De esta manera la iluminación sobre el detector es uniforme y estacionaria, aunque el objeto se mueva en la apertura [2]. 25 Figura 5. - Esquema de un fotómetro 5.1.8.2 Cámara. Una cámara consiste en un detector bidimensional, normalmente un CCD o un arreglo infrarrojo, al cual se hace llegar la luz del telescopio para formar la imagen de un objeto celeste. Las cámaras no suelen tener las precisiones fotométricas de los fotómetros pero nos dan una visión bidimensional de los objetos. Así, se pueden hacer estudios sobre la forma y distribución de estrellas, gas y polvo en nebulosas, galaxias, etc. La cámara puede ir en cualquiera de los focos del telescopio y suele llevar un sistema óptico delante para acondicionar la luz del telescopio a la resolución y calidad necesarias para cumplir con los requerimientos científicos. Al igual que las cámaras de fotos corrientes, las cámaras en astronomía pueden llevar varios sistemas de lentes intercambiables para conseguir diferentes resoluciones espaciales. Las resoluciones pueden ir según los casos desde 1” por píxel hasta 0,01” por píxel para las cámaras de alta resolución, que se usan con óptica adaptativa. Algunas cámaras se han diseñado para ver un gran campo y en ellas se han puesto mosaicos con varios CCDs para que de una sola exposición se tome una imagen de una gran parte del cielo. Para mantener la temperatura del detector baja y así tener menos ruido electrónico se usan los criostatos. Normalmente tienen un depósito estanco de Nitrógeno líquido a 77 grados Kelvin y sobre él va montado el detector. Para evitar la condensación, todo lo que rodea al depósito se pone al vacío. Los criostatos tienen una ventana a través de la cual la luz llega al 26 detector. En los instrumentos visibles, es suficiente con que el detector esté alrededor de 100º bajo cero, pero en los infrarrojos suele estar en torno a 200º bajo cero. En los infrarrojos, además, la propia óptica debe también estar dentro del criostato para que el detector no vea su emisión térmica. Para evitar el uso del Nitrógeno líquido o para conseguir temperaturas más bajas también se usan los refrigeradores de ciclo cerrado (CCC, closed cycle cooler) que consisten en un motor frigorífico que funciona con Helio. En ocasiones se utilizan soluciones mixtas en las que el Nitrógeno es usado inicialmente y luego la temperatura es mantenida por el motor refrigerante [2]. 5.1.8.3 Espectrógrafo. Un espectrógrafo es un sistema óptico destinado a medir el espectro de la luz que viene de un objeto celeste. El espectro da mucha información sobre la física de los objetos, su temperatura, composición química, etc. En la figura 6 puede verse el esquema básico de cómo funciona un espectrógrafo. De la luz que llega del telescopio se deja pasar una apertura circular o una rendija situada sobre el objeto de interés. La luz que atraviesa la rendija es colimada, es decir, se crea un haz paralelo e incide sobre el prisma. Al llegar a éste, la luz se dispersa en distintas direcciones según su longitud de onda. A la salida del prisma, el haz colimado pasa por otro elemento óptico, llamado cámara, que focaliza la luz sobre el detector. Si la apertura es circular, sobre el detector tendremos una línea en la que la posición sobre ella vendrá determinada por su longitud de onda. Este esquema óptico se llama de colimador-cámara y es de uso muy frecuente. En la zona de haz colimado, además del prisma se suelen colocar otros dispositivos como los filtros, por ejemplo. Con los espectrógrafos sucede lo mismo que con las cámaras, cuando son para el rango visible sólo hay que enfriar el detector, pero si trabajan en el infrarrojo deben también tener fría toda la óptica, lo cual implica el uso de criostatos. Los detectores son idénticos a los usados en las cámaras pero la problemática del control puede ser ligeramente mayor debido a los nuevos mecanismos que hay que controlar, como el elemento dispersivo y las lámparas de calibración [2]. 27 Figura 6. - Esquema de un espectrógrafo de prisma 5.1.8.4 Cámaras-espectrógrafos. Las cámaras espectrógrafos son de diseño relativamente reciente y tienen la gran ventaja de la versatilidad. Se trata de espectrógrafos que también, aunque no simultáneamente, pueden tomar una imagen directa del objeto o campo estelar. Su funcionamiento como espectrógrafos es similar al de cualquier otro espectrógrafo, y su capacidad como cámara de imagen directa la consigue, en el caso de los grismas, simplemente retirando el elemento dispersivo. En el caso de los espectrógrafos con redes de difracción, la imagen directa se consigue sustituyendo la red por un espejo plano con la orientación adecuada. En la figura 7 se muestra el diseño óptico de OSIRIS, la cámara espectrógrafo en el visible para el GTC. Desde el punto de vista de control, las cámaras-espectrógrafos presentan una problemática similar a la de los casos anteriores, aumentada por la cada vez mayor cantidad de mecanismos a controlar. Además, no sólo hay más mecanismos, sino que las formas en que pueden ser combinados para realizar una observación junto con las múltiples maneras de leer los detectores, requieren un análisis de los “casos de uso” muy cuidadoso. Por otro lado, al ser instrumentos versátiles, suelen ser de uso común en el telescopio, es decir, que pueden ser utilizados por cualquier astrónomo, al cual no se le puede exigir que sea un experto en su uso. Esto implica que los sistemas de control deben ser muy robustos y seguros [2]. 28 Figura 7. - Esquema óptico de OSIRIS. La luz del telescopio incide desde la derecha sobre la máscara de rendijas y llega al espejo colimador. De allí sale un haz colimado que es desviado por un espejo plano y pasa por un filtro y el grisma para llegar a la cámara donde es focalizado sobre el detector. Tanto el grisma como el filtro están sobre sendas ruedas. 5.1.8.5 Espectroscopia multiobjeto. En este punto se describirá brevemente las distintas formas de obtener simultáneamente el espectro de varios objetos dentro del campo de visión. Se trata de dispositivos que van a ir colocados en el plano focal del telescopio y que luego van a alimentar a un espectrógrafo como los que se han visto anteriormente [2]. 5.1.8.5.1 Máscaras de aperturas. La solución técnica más sencilla para hacer una máscara de aperturas es el fabricar unas placas metálicas en las que se han practicado los cortes adecuados en las posiciones esperadas de los objetos de interés. Estas placas se fabrican con antelación y se colocan a mano en el plano focal del telescopio delante del espectrógrafo. Esta solución se puede automatizar un poco poniendo las máscaras en una rueda, o en un cargador de mascaras como es el caso de OSIRIS [2]. 29 5.1.8.5.2 Máscaras reconfigurables. Una manera de evitar el cambio de las máscaras en cada exposición es hacer un mecanismo que sea capaz de colocar una serie de rendijas en el campo de forma automática. Estos mecanismos son muy completos y requieren mucha precisión. Hoy en día hay muy pocos instrumentos visibles que los tengan y ninguno infrarrojo [2]. Figura 8. - Unidad criogénica de rendijas configurables propuesta para EMIR. Las varillas azules de cada uno de los lados se acercan para formar una rendija en el lugar deseado. 5.1.8.5.3 Robot Posicionador de Fibras Ópticas. Las fibras ópticas permiten desacoplar mecánicamente el instrumento y el telescopio. Para ello, en el plano focal del telescopio debe haber un sistema que mantenga las fibras sobre la imagen del objeto y en el otro extremo las fibras se coloquen en el lugar de la rendija del espectrógrafo. De hecho, en el extremo del haz que va al espectrógrafo, cuando hay varias fibras, se las coloca en línea formando una rendija sintética que se acopla al espectrógrafo. La espectroscopía multiobjeto con fibras ópticas se consigue mediante un robot posicionador de fibras que permita colocar automáticamente cada una de las fibras ópticas sobre un objeto de interés. Este robot debe garantizar la posición correcta de la fibra a pesar de los movimientos 30 del telescopio y del derrotador al que puede estar acoplado. Si el instrumento se encuentra lejos del robot puede haber bastantes metros de fibras entre uno y uno [2]. Figura 9. - Ejemplo de robots posicionadores de fibras. Arriba derecha, simulación de una distribución de fibras de Hectospec. Abajo, sistema de sujeción de las fibras de Hectospec. 31 5.1.8.6 Espectroscopia de campo integral. Se entiende por espectroscopía de campo integral aquellas técnicas que permiten obtener simultáneamente el espectro de una zona bidimensional del cielo. Idealmente se trataría de obtener el espectro de todos los puntos que componen una imagen. Una manera de conseguir esto es hacer un haz compacto de fibras ópticas con una distribución bidimensional en el extremo del haz que se coloque en el foco del telescopio. En el otro extremo las fibras se colocan formando una rendija que alimenta a un espectrógrafo [2]. 5.1.8.7 Analizadores de polarización. Son sistemas ópticos que permiten analizar la polarización de la luz que entra en el instrumento. Están basados en retardadores y polarizadores ópticos que se colocan en el haz de luz dentro del instrumento. Desde un punto de vista astronómico, el análisis de la polarización da información sobre los campos magnéticos en el objeto [2]. 5.1.8.8 Coronografía. Se trata de una técnica que permite distinguir objetos débiles que están situados muy cerca de objetos muy brillantes. Actualmente se están utilizando mucho para la búsqueda de planetas alrededor de estrellas. La manera en que funcionan es colocando con gran precisión una máscara que tape el objeto brillante y deje pasar la luz del objeto débil que se encuentra al lado. Se ponen, por lo tanto, a la entrada del instrumento [2]. 5.1.8.9 Filtros sintonizables. Son filtros que, a diferencia de los normales, pueden ser sintonizados en longitud de onda y ancho de banda. Se basan en dos placas de vidrio plano-paralelas colocadas muy cerca una de otra que ocupan el lugar de un filtro normal. La sintonía del filtro se realiza controlando con extrema precisión la separación de las placas y su paralelismo. Para su correcto funcionamiento deben utilizarse conjuntamente con filtros normales [2]. 32 5.2 5.2.1 GRANTECAN Propósito. El Gran Telescopio CANARIAS (GTC) es un telescopio reflector, es decir, que emplea espejos, en lugar de lentes, para recoger la luz. Cuenta en su diseño con las últimas innovaciones tecnológicas, por lo que en el año 2005, fecha prevista para el inicio de su funcionamiento, será uno de los telescopios más avanzados. El GTC podrá llegar a “ver” los objetos más distantes y los más débiles de nuestro Universo. Se ha de entender esto como un viaje en el tiempo: la luz que se recibe de los objetos más alejados del Universo empezó su viaje hace unos 15.000 millones de años, por lo que se podrá obtener respuesta a muchas preguntas sobre la creación del Universo conocido. Con el GTC se distinguirá sistemas planetarios en estrellas de nuestros alrededores, se podrá conocer la materia oscura, descubrir, oculto tras las densas nubes moleculares, el “nacimiento” de estrellas, “ver” las galaxias más alejadas y los cuásares, estudiar más a fondo las características de algunos agujeros negros y su evolución, o saber cuáles son los componentes químicos creados tras el “Big Bang”. Hallar planetas similares al nuestro en otras estrellas es una de las metas emblemáticas del GTC [8]. 5.2.2 Funcionamiento. El espejo primario del GTC fue pensado para alcanzar un tamaño de 10 metros de diámetro, para lo cual fue necesario diseñar y fabricar un espejo segmentado, ya que sería imposible la manipulación y el traslado de un espejo único de ese tamaño. Éste está compuesto por 36 piezas hexagonales que, unidas, tienen un tamaño equivalente al de un espejo circular de 10,4 metros de diámetro. Aparte del espejo primario, se utilizan un espejo secundario y un tercer espejo para enviar la luz a los focos donde se ubican los instrumentos científicos. La montura, estructura que soporta y sobre la que se mueve el telescopio, es altazimutal, es decir, que los movimientos se realizan según dos ejes, el horizontal y el vertical. Este telescopio observará y analizará la luz visible y la infrarroja procedentes de los objetos celestes [1]. 33 5.2.3 Ventajas. Por ser el último de esta generación de grandes telescopios que se está construyendo, el GTC ha intentado mejorar el diseño de sus predecesores, aprendiendo de su experiencia. En el momento de su inauguración será el telescopio con mayor superficie colectora de luz: 75,7 metros cuadrados, equivalente a un espejo circular de 10,4 metros. Junto con la gran superficie colectora, es muy importante la calidad de imagen, por lo que el GTC utilizará dos técnicas para optimizarla: la óptica activa y, más adelante, la óptica adaptativa. Con la primera se alinean, deforman y mueven los espejos (segmentos del primario y espejo secundario) para mantener de un modo preciso la posición y forma de los espejos, independientemente de las condiciones externas (climatología, temperatura, gravedad, defectos de fabricación, etc.) de manera que no influyan sobre la imagen. La óptica adaptativa es, en la actualidad, una nueva técnica que está siendo desarrollada para los principales telescopios del mundo y, una vez implantada, equivaldrá casi a observar sin atmósfera. Consiste en utilizar espejos deformables para compensar las aberraciones que sufre la luz a su paso por la atmósfera. A todo esto hay que sumar una cúpula, que protege al telescopio y está preparada para evitar al máximo la existencia de turbulencias externas e internas que puedan degradar la imagen y una estructura mecánica diseñada para que la observación se realice libre de vibraciones que podrían restar nitidez a las imágenes. Además el GTC pretende lograr un óptimo aprovechamiento del tiempo de observación mediante el sistema de observación por colas (proceso por el cual se decidirá automáticamente qué instrumentación y qué tipo de observación conviene hacer conforme a las condiciones atmosféricas de cada momento). Además, utilizará un avanzado sistema de control y dispondrá de una alta fiabilidad de funcionamiento gracias a un programa de mantenimiento preventivo, diseñado para percibir posibles fallos de funcionamiento antes de que se produzcan, garantizando que el tiempo de parada producido por estos fallos en el sistema sea mínimo [8]. 34 5.2.4 Instrumentación. Un telescopio necesita instrumentación focal. El GTC contará con varios instrumentos científicos de última generación que permitirán analizar la luz visible e infrarroja. Los instrumentos, ubicados en las estaciones focales del telescopio, captarán la luz, formando imágenes directas (las que detecta el ojo humano) e imágenes espectroscópicas (a través de espectrógrafos, seleccionamos una parte de la imagen, separándola en sus diferentes longitudes de onda). Estos instrumentos serán: OSIRIS, un espectrógrafo de baja resolución con sistema de imagen; ELMER, un instrumento que obtendrá imágenes convencionales; CANARI-CAM, una cámara y espectrógrafo en el infrarrojo térmico (dentro del infrarrojo, la categoría con longitud de onda más larga) y, como instrumento de segunda generación, EMIR, un espectrógrafo multiobjeto de gran campo que trabajará en el infrarrojo [8]. 5.2.5 Óptica. La óptica activa es un complejo sistema informático que actuará sobre el espejo primario y el espejo secundario. En el primario hará que los 36 segmentos del espejo se muevan y deformen para lograr que estén siempre correctamente alineados. Las razones que influirán en la posición de cada espejo con respecto a los demás son la climatología (viento, cambios de temperatura), las tensiones mecánicas y las inevitables limitaciones del proceso de fabricación. Eliminar las perturbaciones producidas por la atmósfera equivale esencialmente a observar desde el espacio. De ahí la importancia de la óptica adaptativa. Esta tecnología permitirá determinar y corregir gran parte de las aberraciones con que llega la luz de los objetos observados. Cuando la óptica adaptativa se ponga en marcha en el GTC será, para determinadas observaciones, como si tuviera un espejo primario de 80 metros en lugar de 10. Se trata primero de analizar y determinar las características de la atmósfera para entender qué perturbaciones induce en las ondas luminosas, e inmediatamente deformar una serie de espejos para compensar esas perturbaciones. La realización práctica es complicada, ya que la atmósfera, dada su naturaleza cambiante, ha de analizarse muy rápida y continuamente, para enseguida transmitirla a los espejos deformables [8]. 35 5.3 5.3.1 OSIRIS Descripción general. El instrumento OSIRIS (Sistema Óptico para Imagen y Espectroscopía Integrada de Resolución Baja/Intermedia, o por sus siglas en ingles, Optical System for Imaging and Low Resolution Integrated Spectroscopy) podrá obtener imágenes directas del cielo y podrá realizar espectroscopía de varios objetos a la vez. Es un sistema de imagen y un espectrógrafo de baja resolución con modos de rendija larga y multi-objeto, cubriendo el intervalo de longitudes de onda entre 0.365 y 1.05 µm, en un campo de visión de 7 arcmin x 7 arcmin y 8 arcmin x 5,2 arcmin en imagen directa y espectroscopía de baja resolución respectivamente. Trabajará en el rango visible, es decir, con la luz del cielo que es capaz de percibir el ojo humano [6]. Entre otros resultados, proporcionará nuevos datos a los científicos en diversas áreas de conocimiento de la astrofísica, como las atmósferas de los planetas del Sistema Solar, las supernovas muy lejanas (que sirven de referente para conocer la edad del Universo), las llamadas explosiones de rayos gamma, (unas tremendas emisiones de energía cuyo origen se desconoce y que es preciso identificar), la formación y evolución de las galaxias y los cúmulos de galaxias, asteroides y cometas, estrellas variables, ciclos de actividad estelar en estrellas de cúmulos abiertos, poblaciones estelares en regiones remotas de la galaxia, enanas marrones, enanas blancas en cúmulos estelares, regiones HII en galaxias, búsqueda de agujeros negros, la relación entre galaxias normales, contrapartidas ópticas de radiojets, el origen del fondo de rayos X, acumulación alrededor de radio fuentes, evolución de galaxias con bajo desplazamiento al rojo, determinación de desplazamientos al rojo de objetos débiles, pruebas de materia oscura y microlentes. Además, OSIRIS incorpora el uso de filtros sintonizables. Estos permitirán observar de manera muy precisa una línea determinada del espectro de luz, situada en cualquier posición dentro del rango visible [7]. 36 Cámara Obturador Criostato Colimador Rendija Ruedas Filtros y Grismas Cargador de Máscaras Espejo Plano Adaptador Nasmyth Estructura Soporte Plano Focal Figura 10. - Diseño mecánico de OSIRIS. El esquema óptico de la figura 7, y los requerimientos ópticos y mecánicos han dado lugar a este diseño. Al ser un instrumento en el rango visible, el criostato mantiene frío al detector solamente (IAC). 5.3.2 Funcionamiento. OSIRIS usara dos filtros sintonizables para poder seleccionar una longitud de onda especifica. Estos filtros sintonizables estarán compuestos por dos elementos: o Un filtro Fabry-Perot (etalón) montado sobre tres actuadores piezoeléctricos, los cuales permiten cambiar la anchura de la cavidad. Habrán dos etalones diferentes: un etalón optimizado para el rango de longitudes de onda hacia el rojo y otro optimizado para el rango de longitudes de onda hacia al azul o Un controlador para seleccionar y mantener cierta anchura en la cavidad. Ya que se usaran dos etalones, se necesitaran dos controladores. 37 Filtro Sintonizable Azul Controlador Filtro Sintonizable Azul Filtro Sintonizable Rojo Controlador Filtro Sintonizable Rojo Subsistema de Control Rueda de Filtros Figura 11. - Esquema de conexiones de los Filtros Sintonizables en Osiris Estos filtros estarán montados en unas ruedas de filtros: en una de ellas estarán los Fabry-Perot , y en otra rueda estarán los filtros convencionales corta-ordenes, que trabajan en combinación con filtros Fabry-Perot. Además contará con un cargador de mascaras de apertura y otros elementos que se pueden apreciar en la figura 10 [4]. Como detector se utilizarán dos CCDs de 2kx4k píxeles formando un mosaico, con un tamaño de píxel de ~15mum, optimizados en el rojo y sensibles desde 0,365µm a 1,05µm. 5.3.3 5.3.3.1 Modos de observación. Imagen. Será posible obtener imagen de banda ancha en los filtros UBVRI (U=Ultraviolet, B=Blue, V=Visual, R=Red, I=Infrared) y SDSS (Sloan Digital Sky Survey). Usando dos filtros sintonizables en la pupila del sistema óptico será posible cubrir todo el intervalo de longitudes de onda, proporcionando un número ilimitado de filtros interferenciales de banda estrecha e intermedia con FWHM (Full Width Half Maximum) entre 1 y 70 Å. Según el rango espectral y la FWHM seleccionada, los órdenes pueden ser bloqueados mediante filtros de banda ancha o con un conjunto adicional de filtros interferenciales de 250-400 Å de FWHM. Tanto los filtros corta-órdenes como los filtros ajustables están inclinados hasta 12° [7]. 38 5.3.3.2 Espectroscopía. Permitirá realizar espectroscopía de baja resolución (R = 500, 1500, 2500) mediante el uso de grismas. Estará disponible tanto en modo de rendija larga (8 arcmin) como en multiobjeto mediante el uso de máscaras en el plano focal [7]. 5.3.3.3 Modos rápidos. Fotometría y espectroscopía [7]. 5.3.4 Características principales. Nasmyth Estación focal (Diseño para operar también en Cassegrain) 0.365 – 1.05 ? m Intervalo de longitud de onda Detector 2 (2Kx 4K) Escala en el detector 0.125"/píxel Campo de visión 7 arcmin x 7 arcmin (Imagen Directa) 8 arcmin x 5,2 arcmin (Espectroscopía de baja resolución) Modo de Imagen 39 UBVRI y SDSS Banda ancha Filtros sintonizables con FWHM desde 1 a 70 Å sobre Banda estrecha todo el intervalo espectral Modo de Espectroscopía Resolución espectral R = 500 (365 - 1000nm) R = 1500 (370 - 950nm) R= 2500 (420 - 950nm) Rendija larga 8 arcmin Nº Máscaras 13 Nº objetos / máscara 20 (objetivo: 30) Tabla 1.- Resumen de características principales de OSIRIS. 5.4 5.4.1 FILTROS SINTONIZABLES FABRY-PEROT. Teoría. Un filtro Fabry-Pérot esta compuesto por dos espejos paralelos, con aire entre ellos como dieléctrico. 40 Figura 12. - Foto de un etalón Fabry Pérot Son dos placas de cristal, separadas una distancia d, y recubiertas de una capa de reflectividad R. La luz, al entrar, se encierra entre ambos espejos, y “rebota” varias veces en el medio de índice n0, lo que da lugar a que sucedan tantos rayos salientes como rebotes mencionados. Esto implica la formación de un patrón de interferencias. La diferencia de camino óptico entre dos rayos sucesivos es: ? ? 2n0 d cos? 41 Reflectividad R Indice Distancia d Figura 13. - Esquema de los rayos dentro un Fabry Pérot Esto implica un período espacial de: i? ? 2n0 cos? (2) suponiendo que el camino óptico es un múltiplo de la longitud de onda, y que los cristales están paralelos. El Fabry-Pérot actúa entonces como un filtro óptico, es decir, que va a dejar pasar sólamente algunas longitudes de onda de la luz incidente. Esas frecuencias de resonancias dependen del índice del medio y de la longitud de la cavidad según: fp ? p c 2n0 d (3) 42 donde p es el modo, y c la velocidad de la luz en el vacío. Las resonancias son tales que la onda de vuelta al interior de la cavidad se puede añadir a sí misma, es decir, una ida y vuelta (2d) es igual a un camino óptico múltiple de la longitud de onda: 2 d ? p? p (4) Se puede apreciar en la figura 14, la curva de la transmisión de potencia luminosa en función de la frecuencia, llamada función de Airy (que depende de R y d, o R y f). Figura 14. - Gráfica de la intensidad luminosa a la salida de un filtro Fabry Pérot en función de la frecuencia normalizada. Se ve que la forma depende de la reflectividad R. Así, de la fórmula precedente (3), se deduce el denominado intervalo espectral libre, que es la “distancia” entre dos picos consecutivos: 43 ? f fsr ? c 2n 0 d (5) o lo que corresponde en términos de longitud de onda a: ?? fsr ?2 ? 2n 0 d (6) La figura 15, de interferencias, es una red de hiperboloides. Si el plano de observación es perpendicular a S1S2 vemos anillos, y si es paralelo a S1S2, se verán rectas, porque en realidad, el campo es muy reducido. Cambiando el paralelismo de los espejos y su traslación, el plano de observación toma distintas posiciones dentro de la red (mientras que en realidad es la red la que se mueve), así, los espejos son paralelos cuando el plano de observación es perpendicular a S1S2, y si además, situados en el centro de S1S2, se verá una mancha uniforme [3]. Figura 15. - Red de Interferencias 44 5.4.2 Estructura del etalón. El etalón tiene una parte de electrónica que permite mover uno de los dos espejos, quedando el segundo siempre fijo. Tiene tres actuadores piezoeléctricos, los cuales mueven el espejo móvil según los tres ejes del espacio, con ciertas limitaciones [5]. Sensores de capacidad. Piezoeléctrico . Capacidad de referencia. Figura 16. - Diagrama de los piezoeléctricos en el etalón Mientras los ejes x e y controlan el paralelismo, el eje z controla la anchura de la cavidad. Al aplicar una tensión a los actuadores, estos se contraen o se expanden según sea la tensión, lo cual conlleva a una rotación según el eje x o y, o una traslación según el eje z (en este ultimo caso, los tres piezos se mueven de manera similar). Los sensores, midiendo la capacidad que existe entre los dos espejos, permiten generar un bucle de realimentación con el fin de mantener la longitud de los piezos constante. Después de ocurrir el mayor porcentaje de su cambio de volumen, estos piezos tienen un tiempo de relajación, para alcanzar el punto de equilibrio. Las capacidades que se miden existen gracias a unas pequeñas placas circulares que están en las caras internas de los espejos, que simulan un capacitor con el aire como dieléctrico (ver en la figura 16 los círculos de sensores de capacidad) [5]. 45 Tiene cinco conexiones: uno para la alta tensión de los tres amplificadores del controlador, aplicadas respectivamente a los bornes de los cada piezo (a,b,c), tres de retorno para los tres ejes x, y, z, y un quinto para la señal de 15kHz sinusoidal que alimenta el puente de medida de los capacitores que actúan como sensores. Se ha determinado que estas señales de retorno son muy débiles, por lo que la carcasa del etalón se debe mantener aislada, y en ningún caso, hacer contacto con tierra analógica o digital; de lo contrario, el controlador no será capaz de distinguir correctamente estas señales de error [6]. 5.4.3 Resumen de propiedades del etalón de OSIRIS. Rango de longitudes de onda 365 65 a 1000 nm. FWHM de los filtros a 372.7 nm. 0.99 nm (meta 1.49 nm). sintonizables a 656.3 nm. 1.75 nm (meta 2.62 nm). (TF en ingles Tunable Filter) a 906.9 nm. 2.42 nm (meta 3.63 nm). Al menos 400 (para el TF azul). Contraste y 1000 (para el TF rojo). Al menos 70 % desde la longitud de onda Alcance central. Rango de longitudes de onda para el TF azul Rango de longitudes de onda para el TF rojo Rango de desplazamiento Apertura total del etalón De 365 a 670 nm. De 620 a 1000 nm. Separación entre espejos desde 2µm hasta 12µm. 100 mm. Tabla 2.- Resumen de propiedades del etalón de OSIRIS. 46 5.5 5.5.1 CONTROLADOR CS-100. Descripción general. El CS100 es el controlador estándar que suministra IC Optical Systems junto con sus Filtros Sintonizables. Este instrumento es el controlador que aplica una tensión a cada uno de los piezoeléctricos del etalón, de manera que se pueda ajustar la distancia entre los espejos, así como el paralelismo. Se puede usar manualmente o de forma remota a través de una entrada analógica de +/- 10V, utilizando un generador de señal o una tarjeta generadora conectada a un PC , o bien a través de un puerto serie RS232 [5]. Figura 17. - Foto del CS100 47 5.5.2 Descripción del panel frontal. El aparato tiene en su centro dos manillas: uno para ajustar el tiempo de respuesta, y el otro para seleccionar el modo de calibración (“balance”) o el modo de operación (“operate”). Para la calibración del aparato, refiérase al manual páginas 24 y 25. Las dos columnas de manillas mas a la izquierda (los finos y gruesos) sirven para controlar la tensión a los bornes de los piezos, según los ejes X, Y y Z. Cabe destacar que el manejo de una sola manilla no implica que se mueva sólo un piezo, sino una combinación de los piezos. La columna restante de manillas a la derecha, es para controlar la señal de cuadratura para X, Y y Z. Los tres galvanómetros indican, en voltios, el nivel de cuadratura, o de offset, de la señal usada por el CS100, para los tres ejes, según la posición de la manilla de selección ‘‘quadrature/offset’’ que se encuentra debajo del galvanómetro mas a la derecha [5]. 5.5.3 Funcionamiento. El CS100 controla el desplazamiento del espejo de forma indirecta, por comparación entre dos medidas de capacidades: una de referencia, fija, otra variable (compuesta por dos pequeñas placas metálicas ubicadas sobre ambos espejos del filtro) que, gracias a un bucle de realimentación va alcanzando la de referencia (el error, o sea la diferencia entre esas dos capacidades, tiende a cero). Para poder ajustar la distancia entre los dos espejos, hay que introducir un error artificial, sin el cual la distancia sería siempre fija, e impuesta por el valor de la capacidad de referencia. Este error artificial indica el nivel de offset. El nivel de cuadratura es debido al sistema interno del controlador que usa señales sinusoidales de 15 Khz. para los capacitores y sirve para manejar la fase de estas señales. Debe quedarse entre +/5V, en caso contrario el CS100 se sobrecarga, y el indicador “fuera de rango” se enciende (es un sistema de seguridad para no estropear el etalón). Por eso se usan las manillas de ajustes de cuadratura. En caso de sobrecarga, se pasa del modo “balance” a “operate”, sin olvidar cambiar los ajustes como eran antes de la sobrecarga [5]. El CS100 entrega a los piezoeléctricos, tensiones de -750 V hasta +750 V aproximadamente. El CS100 tiene también cierto margen de uso: la reducción o el aumento de 48 la longitud de la cavidad esta limitada, como también la máxima perpendicularidad de los espejos. Según los ejes x e y, el movimiento de los espejos es de tipo tip-tilt, puesto que el uso normal del etalón es el de ajustar los espejos paralelos. Entonces, las limitaciones se ven sobretodo cuando se traslada el espejo móvil según z: a partir de dos ciertos puntos (el de mínimo y máximo rango), aunque las agujas de cuadratura estén cercanas a cero utilizando los botones de cuadratura, el CS100 se sobrecarga. Esto significa que ya no se puede adelantar / retrasar más los espejos. Esto corresponde también a una tensión aplicada por el CS100 de +750 V (o -750 V, según el punto en el cual esté). Unas manillas corresponden a los incrementos gruesos, y otras a los incrementos finos, y se puede apreciar las discontinuidades debidas al incremento grueso, por lo que no hay equivalencia entre un ajuste con la manilla de incremento fino al máximo, y un incremento de la manilla de grueso, con el fino al mínimo. Conociendo el funcionamiento del CS100, se propuso un esquema de conexión para los capacitores dentro del Fabry Pérot, puesto que el fabricante no proporcionaba ningún documento sobre el tema. 49 Vcom1 Bridge Drive C8 jVcom1 Cx2 Amp Vx Cx1 Bridge Drive C6 Cy2 Vy Cy1 Bridge Drive C16 Xcoax Charge Amp X C28 Amp Ycoax Charge Amp Y C28 Cz Amp Vz Cref Bridge Drive C26 Zcoax Charge Amp Z C28 P S D Amp Piezo B Amp Piezo A Amp Piezo C jVcom1 P S D jVcom1 P S D Bridge Drive C14 0V Figura 18. - Conexión de los capacitores del Fabry Pérot 5.5.4 Explicación del esquema de conexión. Se describe un esquema de un sistema servomecanizado. Impone a cada uno de los piezoeléctricos del etalón una tensión, de manera que se pueda cambiar su espesor, y por consiguiente, controlar el paralelismo del espejo como su traslación. Cada canal tiene un puente de capacitores formados por plaquitas metálicas ubicadas sobre cada espejo del Fabry Pérot (ver posición de dichos elementos figura 16). El principio de funcionamiento es el siguiente: 50 ? Vcom1 es una señal sinusoidal de referencia de 15 Khz de frecuencia, y de baja tensión. ? Vx, Vy y Vz son señales sinusoidales de 15KHz de frecuencia, de amplitud igual a la de Vcom1, y en contrafase con ella, (sin embargo, la amplitud y la fase de estas tres señales pueden ser modificadas). Debido a que el esquema es redundante, se va a explicar el fenómeno por un solo canal, por ejemplo el canal Vx. ? Suponemos que Vx sea en contrafase con Vcom1 y de igual amplitud. En este caso, a la salida del puente formado por Cx1 y Cx2, ninguna señal es generada siempre que las capacidades sean iguales: se esta en equilibrio, el piezo no se mueve. ? Si Vx no está exactamente en contrafase con Vcom1, entonces a la salida del puente de capacitores aparece una señal de frecuencia 15 Khz, y de amplitud proporcionada con la diferencia de fase que existe entre Vx y Vcom1. La señal podría parecerse a la curva verde a la derecha de la figura 11. ? El montaje incluyendo el detector de fase (bloque P.S.D.) muestrea coincidiendo con el flanco de una señal de reloj de frecuencia igual a la de Vcom1 y desfasada 90º (llamada jVcom1), la señal que sale del amplificador. El resultado es dirigido hacia el piezo B del etalón después de una amplificación: la señal ahora es de alta tensión. Finalmente, el piezo B se alarga o disminuye según el signo de la señal y su amplitud, lo cual implica un cambio de valores de las capacidades, es decir que Cx1 y Cx2 cambian de valores ; lo que modifica Vx, hasta alcanzar el punto de equilibrio ya visto en el punto anterior. ? Es imprescindible durante esta etapa que ambas señales es decir, los pulsos de muestreo y la señal muestreada, estén bien sincronizadas. En caso contrario (figura 51 19), una mala señal será podría ser entregada al etalón, lo que puede dañarlo. Por tanto, el controlador se sobrecarga y indica ‘‘fuera de rango’’. Las manillas de ajustes de cuadratura son para este uso : cambiar la fase de Vx (figura 11), de forma que se selecciona siempre una tensión cercana a los máximos a la salida del P.S.D. Quadrature X level position Figura 19. - Contínua a la izquierda : Vx, por ejemplo. Contínua a la derecha : señal a la entrada del P.S.D fuera de la posición de equilibrio. Punteada, la señal desfasada cuando tocamos a la manilla de cuadratura. En líneas de pequeños segmentos, la amplitud modificada usando el botón x. 52 Figura 20. - Línea contínua: señal a la entrada del P.S.D. Abajo: la señal de reloj. Punteada Arriba : la señal a la salida mandada hacia el piezo. Punteada abajo: señal a la salida con una mala sincronización 5.5.5 Comentarios. Eso es el principio del servomecanismo que permite a los tres piezos guardar sus espesores constantes, y por lo tanto el espejo bien fijo. Sin embargo, hay que dejar al usuario la posibilidad de ajustar el paralelismo de los espejos, así como su traslación según z. Por eso se introduce una señal de offset. Gracias a las manillas X, Y y Z del controlador, se aumenta la amplitud de los señales Vx, Vy y Vz (figura 18). En cuanto a los ejes x e y, puesto que sirven para ajustar el paralelismo, los valores de las capacidades Cx1, Cx2, Cy1 y Cy2 no importan mucho, porque el servocontrol está basado en la diferencia entre cada par de valores. En el caso del eje z, un valor de la capacidad es fija ya que queremos ajustar la anchura de la cavidad con cierto valor. Por ejemplo, cuando giramos la manilla del eje z del controlador, eso impone un cambio de la tensión al piezo C, aumentando o disminuyendo su espesor, lo que implica un desajuste del paralelismo (uno de los tres piezos cambia su espesor), pero gracias al servo, los piezos B y A se ajustan de forma que guardan el paralelismo [3]. 53 6. PLANTEAMIENTO DEL PROBLEMA. Las limitaciones del CS100, actual y único equipo disponible para el control de los filtros sintonizables Fabry-Perot de gran apertura a usarse, hacen que el mismo no cumpla con los requerimientos demandados por el proyecto OSIRIS. Dichas limitaciones son las siguientes: ? En el modo de control remoto ofrecido por el fabricante, no se tiene acceso al cambio de valores de todas las señales que se pueden manejar desde el panel frontal del CS100, obligando a que, en algún momento de su funcionamiento, sea necesario intervenir manualmente al controlador en el panel frontal. La situación física de este controlador en el telescopio, no va a permitir su acceso durante su operación. ? También, en el modo de control remoto del fabricante, el desplazamiento máximo de los espejos que se puede lograr es de 2µm, es decir, ± 1µm a partir de un punto prefijado manualmente, donde una vez mas se requiere el acceso al panel frontal. ? Además, el panel de control remoto, exige que cada valor desplazamiento sea enviado por el puerto serial, uno a uno, lo cual resulta lento si se desea hacer barridos en el espectro, con una velocidad que supere la velocidad de transmisión del puerto serial. ? El controlador CS100 no permite sincronizar los desplazamientos de los espejos con una señal externa. 6.1 OBJETIVOS. Bajo las limitaciones presentadas anteriormente, y en pro de cumplir con los requerimientos de OSIRIS, se plantearon los siguientes objetivos: 54 ? Lograr tener un modo de control remoto que permitiese tener el control total del panel frontal y así evitar la intervención manual en el equipo para su calibración y operación. ? Poder realizar un desplazamiento total de los espejos de 8µm en modo de control remoto, con al menos 0,5nm de resolución. ? Poder configurar barridos del espectro que no dependan de la velocidad de transmisión del puerto serial. ? Tener la habilidad de ordenar el movimiento de los espejos con una señal externa, que provendrá de la cámara CCD, y así sincronizar el movimiento de los espejos, con el desplazamiento de carga del CCD. 6.2 SOLUCION. La solución planteada consiste en el diseño de una tarjeta de aplicación que capture las señales del controlador CS100, las interprete, en casos las modifique, y las regrese al controlador para lograr tener el control total del panel frontal de manera remota, y cambiar la señal de consigna de cada uno de los servos de los espejos, y lograr así el desplazamiento máximo de 8µm. Por efecto de este desplazamiento, se genera una señal de error de cuadratura que se controlaba con el panel frontal, lo cual ha llevado al diseño de un servo-control que evitara la necesidad de la compensación por el panel frontal en las manillas de ajuste de cuadratura. Este servo-control captura la señal de error de cuadratura y aplica una compensación necesaria para evitar que el equipo de la alerta de “fuera de rango”, la cual evita que se produzcan oscilaciones indeseadas en los espejos, que pudiesen llevar a que chocaran entre ellos y se destruyan. 55 Además, dicha tarjeta deberá poder recibir una señal externa para la sincronización con la cámara CCD. Todo esto sin que ello afecte al funcionamiento de los demás circuitos del controlador CS100, y así asegurar la correcta operatividad de todo el equipo en conjunto. 6.3 JUSTIFICACION. La justificación viene dada por la exigencia de funcionamiento, presentadas por la operatividad necesaria para poder hacer los estudios solicitados por los astrónomos. También puede notarse razones de versatibilidad y robustez del instrumento OSIRIS. 6.4 6.4.1 ESPECIFICACIONES A CUMPLIR. Capacidad de control remoto. Controlar y monitorizar todo el panel frontal, de forma remota. 6.4.2 Control de las señales de consigna. Capturar la señal de consigna del canal de desplazamiento Z, la de la señal de paralelismo X y la de paralelismo Y, controlar su amplitud (±10VAC a 15KHz) y fase (0º~180º) a fin de lograr una resolución mejor a 0,5nm. 6.4.3 Capacidad de sincronización. Controlar el cambio del canal Z que define el desplazamiento de los espejos en sincronía con la señal de disparo externa TTL proveniente del CCD. 6.4.4 Control Automático de cuadratura. Capturar las señales de error de cuadratura de cada canal y aplicarle una regulación automática a la señal de control de cuadratura del controlador. 56 6.4.5 Capacidad de comunicación. Controlar en su totalidad al equipo CS100 a través de una interfaz de un puerto serie desde un computador, con un protocolo de comandos en ASCII. 57 7. DISEÑO PRELIMINAR A continuación se definirán un conjunto de módulos electrónicos cuya funcionalidad dará lugar al cumplimiento de las especificaciones citadas. 7.1 Módulo 1. La funcionalidad de este módulo permitirá cumplir la especificación 6.4.1., relacionada con la capacidad de control remoto. 7.1.1 Estudio del sistema actual. En el panel frontal se encuentran todas las manillas de selección de modos de operación, ajustes finos y gruesos de offset, ajustes de cuadratura, selección de tiempos de respuesta, y tres galvanómetros, uno para cada canal, que indican según selección de modo offset o cuadratura, el ajuste del offset o el ajuste de la cuadratura respectivamente. También se encuentran 5 leds que indican: encendido del equipo, equipo en modo operate, equipo en modo balance, equipo en fuera de rango y equipo en modo remoto representado por “disable”. Las señales de selección son estados digitales que van a un controlador lógico, las señales a los leds vienen de ese mismo controlador lógico, y las señales de ajuste de cuadratura y de offset, como también las señales a los galvanómetros, son señales analógicas, y vienen de determinados puntos del equipo. Mas detalles circuitales del CS100 no pueden ser mencionados respecto a este punto por un acuerdo de confidencialidad con el fabricante. 7.1.2 Propuesta de control e intervención de señales. En tal sentido se tienen tres grupos de señales: ? Un primer grupo de señales digitales que leer, provenientes del panel frontal respecto a las selecciones de modos y tiempos de respuesta, y otras provenientes del controlador lógico que activan el encendido de los leds, que también se deben 58 leer. Seguidamente, estas señales serán interpretadas por un sistema de control digital, para después generar las señales de selección de modos y tiempos de respuesta según nuestra operación y redirigirlas al controlador lógico, lo cual implica que ahora estas señales del panel frontal, no irán directamente al controlador lógico, y su selección dependerá del nuevo sistema de control digital. Igualmente con las señales de encendido de los leds provenientes del controlador lógico, que serán leídas e interpretadas por el nuevo sistema de control digital, el cual decidirá que señales a los leds activar, y las generara para redirigirlas a los leds en el panel frontal. Cabe mencionar que todas estas señales de selección y activación trabajan con lógica negativa. ? Un segundo grupo de señales analógicas que provienen de los ajustes de offset y cuadratura, que tendrían la opción de ser cortadas para ser sustituidas por las señales de ajuste que se generen en la nueva tarjeta de aplicación. Todo esto con el debido cuidado a crear efectos de carga al CS100. Estas opciones de sustitución también serán decididas por el nuevo sistema de control digital. ? Un tercer grupo de señales analógicas provenientes de los galvanómetros, las cuales simplemente serán capturadas sin ser alteradas o desconectadas de los galvanómetros, para así poder interpretarlas y saber su valor en voltios. 7.1.3 Características de los componentes necesarios. ? Para el primer grupo de señales, las selecciones de modos provenientes del panel frontal necesitarían de unos “pull-up” ya que trabajan con lógica negativa. Y las selecciones dadas por el nuevo sistema de control digital, pasarían por un buffer TTL para evitar los efectos de carga provenientes del CS100. Respecto a las conexiones a los leds, las órdenes de encendido provenientes del controlador lógico serán conectadas a dispositivos optoaisladores, para separar la electrónica del CS100 y sus efectos de carga, del nuevo sistema de control digital. Y para señales de encendido de los led provenientes del nuevo sistema de control digital, se 59 incluiría las debidas resistencias en serie con cada led según las características de potencia de los mismos, como también de la intensidad de luz deseada. ? Para el segundo grupo constituido por señales analógicas, se sabe que son señales con un máximo de ±10VAC. Con la intención de sustituir estas señales, se pensó usar unos switch analógicos comandados por el nuevo sistema de control automático. Pero dadas las posibilidades que el switch inyectara ruido, por las señales digitales de activación, a la señal analógica, y esto aunado a la posibilidad de efectos de carga sobre el CS100, debido a la circuiteria presente en el punto de donde provienen estas señales, se decidió colocar unos relés para la selección de las señales, cuyas ordenes de activación estarían aisladas, del nuevo sistema de control digital, por dispositivos optoaisladores. Es altamente deseable que estos reles tengan una muy baja resistencia de contacto para evitar atenuaciones, y que soporten el rango de voltaje y el tipo de estas señales analógicas que van a pasar por ellos. ? Para el tercer grupo de señales, que provienen de los galvanómetros, es necesario implementar para su lectura un dispositivo conversor analógico digital, para que así el nuevo sistema de control digital pueda procesarlo. Este ADC preferentemente seria de salida paralela, y con capacidad de, al menos, tres canales seleccionables, que en nuestro caso son los canales X, Y y Z. También debe tener un rango de voltaje de entrada de ±10VDC. Además debe ofrecer al menos 8 bits de resolución, que ofrecería una resolución de lectura de algo menos a 100mV, suficiente para nuestros propósitos de monitorización. 7.1.4 Diagrama de bloques. ? Para el primer grupo de señales: 60 Señales de Selección de modos del Panel Frontal 8 Señales de Selección de modos hacia el controlador lógico Señales de Encendido de LEDs hacia el Panel Frontal Señales de Encendido de LEDs del controlador lógico Tarjeta de Aplicación Pull-ups 8 Nuevo 8 Buffers 8 Sistema de Control 5 5 Arreglo de resistencias 5 Dispositivos Optoaisladores 5 Digital Figura 21. - Diagrama de bloques del módulo 1. Parte 1 61 ? Para el segundo grupo de señales: Señales de Ajuste de Cuadratura del Panel Frontal Señales de Ajuste de Cuadratura de la Tarjeta de Aplicación Tarjeta de Aplicación x x y 3 y z Señales de cuadratura generadas z 3 Señales de activación de reles 3 Dispositivos Optoaisladores 3 Dispositivos Optoaisladores 3 Nuevo Sistema de Control 3 Señales de activación de reles Señales de Ajuste de Offset del Panel Frontal Señales de Ajuste de Offset de la Tarjeta de Aplicación 3 x x y y Digital z z Señales de offset generadas 3 Figura 22. - Diagrama de bloques del módulo 1. Parte 2 62 ? Para el tercer grupo de señales: Señal para el Galvanómetro X Tarjeta de Aplicación Entradas Analógicas ADC Señal para el Galvanómetro Y Nuevo Conversor Analógico - Digital Señal para el Galvanómetro Z Salida Digital ADC 8 Sistema de Control Digital Señales de control entrada/salida Figura 23. - Diagrama de bloques del módulo 1. Parte 3 7.2 Módulo 2. La funcionalidad de este módulo permitirá cumplir la especificación 6.4.2., relacionada con el control de las señales de consigna. 7.2.1 Estudio del sistema actual. Las señales de consigna de los etalones para X, Y y Z, que son los ajustes grueso y fino del offset, son señales AC sinusoidales con amplitud máxima de 10VAC a 15KHz. El CS100 dispone de puntos donde esta señal es capturada como vimos en el punto anterior. Mas detalles circuitales del CS100 no pueden ser mencionados respecto a este punto por un acuerdo de confidencialidad con el fabricante. 63 7.2.2 Propuesta de control e intervención de señales. El ajuste grueso será sustituido en el Módulo 1 por lo que este módulo genere. El ajuste fino será desconectado con un relé (tal y como se hace en el punto anterior pero en vez de mandar la señal generada, se pondrá a tierra) y enviado a tierra para que no ofrezca contribución alguna durante la operación de este módulo. Como la señal sustitutiva debe ser igual en amplitud y frecuencia a las que reciben los etalones, se necesita una señal de referencia, que se puede capturar en un punto determinado del CS100 fácilmente. Mas detalles circuitales del CS100 no pueden ser mencionados respecto a este punto por un acuerdo de confidencialidad con el fabricante. Un conversor Digital-Analógico es la opción a este módulo, ya que el nuevo sistema de control digital podrá decidir el valor a cargar, dentro del rango ofrecido por la señal de referencia. El recorrido del etalón es lineal con el intervalo definido desde -Ref hasta +Ref, encontrándose los espejos en mitad de su desplazamiento en cero voltios, que es la mitad del mencionado intervalo. Por ello, el cero digital debe coincidir con –Ref y la salida máxima digital debe coincidir con +Ref. Así controlaremos su amplitud. La fase la controla la señal de cuadratura a través de un módulo de control automático que se describirá mas adelante. 7.2.3 Características de los componentes necesarios. El componente principal de este módulo es el conversor digital- analógico. Debe ser de tipo multiplicador ya que su señal de referencia será una señal AC. Se debe usar un DAC para cada canal (X,Y,Z). Bajo la premisa de que debemos tener una resolución de al menos de 0,5nm, y sabiendo que el recorrido total del etalón es de aproximadamente 8µm, entonces se tendrá una exigencia mínima de 16000 pasos distinguibles, que corresponden a 14bits de resolución del DAC. Ya que esto es para el mínimo necesario, se buscará mejorar esta resolución de 0,5nm utilizando un DAC de 16bits, lo cual ofrecería una resolución en principio de 0,12nm. También esto permite aceptar un componente con una no linealidad integral de 1 bit (INL de 1LSB), que ya es bastante exigencia. Por otro lado, debe aceptar señales de referencia sinusoidales de 15KHz con 10Vp-p. Debido a que se necesita llevar la señal analógica desde +10Vp pasando por cero, hasta otros +10Vp pero con 180º de desfasaje, 64 el DAC debe trabajar en modo bipolar, donde el cero analógico, corresponda a media escala en los 16bits. Es también muy aconsejable que ofrezca un reducido nivel de ruido de salida para no introducir perturbaciones a esta señal que va a los etalones. 7.2.4 Diagrama de bloques. Señal de offset generada para X Salida analógica DAC X Señal de referencia Tarjeta de Aplicación Conversor DigitalAnalógico Entrada Digital al DAC X 16 Señales de control DAC X Señal de offset generada para Y Salida analógica DAC Y Señal de referencia Conversor DigitalAnalógico Entrada Digital al DAC Y 16 Nuevo Sistema de Señales de control DAC Y Control Digital Señal de offset generada para Z Señal de referencia Salida analógica DAC Z Conversor DigitalAnalógico Entrada Digital al DAC Z 16 Señales de control DAC Z Figura 24. - Diagrama de bloques del módulo 2 65 7.3 Módulo 3. La funcionalidad de este módulo permitirá cumplir la especificación 6.4.3., relacionada con la capacidad de sincronizacion. 7.3.1 Estudio del sistema actual. El sistema actual no cuenta con ningún dispositivo que permita aceptar una señal de sincronización externa, que dispare el avance de la señal de offset del canal Z. 7.3.2 Propuesta de control e intervención de señales. Con el nuevo sistema digital a implementar, se abre la posibilidad de hacer sincronismos con señales externas, debido a que la solución planteada en el módulo 2, permite controlar la señal de offset del canal Z de manera digital. En tal sentido, el nuevo sistema digital interpretara la señal de sincronía y, según el estado en que se encuentre, dará un avance de paso del etalón, es decir, su desplazamiento. La señal de sincronía proveniente de la cámara CCD, es una señal TTL, y al momento de hacer un barrido, será una onda cuadrada de aproximadamente unos 200Hz de frecuencia. 7.3.3 Características de los componentes necesarios. El único componente necesario en este caso podría ser un buffer TTL para evitar efectos de carga en el nuevo sistema digital, ya que la circuiteria de la cual proviene esa señal TTL se desconoce. 66 7.3.4 Diagrama de bloques. Tarjeta de Aplicación Señal de sincronización Externa TTL Nuevo Buffer TTL Señal Digital Sistema de Control Digital Figura 25. - Diagrama de bloques del módulo 3 7.4 Módulo 4. La funcionalidad de este módulo permitirá cumplir la especificación 6.4.4., relacionada con el control automatico de cuadratura. 7.4.1 Estudio del sistema actual. La señal de cuadratura que se aplica en el panel frontal, hace un ajuste de compensación de la señal de offset en el puente de capacitores del CS100 debido a la presencia de una señal espuria (ver figura 18 en el punto CONTROLADOR CS100), para mantener el desfasaje que ocurre entre la señal de referencia y dicha señal antes mencionada, mucho menor a 90º. Esto lleva a un ajuste continuo de este valor, ya que, cuando el desfasaje supera un cambio de 90º, el equipo cae en fuera de rango, y su operatividad es detenida por razones de seguridad y buen funcionamiento. El desplazamiento posible antes de llegar a los 90º es muy pequeño, y se está hablando de poder recorrer el desplazamiento máximo que permita el etalón. 67 7.4.2 Propuesta de control e intervención de señales. Claramente, y en apoyo a la especificación 6.4.1 (capacidad de control remoto), esta graduación debe hacerse en forma automática, de tal forma que se realicen ajustes a la señal de cuadratura, de acuerdo con la señal de error de cuadratura, la cual se encuentra en un módulo dentro del CS100, para los cuales existen 3 puertos coaxiales internos (uno para cada canal – X, Y y Z-), que permiten recogerlas por separado y de una manera fácil. De esta manera se puede tomar esas señales como medida proporcional al ajuste que se debe hacer a la señal de cuadratura. Por lo tanto, es la amplitud de una señal de referencia de 15KHz la que se debe modificar para reinyectarla al CS100 y efectúe la compensación que elimine los efectos de la señal espuria. Mas detalles circuitales del CS100 no pueden ser mencionados respecto a este punto por un acuerdo de confidencialidad con el fabricante. Para el propósito de modificar la amplitud de la señal de referencia, es necesario multiplicar a la misma por un factor que la atenúe o la amplifique su amplitud. Este factor lo se obtiene a partir de la señal de error de cuadratura antes mencionada. Esta señal de error de cuadratura es una señal de corriente contínua, por lo cual una integración de esta señal daría el factor multiplicativo necesario. Es de interés que el integrador no produzca efectos de ganancia en la señal, por lo que seria recomendable un ajuste de máxima amplitud permitida antes de pasar al multiplicador. También, para evitar efectos de carga al CS100, se colocará un buffer en la entrada al circuito. Deberá realizarse un circuito para cada canal. 7.4.3 Características de los componentes necesarios. Los amplificadores operacionales que conformen el buffer deberán ser de muy alta impedancia de entrada, para cumplir el propósito para el cual se van a usar. Ya que se utilizarán más amplificadores operacionales para el integrador y para el ajuste de ganancia, es recomendable escogerlos de tal forma que sean varios OPAMs en un solo integrado. Y para el multiplicador, interesa que tenga entradas diferenciales de alta impedancia, que tenga un error de multiplicación bajo, sea de bajo nivel de ruido en operación con señales de 15KHz, y que 68 introduzca muy poca distorsión, para reproducir la señal de 15KHz correctamente sin sufrir deformaciones. 7.4.4 Diagrama de bloques. (Un diagrama como el que sigue para X, otro para Y y otro para Z, idénticos). Señal de Error de cuadratura Señal de Referencia Tarjeta de Aplicación Buffer de Integrador Señal para el ajuste de la cuadratura Buffer con ajuste de amplitud máxima Multiplicador Figura 26. - Diagrama de bloques del módulo 4 7.5 Módulo 5. La funcionalidad de este módulo permitirá cumplir la especificación 6.4.5., relacionada con la capacidad de comunicación. 7.5.1 Estudio del sistema actual. El sistema actual permite un manejo vía puerto serial desde un computador, pero con serias limitaciones. En primer lugar, el funcionamiento de control a través del puerto serie sólo 69 permite un desplazamiento de 2µm, lo cual ya empieza a ser una limitante fuerte; y aún cuando lo permitiese, no ofrecería la resolución requerida por OSIRIS. Mas detalles circuitales del CS100 no pueden ser mencionados respecto a este punto por un acuerdo de confidencialidad con el fabricante. Luego, su funcionamiento es alrededor de un punto que debe ser fijado manualmente, lo cual se contrapone con la especificación 6.4.1. Además, no permite hacer barridos con la rapidez que se necesita, aunado esto a que los comandos programados vía puerto serial disponibles en el equipo original son poco prácticos. 7.5.2 Propuesta de control e intervención de señales. Debido a que el nuevo sistema de control digital ejerce un dominio sobre todos los módulos de la tarjeta de aplicación, la cual en si, controla y monitoriza el panel frontal, controla el paralelismo X , el paralelismo Y, y el desplazamiento Z, regula los ajustes de cuadratura, todos estos puntos básicos para el bien funcionamiento del etalón, queda de este nuevo sistema de control digital, el poder establecer comunicaciones vía puerto serial con un computador, y ser programado para interpretar los comandos a establecer. 7.5.3 Características de los componentes necesarios. El elemento de control digital a utilizar debe tener la capacidad de establecer comunicaciones vía RS232, y debe poder ser programado para que ejecute los comando de manera ordenada. Deberá disponer de un dispositivo UART para comunicarse con el computador. 70 7.5.4 Diagrama de bloques. Tarjeta de Aplicación Nuevo Señal TX Señal RX Sistema de Dispositivo UART Computador Señal RX Control Señal TX Digital Figura 27. - Diagrama de bloques del módulo 5 7.6 Resumen de señales para el control digital. El resumen de señales para el control digital que harán interfaz con el nuevo sistema de control digital, según el módulo al que pertenezcan, son las siguientes: 7.6.1 Módulo 1. 7.6.1.1 Entradas ? Selección de modo “Offset” en el panel frontal. ? Selección de modo “Quadrature” en el panel frontal. ? Selección de modo “Operate” en el panel frontal. ? Selección de modo “Balance” en el panel frontal. ? Selección de constante de tiempo “0.2msec” (RT1) en el panel frontal. ? Selección de constante de tiempo “0.5msec” (RT2) en el panel frontal. ? Selección de constante de tiempo “1.0msec” (RT3) en el panel frontal. ? Selección de constante de tiempo “2.0msec” (RT4) en el panel frontal. 71 ? Orden de encendido del led “power” del controlador lógico del CS100. ? Orden de encendido del led “operate” del controlador lógico del CS100. ? Orden de encendido del led “balance” del controlador lógico del CS100. ? Orden de encendido del led “out of range” del controlador lógico del CS100. ? Orden de encendido del led “disable” del controlador lógico del CS100. ? Valor de la lectura del galvanómetros en formato paralelo de 8 bits. ? Señales de control provenientes del ADC. 7.6.1.2 Salidas ? Selección de modo “Offset” hacia el controlador lógico del CS100. ? Selección de modo “Quadrature” hacia el controlador lógico del CS100. ? Selección de modo “Operate” hacia el controlador lógico del CS100. ? Selección de modo “Balance” hacia el controlador lógico del CS100. ? Selección de modo “0.2msec” (RT1) hacia el controlador lógico del CS100. ? Selección de modo “0.5msec” (RT2) hacia el controlador lógico del CS100. ? Selección de modo “1.0msec” (RT3) hacia el controlador lógico del CS100. ? Selección de modo “2.0msec” (RT4) hacia el controlador lógico del CS100. ? Orden de encendido del led “power” hacia en el panel frontal. ? Orden de encendido del led “operate” hacia en el panel frontal. ? Orden de encendido del led “balance” hacia en el panel frontal. ? Orden de encendido del led “out of range” hacia en el panel frontal. ? Orden de encendido del led “disable” hacia en el panel frontal. ? Orden de activación de relé para sustitución de señal de cuadratura en X. ? Orden de activación de relé para sustitución de señal de cuadratura en Y. ? Orden de activación de relé para sustitución de señal de cuadratura en Z. ? Orden de activación de relé para sustitución de señal de ajuste de offset (fino y grueso) en X. ? Orden de activación de relé para sustitución de señal de ajuste de offset (fino y grueso) en Y. 72 ? Orden de activación de relé para sustitución de señal de ajuste de offset (fino y grueso) en Z. ? Señales de control hacia el ADC. 7.6.2 Módulo 2. 7.6.2.1 Entradas Ninguna. 7.6.2.2 Salidas ? Valor a cargar en el DAC para X en formato paralelo de 16 bits. ? Valor a cargar en el DAC para Y en formato paralelo de 16 bits. ? Valor a cargar en el DAC para Z en formato paralelo de 16 bits. ? Señales de control hacia el DAC para X. ? Señales de control hacia el DAC para Y. ? Señales de control hacia el DAC para Z. 7.6.3 Módulo 3. 7.6.3.1 Entradas ? 7.6.3.2 Señal de sincronización proveniente del CCD. Salidas Ninguna. 73 7.6.4 Módulo 4. 7.6.4.1 Entradas Ninguna. 7.6.4.2 Salidas Ninguna. 7.6.5 Módulo 5. 7.6.5.1 Entradas ? 7.6.5.2 Señal de transmisión de datos provenientes del computador (RS232). Salidas ? Señal de transmisión de datos hacia el computador (RS232). 74 8. DISEÑO DETALLADO. 8.1 Consideraciones del control digital a implementar. Este nuevo sistema de control digital deberá manejar un gran número de señales de entrada y salida, por lo que su capacidad de interconexión deberá ser considerable. Además, debe poder procesar con eficiencia y rapidez las señales de entrada, para luego mandar señales de salida coherentes, resultado de un software de control implementado dentro del mismo. Existen en el mercado algunos microcontroladores que ofrecen una arquitectura que permite su utilización en casos como el presente, entre los que están los fabricados por varias compañías de reconocida trayectoria en circuitos integrados. Debido a que en el centro de desarrollo del departamento de ingeniería se contaba con una FPGA, como parte de una tarjeta de desarrollo, se convertía esta en una excelente opción para el desarrollo de este nuevo sistema de control digital, evitando el alto gasto que implicaría la compra de una plataforma de desarrollo de un microprocesador comercial. Además que implicaría ceñirse a las limitaciones que se puedan presentar si se desea cambiar de fabricante o de arquitectura de hardware en el futuro. La FPGA (Field Programmable Gate Arrays) es una arquitectura que consiste en un gran número de bloques lógicos simples programables (una alta densidad de compuertas lógicas), con switches e interconexiones entre estos bloques también programables, y un número celdas de entrada y salida periféricos al integrado, que se pueden conectar a estos bloques. Todo esto se hace a través de un sistema de software de desarrollo, que permite al usuario definir la función de hardware que se busca implementar, después de haber sido fabricado el integrado. Debido a su flexibilidad es muy útil para los diseñadores de circuitos integrados. 75 8.2 8.2.1 FPGA Xilinx Spartan -IIE. Descripcion de la familia Spartan- IIE. La familia Spartan-IIE de FPGAs cuenta con una arquitectura regular, flexible y programable de bloques lógicos configurables (-CLBs-Configurable Logic Blocks), rodeados por un perímetro de bloques de entradas/salidas programables (-IOBs-Input/Output Blocks). Contiene cuatro DLLs (Delay-Locked Loops), en cada esquina de su plano. También, dos columnas de bloques de RAM, que están en el lado contrario, entre las columnas de CLBs y IOB. Las Spartan-IIE son configurables según las especificaciones del usuario, a través del proceso de carga de dicha data de configuración dentro de las celdas internas de memoria estática. De esta forma, los ciclos de reprogramación son ilimitados. El valor guardado en esas celdas, determina las funciones lógicas y las interconexiones implementadas en la FPGA [9 y 10]. Tabla 3.- Características principales para la familia Spartan IIE según modelo. 76 Tabla 4.- Cantidad de I/O disponibles para la familia Spartan IIE según modelo. 8.2.2 Especificaciones Técnicas. ? Densidades de hasta 15,552 celdas lógicas, hasta con 600,000 compuertas. ? Reprogramación ilimitada. ? Tecnología avanzada de 0.15 micras. ? Memoria jerárquica SelectRAM+™: 16 bits/LUT de RAM distribuida, puertos duales de bloques de RAM 4K-bit reales, interfaz rápida con RAM externa. ? 3.3V PCI de 64 bits a 66 MHz y CardBus “compliant”. ? Arquitectura de segmentación de ruteo de baja potencia. ? Lógica de signo dedicada para operaciones aritméticas a alta velocidad. ? Manejo eficiente de multiplicadores. ? Abundantes registros, “latches” con “enable”, “set” y “reset”. ? Cuatro DLLs dedicados para control avanzado de reloj: elimina el retardo de distribución de reloj, multiplica, divide y hace corrimiento en fase. ? Compatible con IEEE 1149.1. ? Empaquetados de bajo costo para distintas densidades. ? Compatibilidad de familias de “footprints”. ? 19 estandares de interfaz de alto rendimiento: LVTTL, LVCMOS, HSTL, SSTL, AGP, CTT, GTL, LVDS y LVPECL I/O diferencial. 77 ? Hasta 205 pares diferenciales I/O que pueden trabajar como salidas, entradas o en modo bidireccional. 8.3 ? Cambio en caliente de entradas/salidas (compatible a CompactPCI). ? Mapeo, ruteo e implementación automáticos usando el Software de Xilinx. ? Integrado con las entradas de diseño y las herramientas de verificación. ? Extensas librerías IP incluyendo funciones DSP procesadores embebidos. Tarjeta de evaluación de AVNET. 8.3.1 Descripción. El kit de evaluación de Avnet para el Xilinx Spartan-IIE es usado por ingenieros como una plataforma de prueba para diseños de FPGA a ser aplicados en dispositivos Xilinx Spartan-IIE. También, es una gran herramienta para principiantes que deseen obtener destreza con FPGAs, VHDL y microcontroladores embebidos. El dispositivo Spartan-IIE, localizado en el centro de la tarjeta, puede ser configurado a través de un puerto JTAG de descarga o desde la PROM contenida en la misma tarjeta. La configuración de dicha PROM es también programable a través del cable JTAG. Sobre 100 señales de entrada/salida están conectadas entre la FPGA y los conectores de expansión; cuatro pares diferenciales están conectados al conector LVDS. Las otras entradas/salidas están conectadas a ocho LEDs, dos pulsadores, ocho DIPswitches, un puerto RS-232 “line transceiver”, un Codec y dos indicadores de siete segmentos [14]. 8.3.2 Especificaciones Técnicas. ? FPGA: ? SPROM: Xilinx XC18V02VQ44C Xilinx® Spartan-IIE XC2S200E-6FT256C 78 ? Conectores entrada/salida en tarjeta: o Dos conectores de expansión de 0.1 de 50 pines. o Pads para tres conectores MICTOR. o Pads para dos conectores de expansión de propósito general de 140 pines (AvBus). o Pads para conectores MDR de 26 pines para LVDS (4 pares). ? Alimentaciones: o +5.0 VDC conector de alimentación (fuente incluida). o +3.3 VDC regulado. o +2.5 VDC regulado. o +1.8 VDC regulado. o +1.5 VDC regulado. o Capacitancias de desacople en todos los puntos necesarios. ? Características: o TI TLV320AIC23 16-bit audio Codec. o Entradas/Salidas versátiles: Terminaciones seleccionables, voltajes de referencia y de salida en un solo banco. ? Comunicaciones: Puerto Serial RS-232 (DB9). ? Configuración: o Conector JTAG (header). o PROM programable integrada. ? Misceláneas: o 8 DIP-switches. o 2 pulsadores. o Dual LED 7 segmentos. o 8 LEDs. 79 o Oscilador de 50 MHz. 8.4 XPS (Xilinx Platform Studio). 8.4.1 Descripción. XPS provee un entorno integrado para crear las especificaciones de software y hardware para un sistema con procesador embebido. También provee de un editor y un gestor de interfaz de proyecto para crear y editar códigos fuente. XPS ofrece la personalización del conjunto de opciones de configuración de las herramientas. También, proporciona un sistema de edición grafico para la conexión de procesadores, periféricos y buses. XPS esta disponible para plataformas Windows y Solaris. Existe también, un modo de invocación tipo “batch” del XPS disponible [13]. 8.4.2 Características. XPS tiene las siguientes características: ? Permite agregar dispositivos, editar los parámetros de dichos dispositivos, definir conexiones de buses y señales, para generar las especificaciones del hardware del microprocesador (-MHS-Microprocessor Hardware Specification). ? Permite la generación y modificación de las especificaciones del software del microprocesador (-MSS- Microprocessor Software Specification). ? Manejo y soporte de las herramientas siguientes: Generador de librerías, compilador GNU, generador de plataforma, generador de modelos de simulación, generación del “Makefile”, sistemas ACE, Xilinx Microprocessor Debug, y exportar e importar diseños, hacia y desde el Xilinx Project Navigator. ? Visualización y edición del diagrama de bloques gráficos. ? Visualización y edición de códigos en lenguaje C, y archivos cabecera ? Permite la gestión completa del proyecto ? Permite la gestión de los procesos y de la dependencia de herramientas. 80 8.5 EDK 6.1 ( Embedded Development Kit). Este kit fue diseñado para proveer a los diseñadores de un valioso conjunto de herramientas de diseño, y una amplia selección de periféricos estándar, requeridos para construir un sistema con procesador embebido como lo es MicroBlaze, considerado la solución mas rápida en procesadores “soft” para la industria, y como lo es el IBM ® PowerPC ® CPU en el Virtex-II Pro. El EDK incluye las herramientas para sistemas embebidos(-ESTEmbedded System Tools), las cuales consisten en una plataforma para el manejo de utilidades, aplicaciones para el desarrollo de herramientas, herramientas para debug, manejadores de dispositivos y librerías, permitiendo al usuario de desarrollo aprovechar al máximo las prestaciones y el rendimiento del MicroBlaze y el Virtex-II Pro [13]. 8.6 MicroBlaze (microcontrolador embebido). 8.6.1 Descripción. El MicroBlaze es una estructura de procesador embebido del tipo RISC (reduced instruction set computer), optimizado para su implementación en FPGAs de Xilinx. La figura 28 muestra el diagrama de bloques que describe la estructura del MicroBlaze [11]. En dicho diagrama se denotan 4 tipos de interfaz por los buses que son los siguientes: ? ILMB: Instruction Local Memory Bus. ? DLMB: Data Local Memory Bus. ? IOPB: Instruction On-chip Peripheral Bus. ? DOPB: Data On-chip Peripheral Bus. 81 Figura 28. - Diagrama de la arquitectura del MicroBlaze 8.6.2 Características. El procesador embebido MicroBlaze tiene las siguientes características: ? Treinta y dos registros de 32 bits de propósito general. ? Manejo de palabras de instrucciones de 32 bits con tres operandos y dos modos de direccionamiento. ? Buses separados de 32 bits para instrucciones y de 32 bits para datos, que conforman las especificaciones del IBM’s OPB. ? Buses separados de 32 bits para instrucciones y de 32 bits para datos, con conexión directa al bloque de RAM integrado(on-chip block RAM) a través del LMB. ? Buses de 32 bits de direccionamiento. ? Procesamiento tipo “pipeline”. ? Cache para instrucciones y datos. ? Debug lógico del Hardware. ? Manejo de FSL (Fast Simplex Link). 82 ? Multiplicador de Hardware(en Virtex-II y dispositivos subsecuentes). La estructura MicroBlaze esta organizada como una arquitectura tipo Hardvard con unidades de bus de interfaz separadas para el acceso a datos y para el acceso a instrucciones. Cada unidad de interfaz de bus esta dividida dentro del LMB y del OPB. El LMB provee un acceso de ciclo simple al puerto dual del bloque de RAM integrado. La interfaz del OPB dispone de conexiones a periféricos y bloques de memoria, tanto integrados como externos. Además, la estructura del MicroBlaze provee de 8 interfaces de entradas y 8 interfaces de salida a un bus FSL. El bus FSL es un canal de comunicación unidireccional de dedicación no arbitraria. MicroBlaze dispone de los manejadores de dispositivos de Xilinx siguientes [12]: ? Controlador para ATM. ? Ethernet 10/100 MAC. ? Ethernet 10/100 MAC Lite. ? Controlador de memoria externa. ? I/O (entradas/salidas) de propósito general. ? Gigabit Ethernet MAC. ? HDLC (High level Data Link Control). ? Intel StrataFlash. ? Inter-Integrated Circuit (IIC). ? Controlador de interrupciones. ? Arbitro de OPB. ? Enlace de OPB a PLB. ? Enlace a PCI. ? Arbitro de PLB. ? Enlace de PLB a OPB. ? Entradas/Salidas rápidas. ? Interfaz para periféricos vía serial(-SPI-Serial Peripheral Interface). 83 ? Sistema ACE. ? Reloj/Contador ? UART Lite. ? UART 16450/16550. ? Watchdog Timer/Timebase. 8.7 8.7.1 Módulos circuitales definidos. Breve introducción a Protel 99SE. Protel 99 SE es un sistema de diseño electrónico a 32 bits para Windows 95/98/NT. Protel 99 SE provee de un juego de herramientas de diseño completamente integradas, que permiten efectuar un diseño desde la etapa conceptual hasta la definición final del trazado en tarjeta. Así, todas las fases para el diseño y modelos de fabricación se ejecutan en un solo programa integrado llamado Design Explorer. Al abrir Protel 99 SE, se ejecutara el Design Explorer, facilitando todas las herramientas a la mano, sin necesidad de llamar a otras aplicaciones para efectuar diferentes etapas del diseño final, integrándolas en tal forma que ni siquiera es necesario importar o exportar partes o etapas del diseño para pasar a la siguiente fase del mismo. También, Protel 99 SE tiene la capacidad de compilar un circuito para su implementación en un dispositivo de lógica programable, directamente desde el esquemático. Protel 99 SE también cuenta con un simulador, donde se pueden configurar y correr simulaciones analógicas y digitales mezcladas, directamente desde el esquemático. Incluye además, con una librería amplia de componentes de simulación, con soporte en el lenguaje de simulación estándar de la industria SPICE 3F5. 84 Protel 99 SE incluye librerías de esquemáticos y “PCB footprints”. Cuenta con el Protel Library Development Center, donde continuamente se puede actualizar las librerías del Design Explorer con los últimos dispositivos que salen al mercado, con sus respectivos encapsulados, de todos los grandes fabricantes. Además, Protel 99 SE tiene integrados procesadores de texto, hojas de cálculo, gráficos, y herramientas de creación de macros, permitiendo manejar todos los aspectos del diseño, sin salir del Design Explorer [15]. 8.7.2 8.7.2.1 Módulo CAQ. Funcionamiento. El módulo CAQ (control automático de cuadratura) es directamente el resultado del módulo 4 del diseño preliminar. Este módulo recibe una señal de corriente continua porporcional al error de cuadratura desde el CS100. Un buffer en la entrada de este módulo, permitirá evitar los efectos de cargas hacia y desde los circuitos del CS100. Luego, esta señal de corriente continua al ser integrada, resultará en una función rampa, donde su pendiente sea la amplitud de esta señal corriente continua que es tomada del CS100, de tal forma, que tal y como manualmente se moverían las manillas para ir aumentando la compensación en la señal de cuadratura, igualmente nuestra rampa ira ascendiendo. De esta función rampa, se pasa de nuevo por un buffer con un ajuste de la amplitud máxima permitida a través de un potenciómetro, de tal forma que no pase de los 10 voltios o -10 voltios en ningún caso. Luego esta señal entra en un multiplicador que incorpora una ganancia interna de 0,1, que realiza la multiplicación, por la señal de referencia de 15Khz del sistema (lo cual asegura que el factor multiplicativo aplicado a esta señal de referencia es un número entre -1 y +1). Luego la resultante es reinyectada al CS100 como la propia señal de compensación de cuadratura, cumpliendo con las características de la señal de cuadratura que normalmente se ajustaría por el panel frontal. De esta forma, el sistema automáticamente ajusta la compensación necesaria para eliminar esa señal espuria que se genera, sin necesidad de hacer alguna intervención manual. Este módulo CAQ estará contenido por tres circuitos idénticos, ya que se necesita uno 85 para cada canal, y cada uno tendrá de entrada la señal de cuadratura que corresponda a cada canal (X,Y,Z). También en este circuito, se retoma la señal de referencia, ya que va a ser usada en el módulo de los DACs para generar la señal de consigna, por lo cual se aplica un buffer a esta señal de referencia para aislar a los módulos entre si, y no recibir en la señal de consigna algún efecto no deseado. 8.7.2.2 Selección de componentes. Los elementos a seleccionar comprenden: ? Amplificadores operacionales con alta impedancia de entrada. ? Resistencias de baja potencia. ? Potenciómetros. ? Capacitores. ? Multiplicadores. ? Jumper de selección. Los amplificadores necesarios son en total doce, por lo cual conviene usar integrados que contengan más de uno. Debido a que son cuatro por cada submódulo, entonces esta cantidad por integrado es preferible. Al ser de alta impedancia, un amplificador Jfet de bajo nivel de ruido es el indicado. Debido a que cumplía con esta especificación y es un integrado disponible fácilmente, el TL074 de Texas Instrument fue la opción seleccionada. Las resistencias forman parte del circuito integrador, las cuales pueden ser de baja potencia debido a la poca exigencia de corriente en esta etapa. Los potenciómetros también pueden ser de baja potencia al ser seleccionado de valor de 10k? . El trimmer 3142 de Meggitt Citec, ofrece en un dispositivo de dimensiones muy reducidas, buenas características y opera hasta a 150mW máximo. 86 Para los capacitores, se tiene los capacitores de desacople en las alimentaciones, que serán del valor estándar recomendado de 100nF los cuales pueden ser cerámicos, y los capacitores pertenecientes al integrador. Para este último caso es necesario que sean no polarizados y presenten bajas pérdidas. Los condensares MMK de poliéster metalizado contienen buenas características para ello. Los multiplicadores que se necesitan deben tener una alta calidad de operación con las señales, que se traduzca en un error de multiplicación muy bajo, ya que eso se traduciría en una mala compensación de la señal de cuadratura. Además, debe operar con señales AC de 15Khz, con bajo nivel de ruido a esta frecuencia. El AD632 de Analog Devices ofrece las características necesarias para este caso. La selección por jumper de la señal de referencia, es debido a que según el comportamiento del circuito del CS100, necesitaremos compensar con la señal –Ref o +Ref, de tal forma que provee una forma de seleccionarla. Esto sólo se debe hacer una vez, por lo que este jumper no debe ser cambiado en ningún otro momento después de su prueba inicial. 8.7.2.3 Esquemático. 87 Figura 29. - Esquemático del Módulo CAQ para el canal X. 88 Figura 30. - Esquemático del Módulo CAQ para el canal Y. 89 Figura 31. - Esquemático del Módulo CAQ para el canal Z. 90 8.7.3 8.7.3.1 Módulo DACs. Funcionamiento. El módulo 2 del diseño preliminar esta representado en este módulo DACs. Aquí se generará la señal consigna de los etalones para cada canal, por lo que igualmente se tendrá tres circuitos idénticos, pero con entradas y salidas distintas, uno para cada canal. Directamente desde la FPGA se cargará el valor digital en 16 bits de la señal de consigna en el conversor digital-analógico, que va a ser la señal de referencia, pero multiplicada por ese valor cargado, para que cumpla con el tipo de señal que procesa el CS100. El control sobre dicho DAC será también directamente ejercido por la FPGA. 8.7.3.2 Selección de componentes. Los elementos a seleccionar comprenden: ? Conversores-multiplicadores analógico-digital. ? Amplificadores operacionales. ? Capacitores. El DAC de 16 bits debe ser multiplicador, ya que la señal de referencia del mismo, es una señal sinusoidal, la cual se desea simplemente variar en amplitud. Además, el DAC debe trabajar en modo bipolar, ya que nuestras señal de –Ref es la misma +Ref pero con 180º de desfase. Se desea coincidir la media escala con salida de cero voltios. El LTC1597 de Linear Technology, ofrece las características necesarias, y además, propone el siguiente circuito para que el funcionamiento sea en modo bipolar: 91 Figura 32. - Circuito para operación del DAC en modo bipolar. Y su correspondiente tabla de relación de conversión es la siguiente: Tabla 5.- Relación de conversión del DAC. De esta forma este dispositivo ofrece las bondades necesarias para los requerimientos. Aunque la configuración propuesta por Linear Technology es correcta, el amplificador operacional dual LT1112, no es el indicado, debido a que tiene un producto ganancia por ancho de banda (0,75MHz) y un slew rate (0,16 V/µs), bajos para la característica de señal de referencia de 15 kHz AC que se va a usar, y para la velocidad de conversión que se necesita. En tal sentido, se optó por la opción del LT1113, que es del mismo encapsulado del LT1112, pero que ofrece un producto ganancia por ancho de banda de 5,6 MHz que es notablemente 92 mejor, y un slew rate de 3,7 V/µs que también es mucho mas confiable para el funcionamiento del circuito. Los capacitores utilizados son cerámicos de 100nF para el desacople de las alimentaciones, e igualmente cerámicos para los necesarios en el circuito del DAC, según el valor especificado en este circuito propuesto por su fabricante. 8.7.3.3 Esquemático. 93 Figura 33. - Esquemático del Módulo DACs para el canal X. 94 Figura 34. - Esquemático del Módulo DACs para el canal Y. 95 Figura 35. - Esquemático del Módulo DACs para canal Z. 96 8.7.4 8.7.4.1 Módulo Relés. Funcionamiento. El módulo Reles, representa parte del módulo 1. Este módulo se encargará de capturar las señales analógicas del CS100 que se van a intervenir. Entre esas señales están las correspondientes a las señales de consigna para cada canal del etalón (offset), y las señales de cuadratura. Las señales de consignas podrán seleccionarse entre las que genera el CS100 y las que generará el Módulo DACs, según orden de la FPGA. Como estas señales de offset tiene en el panel frontal una graduación gruesa y una graduación fina (limitada por el rango de la gruesa), y como el DAC va a proporcionar un ajuste fino pero en todo el rango, entonces al cortar las señales del panel frontal, se va a reconectar la señal del DAC al ajuste grueso del CS100 y a la entrada del ajuste fino del CS100 se pondrá a tierra para eliminar las contribuciones de esta rama por completo. Con las señales de cuadratura el procedimiento será parecido, es decir, las señales que viene cuadratura del panel frontal se capturarán y cuando decida la FPGA, entonces se procederá a desconectar la señal del panel frontal y se inyectará la señal resultante del Módulo CAQ, que se vió anteriormente. 8.7.4.2 Selección de componentes. Los elementos a seleccionar comprenden: ? Relés. ? Optoacopladores. ? Diodos. ? Resistencias. En un principio se pensó utilizar switches analógicos para el corte de estas señales, y su redireccionamiento con las señales alternativas, pero con un estudio sobre los circuitos en el CS100 en los puntos en los cuales se capturarían y luego se regresaran estas señales, se notó un 97 posible efecto de inyección de carga dado que los switch analógicos están compuestos por transistores internamente. Para dicho fin entonces se decidió seleccionar a los relés para este caso, y de allí el nombre del módulo. Dichos relés deberán ser de pequeño tamaño, y con una baja resistencia de contacto, aparte de ofrecer una muy buena calidad. Además, debían poder ser activados con señales TTL. Los G6H de Omron ofrecían las características necesarias, aparte de ofrecer dos relés por encapsulado con una única orden de activación, lo cual era favorable debido a la integración que se quiere lograr. Por otro lado, Omron es una reconocida casa en el campo en cuestión. Por otro lado, los relés no podrán recibir la orden directamente de la FPGA porque se arriesga de someter a la FPGA a una exigencia de corriente excesiva, por lo que, para de manera efectiva aislar por completo eléctricamente a la FPGA, se usaron optoacopladores. Los TLP181 de Toshiba fueron los escogidos para este fin, y una vez mas por ser una marca que ofrece calidad y larga duración en sus productos. La función de los diodos es evitar que la alta tensión di/dt que se produce al desactivarse la bobina pueda dañar el circuito. De esta forma, se seleccionó al GF1A de General Semiconductor, con 1 amperio de máxima corriente directa. Este diodo ofrecía una buena protección, en un encapsulado muy reducido, que favorecía la integración. Las resistencias se usaron para regular la corriente que pasaría a través del diodo del optoacoplador y proveniente de la FPGA, estando esta regulada a (3,3V-1V)/120Ohm = 19mA, donde el valor de 3,3V es la tensión de salida de la FPGA, y 1V es la caída de tensión en el diodo del optoacoplador. 8.7.4.3 Esquemático. 98 Figura 36. - Esquemático del Módulo Reles para la cuadratura en X e Y. Figura 37. - Esquemático del Módulo Relés para la cuadratura en Z. 99 Figura 38. - Esquemático del Módulo Relés para el Offset fino en X e Y. Figura 39. - Esquemático del Módulo Relés para el Offset fino en Z y grueso en X . 100 Figura 40. - Esquemático del Módulo Relés para el Offset grueso en Y y Z. 8.7.5 8.7.5.1 Módulo LEDs. Funcionamiento. El Módulo LEDs también forma parte de Módulo 1. Este circuito se encargará de capturar las señales de órdenes de encendido de los led del panel frontal por parte del CS100, para ser analizadas por la FPGA, y luego la FPGA decidirá sobre este encendido a los led, emitiéndole una orden directa a los leds. Propiamente, se convierte el estado de la alimentación a los leds proveniente del CS100, en una señal digital a ser interpretada por la FPGA, pero con el debido cuidado de tomar en cuenta que la FPGA es tolerante a 3.3 voltios (LVTTL) y no a 5 voltios (TTL), por lo que se deberá hacer lo propio en el ajuste de nivel de voltaje de esta señal. En total son cinco leds: Power, Operate, Balance, Out of Range y Disable. Así que seguramente se hará un circuito base que se repetirá para cada led. Igualmente, se ha de tomar las mediciones correspondientes, para que, sin crear una exigencia de corriente excesiva a la FPGA, se logre una intensidad de luz en el led, similar a la que se tenia al estar conectado directamente al circuito del CS100. Esta corriente resultó ser de 19mA. 101 8.7.5.2 Selección de componentes. Los elementos a seleccionar comprenden: ? Optoacopladores. ? Resistencias. Los optoacopladores fue una especial solución para este caso porque ofrece aislar eléctricamente a la FPGA de los circuitos del CS100, lo cual es algo que se ha estado buscando todo el tiempo en el diseño, y además, al tener un diodo interno en el lado de conexión hacia el CS100, simula casi exactamente la misma carga que ve el CS100 en un led. Aunado a que ya en el Módulo Relés, se había hecho una selección de un optoacoplador, se estudió sus características para saber si podía ser aplicado en este módulo también, y hacer así más homogéneo los dispositivos en la placa, aparte de que ya había sido ubicado dicho componente en los distribuidores disponibles. Por tal sentido, el TLP181 de Toshiba vuelve a ser un componente seleccionado. Las resistencias son para dos casos en este módulo. Un caso es para polarizar el transistor de salida del optoacoplador, actuando a la vez como resistencia de pull-up de la entrada de la FPGA. Se consideró suficiente una corriente de saturación del transistor de alrededor de 2 mA. El otro caso es para regular la cantidad de corriente que dará la FPGA para encender el led, y a la vez, obtener una intensidad suficiente en el led, encontrando que con 150? se lograba ambos cometidos, (3,3-1,2)/150 = 20.6 mA. Se midió que se obtenía un buen brillo en el led con 19 mA, y la corriente máxima que puede soportar la salida de la FPGA es de 24 mA. 8.7.5.3 Esquemático. 102 Figura 41. - Esquemático del Módulo LEDs para la salida de la FPGA. 103 Figura 42. - Esquemático del Módulo LEDs para la entrada a la FPGA. 104 8.7.6 Módulo Señales. 8.7.6.1 Funcionamiento. Este módulo también forma parte del Módulo 1. Aquí se capturan las señales de las selecciones de las manillas del panel frontal del CS100, y se mandan a la FPGA a ser interpretadas, la cual decide sobre estas, y manda una señal digital al controlador lógico del CS100, según lo que decide hacer. Igualmente se debe hacer que dichas selecciones en el panel frontal se traduzcan en niveles lógicos LVTTL para que pueda manejarlas la FPGA. Debido a la circuiteria encontrada en el CS100, para este caso se deberá usar pull-ups a 3.3 voltios y regular la corriente, de manera parecida al caso anterior. Para el caso de selección hacia el controlador lógico por parte de la FPGA, se debe convertir de LVTTL a TTL, para asegurar el funcionamiento interno del CS100, y además, buscar aislar efectos de carga hacia y desde la FPGA. Se tiene un total de ocho posibles selecciones, algunas relacionadas con otras en el sentido de que al ser seleccionada una, la otra debe quedar deseleccionada, pero para efectos circuitales, son manejadas como entradas independientes: modo Operate y modo Balance, modo Quadrature y modo Offset, y entre los cuatro tiempos de respuesta disponibles están, tiempo de respuesta 2ms, tiempo de respuesta 1ms, tiempo de respuesta 0.5ms y tiempo de respuesta 0.2ms. 8.7.6.2 Selección de componentes. Los elementos a seleccionar comprenden: ? Buffers. ? Resistencias. ? Capacitores. El buffer hace la traducción de niveles lógicos de 3,3V a 5V. Para la selección del buffer, se tomó en cuenta que fuese capaz de tomar un 3.3 voltios como un alto, y que pudiese 105 manejar la entrada de 8 señales, para así reducir el número de componentes y ayudar a la integración de la tarjeta. Además, que se encontrara en los distribuidores disponibles. El MC74ACT244 de ON Semiconductor, cumplía con las especificaciones, pero no estaba disponible en los distribuidores, por lo que se selecciono el MC74ACT541 de la misma casa, el cual tiene las mismas prestaciones. Las resistencias de los pull-ups se escogieron de valores tales que la corriente drenada a nivel bajo en la salida del control lógico fuera sólo de 1 mA, lo que mantiene un bajo consumo y es suficiente para las exigencias de corriente de entrada de la FPGA. El capacitor se usó para el desacople de la alimentación del integrado del buffer, al valor de 100nf y de material cerámico. 8.7.6.3 Esquemático. 106 Figura 43. - Esquemático del Módulo Señales para la entrada a la FPGA. 107 Figura 44. - Esquemático del Módulo Señales para la salida de la FPGA. 8.7.7 8.7.7.1 Módulo Galvanómetros. Funcionamiento. El módulo de Galvanómetros también pertenece al Módulo 1. En este módulo se leerán los valores de los galvanómetros del panel frontal, por lo cual su nombre. En el panel frontal se tiene tres galvanómetros, uno para cada canal (X,Y,Z), los cuales ofrecen el valor de la señal de offset o de cuadratura, según el modo que se tenga seleccionado. Estos valores van en un máximo de -10 voltios a +10 voltios, y son señales de corriente continua. Para tal fin se necesitará un conversor analógico digital, que le dé el valor digital a la FPGA. Debido a que se quiere ahorrar proceso a la FPGA, se decidió que fuese una salida paralela bit a bit hacia la FPGA. El cuidado de no poner valores de entrada en la FPGA distintos de LVTTL se tiene que considerar de nuevo. 108 8.7.7.2 Selección de componentes. Los elementos a seleccionar comprenden: ? Conversores analógico-Digital (ADC). ? Resistencias. ? Capacitores. Para el ADC, aparte de las consideraciones descritas en el funcionamiento, sería provechoso para reducir el número de componentes en la placa, que este conversor tuviese un multiplexor interno, para así poder utilizar el mismo componente para los tres canales, seleccionándole cual se desea convertir. Con respecto a la resolución buscada, un mínimo de 8 bits es suficiente, ya que supera al sistema actual, que es simplemente al ojo humano en un galvanómetro. Este módulo tiene la propiedad de que si el galvanómetro falla, según y de donde se esté tomando la medida en el CS100, se podrá seguir leyendo los valores a través del ADC. Para todo esto, el ADS7824 de Burr-Brown (ahora Texas Instruments), cumple con todas las especificaciones necesarias de manera muy adecuada. Otros dispositivos tipo ADC tenían en su mayoría características favorables, pero no todas en un mismo modelo, en los que por ejemplo, podíamos encontrar ADC con salida en formato paralelo pero que no soportaba el rango de voltajes de entrada, o que tenia varios canales de entrada, pero la conversión la mandaba por un puerto serie, y así. Además, fue localizado disponible en los distribuidores. Aun más, ofrece un bajo consumo de potencia, necesitando sólo una fuente de alimentación de 5 voltios, y tiene un INL de ±0,5 LSB como máximo. Además de proponer un circuito básico para su funcionamiento con los valores de los capacitores necesarios, como se vé en la figura siguiente: 109 Figura 45. - Circuito del ADC propuesto por el fabricante. Aunque el ADC ofrece 12 bits de resolución, se utilizaron sólo los 8 bits más significativos, ya que era suficiente y no añadía procesamiento a la FPGA. Las señales de control del ADC vendrán directamente desde la FPGA, desde donde se podrá seleccionar, por ejemplo, el canal que se desea convertir. Las resistencias se utilizaron para hacer un divisor de voltaje, y llevar la salida del ADC de +5 voltios a 3.3 voltios, para poder mandarla a la FPGA sin causar daños a esta, y su cálculo se hizo en base también a tener bajos niveles de potencia en las resistencias, dado que se tiene bajas corrientes en las entradas de la FPGA. Los capacitores propuestos por el fabricante, especifican que deben ser capacitores polarizados y de tantalio, y para el capacitor de desacople de alimentación de 100nF, se seleccionó un cerámico como en los otros casos. 8.7.7.3 Esquemático. 110 Figura 46. - Esquemático del Módulo Galvanómetros. 111 8.7.8 Módulo Sincronización-CCD. 8.7.8.1 Funcionamiento. Aquí se representa al Módulo 3. Este módulo servirá para utilizar la señal de sincronización a través de la FPGA, y así poder programar de manera síncrona, el desplazamiento de los espejos en el etalón, con esta señal. La señal de sincronía es una TTL, y vendrá directamente de la cámara CCD y debe acoplarse a la entrada LVTTL de la FPGA. Aunque en este caso, para realizar la traducción de niveles lógicos, hubiera bastado un divisor de tensión, dado que esta entrada será conectada a un módulo electrónico externo, empleamos un buffer de manera que proteja la FPGA frente a la introducción errónea de un nivel de tensión peligroso para esta entrada. La frecuencia máxima aproximada de esta señal en forma de onda cuadrada, será de 200Hz, por lo tanto el buffer debe responder a los cambios de nivel en menos de 5ms, requerimiento cumplido con creces por cualquier familia lógica moderna. 8.7.8.2 Selección de componentes. Los elementos a seleccionar comprenden: ? Buffer. ? Resistencia. ? Capacitor. El buffer debe ser, como ya se ha visto, de colector abierto. El SN74LVC1G07 de Texas Instruments es un integrado muy reducido, que asegura la velocidad de cambio de nivel necesaria en el buffer y es de drenador abierto, lo cual fue la característica principal para su selección, además de estas disponible en los distribuidores y ser de una marca reconocida en el mercado. El capacitor de desacoplo de alimentación, se seleccionó igualmente de 100nF y de material cerámico. 112 8.7.8.3 Esquemático. Figura 47. - Esquemático del Módulo Sincronización-CCD. 8.7.9 Módulo Interfaz. 8.7.9.1 Funcionamiento. El módulo interfaz es aquel que contiene todos los puertos de comunicación de la tarjeta de aplicación con el CS100 y con la tarjeta de evaluación de Avnet. Hacia el CS100 existen varias conexiones, ya que hay que traer las señales del mismo, y luego mandarlas de vuelta. Con la tarjeta que contiene la FPGA, también hay numerosas conexiones, debido a que el nuevo sistema de control digital esta completamente centrado allí. También en este módulo, están los conectores para la distribución de la alimentación, la cual se deriva del CS100 para las alimentaciones de +15 voltios, -15 voltios, +5 voltios, tierra digital (DGND) y tierra analógica (AGND). La alimentación de +3,3 voltios se deriva de la tarjeta de evaluación de Avnet, la cual a su vez es alimentada por el propio CS100. 113 8.7.9.2 Selección de componentes. El CS100 utiliza muchos de sus conectores tipo marca LEMO. Esto conectores ofrecen una muy buena calidad, por lo que, y para evitar hacer cambios en el equipo original, se utilizaron estos mismos conectores para el retorno de las señales. En algunos conectores referidos a alimentaciones, se notan la presencia de capacitores, colocados para que actúen como desacoplos de alimentación, al momento de que el sistema de fuente de alimentación se vea obligada a dar una cantidad de corriente considerada en un tiempo muy rápido. Estos capacitores son polarizados de tantalio, lo más recomendados para estos casos. Se verá en los esquemáticos varios conectores que están identificados, entre los que tenemos: ? Dos “headers” de 20 pines al CS100 (al Controlador lógico-CL- y al Panel Frontal – FP). Entre otras señales, cabe destacar que trae la tierra digital del CS100. ? Un jumper que une las tierras de AGND y DGND en caso de ser necesario. ? Un receptáculo para LEMO EXP1S305 de 5 pines, y un header de 5 pines que traen y devuelven las alimentaciones de +15 voltios, -15 voltios, las señales de referencia +Ref y –Ref, y la tierra analógica del CS100. ? Tres receptáculos para LEMO EXP0S303 de 3 pines, y tres headers de 3 pines respectivamente, donde cada par, trae y regresa las señales de offset y cuadratura para X, Y y Z. ? Tres conectores BNC para coaxial, donde viene las señales de error de cuadratura para X, Y y Z, respectivamente, y un cuarto conector BNC para la señal de sincronización del CCD. ? Un header de 3 pines donde se manda la alimentación de +5 voltios a la tarjeta de evaluación de Avnet, se toma la alimentación de +3,3 voltios que hace un regulador presente en la tarjeta de Avnet para alimentar los puntos respectivos en la tarjeta de aplicación, y finalmente, la unión de la tierra digital de la tarjeta de evaluación con la tarjeta de aplicación, y por ende, con el CS100. 114 ? Y para concluir, dos header de 50 pines cada uno, para todas las señales de entrada y salida con la FPGA. Para la identificación de las señales, se uso la siguiente norma: primero indica de donde viene la señal, por ejemplo, TA es tarjeta de aplicación, luego un guión, y seguido hacia donde va esa señal, por ejemplo, CL es el controlador lógico del CS100, luego otro guión, y finalmente la referencia de que señal es, por ejemplo, BAL es la selección del modo Balance(en resumen “TA-CL-BAL”). 8.7.9.3 Esquemático. Figura 48. - Esquemático 1 de conexiones con el CS100. 115 Figura 49. - Esquemático 2 de conexiones con el CS100. 116 Figura 50. - Esquemático de conexiones de señales coaxiales y alimentación. 117 Figura 51. - Esquemático de conexiones con la FPGA. 118 8.7.10 Lista de materiales. Los componentes se escogieron en su mayoría de montaje superficial, debido a la gran disponibilidad de este tipo de componentes que existe en el mercado. Además, se buscaban los encapsulados más reducidos para ahorrar espacio. El detalle de la lista de materiales se encuentra en el Apéndice A. 8.7.11 Realización del diseño del circuito impreso. 8.7.11.1 Consideraciones generales. El diseño del circuito impreso (PCB-Printed Circuit Board), se tenía que hacer en función de varios aspectos. Uno de ellos es el hecho de que se está haciendo un prototipo, lo cual obliga a tomar en consideración como que quizás es necesario tener que corregir algunos detalles de componentes, redes de ruteado, interconexiones, etc. En tal sentido, todas las capas de señales deberán quedar accesibles por completo, en caso de necesitar hacer algunas pruebas específicas o hacer algunas correcciones. En su mayoría, se seleccionaron componentes de montaje superficial, que incrementa las dificultades de ensamblaje del circuito, pero ayuda a lograr colocar más componentes en un espacio menor. Con respecto a los “footprint”, no todos estaban disponibles en las librerías del Protel 99 SE, como tampoco algunos componentes a nivel de esquemáticos, lo cual llevó a agregar la tarea de diseñar esos componentes a nivel de esquemáticos, a definir los footprints faltantes en el entorno CAD que provee el mismo Protel, donde incluso, algunos footprint que supuestamente deberían ser precisos, tuvieron que ser modificados. Esto aunado a la dificultad de que el proceso de colocación y soldadura de los componentes, iba a estar a cargo propio, lo cual llevó a hacer los “pads” un poco mas amplios dentro de los permitido, para poder realizar una soldadura confiable. 119 8.7.11.2 Consideraciones técnicas. Entre las consideraciones técnicas se encuentran las siguientes: ? El PCB se va a diseñar utilizando sólo cuatro capas, en las cuales, la superior y la inferior son de componentes y señales, y las otras dos capas internas para un plano de masa AGND y otro plano DGND. El separar los planos de masa viene dado para evitar que los picos de tensión producidos en los dispositivos digitales alteren a las señales analógicas, al elevar por valores pequeños al potencial de tierra por mínimos instantes, en los que se tendría entonces una componente no deseada en las señales analógicas. Dichas tierras deben ser unidas en un único punto lo mas cerca de la fuente de alimentación, que para este caso, se encuentra en el CS100. De todas formas, y en caso de verse necesario, se incluyó en el diseño un punto de unión de planos de masa (DGND y AGND), a través de un jumper, y muy cerca del conector que trae la alimentación del CS100. ? El orden de prioridad de no paso por vías, es decir, de ruteado directo, se estableció como sigue: señales analógicas, señales de alimentación y de último señales digitales. Esto se debió a la inductancia que crean estas vías que atraviesan todas las placas, y porque en este caso, las señales analógicas son de especial importancia, y las más sensibles. ? Se establecieron reglas de dimensiones mínimas de ancho de las vías según especificaciones de estándares de las empresas que fabrican los circuitos impresos, para evitar el sobre precio debido a las medidas usadas. En tal caso, el diámetro mínimo de las vías se estableció en 0,3mm. ? Además, se siguieron un conjunto de reglas recomendadas por la literatura electrónica, y se establecieron otras, que en conjunto se resumen así: o Separación mínima entre dos vías, dos pistas, o entre pistas y vías de 0.2mm. o Ancho mínimo de pistas de señales de 0,254mm. o Ancho mínimo de pistas de +3,3 voltios de 0,381mm. o Ancho mínimo de pistas de +5 voltios de 0,254mm. o Ancho mínimo de pistas de ±15 voltios de 0,381mm. 120 o Preferencia en el ancho de las pistas en el orden siguiente: señales de alimentación, señales analógicas y señales digitales. o Se buscó que las señales analógicas tuviesen preferencia respecto al mínimo de longitud de las pistas, para evitar atenuaciones indeseadas. o Las vías que se usaron para redirigir pistas hacia el otro plano, se hacían de tal forma que el ancho de las pistas coincidiera con el diámetro externo de las vías. o Angulo de cruces de las pistas de 45º máximo. o Las pistas de alimentación empezaban con un ancho de 1,905mm y se iban reduciendo conforme su rama llegaba a los últimos componentes. ? Se agregaron al PCB cuatro perforaciones, una en cada esquina, para poder tener la opción de montarse atornillada en soportes a la medida. ? Los conectores verticales se pusieron todos en la cara superior del PCB para su fácil conexión. ? Los conectores con ángulo recto se pusieron en la periferia del PCB. ? Se colocaron algunos pines de conexión a las tierras AGND y DGND en puntos distribuidos por el PCB para disponer de ellos al momento de hacer pruebas o colocar puntas de osciloscopio. ? Se colocaron puntos de prueba de las señales de importancia, reseñadas a continuación: o Punto de prueba 1 (TP1): Señal de error de cuadratura de X. o Punto de prueba 2 (TP2): Señal de cuadratura de X a la salida del CAQ. o Punto de prueba 3 (TP3): Señal de error de cuadratura de Y. o Punto de prueba 4 (TP4): Señal de cuadratura de Y a la salida del CAQ. o Punto de prueba 5 (TP5): Señal de error de cuadratura de Z. o Punto de prueba 6 (TP6): Señal de cuadratura de Z a la salida del CAQ. o Punto de prueba 7 (TP7): Señal de referencia para el DAC X. o Punto de prueba 8 (TP8): Señal de salida del DAC X. o Punto de prueba 9 (TP9): Señal de referencia para el DAC Y. o Punto de prueba 10 (TP10): Señal de salida del DAC Y. o Punto de prueba 11 (TP11): Señal de referencia para el DAC Z. 121 o Punto de prueba 12 (TP12): Señal de salida del DAC Z. o Punto de prueba 13 (TP13): Señal de entrada al ADC – canal X. o Punto de prueba 14 (TP14): Señal de entrada al ADC – canal Y. o Punto de prueba 15 (TP15): Señal de entrada al ADC – canal Z. 8.7.11.3 Fases del diseño. ? Revisión de los footprint: los footprints fueron agrupados en una sola base de datos, y cada uno fue revisado, rediseñado o, en algunos casos, definidos. En total fueron 26 footprins implementados, que se listan a continuación junto con su figura en tamaño real: o 10KTRIMMER o 11-4C1 o 28SSOP o 0805 o 1206 o 6032 o 7343M o BNCH 122 o DIP-14 o DO214BA o EXP0S3 o EXP1S5 o G6H-2F o HEADER20PIN o HEADER50PIN o JUMPER2PIN o JUMPER3PIN 123 o MOLEX3PIN o MOLEX5PIN o RAD0.2M o SO-G8 o SO-G14 o SO20W o SO28W o SOT-23DBV o TESTPOINT ? Generación del NetList: una vez que se tiene definidas los footprints, y sus librerías son cargadas, se genera el NetList desde el editor de esquemáticos, y se puede revisar si efectivamente todos los componentes que deberían estar conectados lo están y a través de que “Net”. ? Colocación de los componentes en el PCB: después de actualizar el archivo del PCB con todos los componentes de los esquemáticos y el NetList, se procede a colocar los 124 componentes según el patrón que se quiera seguir. En este caso, en principio se hizo una aproximación de cálculo espacial que se necesita para colocar todos los componentes, mas un factor que representaría las pistas necesarias. Ese cálculo arrojó que las dimensiones de una tarjeta con componentes por ambas caras debería ser aproximadamente 6 pulgadas por 7,7 pulgadas. Finalmente fue de 6,15 pulgadas por 7,450 pulgadas. Se siguió un patrón de colocación en el que se agrupaba los componentes por esquemático, y luego, al ver las líneas que se cruzaban entre los grupos, se trataba de eliminarlas moviendo a los mismos. Las múltiples líneas que salían del conector de las señales provenientes de la FPGA, se colocaron lo más próximo a los componente con los que compartían muchas pistas, como lo eran los DACs y los ADC. ? Ruteo de la placa: con la guía de las líneas que indican que pines se deben unir, se empezó con las señales analógicas, luego las de alimentación y luego las digitales. Este fue uno de los procesos más difíciles debido a la cantidad de pistas que había que trazar. ? Luego se corrió un subprograma de Protel llamado DRC (Design Rule Check), que verifica que las reglas impuestas por defecto y las añadidas por el usuario, hayan sido cumplidas, con lo cual se logró corregir algunos pequeños detalles entre la gran telaraña de líneas presentes. ? Luego de aquí, se envió el archivo de diseño al fabricante contratado para hacer el PCB. 125 8.7.11.4 Presentación. Figura 52. - Presentación del PCB 126 8.7.11.5 Resumen. Se lista aquí un resumen del PCB: Característica Cantidad Nets 179 Componentes 164 Arcos 143 Pads 756 Segmentos de pistas 4109 Vías 321 Conexiones de Pistas con vías 605 Errores reportados por el DRC 0 Tabla 6.- Resumen del PCB. 127 9. MONTAJE Y PRUEBAS DE LOS MODULOS. 9.1 Test eléctrico. La tarjeta fue verificada eléctricamente por la compañía encargada de elaborar el PCB, como parte de los servicios contratados, por lo que sólo se hicieron unas pocas comprobaciones aleatoriamente. 9.2 Test funcional módulo a módulo. Se procedió entonces a montar los componentes en el PCB, en un orden que permitiese verificar los circuitos en la forma más modular posible, y probando si la electrónica básica funcionaba, simulando darles las órdenes digitales como si viniesen de la FPGA. Ciertos comportamientos más dinámicos no podían ser probados aún, ya que se necesitaba el programa. Se encontró un error en una pista, que debería estar conectada a +3,3 voltios, y estaba a +5 voltios, por lo cual se hizo la corrección a ese punto, uniéndolo a la pista correcta en el punto mas cerca posible. Este fue el único error encontrado en el circuito. Posteriormente, los módulos fueron montados y probados en el siguiente orden: ? Módulo CAQ: las señales de error de cuadratura fueron capturadas correctamente, y su procesado fue correcto también, por lo que el funcionamiento base de este módulo fue como se esperaba. ? Módulo Relés: efectivamente este módulo respondía correctamente a las activaciones de los reles. ? Módulo DACs: en este módulo se comprobaron las características más importantes como lo eran que el funcionamiento con valor de cero voltios a media escala fuese correcto, y que mostrara la onda sinusoidal de referencia. ? Módulo LEDs: la parte de este módulo que contiene los optoacopladores fue probada, y funcionó correctamente. ? Módulo Señales: el buffer que se encuentra en ese módulo, como elemento importante, fue probado y funcionó correctamente. 128 ? Se probaron todos los capacitores de desacople, resultando funcionar correctamente. ? El módulo Galvanómetros sólo se montó y se probó que la alimentación estuviese bien. Se dejó la prueba para la incorporación del software de control. 9.3 Interfaz con la FPGA SEÑAL (Net). TIPO (PARA LA FPGA) UBICACIÓN CONECTOR-PIN PIN EN LA SPARTAN-IIE FPGA-TA-ADCA0 OUT JP16-12 K14 FPGA-TA-ADCA1 OUT JP16-14 L16 FPGA-TA-ADCBYTE OUT JP16-10 K16 FPGA-TA-ADCCS OUT JP16-13 L13 FPGA-TA-ADCR/C OUT JP16-11 K15 FPGA-TA-LEDBAL OUT JP16-20 M14 FPGA-TA-LEDDIS OUT JP16-18 M16 FPGA-TA-LEDOOR OUT JP16-24 P16 FPGA-TA-LEDOPER OUT JP16-22 N16 FPGA-TA-LEDPWR OUT JP16-16 L14 FPGA-TA-MOFFS OUT JP16-32 E6 FPGA-TA-MQUAD OUT JP16-30 C5 FPGA-TA-OPER OUT JP16-28 C4 FPGA-TA-RT1 OUT JP16-34 B5 FPGA-TA-RT2 OUT JP16-36 C6 FPGA-TA-RT3 OUT JP16-38 A6 FPGA-TA-RT4 OUT JP16-40 C7 FPGA-TA-BAL OUT JP16-26 A3 FPGA-TA-CTRET1 OUT JP17-26 P10 FPGA-TA-CTRET2 OUT JP17-28 T11 FPGA-TA-CTRET3 OUT JP17-30 M10 FPGA-TA-CTRQ1 OUT JP17-27 R11 FPGA-TA-CTRQ2 OUT JP17-29 N10 FPGA-TA-DACXCLR OUT JP17-17 T7 FPGA-TA-DACXLD OUT JP17-19 N8 FPGA-TA-DACXWR OUT JP17-21 R8 FPGA-TA-DACYCLR OUT JP17-23 N9 FPGA-TA-DACYLD OUT JP17-25 R10 FPGA-TA-DACYWR OUT JP17-24 T10 FPGA-TA-DACZCLR OUT JP17-18 M7 FPGA-TA-DACZLD OUT JP17-20 P8 FPGA-TA-DACZWR OUT JP17-22 P9 FPGA-TA-DACXYZD0 OUT JP17-1 P4 129 FPGA-TA-DACXYZD1 OUT JP17-2 R4 FPGA-TA-DACXYZD2 OUT JP17-3 T3 FPGA-TA-DACXYZD3 OUT JP17-4 T4 FPGA-TA-DACXYZD4 OUT JP17-5 N5 FPGA-TA-DACXYZD5 OUT JP17-6 P5 FPGA-TA-DACXYZD6 OUT JP17-7 R5 FPGA-TA-DACXYZD7 OUT JP17-8 T5 FPGA-TA-DACXYZD8 OUT JP17-9 N6 FPGA-TA-DACXYZD9 OUT JP17-10 P6 OUT JP17-11 R6 OUT JP17-12 T6 OUT JP17-13 M6 OUT JP17-14 N7 OUT JP17-15 P7 OUT JP17-16 R7 FPGA-TADACXYZD10 FPGA-TADACXYZD11 FPGA-TADACXYZD12 FPGA-TADACXYZD13 FPGA-TADACXYZD14 FPGA-TADACXYZD15 FP-TA-FPGA-BAL IN JP16-25 B3 FP-TA-FPGA-MOFFS IN JP16-31 D5 FP-TA-FPGA-MQUAD IN JP16-29 B4 FP-TA-FPGA-OPER IN JP16-27 A4 FP-TA-FPGA-RT1 IN JP16-33 D6 FP-TA-FPGA-RT2 IN JP16-35 A5 FP-TA-FPGA-RT3 IN JP16-37 B6 FP-TA-FPGA-RT4 IN JP16-39 B7 TA-FPGA-ADCBUSY IN JP16-9 L12 TA-FPGA-ADCD0 IN JP16-1 G16 TA-FPGA-ADCD1 IN JP16-2 H16 TA-FPGA-ADCD2 IN JP16-3 J13 TA-FPGA-ADCD3 IN JP16-4 J16 TA-FPGA-ADCD4 IN JP16-5 J15 TA-FPGA-ADCD5 IN JP16-6 J14 TA-FPGA-ADCD6 IN JP16-7 K13 TA-FPGA-ADCD7 IN JP16-8 K12 TA-FPGA-LEDBAL IN JP16-19 M15 TA-FPGA-LEDDIS IN JP16-17 M13 TA-FPGA-LEDOOR IN JP16-23 N15 TA-FPGA-LEDOPER IN JP16-21 N14 TA-FPGA-LEDPWR IN JP16-15 L15 130 TA-FPGA-SYNC IN JP16-41 D7 Tabla 7.- Interfaz con la FPGA. 131 10. DESARROLLO DEL SOFTWARE DE APLICACIÓN. 10.1 Aspectos generales. El software de aplicación estará en el microcontrolador embebido en la FPGA, el cual contendrá el código del programa principal que controlará al CS100 a través de la tarjeta de aplicación, e interpretará los distintos estados para tomar las decisiones que precisen ser tomadas. A continuación se muestra la definición de las partes de este microcontrolador embebido MicroBlaze implementado. 10.2 Estructura del microcontrolador embebido. ? Definición del Hardware: ############################################################################ ## # Created by Base System Builder Wizard for Xilinx EDK 6.1 Build EDK_G.12 # Wed Oct 01 16:22:45 2003 # Target Board: Avnet Design Spartan-IIE XC2S200E FT256 Development Board # Family: Spartan-IIE # Device: XC2S200E # Package: FT256 # Speed Grade: -7 # ############################################################################ PARAMETER VERSION = 2.1.0 # Puertos internos y externos PORT sys_clk = sys_clk, DIR = I, SIGIS = CLK PORT LEDs_8Bit_GPIO_IO = LEDs_8Bit_GPIO_IO, VEC = [0:7], DIR = IO PORT dacxyz_out = dacxyz_out, VEC = [0:15], DIR = IO PORT puerto_serie_RX = puerto_serie_RX, DIR = I PORT puerto_serie_TX = puerto_serie_TX, DIR = O PORT control_dacs_out = control_dacs_out, VEC = [0:15], DIR = IO PORT control_reles_out = control_reles_out, VEC = [0:7], DIR = IO 132 PORT seleccion_modo_out = seleccion_modo_out, VEC = [0:7], DIR = IO PORT encendido_leds_out = encendido_leds_out, VEC = [0:7], DIR = IO PORT control_adc_IO = control_adc_IO, VEC = [0:7], DIR = IO PORT fp_modos_in = fp_modos_in, VEC = [0:7], DIR = I PORT adcxyz_in = adcxyz_in, VEC = [0:7], DIR = I PORT estado_leds_in = estado_leds_in, VEC = [0:7], DIR = I PORT ccd_sync_in = ccd_sync_in, DIR = I PORT sys_rst = sys_rst, DIR = I PORT dip_switch_in = dip_switch_in, VEC = [0:7], DIR = I PORT enable_7seg = sys_clk, DIR = OUT PORT adc_busy_in = adc_busy_in, DIR = I # Microcontrolador BEGIN microblaze PARAMETER INSTANCE = microblaze_0 PARAMETER HW_VER = 2.00.a PARAMETER C_DEBUG_ENABLED = 1 PARAMETER C_NUMBER_OF_PC_BRK = 8 PARAMETER C_NUMBER_OF_RD_ADDR_BRK = 1 PARAMETER C_NUMBER_OF_WR_ADDR_BRK = 1 BUS_INTERFACE DLMB = dlmb BUS_INTERFACE ILMB = ilmb BUS_INTERFACE DOPB = mb_opb BUS_INTERFACE IOPB = mb_opb PORT CLK = sys_clk PORT DBG_CAPTURE = DBG_CAPTURE_s PORT DBG_CLK = DBG_CLK_s PORT DBG_REG_EN = DBG_REG_EN_s PORT DBG_TDI = DBG_TDI_s PORT DBG_TDO = DBG_TDO_s PORT DBG_UPDATE = DBG_UPDATE_s PORT INTERRUPT = Interrupt PORT RESET = opb_rst END #Bus OPB BEGIN opb_v20 PARAMETER INSTANCE = mb_opb PARAMETER HW_VER = 1.10.b PARAMETER C_EXT_RESET_HIGH = 1 PORT OPB_Clk = sys_clk 133 PORT OPB_Rst = opb_rst PORT SYS_Rst = sys_rst END # Bus LMB de instrucciones BEGIN lmb_v10 PARAMETER INSTANCE = ilmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT LMB_Clk = sys_clk PORT SYS_Rst = sys_rst END # Bus LMB de datos BEGIN lmb_v10 PARAMETER INSTANCE = dlmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT LMB_Clk = sys_clk PORT SYS_Rst = sys_rst END # Controlador de bloque de memoria RAM para DLMB BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = dlmb_cntlr PARAMETER HW_VER = 1.00.b PARAMETER C_MASK = 0x8000000 PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00000fff BUS_INTERFACE SLMB = dlmb BUS_INTERFACE BRAM_PORT = dlmb_port END # Controlador de bloque de memoria RAM para ILMB BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = ilmb_cntlr PARAMETER HW_VER = 1.00.b PARAMETER C_MASK = 0x8000000 PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00000fff BUS_INTERFACE SLMB = ilmb BUS_INTERFACE BRAM_PORT = ilmb_port 134 END # Bloque de memoria RAM LMB BEGIN bram_block PARAMETER INSTANCE = lmb_bram PARAMETER HW_VER = 1.00.a PARAMETER C_MEMSIZE = 4096 BUS_INTERFACE PORTA = ilmb_port BUS_INTERFACE PORTB = dlmb_port END # Puerto OPB que carga el valor de los DACs BEGIN opb_gpio PARAMETER INSTANCE = dacxyz PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000400 PARAMETER C_HIGHADDR = 0x0c0004ff PARAMETER C_GPIO_WIDTH = 16 PARAMETER C_TRI_DEFAULT = 0x00000000 PARAMETER C_DOUT_DEFAULT = 0x00000000 BUS_INTERFACE SOPB = mb_opb PORT GPIO_IO = dacxyz_out END # Dispositivo que envia los datos vía puerto serie BEGIN opb_uartlite PARAMETER INSTANCE = puerto_serie PARAMETER HW_VER = 1.00.b PARAMETER C_BASEADDR = 0x0c000e00 PARAMETER C_HIGHADDR = 0x0c000eff PARAMETER C_USE_PARITY = 0 PARAMETER C_DATA_BITS = 8 PARAMETER C_BAUDRATE = 9600 PARAMETER C_CLK_FREQ = 50_000_000 BUS_INTERFACE SOPB = mb_opb PORT OPB_Clk = sys_clk PORT RX = puerto_serie_RX PORT TX = puerto_serie_TX END # Puerto OPB que maneja el control de los DACs 135 BEGIN opb_gpio PARAMETER INSTANCE = control_dacs PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000500 PARAMETER C_HIGHADDR = 0x0c0005ff PARAMETER C_GPIO_WIDTH = 16 PARAMETER C_TRI_DEFAULT = 0x00000000 PARAMETER C_DOUT_DEFAULT = 0x00000000 BUS_INTERFACE SOPB = mb_opb PORT GPIO_IO = control_dacs_out END # Puerto OPB que maneja el control de los Reles BEGIN opb_gpio PARAMETER INSTANCE = control_reles PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000600 PARAMETER C_HIGHADDR = 0x0c0006ff PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_TRI_DEFAULT = 0x00000000 PARAMETER C_DOUT_DEFAULT = 0x00000000 BUS_INTERFACE SOPB = mb_opb PORT GPIO_IO = control_reles_out END # Puerto OPB que maneja el control de la selección de modos BEGIN opb_gpio PARAMETER INSTANCE = seleccion_modo PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000700 PARAMETER C_HIGHADDR = 0x0c0007ff PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_TRI_DEFAULT = 0x00000000 BUS_INTERFACE SOPB = mb_opb PORT GPIO_IO = seleccion_modo_out END # Puerto OPB que maneja el control del encendido de los leds BEGIN opb_gpio PARAMETER INSTANCE = encendido_leds PARAMETER HW_VER = 2.00.a 136 PARAMETER C_BASEADDR = 0x0c000800 PARAMETER C_HIGHADDR = 0x0c0008ff PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_TRI_DEFAULT = 0x00000000 BUS_INTERFACE SOPB = mb_opb PORT GPIO_IO = encendido_leds_out END # Puerto OPB que maneja el control del ADC BEGIN opb_gpio PARAMETER INSTANCE = control_adc PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000900 PARAMETER C_HIGHADDR = 0x0c0009ff PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_TRI_DEFAULT = 0x00000000 BUS_INTERFACE SOPB = mb_opb PORT GPIO_IO = control_adc_IO END # Puerto OPB que captura la selección de modos del CS100 BEGIN opb_gpio PARAMETER INSTANCE = fp_modos PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000a00 PARAMETER C_HIGHADDR = 0x0c000aff PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_IS_BIDIR = 0 PARAMETER C_TRI_DEFAULT = 0xFFFFFFFF BUS_INTERFACE SOPB = mb_opb PORT GPIO_in = fp_modos_in END # Puerto OPB que captura el valor del ADC BEGIN opb_gpio PARAMETER INSTANCE = adcxyz PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000b00 PARAMETER C_HIGHADDR = 0x0c000bff PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_IS_BIDIR = 0 137 PARAMETER C_TRI_DEFAULT = 0xFFFFFFFF BUS_INTERFACE SOPB = mb_opb PORT GPIO_in = adcxyz_in END # Puerto OPB que captura el estado de los leds BEGIN opb_gpio PARAMETER INSTANCE = estado_leds PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000c00 PARAMETER C_HIGHADDR = 0x0c000cff PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_IS_BIDIR = 0 PARAMETER C_TRI_DEFAULT = 0xFFFFFFFF BUS_INTERFACE SOPB = mb_opb PORT GPIO_in = estado_leds_in END # Puerto OPB que captura la señal de sincronización con el CCD BEGIN opb_gpio PARAMETER INSTANCE = ccd_sync PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000d00 PARAMETER C_HIGHADDR = 0x0c000dff PARAMETER C_GPIO_WIDTH = 1 PARAMETER C_IS_BIDIR = 0 PARAMETER C_TRI_DEFAULT = 0xFFFFFFFF BUS_INTERFACE SOPB = mb_opb PORT GPIO_in = ccd_sync_in END # Segundo bloque de memoria RAM BEGIN bram_block PARAMETER INSTANCE = bram_block_opb PARAMETER HW_VER = 1.00.a PARAMETER C_MEMSIZE = 2048 BUS_INTERFACE PORTA = conn_2 END # Controlador del segundo bloque de memoria RAM BEGIN opb_bram_if_cntlr PARAMETER INSTANCE = opb_bram_cntlr 138 PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c001000 PARAMETER C_HIGHADDR = 0x0c0017ff BUS_INTERFACE PORTA = conn_2 BUS_INTERFACE SOPB = mb_opb END # Puerto OPB que captura el estado del ADC BEGIN opb_gpio PARAMETER INSTANCE = adc_busy PARAMETER HW_VER = 2.00.a PARAMETER C_BASEADDR = 0x0c000f00 PARAMETER C_HIGHADDR = 0x0c000fff PARAMETER C_TRI_DEFAULT = 0xFFFFFFFF PARAMETER C_GPIO_WIDTH = 1 PARAMETER C_IS_BIDIR = 0 BUS_INTERFACE SOPB = mb_opb PORT GPIO_in = adc_busy_in END 139 ? Definición del Software: aquí se lista las versiones de software de los manejadores de los periféricos y puertos mostrados anteriormente. PARAMETER VERSION = 2.1.0 BEGIN PROCESSOR PARAMETER DRIVER_NAME = cpu PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = microblaze_0 PARAMETER DEBUG_PERIPHERAL = debug_module PARAMETER DEFAULT_INIT = EXECUTABLE PARAMETER LEVEL = 0 PARAMETER OS = standalone PARAMETER COMPILER = mb-gcc PARAMETER ARCHIVER = mb-ar END BEGIN DRIVER PARAMETER DRIVER_NAME = generic PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = mb_opb END BEGIN DRIVER PARAMETER DRIVER_NAME = generic PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = dlmb_cntlr END BEGIN DRIVER PARAMETER DRIVER_NAME = generic PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = ilmb_cntlr END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a 140 PARAMETER HW_INSTANCE = dacxyz PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = uartlite PARAMETER DRIVER_VER = 1.00.b PARAMETER HW_INSTANCE = puerto_serie PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = control_dacs PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = control_reles PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = seleccion_modo PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = encendido_leds PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio 141 PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = control_adc PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = fp_modos PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = adcxyz PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = estado_leds PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = ccd_sync PARAMETER LEVEL = 0 END BEGIN DRIVER PARAMETER DRIVER_NAME = generic PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = opb_bram_cntlr END BEGIN DRIVER PARAMETER DRIVER_NAME = gpio 142 PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = adc_busy END 143 ? Definición de pines de salida y entrada según Nets definidos en la FPGA. #******************************************************************** # File Name: # Version: # Date: # Model: system.ucf 1.9 25/08/2004 ITFC # # Company: IAC - Guillermo Herrera # # # Copyright (c) 2004 IAC. # All rights reserved #********************************************************************* # RELOJ DEL SISTEMA Net sys_clk PERIOD = 20000 ps; # PUERTO SERIE Net PUERTO_SERIE_RX LOC=A9; Net PUERTO_SERIE_TX LOC=B9; # ENTRADAS RELOJ Y RESET Net sys_clk LOC=C8; Net sys_rst LOC=N3; # SW3 Net enable_7seg LOC=A14;# DISPLAY_7_SEGMENTOS # PUERTOS DE SALIDA Net dacxyz_out<0> LOC=R7; # DACS_D15 Net dacxyz_out<1> LOC=P7; # DACS_D14 Net dacxyz_out<2> LOC=N7; # DACS_D13 Net dacxyz_out<3> LOC=M6; # DACS_D12 Net dacxyz_out<4> LOC=T6; # DACS_D11 Net dacxyz_out<5> LOC=R6; # DACS_D10 Net dacxyz_out<6> LOC=P6; # DACS_D9 Net dacxyz_out<7> LOC=N6; # DACS_D8 Net dacxyz_out<8> LOC=T5; # DACS_D7 Net dacxyz_out<9> LOC=R5; # DACS_D6 Net dacxyz_out<10> LOC=P5; # DACS_D5 144 Net dacxyz_out<11> LOC=N5; # DACS_D4 Net dacxyz_out<12> LOC=T4; # DACS_D3 Net dacxyz_out<13> LOC=T3; # DACS_D2 Net dacxyz_out<14> LOC=R4; # DACS_D1 Net dacxyz_out<15> LOC=P4; # DACS_D0 Net control_reles_out<3> LOC=M10; # CTRET3_YCOARSE_ZCOARSE Net control_reles_out<4> LOC=N10; # CTRQ2_QZ Net control_reles_out<5> LOC=T11; # CTRET2_ZFINE_XCOARSE Net control_reles_out<6> LOC=R11; # CTRQ1_QX_QY Net control_reles_out<7> LOC=P10; # CTRET1_XFINE_YFINE Net control_dacs_out<7> LOC=R10; # DAC_Y_LOAD Net control_dacs_out<8> LOC=T10; # DAC_Y_WRITE Net control_dacs_out<9> LOC=N9; # DAC_Y_CLEAR Net control_dacs_out<10> LOC=P9; # DAC_Z_WRITE Net control_dacs_out<11> LOC=R8; # DAC_X_WRITE Net control_dacs_out<12> LOC=P8; # DAC_Z_LOAD Net control_dacs_out<13> LOC=N8; # DAC_X_LOAD Net control_dacs_out<14> LOC=M7; # DAC_Z_CLEAR Net control_dacs_out<15> LOC=T7; # DAC_X_CLEAR Net seleccion_modo_out<0> LOC=C7; # RESPONSE_TIME 4 Net seleccion_modo_out<1> LOC=A6; # RESPONSE_TIME 3 Net seleccion_modo_out<2> LOC=C6; # RESPONSE_TIME 2 Net seleccion_modo_out<3> LOC=B5; # RESPONSE_TIME 1 Net seleccion_modo_out<4> LOC=E6; # MODO_OFFSET Net seleccion_modo_out<5> LOC=C5; # MODO_QUADRATURA Net seleccion_modo_out<6> LOC=C4; # MODO_OPERATE Net seleccion_modo_out<7> LOC=A3; # MODO_BALANCE Net encendido_leds_out<3> LOC=P16; # LED_OUT_OF_RANGE Net encendido_leds_out<4> LOC=N16; # LED_OPERATE Net encendido_leds_out<5> LOC=M14; # LED_BALANCE Net encendido_leds_out<6> LOC=M16; # LED_DISABLE Net encendido_leds_out<7> LOC=L14; # LED_POWER Net control_adc_IO<3> LOC=L16; # ADC_A1 Net control_adc_IO<4> LOC=L13; # ADC_CS Net control_adc_IO<5> LOC=K14; # ADC_A0 Net control_adc_IO<6> LOC=K15; # ADC_R/C 145 Net control_adc_IO<7> LOC=K16; # ADC_BYTE # PUERTOS DE ENTRADA Net fp_modos_in<0> LOC=B7; # FRONT_PANEL_RESPONSE_TIME 4 Net fp_modos_in<1> LOC=B6; # FRONT_PANEL_RESPONSE_TIME 3 Net fp_modos_in<2> LOC=A5; # FRONT_PANEL_RESPONSE_TIME 2 Net fp_modos_in<3> LOC=D6; # FRONT_PANEL_RESPONSE_TIME 1 Net fp_modos_in<4> LOC=D5; # FRONT_PANEL_MODO_OFFSET Net fp_modos_in<5> LOC=B4; # FRONT_PANEL_MODO_QUADRATURA Net fp_modos_in<6> LOC=A4; # FRONT_PANEL_MODO_OPERATE Net fp_modos_in<7> LOC=B3; # FRONT_PANEL_MODO_BALANCE Net adcxyz_in<0> LOC=K12; # ADC_D7 Net adcxyz_in<1> LOC=K13; # ADC_D6 Net adcxyz_in<2> LOC=J14; # ADC_D5 Net adcxyz_in<3> LOC=J15; # ADC_D4 Net adcxyz_in<4> LOC=J16; # ADC_D3 Net adcxyz_in<5> LOC=J13; # ADC_D2 Net adcxyz_in<6> LOC=H16; # ADC_D1 Net adcxyz_in<7> LOC=G16; # ADC_D0 Net estado_leds_in<3> LOC=N15; # LED_OUT_OF_RANGE_(CL) Net estado_leds_in<4> LOC=N14; # LED_OPERATE_(CL) Net estado_leds_in<5> LOC=M15; # LED_BALANCE_(CL) Net estado_leds_in<6> LOC=M13; # LED_DISABLE_(CL) Net estado_leds_in<7> LOC=L15; # LED_POWER_(CL) Net adc_busy_in LOC=L12; # ADC_BUSY Net ccd_sync_in LOC=D7; # CCD_SYNCHRONIZATION 146 10.3 Código del programa. El código del programa en el microcontrolador embebido MicroBlaze, se encuentra en el Apéndice B, debidamente documentado. 10.4 Explicación del código. El código tiene un doble funcionamiento. Puede trabajar de modo tal que el panel frontal no se vea alterado ni intervenido, y puede trabajar en el modo remoto. En el control remoto, el microprocesador embebido obedece a las órdenes establecidas de comando que se le envié por el puerto serial. El protocolo de comandos (ASCII) para la comunicación vía puerto serial, fue establecida como sigue: ? Comando “f”: para seleccionar el modo de operación manual (panel frontal). ? Comando “r”: para seleccionar el modo de operación remota. ? Comando “x” + “valor”: para aplicar un ajuste de paralelismo en X. ? Comando “y” + “valor”: para aplicar un ajuste en paralelismo en Y. ? Comando “z” + “valor”: para aplicar un ajuste en desplazamiento de los espejos. ? Comando “gx”: para leer el valor del galvanómetro del canal X, devolviendo el mismo inmediatamente. ? Comando “gy”: para leer el valor del galvanómetro del canal Y, devolviendo el mismo inmediatamente. ? Comando “gz”: para leer el valor del galvanómetro del canal Z, devolviendo el mismo inmediatamente. ? Comando “c”: para activar el control automático de la señal de cuadratura. ? Comando “m”: para desactivar el control automático de la señal de cuadratura. ? Comando “q”: para activar el modo cuadratura o “quadrature”. ? Comando “o”: para activar el modo “offset”. ? Comando “–”: para activar el modo “balance”. ? Comando “+”: para activar el modo “operate”. 147 ? Comando “1”: para seleccionar el tiempo de respuesta 1. ? Comando “2”: para seleccionar el tiempo de respuesta 2. ? Comando “3”: para seleccionar el tiempo de respuesta 3. ? Comando “4”: para seleccionar el tiempo de respuesta 4. ? Comando “d” + “valor”: para configurar el valor de inicio de un barrido. ? Comando “s” + “valor”: para configurar el valor de paso del desplazamiento de los espejos en un barrido. ? Comando “n” + “valor”: para configurar la cantidad de pasos de un barrido. ? Comando “b” para arrancar un barrido. El envío de cualquier carácter detendrá el barrido inmediatamente. ? A todos los comandos anteriormente descritos se deberá agregar un retorno de carro al final. ? De reconocer los comandos aplicados, el sistema deberá devolver un retorno de carro, un salto de línea y el carácter “>”; en caso contrario se deberá agregar a la cadena anterior el carácter “?” antes del “>”. Respecto al lenguaje de programación empleado es ANSI C, junto con ciertas funciones de librería generada por el entorno XPS, en función de los periféricos añadidos a MicroBlaze. Los periféricos en el programa, son manejados por las funciones establecidas en la librería que los contiene. Dicha plantilla de funciones, puede ser de nivel uno o nivel cero. El nivel uno ofrece un juego de instrucciones más complejo y completo, pero a su vez ocupan más memoria RAM. En un principio se empezó a utilizar el nivel de interfaz uno, pero en cierto punto de la programación se llegó a la capacidad máxima de memoria de programa a ser cargado. El bloque de Ram que se estaba utilizando es de 4Kbytes, lo cual representa muy poco para lo que se quería llegar a hacer. Se podía tratar de configurar otro bloque de 2Kbytes (y no más), pero en vista de lo que ocupaba cada función en nivel uno, se decidió bajar a una interfaz de nivel cero, más dificultosa en la programación, pero que ocupa un espacio en memoria considerablemente menor. Aun así, al término de tener el programa con todas las funciones de control necesarias, se configuró el enlazador para que hiciera ver como contiguos los bloques de memoria (el de 4Kb con el de 2Kb). Este código de enlazador hace una 148 distribución de los tipos elementos en la memoria, según en la región donde se quieran asignar. Aunque complejo de utilizar y configurar, se logró enlazar las memorias, y se pudo terminar el programa con todas las prestaciones que se requerían, sin dejar de hacer interactuar a la FPGA con algún módulo circuital en la tarjeta de aplicación. A continuación, este código, denominado LinkerScript. Definición del Linker Script implementado: /* * Define el mapeo del memoria, especificando la dirección de inicio y l *tamaño de las regiones */ MEMORY { LMB : ORIGIN = 0x0, LENGTH = 4k OPB : ORIGIN = 0x0c001000, LENGTH =2k } /* * Especifica el punto de entrada del programa */ ENTRY(_start) /* * Define las secciones y donde estas mapeadas en la memoria */ SECTIONS { /* * Especifica que los sectores .text los colocara en el LMB */ .text : { *(.text) } >LMB /* Define el espacio para el Stack */ . = ALIGN(4); _heap = .; .bss : { _STACK_SIZE = 0x100; . += _STACK_SIZE; 149 . = ALIGN(4); } >OPB _stack = .; /* */ /* Empieza la memoria OPB */ /* */ .opb_text : { } >OPB . = ALIGN(4); .rodata : { *(.rodata) } >OPB . = ALIGN(8); _ssrw = .; .sdata2 : { *(.sdata2) } >OPB . = ALIGN(8); _essrw = .; _ssrw_size = _essrw - _ssrw; _SDA2_BASE_ = _ssrw + (_ssrw_size / 2 ); . = ALIGN(4); .data : { *(.data) } >OPB /* Las secciones .sdata y .sbss deben ser contiguas */ . = ALIGN(8); _ssro = .; .sdata : { *(.sdata) } >OPB . = ALIGN(4); .sbss : { __sbss_start = .; *(.sbss) __sbss_end = .; } >OPB . = ALIGN(8); _essro = .; _ssro_size = _essro - _ssro; _SDA_BASE_ = _ssro + (_ssro_size / 2 ); 150 . = ALIGN(4); .opb_bss : { __bss_start = .; *(.bss) *(COMMON) . = ALIGN(4); __bss_end = .; } > OPB _end = .; } 10.5 Prueba del software en el banco óptico. 10.5.1 Descripcion del banco optico y sus elementos. Se procedió entonces a construir un banco óptico de pruebas para verificar todas las funciones de la nueva electrónica, tanto a nivel electrónico, como óptico. La siguiente figura nos muestra los componentes de este banco de pruebas: Monitor Filtro Osciloscopio Sintonizable Fabry Perot Tarjeta Tarjeta de FPGA aplicación Computador Controlador CS100 Láser (632,8nm) Lente Focal Expansor de Haz Divisor de Haz Lente Colimadora Generador de señales Cámara Filtro Neutro Fotómetro Amplificador del fotómetro Figura 53. - Presentación y descripción del banco óptico. 151 El camino del rayo es el siguiente: sale el rayo del láser, pasa por un expansor de haz para aumentar al ancho del haz y poder cubrir la apertura del filtro sintonizable, atraviesa una lente colimadora para que los rayos al entrar en el Fabry Perot sean paralelos entre sí, y perpendiculares a los espejos, luego pasa a través del Filtro Sintonizable donde se potenciará el rayo si la separación de las placas del etalón es n veces ?/2 donde ? es igual a 632,8nm , y se atenuará en caso contrario. Al salir, el haz pasa por una lente de enfoque que vuelve a reducir su anchura, pasa por un divisor de haz 50/50, los separa en dos haces de media intensidad total cada uno. El haz que va al fotómetro, es captado por el fototransistor que allí se encuentra, que luego manda la señal eléctrica al amplificador del fotómetro, y de allí al osciloscopio para medir una señal proporcional a la intensidad de la luz incidente. El otro, pasa primero por un filtro neutro, que baja la intensidad para no saturar la cámara, y luego mandar una imagen al monitor, donde se podrán ver las franjas que representan los máximos de interferencia de la onda, que a su vez son los modos que pasan por el filtro sintonizable. A continuación, una vista superior del banco óptico, donde se puede apreciar desde otra perspectiva, al conjunto de elementos del mismo: Figura 54. - Vista superior del banco de pruebas. El CS100 está interconectado con la tarjeta de aplicación, la cual a su vez está conectada con la tarjeta de evaluación de la FPGA, como se vé a continuación: 152 Figura 55. - Interconexion con el CS100. El generador de señales simula ser la señal de sincronización proveniente de la cámara CCD. En la siguiente figura vemos su aspecto: Figura 56. - Generador de señales. 153 Finalmente, como parte del banco de pruebas, se diseñó una cónsola de comandos en Microsoft Visual Basic para hacer que el control sobre el CS100, con la tarjeta de aplicación, fuese más amigable y fácil de usar. Desde dicha cónsola, se pueden hacer ordenar todos los comandos establecidos en el diseño detallado respecto a la interfaz de comandos vía puerto serial, cumpliendo con las especificaciones, de una manera más ágil para el usuario, respecto a la alternativa del uso del HyperTerminal de Windows. En ella, además de tener el control de la señal de consigna a los etalones, se tiene el control de las manillas de modos y tiempos de respuesta. También se puede activar o desactivar el control automático de cuadratura. Además, se pueden programar los barridos del etalón sincronizados por el generador de señales, definiendo el punto de partida del barrido, en cuentas entre 0 y 65535 (16 bits), el valor del paso (número de cuentas por paso), y cuantos pasos se desean dar. Adicionalmente, se ha configurado un tipo de barrido más lento, ya que son posiciones que se mandan una a una vía puerto serial, el cual no esta sincronizado con el generador de señales, pero ofrece la ventaja de dar el valor instantáneo (en cuentas) de la señal de consigna que se le esta aplicando al etalón, y además, ofrece la posibilidad de configurar la velocidad de barrido desde 1ms en adelante. De esta manera, se dá una herramienta adicional para precisar la ubicación de máximos, lo cual se traduce en la posibilidad de medir con mucha más exactitud, la distancia, en cuentas, entre ellos, que arrojan el valor de la resolución que se esta obteniendo. Además, sirve para la calibración óptica del paralelismo de X e Y, la cual se logra mucho más rápido con este barrido lento asíncrono. Los valores de los galvanómetros también pueden ser leídos, y se muestra su valor en formato decimal, representativo del valor del galvanómetro en 8 bits complemento a dos (ya que hay valores negativos y positivos). De esta cónsola, se hizo un instalador, que se ejecuta fácilmente desde cualquier plataforma Windows, el cual instala absolutamente todos los recursos necesarios, aparte del ejecutable de programa en sí. A continuación, vemos la presentación de la cónsola de comandos diseñada: 154 Figura 57. - Presentación de la Cónsola de comandos. 10.5.2 Pruebas electrónicas realizadas y sus resultados. A continuación se presenta unas tablas con las pruebas sobre la correcta interpretación y ejecución de los comandos ordenados, por parte del sistema de control mejorado, tanto desde el HyperTerminal, como desde la cónsola de comandos diseñada, de los comandos básicos, tomando en cuenta también que los leds en el panel frontal sigan un comportamiento acorde, y la debida respuesta del sistema de control a través del carácter de reconocimiento de comando: 155 10.5.2.1 Prueba de los comandos básicos. Prueba Activación del modo de control remoto. Activación del modo de control manual. Activación del control automático de cuadratura. Desactivación del control automático de cuadratura. Resultado Correcto, se toma el control del CS100. Correcto, se devuelve el control al panel frontal. Activación del tiempo de respuesta 2ms. Activación del tiempo de respuesta 1ms. Activación del tiempo de respuesta 0.5ms. Activación del tiempo de respuesta 0.2ms. Activación del modo operate. Correcto, la señal de cuadratura se regula automáticamente. Correcto, la señal de cuadratura se regula manualmente. Correcto, se observa lecturas de offset en los galvanómetros. Correcto, se observa lecturas de cuadratura en los galvanómetros. Correcto, se observa lecturas de offset en los galvanómetros. Correcto, se observa el cambio en las agujas de los galvanómetros. Correcto, se observa el cambio en las agujas de los galvanómetros. Correcto, se observa el cambio en las agujas de los galvanómetros. Correcto, se observa el cambio en las agujas de los galvanómetros. Correcto, el CS100 entra en modo operate. Activación del modo balance Correcto, el CS100 entra en modo balance. Activación del modo offset. Activación del modo cuadratura. Activación del modo cuadratura. Tabla 8.- Resumen de pruebas y resultados de los comandos básicos. 156 10.5.2.2 Prueba de los comandos avanzados. ? Lectura de los galvanómetros. Prueba Orden de lectura del galvanómetro del canal X. Resultado Correcto, se lee el valor del galvanómetro, el cual es comprobado visualmente contra el panel frontal. Orden de lectura del galvanómetro del canal Y. Correcto, se lee el valor del galvanómetro, el cual es comprobado visualmente contra el panel frontal. Orden de lectura del galvanómetro del canal Z. Correcto, se lee el valor del galvanómetro, el cual es comprobado visualmente contra el panel frontal. Tabla 9.- Resumen de pruebas y resultados de los comandos avanzados. Parte 1. ? Ajustes de paralelismo en X, paralelismo en Y, y desplazamiento Z. Prueba Resultado Orden de cargar un valor para el Correcto, se nota en el valor del galvanómetro del canal X de paralelismo. canal X el cambio según su equivalente en voltaje. Orden de cargar un valor para el Correcto, se nota en el valor del galvanómetro del canal Y de paralelismo. canal X el cambio según su equivalente en voltaje. Orden de cargar un valor para el Correcto, se nota en el valor del galvanómetro del canal Z de desplazamiento. canal X el cambio según su equivalente en voltaje. Tabla 10.- Resumen de pruebas y resultados de los comandos avanzados. Parte 2. Además se comprobó a través del osciloscopio, la señal de referencia, la señal a cada de salida de cada DAC, para cada uno de los canales, y el espectro en frecuencia. A 157 continuación, las gráficas resultantes en el osciloscopio de estas pruebas para Z (para los otros dos canales, las imágenes eran exactamente iguales). Figura 58. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada cero (salida -Ref). Figura 59. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 16384. 158 Figura 60. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 32768(salida cero). Figura 61. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 49150. 159 Figura 62. - Arriba, la señal de referencia, y abajo, la salida del DAC Z para el valor de entrada 65535 (salida +Ref). Figura 63. - Comenzando positiva, la señal de referencia, y comenzando negativa, la salida del DAC Z para el valor cero, donde se denota la perfecta simetría de +Ref (de la referencia) con –Ref (del DAC). 160 Figura 64. - Espectro en frecuencia de la señal de referencia donde se nota la componente de 15,6Khz, sin otras contribuciones relevantes en otras frecuencias. ? Ejecución de barridos. Prueba Resultado Configuración de barrido síncrono Correcto, se nota en el valor del galvanómetro del embebido dentro del permitido. rango canal Z y en el osciloscopio, el cambio de la onda de la señal de consigna continuamente. Configuración de barrido asíncrono Correcto, se nota en el valor del galvanómetro del lento dentro del rango permitido canal Z y en el osciloscopio, el cambio de la onda (solo en cónsola). de la señal de consigna continuamente. Correcto, se nota en el valor del galvanómetro del Orden de detener un barrido. canal Z y en el osciloscopio, que se ha detenido el barrido. Tabla 11.- Resumen de pruebas y resultados de los comandos avanzados. Parte 3. 161 10.5.3 Pruebas opticas. ? Número máximo de cuentas sin que el equipo llegue al estado fuera de rango: se ejecutaron múltiples barridos, hasta encontrar que el rango máximo seguro de valores en cuentas estaba entre 30000 y 62000. ? Número de modos contados en el rango máximo seguro: se contabilizaron 14 modos en el recorrido. ? Desplazamiento máximo en los espejos: N mod os ? ? 2 ? recorrido , Entonces con ? ˜ 633nm, tenemos un recorrido de 4,6µm. ? Distancia entre máximos en valor de cuentas: se encontró un máximo en 47650, seguido un mínimo en 48700, y seguido otro máximo en 49800. Y entonces, se procedió a afinar el punto de cuentas de los máximos, corrigiendo los valores iniciales y obteniendo un máximo en 47660 y el siguiente máximo en 49750. Esto arroja un valor de cuentas entre máximos (modos) de 2090, también llamado rango de espectro libre (FSR-Free Spectral Range). ? La resolución teórica viene dada por: ? ? 1 ? ? ? nm 2 cuenta FSR(en _ cuentas) Y entonces finalmente, la resolución teórica es de 0,15nm/cuenta. ? Verificación de la resolución: Se realizó un barrido entre 48000 y 51000, y se encontró un punto donde la pendiente de la curva del fotómetro se hacia máxima, en 49300 cuentas aproximadamente. Este punto de la curva, ofrece una buena respuesta del 162 fotómetro, ya que la máxima pendiente se traduce en mayor ganancia, lo que representa estar en la zona más sensible. Luego de esto, se hicieron microbarridos que oscilaban un paso hacia delante y otro hacia atrás. Buscando la respuesta de la señal del fotómetro, se hicieron pruebas con valores de paso en estos microbarridos con 10 cuentas por paso, 3 cuentas por paso y con 1 cuenta por paso, que representan resoluciones de 1,5nm, 0,45nm y 0,15nm respectivamente. El ruido que afecta a las señales es debido a las limitaciones del actual montaje experimental. Se debe por un lado a pequeñas fluctuaciones en la luz ambiente y en la intensidad del láser, y a ruido de tipo electromagnético que se acopla en el amplificador del fotómetro debido a que se le hace funcionar a ganancias muy elevadas (105 – 106). Desconectándola, se verifico que en ningún caso la electrónica diseñada contribuía al mismo. Las graficas resultantes son las siguientes: Figura 65. - Señal del fotómetro con un paso de 10 cuentas a 500ms por paso. 163 Figura 66. - Señal del fotómetro con un paso de 3 cuentas a 300ms por paso. Figura 67. - Señal del fotómetro con un paso de una cuenta a 100ms por paso. 164 11. CONCLUSIONES Y RECOMENDACIONES. Se ha comprobado que es posible el control del filtro sintonizable de prueba en todo su rango (4,6um) y con una resolución mejor que 0.5nm., tal y como plantea la necesidad en proyecto OSIRIS. También el error de cuadratura es compensado ahora de manera automática, eliminando la necesidad de la intervención manual en el equipo. Además, es posible el control remoto de todos los elementos del panel frontal del CS100 de forma absoluta, así como la lectura de los galvanómetros. Y aunado a todo esto, es posible sincronizar el cambio de sintonía del filtro con una señal externa. Las tablas son simuladas por una secuencia de longitudes de onda programable desde los comandos via puerto serial. Por lo tanto, se han cumplido todas las especificaciones de proyecto OSIRIS fijadas inicialmente en el capítulo correspondientes, y logrando hacer un avance mas alla de lo previsto en el proyecto, por lo que, se consideró al proyecto un total éxito, debido a que no se presentaron inconvenientes que frenaran el desarrollo del mismo y todos los módulos diseñados cumplieron su cometido a la primera. De las recomendaciones a futuro, se puede decir que debido a los buenos resultados obtenidos con este primer prototipo, es posible abordar directamente el diseño del equipo final. También seria necesario integrar la electrónica de control en la tarjeta de aplicación, prescindiendo de la tarjeta de evaluación. Se dedería reducir el tamaño de la tarjeta integrada para adaptarse al de un módulo 3U, y así poder ser instalado como un módulo más del CS100. Además, en vista de la posibilidad de crecimiento en las funciones del sistema de control 165 digital, es aconsejable el realizar un depurado final del software de control y añadirle nuevas funcionalidades en caso de ser necesario. Finalmente podemos decir, que las prestaciones originales del CS100 han sido considerablemente mejoradas, con lo que se dá un nuevo avance en el proyecto OSIRIS, el cual, para muchos, es el intrumento de mayor innovación e importancia del Gran Telescopio Canarias. El presupuesto del proyecto y las horas de trabajo invertidas se encuentran en el Apéndice C. 166 12. REFERENCIAS BIBLIOGRAFICAS. [1] IAC, “1er Congreso Internacional Ciencia con el GTC”, Febrero del 2002. C. Martín, “Introducción a los telescopios terrestres y su intrumentación”, [2] IAC, Noviembre del 2003. J. Zaccaria, “Banco de pruebas para filtros sintonizables”, IAC, Agosto del [3] 2003. J. Rasilla, J. Gigante, J. Cepa, “Tunable Filters Specifications”, IAC, Marzo [4] del 2002. Queensgate Instruments Ltd., “User’s guide Queensgate Servo-stabilized [5] Interferometer System CS100 Controller, ET series II and EC series Etalons” [6] OSIRIS: http://www.gtc.iac.es/instrumentation/osiris_es.asp [7] OSIRIS - Introduction: http://www.iac.es/project/OSIRIS/ [8] GTC: http://www.gtc.iac.es/ Xilinx, “Spartan-IIE 1.8V FPGA Family: Complete Data Sheet”, Julio del [9] 2004. [10] Xilinx, “Spartan-IIE Brochure”, 2002. [11] Xilinx, “MicroBlaze Processor Reference Guide”, Julio del 2003. [12] Xilinx, “Xilinx Device Drivers Documentation”, Agosto del 2003. [13] Xilinx, “Embedded System Tools Guide”, Septiembre del 2003. Avnet Inc., “Xilinx Spartan™-IIE Evaluation Kit Datasheet”, Noviembre del [14] 2002. [15] Protel, “Exploring Protel 99 SE”, 1999. 167 13. APENDICES 13.1 Apéndice A. Lista de Materiales. Valor o Número del fabricante Descripción Footprint CANTIDAD 100nF Capacitor 50V 0805 SMT 24 33pF Capacitor 50V 1206 SMT 3 10µF Capacitor 25V SIZE D 2 2.2µF Capacitor 35V SIZE C 3 CABLE20 3M CABLE 20 LINEAS 28AWG N/A CABLE50 3M CABLE 50 LINEAS 28AWG N/A 1 METRO CRIMP MOLEX CRIMP TERMINAL 28AWG N/A 1 PACK100 GF1A Diode 1A 50V DO-214BA TL074CD Low-Noise JFET-Input Operational Amplifier SO-G14 3 FOTOCOUPLER_TLP181 Optocoupler Toshiba TLP181 11-4C1 10 G6H-2F 5 2 METROS 5 RELAY_ONROM_G6H-2F 5VDC RELAY OMRON G6H-2F SURFACE MOUNT ADS7824U(28) 4 Channel, 12-Bit Sampling CMOS A/D Converter SOIC(28)DW 1 MC74ACT541DW OCTAL BUF AND LINE DRV 3SO SO20W 1 SN74LVC1G07DBVR SINGLE BUFFER/DRIVER WITH OPEN DRAIN SOT-23 (DBV) 1 LT1112S8 Dual Low Power Precision, Picoamp Input Operational Amplifier SO-G8 3 DAC_LTC1597-1ACG DAC_LTC1597-1ACG 28SSOP (G) 3 BNC SOCKET BNC Connector RIGHT ANGLE 50 OHMS N/A 4 5PIN HEADER Connector MOLEX 2,5MM 5PIN N/A 1 HEADER 25X2 3M 2,54MM 50PIN N/A 2 BNC MACHO CONECTOR BCN CABLE RG174 N/A 3 CRIMP TERMINAL HOUSING3 CONECTOR HEMBRA 3PIN N/A 4 CRIMP TERMINAL HOUSING5 CONECTOR HEMBRA 5PIN N/A 1 SOCKET20 CONECTOR HEMBRA 20PIN N/A 2 SOCKET50 CONECTOR HEMBRA 50PIN N/A 4 3PIN HEADER Connector MOLEX 2,5MM 3PIN N/A 4 10K RC02H PHILIPS RC02H 1206 SMT 3 1.2K RC02H PHILIPS RC02H 1206 SMT 5 150R RC02H PHILIPS RC02H 1206 SMT 5 1M RC02H PHILIPS RC02H 1206 SMT 3 120R RC02H PHILIPS RC02H 1206 SMT 5 3.9K RC02H PHILIPS RC02H 1206 SMT 9 6.8K RC02H PHILIPS RC02H 1206 SMT 9 3.3K RC02H PHILIPS RC02H 1206 SMT 9 10K 3142W Potentiometer MEGGITT 100mW N/A 3 2200nF Capacitor RAD0.2 3 AD632AD RECEPTACULO LEMO EXP0S303 RECEPTACULO LEMO EXP1S305 Internally Trimmed Precision IC Multiplier DIP-14 3 LEMO EXP OS N/A 3 LEMO EXP 1S N/A 1 HEADER 20PIN3M 20 PIN 2,54MM N/A 2 +REF/-REF Connector 3 PIN PARA JUMPER N/A 4 168 TOTAL 156 Tabla 12.- Lista de materiales. 13.2 Apéndice B. Codigo del programa del microcontrolador embebido MicroBlaze. ? Archivo de cabecera: /******** Archivo globals.h*********/ /* Librerias de Xilinx utilizadas*/ #include "xparameters.h" #include "xgpio_l.h" #include "xbasic_types.h" #include "xuartlite_l.h" /* Declaracion de Funciones */ void activar(Xuint32 Base_Address, Xuint32 MASCARA,Xboolean estado); Xboolean activado(Xuint32 Base_Address, Xuint32 MASCARA); void cargardac(int dac,Xuint32 valor); void activar_RT(Xuint32 valor_rt); void enviar_cadena(char respuesta[]); Xuint8* hacer_cadena(int numero); ? Código Principal: /******************************************************************** * File Name: * Version: main.c 1.9 * Date: 01/09/2004 * Model: ITFC v.0.1 * * Company: IAC - Guillermo Herrera * * * Copyright (c) 2004 IAC 169 * All rights reserved **********************************************************************/ /**********************************************************************/ #include "globals.h" // MASCARAS #define LED_POWER 0x00000001 // Led Power del Panel Frontal #define LED_DIS 0x00000002 // Led Disable del Panel Frontal #define LED_BAL 0x00000004 // Led Balance del Panel Frontal #define LED_OPER 0x00000008 // Led Operate del Panel Frontal #define LED_OOR 0x00000010 // Led Out of Range del Panel Frontal #define BALANCE 0x00000001 // selección modo Balance #define OPERATE 0x00000002 // selección modo Operate #define CUADRATURA 0x00000004 // selección modo Quadrature #define OFFSET 0x00000008 // selección modo Offset #define RT1 0x00000010 // selección del tiempo de respuesta 1 #define RT2 0x00000020 // selección del tiempo de respuesta 2 #define RT3 0x00000040 // selección del tiempo de respuesta 3 #define RT4 0x00000080 // selección del tiempo de respuesta 4 #define DACX 0 // selección DAC X para ajuste de Offset #define DACY 1 // selección DAC Y para ajuste de Offset #define DACZ 2 // selección DAC Z para ajuste de Offset #define CLX 0x00000001 // Pin de Clear en DAC X #define LDX 0x00000004 // Pin de Load en DAC X #define WRX 0x00000010 // Pin de Write en DAC X #define CLY 0x00000040 // Pin de Clear en DAC Y #define LDY 0x00000100 // Pin de Load en DAC Y #define WRY 0x00000080 // Pin de Write en DAC Y #define CLZ 0x00000002 // Pin de Clear en DAC Z #define LDZ 0x00000008 // Pin de Load en DAC Z #define WRZ 0x00000020 // Pin de Write en DAC Z #define CAQXQYQZ 0x0000000A // activación de Reles de señales QUADRATURE #define FINECOARSEXYZ 0x00000015 // activación de Reles de señales OFFSET #define ADCBYTE 0x00000001 // Pin de BYTE del ADC #define ADCRC 0x00000002 // Pin de RC del ADC #define ADCA0 0x00000004 // Pin de A0 del ADC #define ADCCS 0x00000008 // Pin de CS del ADC #define ADCA1 0x00000010 // Pin de A1 del ADC #define ADCBUSY 0x00000001 // Pin de BUSY del ADC #define SYNC_CCD 0x00000001 // Entrada de señal TTL del CCD #define PREAJUSTE_X 41200 // Valor de posicion estable del etalón en X #define PREAJUSTE_Y 39800 // Valor de posicion estable del etalón en Y #define PREAJUSTE_Z 44200 // Valor de posicion estable del etalón en Z 170 Xuint8 cadenatx[4]; // Variable Global de Cadena de transmision main(){ Xboolean operar_dac = XFALSE; int cual_dac; // Variable que indica operación con DAC // Variable que indica selección del DAC Xboolean ascendente = XTRUE; // Variable que indica sentido del barrido int nulo; // Variable de uso general Xboolean barrido_activo = XFALSE; // Variable de “barrido en proceso” Xuint16 inicio_barrido = 0; Xuint16 fin_barrido = 0; // Variable del valor de inicio del barrido // Variable del valor final del barrido Xuint16 paso_barrido = 1; // Variable del valor del paso del barrido Xuint16 numero_pasos = 65535; // Variable del número de pasos del barrido Xboolean a0 = XTRUE; // Variable de configuración del A0 del ADC Xboolean a1 = XTRUE; // Variable de configuración del A1 del ADC Xboolean analizar = XFALSE; // Variable que indica analizar un comando char caracter; // Variable de una cadena int x,y; // Variables de uso general int num_caracter = 0; // Variable del número de caracteres Xuint8 cadenarx[7]; // Variable de la cadena de recepcion Xuint16 dato_dac = 0; // Variable del dato a cargar en un DAC Xboolean dato_valido = XFALSE; // Variable que indica comando valido Xboolean estado_operate = XFALSE; // Variable del modo Operate Xboolean estado_offset = XTRUE; // Variable del modo Offset Xuint32 constante_tiempo = RT4; // Variable de la constante de tiempo Xboolean remoto = XFALSE; // Variable del modo remoto activar(XPAR_CONTROL_DACS_BASEADDR, CLX, XFALSE); //Clear en DAC X activar(XPAR_CONTROL_DACS_BASEADDR, CLY, XFALSE); //Clear en DAC Y activar(XPAR_CONTROL_DACS_BASEADDR, CLZ, XFALSE); //Clear en DAC Z cadenarx[0] = '\r'; // Inicializa cadena-recepcion en retorno de carro activar(XPAR_CONTROL_ADC_BASEADDR, ADCBYTE, XTRUE); //Modo 8 Bits en ADC activar(XPAR_CONTROL_ADC_BASEADDR, ADCCS, XTRUE); // Chip Select ADC “Low” activar(XPAR_CONTROL_ADC_BASEADDR, ADCRC, XFALSE); //RC ADC “High” /* Pantalla de inicio para el caso de uso del Hyper Terminal*/ enviar_cadena("\f\n\r\t\t\tITFC v0.1 - sv1.9, IAC 2004\n\r>"); while (1){ // Ciclo natural del Programa mientras no haya reset /* Las cuatro líneas siguientes replican las ordenes de encendido de los leds Power, Out if Range, Balance y Operate dadas por el CS100*/ 171 activar(XPAR_ENCENDIDO_LEDS_BASEADDR, LED_POWER, (activado(XPAR_ESTADO_LEDS_BASEADDR, LED_POWER))); activar(XPAR_ENCENDIDO_LEDS_BASEADDR, LED_OOR, (activado(XPAR_ESTADO_LEDS_BASEADDR, LED_OOR))); activar(XPAR_ENCENDIDO_LEDS_BASEADDR, LED_BAL, (activado(XPAR_ESTADO_LEDS_BASEADDR, LED_BAL))); activar(XPAR_ENCENDIDO_LEDS_BASEADDR, LED_OPER, (activado(XPAR_ESTADO_LEDS_BASEADDR, LED_OPER))); if(remoto == XFALSE){ // Instrucciones a realizar en modo de operación manual // Apaga el led de disable activar(XPAR_ENCENDIDO_LEDS_BASEADDR, LED_DIS, XFALSE); // Desactiva reles de señales de ajuste activar(XPAR_CONTROL_RELES_BASEADDR, FINECOARSEXYZ, XTRUE); // Duplica la selección del modo operate del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, OPERATE, (activado(XPAR_FP_MODOS_BASEADDR, OPERATE))); // Duplica la selección del modo balance del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, BALANCE, (activado(XPAR_FP_MODOS_BASEADDR, BALANCE))); // Duplica la selección del modo quadrature del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, CUADRATURA, (activado(XPAR_FP_MODOS_BASEADDR, CUADRATURA))); // Duplica la selección del modo offset del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, OFFSET, (activado(XPAR_FP_MODOS_BASEADDR, OFFSET))); // Duplica la selección de tiempo de respuesta 1 del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, RT1, (activado(XPAR_FP_MODOS_BASEADDR, RT1))); // Duplica la selección de tiempo de respuesta 2 del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, RT2, (activado(XPAR_FP_MODOS_BASEADDR, RT2))); // Duplica la selección de tiempo de respuesta 3 del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, RT3, (activado(XPAR_FP_MODOS_BASEADDR, RT3))); // Duplica la selección de tiempo de respuesta 4 del panel frontal activar(XPAR_SELECCION_MODO_BASEADDR, RT4, (activado(XPAR_FP_MODOS_BASEADDR, RT4))); } //Cierre del if else{ // Instrucciones a realizar en modo de operación remota // Enciende led de disable activar(XPAR_ENCENDIDO_LEDS_BASEADDR, LED_DIS, XTRUE); // Activa reles de señales de ajuste 172 activar(XPAR_CONTROL_RELES_BASEADDR, FINECOARSEXYZ, XFALSE); // Activa o desactiva el modo operate según variable estado_operate activar(XPAR_SELECCION_MODO_BASEADDR, OPERATE, estado_operate); // Activa o desactiva el modo balance según variable estado_operate negada activar(XPAR_SELECCION_MODO_BASEADDR, BALANCE, !estado_operate); // Activa o desactiva el modo quadrature según variable estado_offset negada activar(XPAR_SELECCION_MODO_BASEADDR, CUADRATURA, !estado_offset); // Activa o desactiva el modo offset según variable estado_offset activar(XPAR_SELECCION_MODO_BASEADDR, OFFSET, estado_offset); // Selecciona el tiempo de respuesta según variable constante_tiempo activar_RT(constante_tiempo); } // Cierre del else /* A continuación se verifica si a llegado un carácter por el puerto serial, y de ser cierto, se lee el mismo para armar la cadena de recepcion */ if(XUartLite_mIsReceiveEmpty(XPAR_PUERTO_SERIE_BASEADDR)==XFALSE){ caracter = XUartLite_RecvByte(XPAR_PUERTO_SERIE_BASEADDR); if((num_caracter < 6) && (caracter != '\r')){ // Condiciones hacer-cadena cadenarx[num_caracter] = caracter; num_caracter++; // Agrega carácter a cadenarx // Incrementa posicion en cadenarx XUartLite_SendByte(XPAR_PUERTO_SERIE_BASEADDR, caracter); /*Devuelve el carácter recibido */ } // Cierre del if else{ // Condiciones de fin de cadenarx ocurridas num_caracter = 0; // Inicializacion de la posicion en cadenarx analizar = XTRUE; //Indica que se debe analizar un comando(cadenarx) } } // Cierre del else // Cierre del if if(analizar == XTRUE){ // Condicion de analizar un comando recibido dato_valido = XFALSE; // Inicializacion de validar el comando a falso switch (cadenarx[0]){ // Discrimina en el primer carácter de la cadena // el tipo de comando recibido case 0x0d: dato_valido = XTRUE; break; // Retorno de carro recibido // Valida la entrada como identificada // Cierre del case 173 case 'x': // Comando de ajuste en X recibido cual_dac = DACX; // Configura el DAC a cargar operar_dac = XTRUE; // Confirma un comando de ajuste dato_valido = XTRUE;// Valida la entrada como identificada break; // Cierre del case case 'y': // Comando de ajuste en X recibido cual_dac = DACY; // Configura el DAC a cargar operar_dac = XTRUE; // Confirma un comando de ajuste dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'z': // Comando de ajuste en X recibido cual_dac = DACZ; // Configura el DAC a cargar operar_dac = XTRUE; // Confirma un comando de ajuste dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'g': // Comando de lectura de galvanómetro recibido /* Nota: el canal X es el seleccionado por defecto en este punto */ if(cadenarx[1]=='y'){ // Discrimina la orden para el canal Y a0 = XFALSE; // Configura la entrada del ADC } // Cierre del if if(cadenarx[1]=='z'){// Discrimina la orden para el canal Z a1 = XFALSE; // Configura la entrada del ADC /* Nota: el canal X es el selecionado por defecto } // Cierre del if activar(XPAR_CONTROL_ADC_BASEADDR, ADCA0, a0); // Ejecuta la activar(XPAR_CONTROL_ADC_BASEADDR, ADCA1, a1);// selección // del canal // Ordena la conversión (n-1) del canal escogido activar(XPAR_CONTROL_ADC_BASEADDR, ADCRC, XTRUE); // Espera de respuesta de conversión (n-1) terminada while(activado(XPAR_ADC_BUSY_BASEADDR, ADCBUSY)){ a0 = XTRUE; } // Configura A0 para canal X // Cierre del while // Ordena la conversión (n) del canal escogido activar(XPAR_CONTROL_ADC_BASEADDR, ADCRC, XFALSE); activar(XPAR_CONTROL_ADC_BASEADDR, ADCRC, XTRUE); 174 // Espera de respuesta de conversión (n) terminada while(activado(XPAR_ADC_BUSY_BASEADDR, ADCBUSY)){ a1 = XTRUE; } // Configura A1 para canal X // Cierre del while // Pone en el puerto de salida del ADC conversión (n-1) activar(XPAR_CONTROL_ADC_BASEADDR, ADCRC, XFALSE); // Envia por el puerto serie el valor de salida del ADC enviar_cadena(hacer_cadena(XGpio_mReadReg(XPAR_ADCXYZ_BASEADDR, XGPIO_DATA_OFFSET))); dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'd': // Comando de configuración de valor // de inicio de barrido recibido inicio_barrido = 0; // Inicializacion de la variable y = 100000; // Inicializacion de la variable de division for( x = 1; x <= 5; x++){ // Bucle de conversion String->Int y = y/10; inicio_barrido += (cadenarx[x] - 0x30)* y; } // Cierre del for y queda en inicio_barrido el valor dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'n': // Comando de ajuste en X recibido numero_pasos = 0; y = 100000; // Inicializacion de la variable de division for( x = 1; x <= 5; x++){ // Bucle de conversion String->Int y = y/10; numero_pasos += (cadenarx[x] - 0x30)* y; } // Cierre del for y queda en número_pasos el valor dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 's': // Comando de ajuste en X recibido paso_barrido = 0; y = 100000; // Inicializacion de la variable de division 175 for( x = 1; x <= 5; x++){ // Bucle de conversion String->Int y = y/10; paso_barrido += (cadenarx[x] - 0x30)* y; } // Cierre del for y queda en paso_barrido el valor dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'b': // Comando de inicio de barrido recibido ascendente = XTRUE; // Indica un barrido ascendente barrido_activo = XTRUE; // Indica un barrido en ejecucion dato_dac = inicio_barrido; // Inicializa valor del DAC Z // Hace que el valor final del barrido coincida con un // multiplo del valor del paso para pasar por los mismos // valores al regresar fin_barrido = inicio_barrido + (numero_pasos * paso_barrido); // Bucle bajo condicion de barrido en proceso while(barrido_activo == XTRUE){ // Bucle de condicion nivel bajo en señal de sincronía while(activado(XPAR_CCD_SYNC_BASEADDR, 0x00000001)==XTRUE){ nulo = 0; // No hace nada, solo espera } // Cierre del while //Al salir del bucle anterior sucede la señal de disparo cargardac(DACZ, dato_dac); // carga el valor al DAC Z if(ascendente==XTRUE){// Condicion barrido ascendente dato_dac += paso_barrido; // Incrementa un paso } // Cierre del if else{ // Condicion barrido descendente dato_dac -= paso_barrido; // Decrementa un paso } // Cierre del else if(dato_dac >= fin_barrido){ // Llega al final ascendente = XFALSE; // Indica barrido descendente } // Cierre del if if(dato_dac <= inicio_barrido){ // Llega al principio ascendente = XTRUE; // Indica barrido ascendente } // Cierre del if // Condicion que detecta si se ha recibido un caracter if(XUartLite_mIsReceiveEmpty(XPAR_PUERTO_SERIE_BASEADDR)==XFALSE){ barrido_activo = XFALSE; // Detiene el barrido 176 } // Cierre del if // Bucle de condicion nivel alto en señal de sincronía while(activado(XPAR_CCD_SYNC_BASEADDR, 0x00000001)==XFALSE){ nulo = 1; // No hace nada, solo espera } } // Cierre del while // Cierre del while de barrido activo dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'c': // Comando de activar CAQ recibido // Orden de activar el Control automático de Cuadratura activar(XPAR_CONTROL_RELES_BASEADDR, CAQXQYQZ, XFALSE); dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'm': // Comando de desactivar CAQ recibido // Orden de desactivar el Control automático de Cuadratura activar(XPAR_CONTROL_RELES_BASEADDR, CAQXQYQZ, XTRUE); dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'q': // Comando de modo cuadratura recibido estado_offset = XFALSE; // Activa el modo cuadratura dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'o': // Comando de modo offset recibido estado_offset = XTRUE; // Activa el modo offset dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case '-': // Comando de modo balance recibido estado_operate = XFALSE; // Activa el modo balance dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case '+': // Comando de modo operate recibido estado_operate = XTRUE; // Activa el modo operate // Las siguientes tres líneas cargan los valores de posicion // estable determinados experimentalmente cargardac(DACX, PREAJUSTE_X); cargardac(DACY, PREAJUSTE_Y); 177 cargardac(DACZ, PREAJUSTE_Z); dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case '1': // Comando selección RT1 recibido constante_tiempo = RT1; // Activa el tiempo de respuesta 1 dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case '2': // Comando selección RT2 recibido constante_tiempo = RT2; // Activa el tiempo de respuesta 2 dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case '3': // Comando selección RT3 recibido constante_tiempo = RT3; // Activa el tiempo de respuesta 3 dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case '4': // Comando selección RT4 recibido constante_tiempo = RT4; // Activa el tiempo de respuesta 4 dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'r': // Comando modo remoto recibido estado_operate = XFALSE; // Activa el modo balance estado_offset = XTRUE; // Activa el modo offset constante_tiempo = RT4; // Activa el tiempo de respuesta 4 remoto = XTRUE; // Activa el modo remoto dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case case 'f': // Comando de modo manual recibido remoto = XFALSE; // Activa el modo manual dato_valido = XTRUE; // Valida la entrada como identificada break; // Cierre del case } if(operar_dac == XTRUE){ dato_dac = 0; y = 100000; // Condicion de modo de ajuste sucedido // Inicializa la dato a cargar // Inicializa la variable de division for( x = 1; x <= 5; x++){ // Bucle de conversion String->Int y = y/10; 178 dato_dac += (cadenarx[x] - 0x30)* y; } // Cierre del for y queda en dato_dac el valor // Carga el valor en el DAC selecionado cargardac(cual_dac, dato_dac); operar_dac = XFALSE; } // Elimina solicitud de ajuste // Cierre del if if(dato_valido == XTRUE){ // Condicion de entrada validada enviar_cadena("\n\r>"); // Envia cadena de validacion } // Cierre del if else{ // Condicion de entrada no validada enviar_cadena("\n\r?>"); / Envia cadena de invalidacion } // Cierre del else analizar = XFALSE; // Elimina solicitud de analizar comando cadenarx[0] = '\r'; // Inicializa la cadenarx con retorno de carro } // Cierre del switch } // Cierre del while principal } // Cierre del main /*******************FUNCIONES**********************/ /********************************************************************************* FUNCION activar: Esta función recibe los siguientes parámetros: a. Un entero sin signo de 32 bit que contiene la dirección de memoria del dispositivo GPIO donde se va a hacer la escritura. b. Un entero sin signo de 32 bit que contiene la mascara que discrimina el bit (o los bits) a cambiar en el registro del dispositivo GPIO. c. Un dato “boolean” que indica si la acción es activar en el caso de XTRUE, o si es desactivar en el caso XFALSE. Dichas activaciones trabajan con lógica negativa, por lo que activar es poner un cero lógico en el bit indicado, y viceversa. No devuelve ningún valor porque hace las modificaciones directamente en los registros. Se utilizan las funciones de bajo nivel XGpio_mReadReg para leer los registros, y XGpio_mWriteReg para escribir los registros. Propiamente esta función escribe en los registros, cambiando únicamente los bits indicados, sin afectar o cambiar a los demás bits. Nota: en la aplicación de esta función a selección de modos y encendido de led, la lógica negativa tiene sentido por la operación interna del CS100. Pero en todos los 179 demás casos, se debió usar XFALSE para activar y XTRUE para desactivar, para así utilizar la misma función en dispositivos de lógica positiva. *********************************************************************************/ void activar(Xuint32 Base_Address, Xuint32 MASCARA,Xboolean estado){ Xuint32 COMPARACION; COMPARACION = XGpio_mReadReg(Base_Address, XGPIO_DATA_OFFSET); if(estado==XTRUE){ COMPARACION &= ~MASCARA; } // Cierre del if else { COMPARACION |= MASCARA; } // Cierre del else XGpio_mWriteReg(Base_Address, XGPIO_DATA_OFFSET, COMPARACION); } // Cierre de la función /********************************************************************************* FUNCION activado: Esta función recibe los siguientes parámetros: a. Un entero sin signo de 32 bit que contiene la dirección de memoria del dispositivo GPIO donde se va a hacer la escritura. b. Un entero sin signo de 32 bit que contiene la mascara que discrimina el bit (o los bits) a cambiar en el registro del dispositivo GPIO. Devuelve un dato “boolean” que indica si el bit (o los bits) indicados están activados para cuyo caso devuelve XTRUE, o si están desactivados, caso en el cual devuelve XFALSE. Dichas verificaciones de activación trabajan con lógica negativa, por lo que activado se traduce en un cero lógico en el Se utiliza la función de bajo nivel bit indicado, y viceversa. XGpio_mReadReg para leer los registros. Propiamente esta función lee en los registros, verificando únicamente los bits indicados. Nota: en la aplicación de esta función a lectura de modos y estado de led, la lógica negativa tiene sentido por la operación interna del CS100. Pero en todos los demás casos, se debió interpretar XFALSE para activado y XTRUE para desactivado, para así utilizar la misma función en dispositivos de lógica positiva. *********************************************************************************/ Xboolean activado(Xuint32 Base_Address, Xuint32 MASCARA){ Xuint32 COMPARACION; COMPARACION = XGpio_mReadReg(Base_Address, XGPIO_DATA_OFFSET); COMPARACION &= MASCARA; 180 if(COMPARACION== MASCARA){ return XFALSE; } // Cierre del if else{ return XTRUE; } } // Cierre del else // Cierre de la función /********************************************************************************* FUNCION cargardac: Esta función recibe los siguientes parámetros: a. Un entero que indica el dac a utilizar en la función. b. Un entero sin signo de 32 bit que contiene el valor a escribir en el registro del dispositivo GPIO relacionado a la salida hacia los dacs. No devuelve ningún valor porque hace las modificaciones directamente en los registros. Se utiliza la función de bajo nivel XGpio_mWriteReg para escribir los registros. También se utiliza la función activar, creada en este mismo código. Propiamente esta función escribe el valor a cargar en el registro del dispositivo GPIO de salida a los dacs, y luego, a través de un switch, discrimina que dac es el de interés en ser cargado, y finalmente ejecuta un secuencia de escrituras (indicadas por el fabricante del dac) con la función activar, en los debidos puertos a través del dispositivo GPIO para las señales de control de los dacs creada, para que se actualice el valor en el integrado conversor digital-analógico. *********************************************************************************/ void cargardac(int dac,Xuint32 valor){ Xuint32 write_dac, load_dac; XGpio_mWriteReg(XPAR_DACXYZ_BASEADDR, XGPIO_DATA_OFFSET, valor); switch(dac){ case DACX: write_dac = WRX; // WRITE X load_dac = LDX; // LOAD X break; // Cierre del case case DACY: write_dac = WRY; // WRITE Y load_dac = LDY; // LOAD Y break; // Cierre del case case DACZ: write_dac = WRZ; // WRITE Z 181 load_dac = LDZ; // LOAD Z break; } // Cierre del case // Cierre del switch activar(XPAR_CONTROL_DACS_BASEADDR, write_dac, XTRUE); // WRITE XYZ activar(XPAR_CONTROL_DACS_BASEADDR, write_dac, XFALSE); activar(XPAR_CONTROL_DACS_BASEADDR, load_dac, XFALSE); // LOAD XYZ activar(XPAR_CONTROL_DACS_BASEADDR, load_dac, XTRUE); } Cierre de la función /********************************************************************************* FUNCION activar_RT: Esta función recibe los siguientes parámetros: a. Un entero sin signo de 32 bit que contiene la información en una directamente en los mascara acerca del tiempo de respuesta seleccionado. No devuelve ningún valor porque hace las modificaciones registros. Se utilizan las funciones de bajo nivel XGpio_mReadReg para leer los registros, y XGpio_mWriteReg para escribir los registros. Propiamente esta función lee en el registro del dispositivo GPIO de modos, y luego, a través de un switch, discrimina que tiempo de respuesta es el de interés en ser seleccionado, y finalmente ejecuta la escrituras en los registros del GPIO de modos, cambiando únicamente el bit indicado, sin afectar o cambiar a los demás bits. Nota: en la aplicación de esta función, la lógica negativa tiene sentido por la operación interna del CS100. *********************************************************************************/ void activar_RT(Xuint32 valor_rt){ Xuint32 estado; estado = XGpio_mReadReg(XPAR_SELECCION_MODO_BASEADDR, XGPIO_DATA_OFFSET); estado |= 0x000000f0; switch (valor_rt){ case RT1: estado &= ~RT1;// Tiempo de respuesta 1 seleccionado break; // Cierre del case case RT2: estado &= ~RT2; // Tiempo de respuesta 1 seleccionado break; // Cierre del case case RT3: estado &= ~RT3; // Tiempo de respuesta 1 seleccionado 182 break; // Cierre del case case RT4: estado &= ~RT4; // Tiempo de respuesta 1 seleccionado break; } // Cierre del case // Cierre del switch XGpio_mWriteReg(XPAR_SELECCION_MODO_BASEADDR, XGPIO_DATA_OFFSET, estado); } // Cierre de la función /********************************************************************************* FUNCION enviar_cadena: Esta función recibe los siguientes parámetros: a. El arreglo de caracteres tipo char que se desea enviar por vía puerto serial. No devuelve ningún valor porque hace las modificaciones directamente en los registros. Se utiliza la función de bajo nivel XUartLite_SendByte para escribir directamente en los registros del dispositivo UartLite. Propiamente esta función va leyendo uno a uno los elementos de la cadena de caracteres y los va enviando vía puerto serie a través de la función XUartLite_SendByte, hasta encontrarse con un carácter nulo. *********************************************************************************/ void enviar_cadena(char respuesta[]){ int contador = 0; // Inicializa contador while(respuesta[contador] != '\0'){ // Condición de caracteres no nulos XUartLite_SendByte(XPAR_PUERTO_SERIE_BASEADDR, respuesta[contador]); contador++; } } // Cierre del while // Cierre de la función /********************************************************************************* FUNCION hacer_cadena: Esta función recibe los siguientes parámetros: a. Un entero que contiene el número a convertir en formato cadena de caracteres tipo Xuint8. Devuelve un puntero a la dirección de memoria de la cadena de caracteres cadenatx), a construir(primer elemento de la cadena). Propiamente esta función va desglosando el número de unidades, decenas y centenas, y los va agregando en formato ASCII en la cadenatx, y agregando finalmente un carácter nulo. 183 Nota: en la aplicación de esta función, solo se hacen cadenas de tres dígitos, debido a que esto se ajusta a la necesidad de este código. *********************************************************************************/ Xuint8* hacer_cadena(int numero){ int x,y; y = 1000; for( x = 0; x <= 2; x++){ // Bucle que arma la cadena y = y/10; cadenatx[x] = (numero/y) + 0x30; // Convierte numero -= (cadenatx[x] - 0x30)*y; } // Cierre del for cadenatx[3] = '\0'; // Agrega carácter nulo return cadenatx; } // retorna la cadena hecha // Cierre de la función 13.3 Apéndice C. Presupuesto del proyecto y horas de trabajo invertidas. Descripción Costo en Euros Fabricación de placa de circuito impreso. 1200,00 Materiales y componentes. 600,00 Tarjeta de evaluación de Avnet + Software de desarrollo ISE + EDK. 650,00 Total Proyecto 2450,00 Número de horas aproximadas invertidas en el proyecto: 1000 horas. 184