UNIVERSIDAD DON BOSCO FACULTAD DE INGENIERIA ESCUELA DE INGENIERIA ELECTRÓNICA “IMPLEMENTACIÓN DE UN SISTEMA DE MONITOREO INALÁMBRICO DE UNA VARIABLE ANALÓGICA POR MEDIO DE UNA INTERFAZ WEB UTILIZANDO GNU/LINUX, APACHE, PHP Y MYSQL” TRABAJO DE GRADUACION PARA OPTAR AL TITULO DE INGENIERO EN ELECTRÓNICA PRESENTADO POR: DANIEL ALEJANDRO FLORES URBINA RODRIGO EDUARDO BLANCO AVELAR OCTUBRE 2005 SOYAPANGO EL SALVADOR CENTROAMERICA i INDICE Introducción...................................................................................................................1 Objetivos ........................................................................................................................3 Objetivo General.........................................................................................................3 Objetivos Específicos..................................................................................................3 PARTE I...........................................................................................................................4 a. Definición de Variable a Monitorear............................................................................ 4 b. Tecnologías Disponibles para Adquisición y Procesamiento de Datos............................. 4 Detectores de Temperatura Resistivos (RTD).............................................................. 5 Termistores ........................................................................................................... 15 Pares Termoeléctricos............................................................................................. 26 c. Selección de Tecnología para Adquisición de Datos ................................................... 29 d. Tecnologías Disponibles para Transmisión Inalámbrica .............................................. 30 e. Selección de Tecnología de Transmisión Inalámbrica ................................................. 34 f. Selección del Puerto de la PC .................................................................................. 36 g. Lectura de Datos desde el puerto de la Computadora. ............................................... 36 ¿Qué es RS-232? ................................................................................................... 36 Comunicación asíncrona.......................................................................................... 37 Abriendo el Puerto Serial......................................................................................... 39 Opciones de Apertura ............................................................................................. 40 Escribiendo Datos al Puerto..................................................................................... 40 Lectura de Datos desde el Puerto ............................................................................ 41 Cerrando el Puerto Serial ........................................................................................ 41 La interfaz de Terminal POSIX ................................................................................. 42 Opciones de Control ............................................................................................... 42 Configurando la taza de Baud (Baud Rate) ............................................................... 44 Configuración del tamaño del carácter...................................................................... 46 Configurando el chequeo de paridad ........................................................................ 46 Escogiendo una entrada canónica ............................................................................ 47 Escogiendo una entrada ordinaria ........................................................................... 48 Esquema General del Proyecto ................................................................................ 50 PARTE II .......................................................................................................................53 A. Sistema Operativo Mandrake Linux..................................................................53 ii a. Descripción............................................................................................................ 53 b. Consideraciones Previas a la Instalación ................................................................... 54 Configuración del BIOS ........................................................................................... 54 Hardware Soportado............................................................................................... 54 c. Discos y Particiones ................................................................................................ 55 Estructura de una unidad de disco duro.................................................................... 55 Particiones............................................................................................................. 55 Particiones necesarias para Instalar Linux................................................................. 55 d. Instalación y Desinstalación de Programas................................................................ 56 B. Servidor Web Apache........................................................................................61 a. Descripción............................................................................................................ 61 b. Instalación............................................................................................................. 62 Requerimientos del Sistema para Instalar Apache ..................................................... 63 Requerimientos para poner en marcha el Servidor Web Apache ................................ 63 Ubicación de archivos y Directorios de Apache en Mandrake Linux.............................. 64 c. Módulos del Servidor Web Apache ........................................................................... 64 C. MySQL ...............................................................................................................66 a. Descripción............................................................................................................ 66 b. Creación de Bases de Datos .................................................................................... 66 Ver Bases de Datos existentes ................................................................................. 67 Borrar una Base de Datos ....................................................................................... 68 Crear una Base de Datos......................................................................................... 68 Crear una Tabla ..................................................................................................... 68 Insertar Datos en una Base de Datos ....................................................................... 69 Ver Datos Almacenados .......................................................................................... 70 c. Administración de MySQL........................................................................................ 70 D. PHP ...................................................................................................................72 a. Descripción............................................................................................................ 72 b. Estructura del Lenguaje .......................................................................................... 72 Sintaxis y Comandos Básicos ................................................................................... 72 Variables y Operadores ........................................................................................... 74 Operadores Lógicos ................................................................................................ 75 Incrementando y Decrementando una variable Entera............................................... 76 Arreglos................................................................................................................. 76 Estructuras de Control ............................................................................................ 77 iii Estructuras If ..................................................................................................... 77 Uso de la cláusula else con If .............................................................................. 78 Estructura if-elseif-else ....................................................................................... 78 Lazos .................................................................................................................... 79 Lazos while....................................................................................................... 79 Lazos do while ................................................................................................... 80 Lazos for ........................................................................................................... 80 break ................................................................................................................ 81 Anidamiento de lazos.............................................................................................. 81 Formularios e Interacción con el usuario .................................................................. 82 Elementos en un formulario HTML ........................................................................... 85 Listas Desplegables (SELECT).............................................................................. 86 Casillas de Verificación (Check Boxes) .................................................................. 86 Funciones Especiales de PHP................................................................................... 86 isset .................................................................................................................. 86 foreach.............................................................................................................. 87 Die.................................................................................................................... 87 c. Integración de PHP con MySQL ............................................................................... 87 Conectándose a un servidor de Bases de Datos......................................................... 87 Seleccionando una Base de Datos............................................................................ 88 Ejecutando comandos y realizando consultas a la base de datos................................. 89 Determinando el número de Filas encontradas en un Consulta ................................... 89 Accediendo un Resultado ........................................................................................ 90 E. Selección del Lenguaje para generación de Gráficos .......................................90 a. Determinación de Alternativas ................................................................................. 90 Java ...................................................................................................................... 90 Perl ....................................................................................................................... 91 PHP....................................................................................................................... 94 Creación de Imágenes con PHP ........................................................................... 94 Adquiriendo Color............................................................................................... 95 Dibujando Líneas................................................................................................ 96 Rellenos de Imagen............................................................................................ 96 Dibujar Arcos y Circunferencias ........................................................................... 97 Dibujar rectángulos ............................................................................................ 97 Trabajando con Texto......................................................................................... 97 iv b. Selección de Lenguaje a Utilizar............................................................................... 98 PARTE III....................................................................................................................100 a. Instalación y Configuración de Linux Mandrake ........................................................100 b. Instalación del Servidor Apache y Módulos necesarios ..............................................120 c. Arranque y puesta en marcha de Apache ................................................................121 d. Pruebas de Configuración de Apache ......................................................................122 e. Creación y Configuración de Autenticación en el Servidor..........................................123 f. Desarrollo de Interfaz Web.....................................................................................126 g. Instalación del Servidor de Base de Datos MySQL ....................................................140 h. Creación de Base de Datos Temperatura .................................................................141 i. Desarrollo de Scripts para la construcción de Gráficos Dinámicos...............................143 PARTE IV ....................................................................................................................160 a. Implementación del Sistema de Adquisición y Procesamiento de la variable analógica .160 b. Desarrollo del Programa para lectura del puerto.......................................................162 c. Compilación del Código fuente................................................................................166 PARTE V ......................................................................................................................169 Resumen de Costos del Proyecto ................................................................................169 Conclusiones...............................................................................................................170 Recomendaciones.......................................................................................................172 Referencias Bibliográficas ..........................................................................................175 Glosario ......................................................................................................................177 Anexos ........................................................................................................................181 Anexo 1: Transmisor Point Sensor Analog 10V ......................................................181 Anexo 2: Point View Reciever.................................................................................182 Anexo 3: Load Cell Amplifier Montalvo M3200-ce/UR ...........................................183 Anexo 4: Licencia Pública General (GPL) ...............................................................184 Anexo 5: Placa de circuito impreso ........................................................................185 v TABLA DE FIGURAS Figura 1. 1: Símbolo RTD...................................................................................................... 6 Figura 1. 2: Curvas para termómetros de resistencia ............................................................... 7 Figura 1. 3: Sonda termométrica de Platino. ......................................................................... 10 Figura 1. 4: Termómetro de Resistencia de Níquel ................................................................ 10 Figura 1. 5: Resistencia Metálica evaporada sobre una lámina aislante.................................... 12 Figura 1. 6: Método Potenciométrico.................................................................................... 13 Figura 1. 7: Montaje de dos hilos......................................................................................... 14 Figura 1. 8: Montaje de tres hilos ........................................................................................ 14 Figura 1. 9: Montaje a cuatro hilos ...................................................................................... 15 Figura 1. 10: Símbolo PTC y NTC......................................................................................... 16 Figura 1. 11: Curva de Ajuste con cuatro parámetros ............................................................ 18 Figura 1. 13: Diferentes Tipos de NTC.................................................................................. 21 Figura 1. 14: Circuitos de Medición con Termistores .............................................................. 24 Figura 1. 15: Curva Linealizada ........................................................................................... 25 Figura 1. 16: Representación Esquemática de Termopar........................................................ 26 Figura 1. 17: Arreglo de Varios Termopares.......................................................................... 27 Figura 1. 18 Aerocomm Connexlink 900MHZ Industrial .......................................................... 32 Figura 1. 19 Configuraciones para el Connexlink ................................................................... 32 Figura 1. 20 Point Sensor Analog 10V .................................................................................. 33 Figura 1. 21 Point View Receiver ......................................................................................... 34 Figura 1. 22: Conectores DB9 y DB25 .................................................................................. 37 Figura 1. 23: Esquema de Conexiones ................................................................................. 50 Figura 1. 24: Esquema de Proceso....................................................................................... 51 Figura2. 1 Selección de RPMDRAKE ..................................................................................... 57 Figura2. 2: Cuadro de Verificación ....................................................................................... 58 Figura2. 3: Administrador de Paquetes RPM ......................................................................... 58 Figura2. 4: Búsqueda de Paquetes de Software .................................................................... 59 Figura2. 5: Desinstalación de Programas.............................................................................. 60 Figura2. 6: Formulario HTML............................................................................................... 84 Figura2. 7: Formulario con dos campos vacíos ...................................................................... 85 Figura 3. 1 Pantalla de Instalación Inicial ............................................................................101 Figura 3. 2 Selección de Idioma..........................................................................................102 vi Figura 3. 3 Licencia de Distribución.....................................................................................102 Figura 3. 4 Selección de Ratón ...........................................................................................103 Figura 3. 5 Selección de Tipo de Instalación ........................................................................104 Figura 3. 6 Configuración de Teclado ..................................................................................105 Figura 3. 7 Nivel de Seguridad ...........................................................................................106 Figura 3. 8 Particionamiento...............................................................................................107 Figura 3. 9 Formatear Particiones .......................................................................................108 Figura 3. 10 Selección de Paquetes.....................................................................................110 Figura 3. 11 Paquetes Individuales .....................................................................................111 Figura 3. 12 Inicio de Instalación........................................................................................111 Figura 3. 13 Cuenta de Administrador .................................................................................113 Figura 3. 14 Creación de Usuario........................................................................................113 Figura 3. 15 Selección de Escritorio ....................................................................................114 Figura 3. 16 Instalación del cargador de Arranque ...............................................................115 Figura 3. 17 Configuración Final .........................................................................................117 Figura 3. 18 Configuración de la interfaz Gráfica ..................................................................118 Figura 3. 19 Instalación de Actualizaciones..........................................................................119 Figura 3. 20 Fin de Instalación ...........................................................................................120 Figura 3. 21 Página de Inicio..............................................................................................123 Figura 3. 22 Cuadro de Autenticación..................................................................................126 Figura 3. 23: Esquema del Sitio ..........................................................................................127 Figura 3. 24: Página index.html..........................................................................................131 Figura 3. 25: Página dina.html ...........................................................................................133 Figura 3. 26: Página stat.html ............................................................................................134 Figura 3. 27 Diagrama de Flujo para graph.php ..................................................................144 Figura 3. 28: Diagrama de Flujo main.php Parte A ...............................................................148 Figura 3. 29: Diagrama de Flujo Parte main.php Parte B.......................................................149 Figura 3. 30: Diagrama de Flujo main.php parte C ...............................................................150 Figura 3. 31: Diagrama de flujo main.php Parte D................................................................151 Figura 4. 1: Circuito para adquisición de la variable analógica ...............................................160 vii LISTA DE TABLAS Tabla 1. 1: Características generales de los modelos de NTC más frecuentes .......................... 23 Tabla 1. 2 Tabla Comparativa entre los diferentes sensores .................................................. 30 Tabla 1. 3 Tabla Comparativa Transmisores Inalámbricos ...................................................... 35 Tabla 1. 4 Nomenclatura para puerto serial en Linux............................................................. 38 Tabla 1. 5: Miembros de la estructura de TERMIOS............................................................... 42 Tabla 1. 6: Opciones de Control de c_flag ............................................................................ 43 Tabla 1. 7: Constantes para tcsetattr ................................................................................... 45 Tabla 1. 8 Constanstes para el miembro c_lflag .................................................................... 47 Tabla 1. 9: Constantes para el miembro c_iflag .................................................................... 49 Tabla2. 1: Requerimientos para instalar Apache.................................................................... 63 Tabla2. 2 Operadores de Comparación................................................................................. 75 Tabla2. 3: Tipos de Datos manejados por PHP...................................................................... 75 Tabla2. 4: Tabla Dinámica generada con PHP y anidamiento de lazos..................................... 82 Tabla 5. 1: Resumen de Costos del Proyecto .......................................................................169 1 Introducción En el presente el acceso a la información es una necesidad en casi todos los sectores productivos de nuestro país, específicamente en el sector industrial es de vital importancia que pueda conocerse el estado de la maquinaria en todo momento tanto desde la ubicación física como desde cualquier ubicación remota. Desde las pequeñas empresas hasta la gran industria cuentan además con Redes de Área Local (LAN) o Redes de Área Extensa (WAN) por lo que se hace conveniente establecer el monitoreo a través de estas y de forma tal que pueda realizarse desde cualquier estación de trabajo y desde cualquier ubicación, esto sin la necesidad de infraestructura adicional. En una época en la que el uso adecuado de recursos y el establecimiento de planes apropiados de mantenimiento son vitales se presenta este proyecto de graduación como una alternativa de monitoreo para aquella maquinaria y equipo que no posee esta funcionalidad y que se desea mantener actualizada con el resto de maquinaria brindando los conocimientos teóricos técnicos para su efectiva implementación. Veremos que existen diferentes tecnologías disponibles tanto para la adquisición como para la transmisión de la variable analógica hacia el servidor. El proyecto ha sido basado en las alternativas líderes en el mercado del software libre como son Apache, MySQL y PHP, que en el caso del primero es el líder indiscutido en el área de servidores Web, y en el caso de PHP comparte honores con ASP de Microsoft en el área de los lenguajes de Guión. 2 Muestra una forma básica de gráficar en tiempo real el comportamiento de una variable analógica utilizando las alternativas de software antes mencionadas y una sencilla interfase de hardware. Con la implementación se pretende agregar nuevas funcionalidades a equipo o maquinaria que solo pueden ser monitoreadas en sitio. 3 Objetivos Objetivo General • Implementar un sistema de monitoreo inalámbrico de variables analógicas utilizando Software Libre el cual pueda ser accedido de forma remota. Objetivos Específicos • Construir una interfaz Web basada en PHP para la visualización del estado de la variable a monitorear. • Utilizar el servidor Web Apache para que albergue la Página de Monitoreo. • Construir una base de datos con MySQL, que registre los eventos y estado de la variable analógica y la cual pueda ser consultada a través de la interfaz Web. • Utilizar el sistema Operativo Linux como plataforma sobre la cual residirá el servidor de monitoreo. • Transmitir de forma inalámbrica la variable analógica hasta el servidor de monitoreo. • Desarrollar el sistema utilizando únicamente software libre. 4 PARTE I a. Definición de Variable a Monitorear Uno de los objetivos planteados con la implementación de este proyecto es que sea extensible al monitoreo de diferentes variables analógicas y no a una sola, pero para fines prácticos necesitamos definir una variable especifica que nos servirá como variable de prueba. Para tal fin se ha seleccionado la temperatura por tratarse de una variable muy importante, ya que es de gran utilidad en procesos industriales, el clima, etc. Por lo que se hace necesario tener un monitoreo sobre la misma, para esto hay una amplia gama de sensores disponibles en el mercado así como el hardware para la adquisición y procesamiento de información. Pero siempre tomando en consideración que si se desea monitorear otra variable los cambios deben ser mínimos tanto en el hardware como en el software. b. Tecnologías Disponibles para Adquisición y Procesamiento de Datos Para la obtención del valor de la variable analógica, se ha buscado alguna manera que se ajuste a lo que se necesita implementar, ya sea por medio de circuitos u otros dispositivos para llevar acabo el sistema de medición. Lo que se requiere es que en el dispositivo encargado del monitoreo directo o sea el transductor, que estará en contacto directo con la sustancia o material que se desea monitorear brinde cierto voltaje de salida este voltaje entre 0 - 1VDC, ya que este es el voltaje necesario en la entrada de la siguiente etapa del sistema. Para esto se puede hacer uso de transductores activos (termopares) o transductores pasivos (termistores o sensores o monolíticos). Para convertir la temperatura a un cambio de un parámetro eléctrico (corriente o voltaje). Estos transductores pueden estar acoplados a ciertos circuitos para regular su voltaje de salida para que se ajuste al nivel de voltaje que necesitemos en nuestra siguiente etapa. Este voltaje de salida del circuito con el 5 transductor se utilizará para alimentar un amplificador de voltaje, preferiblemente de instrumentación, el cual sería la siguiente etapa en el sistema, este debe ser capaz de manejar la salida del transductor en su entrada y proporcionar una salida estándar para procesos industriales, estas salidas pueden ser de 0 - 10VDC,0 - 5VDC , 0 - 20mA, 4 – 20 mA. También se necesitará que el transmisor a utilizar maneje preferiblemente una entrada para estos estándares. Esto dependiendo siempre de lo que el amplificador de voltaje y/o corriente pueda brindar a la salida. Sí el transmisor no pudiese tener este tipo de entrada, se necesitaría la implementación de otro dispositivo, dependiendo siempre del tipo de entrada del transmisor por ejemplo si el transmisor demandase una entrada digital se tendría la necesidad de un convertidor analógico a digital, después del amplificador para poder brindarle una señal apropiada en la entrada al transmisor. Para la obtención del valor de la variable analógica, se utilizara primero un transductor que nos permitirá convertir un cierto valor de temperatura a un valor de voltaje determinado, para hacer el transductor vamos a mencionar los diferentes modos de poder obtener esta interfaz la cual estará en contacto directo con la sustancia o material que se desee monitorear, así tenemos: Detectores de Temperatura Resistivos (RTD) [1] Los detectores de temperatura basados en la variación de una resistencia eléctrica se suelen designar con sus siglas en inglés RTD (Resistance Temperature Detector). Dado que el material empleado con mayor frecuencia para esta finalidad es el platino, se habla a veces de PRT (Platinum Resistance Thermometer). El símbolo general para estos dispositivos es el de la figura 1.1; la línea recta en diagonal sobre el resistor indica que varía de forma intrínseca lineal, y la anotación junto a dicha línea denota que la variación es debida a la temperatura y tiene coeficiente positivo. 6 Figura 1. 1: Símbolo RTD Un termómetro de resistencia es un instrumento utilizado para medir las temperaturas aprovechando la dependencia de la resistencia eléctrica de métales, aleaciones y semiconductores (termistores) con la temperatura; tal es así que se puede utilizar esta propiedad para establecer el carácter del material como conductor, aislante o semiconductor. El elemento consiste en un arrollamiento de hilo muy fino del conductor adecuado, bobinado entre capas de material aislante y protegido con un revestimiento de vidrio o cerámica. El material que forma el conductor, se caracteriza por el coeficiente de temperatura de resistencia, este se expresa en un cambio de resistencia en ohmios del conductor por grado de temperatura a una temperatura específica. Para casi todos los materiales, el coeficiente de temperatura es positivo, pero para otros muchos el coeficiente es esencialmente constante en grandes posiciones de su gama útil. 7 Figura 1. 2: Curvas para termómetros de resistencia La figura 1.2 muestra las curvas usuales de termómetros de resistencia para alambre de platino, cobre y níquel, en donde Rt = resistencia a la temperatura t y Ro = resistencia a 0°C. La relación entre estos factores, se puede ver en la expresión lineal siguiente: Rt = Ro (1 + α t) (Ecuación 1.1) Donde: Rt es la resistencia en ohmios a t °C Ro es la resistencia en ohmios a 0°C. α es el coeficiente de temperatura de la resistencia. 8 En el caso de una resistencia fabricada con material semiconductor (termistores) la variación con la temperatura es muchísimo más grande, pero tiene el gran inconveniente de ser de tipo exponencial Rt = Ro (1 - α t - β t2 - δ t3...) (Ecuación 1.2) De las expresiones anteriores se deduce claramente que una resistencia metálica aumenta su valor con la temperatura, mientras que en los semiconductores, aumenta su valor al disminuir la temperatura. Las resistencias de tipo metálico son de uso frecuente debido a que suelen ser casi lineales durante un intervalo de temperaturas bastante elevado. El empleo de un conductor para la medida de temperaturas, basándose en el comportamiento descrito anteriormente está sometido a varias limitaciones. En primer lugar, es obvio que no se podrán medir temperaturas próximas ni superiores a la de fusión del conductor. En segundo lugar, para poder medir una temperatura determinada con este método es necesario que el sensor esté precisamente a dicha temperatura. Habrá que evitar, pues, auto calentamientos provocados por el circuito de medida. La capacidad de disipación de calor, para un determinado sensor en un ambiente concreto, viene dada por el coeficiente de disipación, y depende del tipo de fluido y su velocidad, en el caso en que sea posible la evacuación de calor por convección. Otra limitación a considerar es la posible presencia de deformaciones mecánicas, que provocan también un cambio en el valor de la resistencia eléctrica de un conductor. Esta situación puede darse, inadvertidamente, al medir, por ejemplo temperaturas superficiales mediante un elemento adherido a la superficie. Características que deben poseer los materiales que forman el conductor de la resistencia: • Alto coeficiente de temperatura de la resistencia, ya que de este modo el instrumento de medida será muy sensible. 9 • Alta resistividad, ya que cuanto mayor sea la resistencia a una temperatura dada, mayor será la variación por grado; mayor sensibilidad. • Relación lineal resistencia – temperatura. • Rigidez y ductilidad, lo que permite realizar los procesos de fabricación de estirado y arrollamiento del conductor en las bobinas de la sonda a fin de obtener tamaños pequeños (rapidez de respuesta). Materiales usados normalmente en las sondas Platino (Pt) Es el material más adecuado desde el punto de vista de precisión y estabilidad, pero presenta el inconveniente de su coste. En general la sonda de resistencia de Pt utilizada en la industria tiene una resistencia de 100 ohmios a 0ºC por esta razón, y por las ventajosas propiedades físicas del Pt fue elegido este termómetro como patrón para la determinación de temperaturas entre los puntos fijos desde el punto del Oxigeno (-183ºC) hasta el punto de Sb (630.5°C). Con un termómetro de este tipo convenientemente graduado, se pueden hacer medidas con una exactitud de 0.01ºC y cambios de temperatura de 0.001ºC pueden medirse fácilmente. El valor elegido para Ro es del orden de 25.5 ohmios aproximadamente; la resistividad del platino aumenta aproximadamente 0.39% de la resistividad a 0ºC por grado de elevación de temperatura. A 100ºC el valor de Rt será por consiguiente 35.5 ohmios, aumento de 0.1 ohmios por grado. Para medir hasta 0.01 con un error menor que 1% habría que medirse Rt con aproximación de 0.00001 ohmios. El elemento medidor puede ser un puente de Wheatstone o un potenciómetro de precisión. El Platino se emplea mucho en los termómetros de resistencia industriales, en escala de temperatura aproximadamente -50ºC hasta 550ºC. Los arrollamientos están protegidos contra desperfectos por tubos 10 de metal y dispuestos de manera que permiten rápido intercambio de calor en el arrollamiento y el medio en que está colocado el tubo. Figura 1. 3: Sonda termométrica de Platino. Níquel Más barato que el Pt y posee una resistencia más elevada con una mayor variación por grado, el interés de este material lo presenta su sensibilidad; hay una falta de linealidad en su relación R-T. Efectivamente en el intervalo de temperatura de 0 a 100ºC, la resistencia de Níquel aumenta en un 62% mientras que el Pt solo aumenta en un 38%. Sin embargo los problemas relativos a su oxidación u otro tipo de deterioro químico, limitan su utilización e incluso ponen en peligro la reproducibilidad de sus medidas. Otro problema añadido es la variación que experimenta su coeficiente de resistencia según los lotes fabricados. Figura 1. 4: Termómetro de Resistencia de Níquel SOPORTE INTERIOR Y EXTERIOR DE PLATINO ENVOLTURA EXTERNA AISLAMIENTO TERMICO RESISTENCIA DE PLATINO CAPAS AISLANTES HILO DE CONEXION CABLE DE CONDUCTORES CAJA DE METAL ESTUCHE DEL TERMOMETRO ESPACIO DE AIRE CONTACTO TERMICO ENRROLLAMIENTO SOBRE HORMA DE COBRE 11 Los termómetros de resistencia de níquel se usan mucho. Su intervalo de valor de Ro es de 10 a 10000 ohmios; los valores superiores se usan para eliminar el error debido a la variación de resistencia de conductores y contactos; particularmente en los circuitos en los que solo se emplean dos conductores. En este caso el circuito medidor es un puente de Wheatstone equilibrado para una temperatura particular del termómetro. Las variaciones de temperatura desequilibran el puente y la corriente de desequilibrio mide la temperatura. Así el termómetro puede hacerse de lectura directa en el cuadrante de un amperímetro. En instalaciones industriales de precisión en las cuales se consigue el equilibrio del puente por acción manual o por medio de un registrador automático equilibrador, se usan termómetros de tres conductores. Cobre El cobre tiene una variación de resistencia uniforme en el rango de temperatura cercano a la ambiente; es estable y barato, pero tiene el inconveniente de su baja resistividad, ya que hace que las variaciones relativas de resistencia sean menores que las de cualquier otro metal. Por otra parte sus características químicas lo hacen inutilizable por encima de los 180ºC. Tungsteno Tiene una sensibilidad térmica superior a la del platino, por encima de 100ºC y se puede utilizar a temperaturas más altas, incluso con una linealidad superior. Así mismo se puede hacer hilo muy fino, de manera que se obtengan resistencias de valor elevado, pero como consecuencia de sus propiedades mecánicas su estabilidad es muy inferior a la del platino. Las técnicas actuales de fabricación de láminas delgadas por evaporación, serigrafía u otro procedimiento ligado a la microelectrónica permiten depositar en superficies muy pequeñas resistencias de los materiales indicados anteriormente 12 Figura 1. 5: Resistencia Metálica evaporada sobre una lámina aislante Métodos de medida [2] Para la determinación del valor de la resistencia, es de tipo metálico o semiconductor, se pueden utilizar tres tipos diferentes de montaje. El procedimiento más sensible y de mayor precisión es el de tipo potenciométrico que utiliza dos fuentes de alimentación de corriente estabilizada para alimentar las dos ramas del potenciómetro. En serie con la resistencia a determinar se conecta una resistencia de precisión conocida previamente. Este método es el más preciso de los que vamos a describir porque es un método de cero, con lo que la medida realizada elimina los errores que puedan introducir los conductores de conexión al sensor de platino, pero para ello es necesario que esta resistencia tenga conectado cuatro hilos, dos para la corriente y dos para la lectura de tensión. 13 Figura 1. 6: Método Potenciométrico El segundo procedimiento para realizar esta medida, y también el que iría en segundo lugar en cuanto a precisión, sería el método de medida de resistencias con el puente de Wheatstone, utilizando resistencias de dos, tres o cuatro hilos. Montaje de dos hilos La sonda de resistencia se conecta a uno de los brazos del puente. Es el montaje más sencillo, pero presenta el inconveniente de que la resistencia de los hilos a y b de conexión de la sonda al puente varía cuando cambia la temperatura y esta variación falsea por los tanto la indicación de temperatura; aunque estos hilos sean de baja resistencia y esta sea conocida, las longitudes que puede haber en entre la sonda y el panel donde esté el instrumento receptor, añaden una gran resistencia al brazo de la sonda al tener una longitud considerable. 14 Figura 1. 7: Montaje de dos hilos Montaje de tres hilos Es el más utilizado en la práctica. En este circuito la sonda está conectada mediante tres hilos al puente. De este modo, la medida no es afectada por la longitud de los conductores ni por la temperatura ya que esta influye a la vez en dos brazos adyacentes del puente, siendo la única condición que la resistencia de los hilos a y b sea exactamente la misma. Figura 1. 8: Montaje de tres hilos Montaje de cuatro hilos Se utiliza para obtener la mayor precisión posible en la medida como es el caso de calibración de patrones de resistencia en laboratorio. Se basa en efectuar dos mediciones de la resistencia de la sonda combinando las conexiones de modo tal que la sonda pase de un brazo del puente al 15 adyacente. De este modo se compensan las resistencias desiguales de los hilos de conexión. Figura 1. 9: Montaje a cuatro hilos Finalmente, el procedimiento que más se utiliza, aunque su precisión dependa total y exclusivamente del aparato de medida, es la medida de la diferencia de potencial entre los extremos del sensor alimentado por una fuente de corriente constante. Este corresponde al método de las cuatro puntas de determinación de resistencias. Muchos multímetros vienen preparados para la determinación de resistencias por este método o por el de dos puntas únicamente. También cabe indicar que hay numerosos multímetros que tienen incorporado en su sistema de medida de resistencias la posibilidad de que ésta se corresponda con un termómetro de platino, y por tanto, visualiza directamente los valores de la temperatura en la escala elegida. Termistores[1] Otro tipo de termómetros de resistencia son los termistores (palabra procedente del inglés thermistor, contracción de "thermally sensitive resistor"), formados por sustancias semiconductoras cuya conductividad eléctrica varía con la temperatura según una función del tipo: B TR Ae ⎛ ⎞ ⎜ ⎟ ⎝ ⎠= (Ecuación 1.3) 16 siendo R la resistencia del termistor a la temperatura T, y A y B dos constantes cuyos valores típicos son del orden de 0.05Ω y 800ΩK, respectivamente. Termistores NTC, PTC y Termómetros de Resistencia de Silicio Modelos Son resistores variables con la temperatura, pero no están basados en conductores como las RTD, sino en semiconductores. Si su coeficiente de temperatura es negativo se les llama NTC (Negative Temperature Coefficient), mientras que si es positivo, se denominan PTC. Los símbolos respectivos son los de la figura donde el trazo horizontal en el extremo de la línea inclinada indica que se trata de una variación no lineal. Figura 1. 10: Símbolo PTC y NTC La principal característica de este tipo de resistencias es que tienen una sensibilidad del orden de diez veces mayor que las metálicas y aumenta su resistencia al disminuir la temperatura. Su fundamento esta en la dependencia de la resistencia de los semiconductores con la temperatura, debida a la variación con ésta del numero de portadores reduciéndose la resistencia, y de ahí que presenten coeficiente de temperatura negativo. Esta dependencia varía con la presencia de impurezas, y si el dopado es muy intenso, el semiconductor adquiere propiedades metálicas con coeficiente de temperatura positivo (PTC) en un margen de temperaturas limitado. Para las NTC, en un margen de temperaturas reducido (5O ºC), la dependencia se puede considerar de tipo exponencial de la forma: 17 1 1[ ]T ToB RT Roe ⎛ ⎞ ⎜ ⎟ ⎝ ⎠ − = (Ecuación 1.4) Donde: Ro es la resistencia a 25ºC u otra temperatura de referencia, y To es dicha temperatura expresada en Kelvin. El parámetro B es la denominada temperatura característica del material, y tiene valores de 2OOO K a 5OOOK, pero varía con la temperatura, aumentando al aumentar esta. Si por analogía con las RTD se define un coeficiente de temperatura equivalente o sensibilidad relativa. TdR dT RT α ⎛ ⎞ ⎜ ⎟ ⎝ ⎠= (Ecuación 1.5) En ese caso se obtiene a partir de está ecuación, 2 B T α −= (Ecuación 1.6) Que obviamente no es constante, y por lo tanto expresa la no linealidad del comportamiento. A 25 ºC y con B = 4000K resulta α = -4.5 % / K, que es más de 1O veces superior a α el Pt. El valor de B se puede encontrar midiendo la resistencia del termistor a dos temperaturas conocidas T1 y T2. Si la resistencia respectiva es R1 y R2 tendremos: 1 2 1 ln 1 1 2 R RB T T ⎡ ⎤ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ = − (Ecuación 1.7) El valor de B se suele expresar como B T1/T2. Por ejemplo B 25/85°. Para un termistor típico, en el margen de 0 a 50ºC el error cometido al emplear un 18 modelo de dos parámetros es del orden de + 0.3ºC. Con tres parámetros se logran errores de + 0.01ºC en un margen de 100ºC. El modelo viene descrito en este caso mediante la ecuación empírica de Steinhart y Hart. 3/ /A B T C T tR e ⎛ ⎞ ⎜ ⎟ ⎝ ⎠ + + = (Ecuación 1.8) Con cuatro parámetros se logra un mejor ajuste entre la curva real de evolución de RT y la ecuación teórica. En este caso, se determinan los parámetros midiendo RT a cuatro temperaturas distintas conocidas. Para algunas aplicaciones de los termistores, interesan no tanto sus características resistencia-temperatura sino más bien la relación entre la tensión en los bornes del termistor y la corriente través de él. Figura 1. 11: Curva de Ajuste con cuatro parámetros Para corrientes bajas, la tensión en bornes del termistor es prácticamente proporcional a la corriente porque el autocalentamiento del termistor es muy pequeño. Cuando aumenta la corriente, el termistor sufre un autocalentamiento apreciable (punto A de la curva) y alcanza una temperatura por encima de la del ambiente, reduciéndose su resistencia, 19 y por lo tanto, la caída de tensión a su través. La potencia disponible en el circuito determina el punto en el que se alcanza el régimen estacionario. El punto E, corresponde a la corriente máxima no peligrosa. Al aumentar la temperatura ambiente, la curva se desplaza hacia abajo. En la zona de autocalentamiento el termistor es sensible a cualquier efecto que altera el ritmo de disipación de calor. Esto permite aplicarla a las medidas de caudal, conductividad calorífica. Si la velocidad de extracción de calor es fija, el termistor es sensible a la potencia eléctrica de entrada y entonces se puede aplicar al control de nivel de tensión o de potencia. Para las PTC hay dos tipos de comportamiento según la composición y el dopado. Las de tipo cerámico presentan un cambio brusco de resistencia cuando se alcanza la temperatura de Currie de la forma indicada en la figura 1.12. Se denominan a veces "positores". Su coeficiente de temperatura es positivo sólo en un margen concreto de temperaturas; fuera de él es negativo o casi nulo. La temperatura de conmutación especificada, Ts, corresponde a aquella a la que la PTC tiene una resistencia doble del Figura 1. 12: Características Resistencia Temperatura para un posistor (a) y un silistor (b) 20 valor mínimo. Las PTC basadas en Silicio dopado presentan una variación más suave con la temperatura. A veces se comercializan ya linealizadas, con denominaciones tales como tempsistores o silistores. Este tipo de resistencia, aunque corresponde a un semiconductor, se diferencia de los termistores por las siguientes características: aumenta su resistencia con la temperatura; su variación térmica es menor, lo que permite una linealización mejor utilizando una resistencia de compensación. Debido a que la técnica de fabricación del silicio es extraordinariamente precisa, la tolerancia de la producción es excelente. El intervalo de temperaturas de utilización es, por el contrario, reducido: se extiende desde -50°C a 120°C. Estas resistencias suelen ser de tipo N, fabricadas por técnicas planas por difusión de impurezas en una lámina de silicio monocristalino. Sus características eléctricas y térmicas dependen de su fabricación y en particular de las impurezas. En la figura 1.12 (b) se representaba la curva característica de un silistor. Las limitaciones que cabe considerar en el empleo de los modelos anteriores al aplicar los termistores a la medida de temperatura u otras magnitudes, son similares a las expuestas para las RTD. Aquí hay también un límite impuesto por la temperatura de fusión, y hay que evitar el autocalentamiento si no lo requiere la aplicación pretendida. Mención particular merecen aquí la estabilidad del termistor con el tiempo y el medio. La primera se logra sometiéndolos a un envejecimiento artificial. La segunda se consigue recubriendo el termistor con vidrio si el medio donde va a trabajar le afecta. La intercambiabilidad es otro parámetro a considerar, pues sólo está garantizada para modelos especiales. Por ello, al sustituir un termistor en un circuito suele ser necesario reajustarlo, aunque se trate de una unidad del mismo modelo. Por su alta sensibilidad permiten obtener alta resolución en la medida de temperatura. Dada su alta resistividad, pueden tener masa muy pequeña, lo que les confiere una velocidad de respuesta rápida y permite emplear 21 hilos largos para su conexión, aunque éstos vayan a estar sometidos a cambios de temperatura, porque ellos tienen mayor resistencia y coeficiente de temperatura. El costo es muy bajo. Tipos y Aplicaciones Las NTC se fabrican a base de mezclar y sinterizar óxidos dopados de metales como el níquel, cobalto, manganeso, hierro y cobre. El proceso se realiza en una atmósfera controlada dándoles la forma y tamaño deseados. La proporción de óxidos determina la resistencia y el coeficiente de temperatura. Figura 1. 13: Diferentes Tipos de NTC La principal característica de este tipo de resistencias es que tienen una sensibilidad del orden de 10 veces mayor que las metálicas y aumentan su resistencia al disminuir la temperatura. Estos semiconductores están 22 constituidos por óxidos metálicos, tales como Mg O, Mg Al O, Mn O, Fe O, Co O, Ni O, Zn Ti O. Los termistores se fabrican por sinterización del semiconductor en polvo, lo que permite preparar resistencias del valor más adecuado y de tamaño reducido, del orden de milímetros. Este procedimiento de preparación, junto a sus características eléctricas, hace de los termistores elementos que pueden realizar la medida de temperaturas en una región muy reducida, casi puntual, y además debido a que su calor específico es pequeño, ofrecen una velocidad de respuesta muy elevada. La estabilidad de un termistor depende de su preparación y de las condiciones de utilización. El rango de utilización de los termistores se extiende hasta temperaturas cercanas a la del helio líquido pero sólo puede subir hasta unos 300°C. Hay que tener en cuenta que la temperatura de licuación de estos materiales es bastante baja en comparación con los metales. Como contrapartida, resulta necesario calibrar cada uno de los termistores, pues no son intercambiables los valores de uno a otro elemento. En general tienen una tolerancia del 10 % de su valor nominal. Para altas temperaturas (> 1000 °C) se emplean óxidos de Itrio y circonio. Las PTC de conmutación están basadas en titanato de bario al que se añade titanato de plomo o de circonio para determinar la temperatura de conmutación. Hay modelos entre -100°C y 350°C. Las PTC de medida están basadas en silicio dopado. Las formas en que se presentan las NTC son múltiples, y cada una de ellas está orientada a un grupo concreto de aplicaciones. Las de "gota", "escama" y "perla" se prefieren para aplicaciones de medida de temperatura, mientras que las de "disco", "arandela" y "varilla" son aptas para la compensación y control de temperatura y para aplicaciones con autocalentamiento. En la tabla 1.1 se muestran algunas propiedades de las NTC: 23 Parámetro Rango Margen de temperatura. Resistencia a 25°C. -100°C a 450°C (no en un mismo modelo) 0.5Ω a 100 M Ω (±5% o ±10%). 1k Ω a 10M Ω es lo habitual. B Temperatura máxima 2000 K a 5500 K > 125°C 300°C habitual en régimen permanente 600°C habitual en régimen intermitente. Coeficiente de disipación, ζ 1 mW/K en aire en reposo 8mW/K en aceite Constante de tiempo térmica 1 ms a 22 s Potencia disipable 1mW a 1 W. Tabla 1. 1: Características generales de los modelos de NTC más frecuentes Las aplicaciones de los termistores se pueden dividir entre las que están basadas en un calentamiento externo del termistor, y las que se basan en calentarlo mediante el propio circuito de medida. Están entre estas última las medidas de caudal, nivel y vacío y el análisis de la composición de gases, todos ellos son casos en que varía la conductividad térmica del medio alrededor del termistor, y también el control automático de volumen y potencia, la creación de retardos de tiempo y la supresión de transitorios. El circuito de la figura 1.14(a) es indicado para medir una temperatura en un margen reducido, por ejemplo la del agua en automóviles. Consiste en una batería, una resistencia de ajuste en serie, un termistor y un microamperímetro. La corriente a través del circuito varía de forma no lineal con la temperatura debido a la variación de la resistencia del termistor, pero la escala del microamperímetro se puede graduar según convenga. La (b) es una aplicación de compensación térmica. Se trata de 24 compensar la sensibilidad no deseada de un galvanómetro de hilo de cobre a la temperatura. Como la variación de resistencia del cobre tiene coeficiente positivo, al añadir en serie un resistor con variación negativa puede hacerse que el conjunto presente coeficiente de temperatura casi nulo. Un control dependiendo de la temperatura se basa en el circuito de la figura 1.14(c). Cuando la temperatura ambiente supera un cierto valor, se reduce la resistencia de la NTC con lo que aumenta la corriente y se acciona el relé. El flujo de un líquido se puede medir con el circuito de la figura 1.14(d). Un calefactor inmerso en el líquido libera calor que es transportado por el líquido que fluye, de manera que se crea una diferencia de temperatura entre el líquido, aguas arriba y aguas abajo del calefactor, Esta diferencia de temperaturas depende de forma no lineal, de la velocidad del líquido, y se puede medir con dos termistores. Figura 1. 14: Circuitos de Medición con Termistores 25 Pueden emplearse las NTC para otras muchas aplicaciones. Aunque Rp sigue sin ser lineal, su variación con la temperatura es menor que antes, por serlo, el factor que multiplica a d(Rp) / dt. El coeficiente de temperatura equivalente o sensibilidad es: 2 1 1 TP dRp BdT RR T R = − + (Ecuación 1.9) Resulta, pues, que se ha perdido sensibilidad a costa de la linealidad ganada. En la siguiente figura se ha representado gráficamente el resultado para el caso Ro = 25 kilo ohmios, B = 4000 K, R = 18500 ohmios. Figura 1. 15: Curva Linealizada Otro método analítico para linealizar el sistema consiste en forzar un punto de inflexión en la curva resistencia - temperatura que esté justo en el centro del margen de medida (Tc). Esa condición se cumple cuando R tiene un valor dado por 2 2TC B TCR R B TC −= + (Ecuación 1.10) 26 La elección de uno u otro método depende de la aplicación. En este último caso se obtiene más linealidad en el centro del margen de medida, empeorando hacia los extremos, mientras que el otro método da una mayor linealidad en las proximidades de cada punto de ajuste. Pares Termoeléctricos Introducción, principio físico [1] Las mediciones de temperatura que utilizan termopares se basan en el descubrimiento hecho por Seebeck en 1821 de que una corriente fluye en un circuito continuo de dos alambres metálicos diferentes, si las conexiones o uniones, se encuentran a temperaturas distintas. El termopar se representa esquemáticamente como: Figura 1. 16: Representación Esquemática de Termopar A y B son los dos metales, y T1 y T2 son las temperaturas de las uniones. Si T1 es la unión más fría y la corriente termoeléctrica influye en la dirección señalada en la figura 1.16, el metal A se designa por costumbre como el punto termoelectricamente positivo en relación con el metal B. En circuitos eléctricos la corriente depende de la fuerza electromotriz desarrollada y la resistencia del circuito. Para lograr mediciones de temperatura exactas, el instrumento de medición se construye de tal modo que se mida una fem sin corriente para eliminar los efectos de resistencia del circuito. Como se señala en la figura 1.16(b), la fem térmica es una medida de la diferencia de temperatura entre T2 y T1. En los sistemas de control, la unión o conexión de referencia (unión fría) se 27 localiza casi siempre en el dispositivo de medición de la fem. La unión de referencia se puede mantener a una temperatura constante, por ejemplo, lo que se tiene en un baño de hielo o en un horno con termostato, o bien, se puede sostener a temperatura ambiente, pero con una compensación eléctrica, de tal manera que parezca conservarse a una temperatura constante. También se pueden utilizar combinaciones en serie de varios termopares idénticos para proporcionar una señal de medición de temperatura mayor, o para promediar la temperatura en varios puntos. Figura 1. 17: Arreglo de Varios Termopares Las uniones frías deben encontrarse a la misma temperatura, en caso contrario también será necesario promediarlas. La gran ventaja de los termopares es que la determinación de la temperatura se realiza prácticamente en un punto, donde se haya colocado una de las uniones. También habría que considerar que la capacidad calorífica de un termopar puede ser muy pequeña, con lo que la respuesta a las variaciones de temperatura sería muy rápida. Como ventaja importante habría que señalar finalmente que la salida del sensor es una señal 28 eléctrica producida por el mismo termopar y por tanto no es necesario alimentarlo con ninguna corriente exterior, eliminando el error correspondiente al calentamiento inherente al efecto Joule. Como inconveniente habría que decir que es necesario mantener la unión de referencia a una temperatura constante y conocida pues la incertidumbre en la temperatura de referencia produce una del mismo orden en la medida. Materiales usados Las siguientes combinaciones de materiales son las comúnmente usadas para los pares termoeléctricos: Platino: soldado a una aleación de 90 de platino y 107.9 de radio. Se puede emplear a temperaturas altas hasta 1600°C y es conveniente para uso continuo a temperaturas desde 0°C hasta 1550°C. Este par termoeléctrico fue adoptado por la conferencia General de Pesos y Medidas en 1927 como medio para la definición de la escala internacional de temperaturas, desde la temperatura de fusión del antimonio hasta la temperatura de fusión del oro (630.5°C - 1063°C.). Tiene una fuerza termoeléctrica de unos 10 microvoltios por grado C y es sumamente estable y reproducible cuando se usa debidamente. No debe exponerse nunca a atmósferas reductoras a temperaturas superiores a 500°C., porque se deteriora como resultado de la absorción de gases y del depósito de metales reducidos procedentes de los óxidos del tubo protector y de los aisladores de cerámica. Cobre y constantán de Adam: (aleación de 57% de cobre y 43 % de Níquel, aproximadamente, con porcentajes fraccionases de manganeso y de hierro) Este par es utilizable a temperaturas desde -250 hasta 300°C, y por períodos cortos hasta 400°C. Desde -200 hasta -100°C., la fuerza termoeléctrica es aproximadamente de 20 microvoltios por grado C., y desde 200 hasta 300°C es de unos 55 microvoltios por grado C. El termoeléctrico de cobre-constantán es muy usado en las medidas de 29 laboratorio a bajas temperaturas. No sirve a temperaturas superiores a 300°C a causa de la oxidación del cobre. Cromel (90% de níquel y 10% de cromo) y Alumel (94% de níquel, 3% de manganeso, 2% de altimínio y 1% de silicio). Hierro y constantán: Utilizable entre -190 y 870°C. El intervalo de temperaturas en que es utilizable un termopar está limitado en la zona de bajas temperaturas por la disminución de su poder termoeléctrico y en las altas temperaturas por la posibilidad de que se funda alguno de los conductores que lo constituyen. c. Selección de Tecnología para Adquisición de Datos Por las opciones antes descritas, y examinando características y circuitos de aplicación, se utilizará como transductor un termistor en un montaje de dos hilos ya que por propósitos prácticos no se le dará una longitud considerable a los conectores del termistor al puente de Wheatstone así que se espera no tener una variación debido a resistencias parasitas por la longitud de los conectores, como en apartados anteriores se explico. El arreglo será de un puente de Wheatstone en el cual una de las ramas será el termistor y una de las otras será una resistencia con un potenciómetro para poder controlar nuestro voltaje en la salida del arreglo hacia el amplificador de instrumentación, en este caso se trata de un amplificador de voltaje ya que el trasmisor que se eligió para llevar acabo el proyecto demanda una entrada de voltaje de 0–10VDC, el amplificador de voltaje a utilizar será el Load Cell Amplifier M3200-ce/UR marca Montalvo [ANEXO 3], este es un amplificador de instrumentación el cual puede manejar una entrada de ±250mV proporcionándonos una salida de proceso ya sea de 0 – 10VDC, 4 – 20mA o 0 – 20mA, en nuestro caso se seleccionara la de 0 – 10VDC por razones mencionadas anteriormente. El amplificador de instrumentación necesita una alimentación de 115V/230V 30 AC la cual se suministra fácilmente, este amplificador posee una fuente de ±2.5VDC la cual se utilizara para alimentar el transductor en el arreglo del puente de Wheatstone. En la tabla 1.2 se observa una comparación entre los diferentes sensores para la adquisición de la temperatura. Característica RTD Termistores Termopares Linealidad Muy alta Baja Alta Requiere Amplificación Sí, compleja Sí, no critica Sí, critica Variedad Limitada Amplia Regular Costo Muy Alto Bajo Medio Disponibilidad en el mercado Baja Alta Sensibilidad al ruido No Media Alta Hardware Necesario Complejo Sencillo Sencillo pero critico Tabla 1. 2 Tabla Comparativa entre los diferentes sensores d. Tecnologías Disponibles para Transmisión Inalámbrica Las tecnologías que encontramos disponibles para la transmisión inalámbrica de la variable analógica (temperatura), con las características necesarias para llevar acabo nuestro monitoreo, entre estas en el transmisor tenga una entrada estandarizada en la industria ya sea de 0 - 10VDC, 0 – 20mA o 4 – 20mA, un convertidor análogo a digital de por lo menos 8 bits, resistencia a ambientes industriales, fácil de transportar. En el receptor salida de puerto serial DB-9 para conectarlo a la PC, así como transmisión entre receptor y PC Standard RS-232, compacto y practico. El alcance que pudieran tener el par transmisor - receptor no es primordial, ya que al funcionar a una corta distancia, para que funcione a una distancia mayor entre uno y otro lo único que se necesitaría fuera un par transmisor – receptor con las mismas características pero con mas potencia de transmisión, además al aumentar la distancia de transmisión 31 entre estos, el precio es directamente proporcional a la distancia, así que para nuestros fines se decidió buscar uno a nuestro alcance monetario, pero con las características primordiales. Se encontró un dispositivo llamado Connexlink [3](ver figura 1.18) de la empresa Aerocomm, el cual provee una conexión RS232 por medio de puerto serial DB-9 entre el dispositivo y una PC también hay una conexión inalámbrica entre cada dispositivo Connexlink por medio de RF a una frecuencia de banda libre ya sea de 2.4 GHz o 900 MHz dependiendo de las necesidades, a una velocidad de hasta 115.2 Kbps, cada unidad Connexlink puede ser programada como cliente o servidor, y permite la creación de una red inalámbrica entre ambos (punto a punto), además nos da la opción de tener múltiples clientes y un solo servidor (punto a multipunto) entre dispositivos (Figura 1.19). Cada unidad Connexlink posee una dirección MAC única para identificarse entre si, la transmisión de RF se da por un handshake y después un comando de protocolo con acuse de recibo y detección de errores para asegurar la transmisión de los datos, cada unidad es pequeña, portátil y robusta, indicada para ambientes industriales hostiles, se hace notar que se necesita una fuente de voltaje de alimentación para cada dispositivo. Para llevar acabo la obtención del dato por parte del cliente y transmitirlo al servidor, se tiene que hacer uso de un dispositivo extra el cual tiene que llevar la señal que le entregue un convertidor análogo a digital el cual será alimentado por la señal del amplificador de voltaje o corriente que a su vez esta ligado al transductor ya sea termopar o termistor con puente de Wheatstone, a una señal la cual el dispositivo Connexlink pueda transmitir, para esto se necesitara un adaptador llamado Null MODEM el cual puede hacer esta tarea. Esta es una de las alternativas con la cual se podría implementar la parte del sistema para la obtención y transmisión de la variable analógica hasta el servidor. 32 Figura 1. 18 Aerocomm Connexlink 900MHZ Industrial Figura 1. 19 Configuraciones para el Connexlink Otra posibilidad para implementar dicha parte del sistema es por medio de un par transmisor – receptor de la marca Point Six [4]. El trasmisor inalámbrico Point Sensor Analog 10V (Figura 1.20) [Anexo 1], su fuente de alimentación es una batería de 3.6V, y posee un convertidor de análogo a digital de 12 bits de resolución, el cual lee la señal analógica de su entrada de 0 – 10VDC, esta entrada será la que se tomara de la salida del amplificador de voltaje o corriente (en este caso tendría que ser de voltaje de 0 – 10VDC), la cual a su vez está ligada a la salida del transductor con puente de Wheatstone. Tiene un ID único que lo identifica, al comunicarse con el receptor transmite la señal modulada a una frecuencia de 418MHz enviando su ID y el valor analógico leído por el ADC combinado con una verificación de error CRC-16 en un pequeño paquete de datos proporcionando un tiempo de encendido de solamente unos 15 33 milisegundos por cada transmisión, con una tasa de transmisión de 10 a 17 segundos aleatoriamente resultando en un bajo consumo de energía y larga vida de batería. Es de diseño compacto y antena interna. Figura 1. 20 Point Sensor Analog 10V El receptor de RF Point View de 418MHz (figura 1.21) [Anexo 2] está diseñado para recibir y decodificar paquetes de datos de el transmisor Point Sensor, este receptor los decodifica y los traduce a secuencias ASCII que son enviados por el puerto serial RS232 a 19,200 baudios. No necesita ningún handshake o comando de protocolo para realizar la recepción de datos, todos los paquetes de datos son transmitidos serialmente a medida se van recibiendo. La mayoría de puertos RS232 proveen la potencia suficiente para operar el receptor, aunque se provee una entrada de fuente externa para puertos que no puedan suministrar la corriente necesaria. Ambos, transmisor y receptor tienen un exterior robusto en contra de humedad y condensación así como de otros agentes corrosivos, siendo ideal para aplicaciones industriales hostiles. 34 Figura 1. 21 Point View Receiver e. Selección de Tecnología de Transmisión Inalámbrica Después de revisar y analizar las diferentes tecnologías presentadas anteriormente, el par transmisor receptor a utilizar será el Point Sensor Analog 10V y el Point View RF Receiver respectivamente. El transmisor presenta la ventaja de tener una entrada analógica de 0 – 10VDC, cumpliendo con el estándar industrial para amplificadores de instrumentación con este tipo de salida. Y habiendo elegido como se planteo en la selección de tecnología de adquisición de datos un amplificador de instrumentación con esas características, estos se acoplaran de excelente forma. Además al tener entrada analógica pueden conectarse a él salidas provenientes de otros dispositivos que midan otro tipo de variable analógica y no solo de uno que mida temperatura. El receptor brinda la facilidad de tener una salida para comunicarse directamente con la computadora por medio de un puerto serie RS232 y un conector DB-9 como se explicó anteriormente, además de poder monitorear múltiples transmisores, brindando la facilidad de poder extender el sistema en un futuro para monitorear diferentes variables simultáneamente en una misma máquina ó en máquinas diferentes. 35 En la tabla 1.3 se muestran las caracteristicas más importantes de los dos transmisores. Características Connexlink Point Sensor Analog Entrada Digital Analógica de 0 a 10V Alcance 600 Pies Configuraciones Posibles Punto a Punto Punto a Multipunto Punto a Punto Punto a Multipunto Identificación Dirección MAC ID de Sensor único Velocidad de Transmisión 115200 Buadios 19200 Baudios Frecuencia 900 MHZ, 2.4 GHZ 418 Mhz Requiere Handshake Si No Conector a PC DB9 DB9 Fuente de Alimentación Externa Interna Tamaño Compacto Compacto Ambiente Hostil Hostil Tabla 1. 3 Tabla Comparativa Transmisores Inalámbricos 36 f. Selección del Puerto de la PC La selección del puerto desde donde se leerán los datos provenientes del transmisor está sujeta al tipo de receptor a utilizar y la forma en que este interactúa con el servidor. El puerto a utilizar será el puerto serial RS232 por medio de un conector DB-9, ya que es el puerto por el cual envía los datos recibidos hacia el servidor el Point View RF Receiver. g. Lectura de Datos desde el puerto de la Computadora. ¿Qué es RS-232? [5] RS-232 es un estándar de interfaz eléctrica para comunicación serial definida por la Asociación de Industrias Electrónicas (EIA). RS-232 actualmente viene en 3 diferentes modalidades (A, B y C) cada una define un rango de voltaje diferente para los niveles de encendido y apagado. La variedad mas comúnmente usada es RS-232C, la cual define un bit de marca (encendido) como un voltaje entre los -3V y los -12V y un bit de espacio (apagado) como un voltaje entre +3V y +12V. Las especificaciones del RS-232C dicen que esas señales pueden viajar hasta 8 mts. (25 ft.) Antes de volverse inestables. Usualmente se pueden mandar señales un poco mas lejos que esta especificación mientras la tasa de transferencia sea lo suficientemente baja. Existen además básicamente dos tipos de conectores, el DB9 como el encontrado en las PC y el DB25 como el encontrado en los MODEM, ambos se muestran en la figura 1.22. 37 Figura 1. 22: Conectores DB9 y DB25 Para conectar tanto la PC con el receptor Point Six Viewer se utilizará un conector de tipo DB9. Comunicación asíncrona [5] Para que la computadora entienda los datos seriales que le están llegando, necesita determinar de alguna manera donde termina un carácter y donde comienza el siguiente. En modo asíncrono la línea de datos serial permanece en el estado de marca (1) hasta que un carácter es transmitido. Un bit de comienzo precede cada carácter y es seguido inmediatamente por cada bit en el carácter, un bit opcional de paridad, y uno o más bits de paro. El bit de inicio es siempre un espacio (0) y le dice a la computadora que nuevos datos seriales están disponibles. Los datos pueden ser enviados en cualquier momento, de ahí su nombre de asíncrono. El bit de paridad opcional es la simple suma de los bits de datos indicando si este contiene o no un numero par de bits 1. Con paridad par, el bit de paridad es 0 si hay un número par de unos en el carácter. Con paridad impar, el bit de paridad es 0 si hay un número impar de unos en el dato. También se escuchan los términos paridad de espacio o 38 paridad de marca y sin paridad. Paridad de espacio significa que el bit de paridad es siempre 0, mientras que paridad de marca el bit de paridad es siempre 1. Sin paridad significa que ningún bit de paridad es transmitido o esta presente. Los bits restantes son llamados bits de paro. Puede haber 1, 1.5 o 2 bits de paro entre caracteres y siempre tienen el valor de 1. Los bits de paro tradicionalmente fueron usados para darle a la computadora tiempo para procesar la información del carácter anterior, pero ahora solamente sirven para sincronizar la computadora que recibe los datos con los caracteres que llegan. Formatos de datos asíncronos son expresados usualmente como “8N1”, “7E1” y así sucesivamente. Esto significa “8 bits de datos, sin paridad, 1 bit de paro” y “7 bits de datos, paridad par, 1 bit de paro” respectivamente. Accesando puertos seriales [5] Como con todos los dispositivos, Linux provee acceso a puertos seriales por medio de archivos de dispositivos. Para acceder al puerto serial simplemente se abre el archivo de dispositivo correspondiente. Archivos de Puerto Serial [5] Cada puerto serial en un sistema UNIX tiene uno o mas archivos de dispositivo (archivos en el directorio /dev) asociados con él. Sistema Puerto 1 Puerto 2 IRIX /dev/ttyf1 /dev/ttyf2 HP-UX /dev/tty1p0 /dev/tty2p0 Solaris/SunOS /dev/ttya /dev/ttyb Linux /dev/ttyS0 /dev/ttyS1 Digital Unix /dev/tty01 /dev/tty02 Tabla 1. 4 Nomenclatura para puerto serial en Linux 39 Abriendo el Puerto Serial [5] Ya que en GNU/Linux el puerto serial es un archivo, la función Owen() es usada para accesarlo. La única desventaja con GNU/Linux es que el archivo de dispositivo muchas veces no puede ser accesado por usuarios normales. Para poder hacerlo hay que cambiar los permisos de acceso, corriendo el programa como root, o haciendo el programa con la instrucción set-userid para que corra como el dueño del archivo del dispositivo, lo cual no es muy recomendado por obvias razones de seguridad. Por ahora se asume que el archivo es accesible por todos los usuarios. El código para abrir el puerto serial 1 en una PC corriendo GNU/Linux es mostrado a continuación: #include /*Definición de Standard de Entrada/Salida */ #include /*Definición de funciones de String */ #include /*Definiciones de funciones Standard de UNIX */ #inclide /* Definición de Control de Archivos */ #include /* Definición de Números de Error */ #include /*Definiciones de Control de Terminal POSIX */ /* * ‘open _port() ‘ – Abre el Puerto Serial 1. * Regresa el descriptor del archivo si tuvo excito o -1 si hubo error. */ Int open_port (void) { int fd; /* Descriptor del archivo para el Puerto */ fd = open (“/dev/ttyS0”, O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { 40 /* * No se pudo abrir el puerto. */ perror (“open_port: Unable to open /dev/ttyS0 – “); } else fcntl (fd, F_SETFL, 0); return (fd) ; } Opciones de Apertura [5] Se observa que cuando se abre el archivo de dispositivo, se ocupan otras 2 banderas además del modo de lectura+escritura: fd = open (“/dev/ttyS0”, O_RDWR | O_NOCTTY | O_NDELAY); La bandera O_NOCTTY le dice a Linux que este programa no quiere ser el “controlador de Terminal” para el puerto. Si no se especifica esto entonces cualquier entrada (como la señal de abortar del teclado y demás) afectaran su proceso. Programas como getty usan esta función cuando se comienza el proceso de identificación; pero normalmente un programa de usuario no quiere tener este comportamiento. La bandera O_NDELAY le dice a UNIX que este a este programa no le importa el estado en el que este la señal DCD – Ya sea si el otro extremo del puerto este arriba y corriendo. Si no se especifica esta bandera, su proceso será puesto a dormir hasta que la señal de línea DCD este en un voltaje de espacio (1). Escribiendo Datos al Puerto [5] Para enviar o escribir datos al puerto solo se ocupa el llamado del sistema write(): n = write (fd, “ATZ\r”, 4); 41 if (n < 0 ) fputs (“write () of 4 bytes failed! \n”, stdeer); La función de escritura write retorna el numero de bytes enviados o -1 si un error ocurre. Usualmente el único error con el que se encuentra el usuario es EIO cuando un MODEM o enlace de datos bota la línea del detector de portadora de datos (DCD – Data Carrier Detect). Esta condición persistirá hasta que se cierre el puerto. Lectura de Datos desde el Puerto [5] Leer datos desde un puerto puede ser un poco confuso. Cuando se opera el dato en modo de datos no depurado, cada llamado de sistema read(2) retorna el número de caracteres que están disponibles actualmente en el buffer de entrada serial. Si no hay caracteres disponibles, el llamado se bloqueara (esperara) hasta que lleguen caracteres, un temporizador de intervalo expire, o un error ocurra. La función de lectura read puede hacerse retornar inmediatamente haciendo lo siguiente: fcntl (fd, F_SETFL, 0); La opción FNDELAY provoca que la función de lectura retorne 0 si no hay un carácter disponible en el puerto. Para restaurar el comportamiento normal (bloqueo), se llama a fcntl() sin la opción FNDELAY: fcntl (fd, F_SETFL, 0); Esto también se usa después de abrir el puerto serial con la opción O_NDELAY. Cerrando el Puerto Serial [5] Para cerrar el puerto serial, solo se usa el llamado de sistema close: Close (fd); Al cerrar el puerto serial usualmente se desactiva la señal DTR la que causa que la mayoría de MODEMs cuelgue el llamado. 42 La interfaz de Terminal POSIX [5] La mayoría de sistemas soportan la Interfaz de Terminal (serial) POSIX para cambiar parámetros como la taza de baudios, la medida de los caracteres, y demás. Lo primero que hay que hacer es incluir el archivo ; esto define tanto la estructura del control de Terminal como las funciones de control de POSIX. Las dos funciones de POSIX más importantes son tcgetattr() y tcsetattr(). Estos atributos de Terminal get obtener y set configurar, respectivamente; se tiene que proveer un puntero a la estructura termios que contiene todo las opciones de puerto serial disponibles. Miembro Descripción c_cflag Control de opciones c_lflag Opciones de línea c_iflag Opciones de entrada c_oflag Opciones de salida c_cc Control de caracteres c_ispeed Entrada de baudios (nueva interface) c_ospeed Salida de baudios (nueva interface) Tabla 1. 5: Miembros de la estructura de TERMIOS Opciones de Control El miembro c_cflag controla la taza de baudios, numero de bits de datos, paridad, bits de paro, y control de flujo de hardware. Hay constantes para todas las configuraciones soportadas. En la tabla 1.4 se muestran algunas constantes para el miembro c_cflag. 43 Constante Descripción CBAUD Mascara de bit para baud rate. B0 0 baud (DTR abajo). B50 50 Baud. B75 75 Baud. B110 110 Baud. B134 134.5 Baud. B150 150 Baud. B200 200 Baud. B300 300 Baud. B600 600 Baud. B1200 1,200 Baud. B2400 2,400 Baud. B4800 4,800 Baud. B9600 9,600 Baud. B19200 19,200 Baud. B38400 38,400 Baud. B57600 57,600 Baud. B115200 115,200 Baud. EXTA Reloj de taza externo (External rate clock). EXTB Reloj de taza externo (External rate Clock). CSIZE Mascara de bit para bits de datos. CS6 6 bits de datos. CS7 7 bits de datos. CS8 8 bits de datos. CSTOPB 2 bits de paro (1 de no ser asi). CREAD Habilitar receptor. PARENB Habilitar bit de paridad. PARODD Usar paridad impar envez de par. HUPCL Colgar (botar DTR) en el último cierre. CLOCAL Línea local – No cambiar “propetiario” de puerto. LOBLK Bloquear salida de control de trabajo. CNEW_RTSCTS CRTSCTS Habilita control de flujo por hardware (no es soportado por todas las plataformas). Tabla 1. 6: Opciones de Control de c_flag 44 El miembro c_cflag contiene dos opciones que siempre deberían estar habilitadas, CLOCAL y CREAD. Esto asegurara que el programa no se vuelva el propietario del puerto sujeto a trabajos esporádicos de control y señales de colgar, y además que el controlador de interfaz serial leerá los bytes de datos entrantes. Las constantes de baud rate (CBAUD, B9600, etc.) son usadas en interfaces viejas que carecen de los miembros c_ispeed y c_ospeed. Nunca se inicializa la bandera c_cflag (o cualquier otra bandera) directamente; siempre se debe de utilizar los operadores de bit AND, OR, y NOT para habilitar o deshabilitar bits en la bandera. Configurando la taza de Baud (Baud Rate) [5] El Baud Rate es almacenado en varios lugares dependiendo del sistema operativo. Interfaces antiguas guardan el baud rate en el miembro c_cflag usando una de las constantes de baud rate en la tabla anterior, mientras que nuevas implementaciones proveen los miembros c_ispeed y c_ospeed que contienen el valor de baud rate actual. Las funciones cfsetospeed y cfsetispeed sirven para configurar el baud rate en la estructura del termios sin importar la interfaz de sistema operativo que se este usando. Usualmente se usa el código siguiente para la configuración del baud rate. struct termios options; /* * Obtiene las opciones actuales del puerto */ tcgetattr (fd, &options); /* *configura el baud rate a 19,200 */ cfsetispeed (&options, B19200); cfsetospeed (&options, B19200); /* 45 *Habilita el receptor y activa el modo local */ Options.c_cflag |= (CLOCAL | CREAD); /* *configura las nuevas opciones para el puerto */ tcsetattr (fd, TCSANOW, &options); La función tcgetattr llena la estructura que se provee del termios con la configuración actual del puerto serial. Después de configurar el baud rate y habilitar el modo local y la recepción serial de datos, se selecciona la nueva configuración utilizando tcsetattr. La constante TCSANOW especifica que todos los cambios ocurran inmediatamente sin esperar que los datos de salida terminen de enviarse o datos de entrada terminen de recibirse. Hay otras constantes para que las entradas o salidas terminen de vaciar el buffer de entrada y salida. La mayoría de sistemas no soporta diferentes velocidades de entrada y salida, así que hay que asegurarse de configurar ambos valores iguales para máxima compatibilidad. Constante Descripción TCANOW Hacer cambios de inmediato sin esperar que se completen los datos. TCSADRAIN Esperar hasta que todo haya sido transmitido. TCSAFLUSH Drenar buffers de entrada y salida y hacer los cambios. Tabla 1. 7: Constantes para tcsetattr 46 Configuración del tamaño del carácter [5] A diferencia del baud rate, no hay función de conveniencia para configurar el tamaño del carácter. En vez de esto, se debe hacer un enmascaramiento de bits. El tamaño del carácter esta especificado en bits: options.c_cflag &= ~CSIZE; /* Enmascara el tamaño del carácter de bits */ options.c_cflag | =CS8; /*Selecciona 8 bits de datos */ Configurando el chequeo de paridad [5] Así como el tamaño de carácter se debe configurar manualmente, también se hace lo mismo con la habilitación de paridad y el tipo de bits de paridad. Los dispositivos seriales de GNU/Linux soportan generación de bit de paridad par, impar y sin paridad. Sin paridad (8N1): options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; Paridad par (7E1): options.c_cflag |= PARENB; options.c_cflag &= ~PARODD; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS7; Paridad impar (7O1): options.c_cflag |= PARENB; options.c_cflag |= PARODD; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; 47 options.c_cflag |= CS7; Opciones Locales Los modos locales del miembro c_lflag controlan como se manejan los caracteres de entrada por el controlador serial. En general se configura el miembro c_lflag para una entrada de datos canónica o corriente. Constante Descripción ISIG Habilita las señales SIGINTR, SIGSUSP, SIGDSUSP, y SIGQUIT. ICANON Habilita la entrada canónica (o corriente). XCASE Habilita mayúsculas/minúsculas (obsoleto). ECHO Habilita el eco en los caracteres de entrada. ECHOE Borra el eco en un carácter como BS-SP-BS. ECHOK Después de eliminar el carácter le da eco NL. ECHONL Eco NL. NOFLSH Deshabilita el drenaje del buffer de entrada después de interrumpir o quitar caracteres. IEXTEN Habilita las funciones extendidas. ECHOCTL Eco a caracteres de control como ^ y borra como ~? ECHOPRT Da eco al caracter borrado como caracter borrado. ECHOKE La línea entera BS-PS-BS en eliminación de línea. FLUSHO Salidas siendo drenadas. PENDIN Reescribe entrada pendiente en la siguiente lectura o caracter de entrada. TOSTOP Envía a SIGTTOU para salida de fondo. Tabla 1. 8 Constanstes para el miembro c_lflag Escogiendo una entrada canónica [5] La entrada canónica es orientada a línea. Los caracteres de entrada son puestos en un buffer el cual puede ser editado interactivamente por el 48 usuario hasta que los caracteres CR (retorno de acarreo, carriage return) o LF (alimentación de línea, line feed) son recibidos. Cuando se selecciona este modo de entrada, normalmente se seleccionan las opciones ICANON, ECHO y ECHOE: options.c_lflag |= (ICANON | ECHO | ECHOE); Escogiendo una entrada ordinaria [5] Una entrada ordinaria no es procesada. Los caracteres de entrada pasan exactamente como son recibidos. Generalmente se quita la selección de las opciones ICANON, ECHO y ISIG cuando se usa una entrada ordinaria. Options.clflag &= ~(ICANON | ECHO | ECHOE | ISIG); Nunca se debe habilitar el eco de entrada (ECHO, ECHOE) cuando se mandan comandos a un MODEM u otra computadora que también este haciendo uso del eco en caracteres, ya que se generara un lazo de retroalimentación entre las dos interfaces seriales. Opciones de entrada Los modos de entrada del miembro c_iflag controlan cualquier proceso de entrada que es hecho a caracteres recibidos en el puerto. Como el campo c_cflag, el último valor guardado en c_iflag es la instrucción OR de la opción deseada. En la tabla 1.8 se muestran las opciones del miembro c_iflag. Constante Descripción INPCK Chequeo de paridad habilitado. IGNPAR Ignorar errores de paridad. PARMRK Marcar errores de paridad. ISTRIP Monitorear bits de paridad. IXON Habilitar control de flujo por software (salida). IXOFF Habilitar control de flujo por software (entrada). 49 Constante Descripción IXANY Permitir a cualquier carácter comenzar el flujo de nuevo. IGNBRK Ignorar condición de quiebre BRKINT Enviar una SIGINT cuando una condición de quiebre es detectada. INLCR Mapear NL a CR. IGNCR Ignorar CR. ICRNL Mapear CR a NL. IUCLR Mapear mayúsculas a minúsculas. IMAXBEL Eco BEL si la línea de entrada es demasiado larga. Tabla 1. 9: Constantes para el miembro c_iflag Configurando las opciones de entrada de paridad. Se debería tener habilitado el chequeo de paridad en la entrada cuando se tiene habilitada la paridad en el miembro c_cflag (PARENB). Las constantes relevantes para el chequeo de paridad en la entrada son INPCK, IGNPAR, PARMRK y ISTRIP. Generalmente se selecciona INPCK y ISTRIP para habilitar el chequeo y monitoreo del bit de paridad. options .c_iflag |= (INPCK | ISTRIP); IGNPAR es una opción un poco peligrosa que le dice al controlador serial que ignore los errores de paridad y pase los datos recibidos como si no hubieran ocurrido errores. Esto puede ser útil para examinar la calidad de un vínculo de comunicación, pero en general no se utiliza para razones prácticas. PARMRK hace que los errores de paridad se marquen en el flujo de entrada usando caracteres especiales. Si IGNPAR esta habilitado, un carácter NULL (000 octal) es enviado al programa antes de cualquier carácter con un error de paridad. De no ser así un carácter DEL (177 octal) y NULL son enviados con el carácter malo. 50 Esquema General del Proyecto El esquema general del proyecto se presenta en la figura 1.23 y 1.24 Figura 1. 23: Esquema de Conexiones 51 Figura 1. 24: Esquema de Proceso En las figuras anteriores observamos como el sensor permanentemente toma valores de temperatura y los convierte en una señal eléctrica a través de un puente de Wheatstone. Como el valor obtenido es demasiado pequeño este debe amplificarse por medio del amplificador de instrumentación Montalvo, para que la señal sea adecuada para la entrada del transmisor inalámbrico, éste transmite en el formato que se muestra en el Anexo 2 hacia el receptor Point View. Por otra parte, en el servidor un programa escrito en C leerá continuamente el puerto serial ttyS0. Este está configurado para leer una entrada canónica o sea que debe esperar por un o para indicar que ya terminó la secuencia. Además debe estar configurarse para leer a 19200 Baudios y la transmisión será asíncrona. En el mismo Anexo 2 podemos ver que hay un número de serie único para el transmisor, es de está forma que en caso de tener más de un transmisor el receptor diferencia cual de todos es el que ha transmitido. También en la secuencia esta incluído el campo de datos en formato 52 ASCII, que es el que nos interesa, éste debe ajustarse para obtener el valor de temperatura deseado. El programa en C++ además se encargará de insertar el dato leído y ajustado en la tabla llamada Temperatura de la Base de Datos temperatura. En el lado del servidor, tendremos Linux Mandrake como sistema operativo, sobre este estarán los servidores Apache y MySQL que albergarán las páginas Web y la base de datos respectivamente. Cuando un cliente solicita ver el gráfico dinámico, un script escrito en PHP leerá los datos almacenados en la base de datos y generará un gráfico que será enviado al navegador como HTML, por lo que este no debe tener instalado ningún plugin adicional para poder visualizarlo. Este gráfico se refrescará cada cierto tiempo, el cual debe ser lo suficientemente grande para permitir que el transmisor envíe el siguiente dato y sea guardado en la base de datos. En la segunda parte del documento se discutirá el trasfondo teórico necesario para cada uno de los componentes de software que involucra el proyecto para que en la PARTE III nos centremos específicamente en el desarrollo de los scripts y la instalación del software necesario. 53 PARTE II A. Sistema Operativo Mandrake Linux a. Descripción Mandrake Linux es una distribución GNU/Linux soportada por Mandrake Soft S.A. MandrakeSoft que nació en Internet en 1998 con el objetivo principal de proporcionar un sistema GNU/Linux amigable y fácil de usar. Los pilares para el desarrollo de esta distribución son el código abierto y el trabajo colaborativo. Originalmente, Mandrake Linux se basó en Linux Red Hat [6] (que ha sido el líder en el sector Linux casi desde su aparición [7]), siguiendo su misma jerarquía del sistema de archivos con ciertas modificaciones que lo hacían ligeramente más amigable y con herramientas de configuración básicas. Con el tiempo y a medida que se fue haciendo más popular entre la comunidad de usuarios se convirtió en una distribución totalmente independiente con un grupo de desarrolladores dedicados por completo a su continuo mejoramiento, más el aporte de la comunidad a través de Internet. En este momento se ha convertido en el principal sistema Operativo tipo Linux de escritorio, en gran medida por la filosofía de MandrakeSoft, de llevar Linux a cualquier usuario desde el gurú, hasta el que recién ingresa al mundo de las computadoras; siendo muy estable y robusto con una gran cantidad de herramientas de configuración para los diferentes servicios. Pero además está presente en el mundo de los servidores, siendo el sistema operativo utilizado en Francia en las instituciones de gobierno [8]. Como otras distribuciones GNU/Linux Mandrake Linux también se pueden descargar desde Internet [9], esta versión es gratuita y cualquiera la puede descargar y copiar sin restricción alguna. Incluye el software necesario para convertir una PC en una poderosa estación de trabajo y/o convertirla en servidor Web, de Correo, FTP entre otros. La única diferencia con los 54 productos comerciales de MandrakeSoft es que no incluye software comercial. Para el desarrollo de este proyecto se utilizará la versión gratuita. b. Consideraciones Previas a la Instalación Configuración del BIOS El BIOS (Basic Input/Output System, Sistema Básico de Entrada/Salida) es utilizado para poder arrancar una computadora, es la forma más primitiva de interacción con el hardware, pero necesaria para inicializarlo. Para acceder a éste generalmente se logra presionando la tecla Supr pero depende del BIOS que posea por lo que se debe buscar la opción apropiada para cada caso. Una vez que se ha ingresado se busca la opción Boot Sequence (Secuencia de Arranque) y se configura el CDROM como el primer dispositivo de arranque. Una vez hecho esto se guardan los cambios, generalmente presionando la tecla F10. Esto permitirá ejecutar la instalación de Linux desde el CDROM. Hardware Soportado Mandrake Linux puede manejar una gran cantidad de dispositivos de hardware. Es siempre recomendable tener un detalle del hardware que se posee para evitar problemas durante la instalación y confirmar que es soportado por Mandrake Linux confirmando en el sitio Web Por lo general no existe ningún problema con el hardware salvo que sea demasiado antiguo pero siempre es una buena práctica revisar si está soportado [10]. 55 c. Discos y Particiones Estructura de una unidad de disco duro [11] Básicamente el disco está dividido en pequeños sectores, una secuencia de sectores forman una partición. Se pueden crear tantas particiones como se desee, cada una de las cuales es reconocido como un disco duro individual por el sistema operativo. Una unidad de disco duro es una secuencia de sectores. Un sector es la unidad de datos más pequeña en un disco duro. Particiones El uso de particiones múltiples permite crear muchas unidades de discos virtuales dentro del disco físico real. Esto tiene muchas ventajas: • Los diferentes sistemas operativos usan sistemas de archivos diferentes (formato), al tener múltiples particiones se hace posible instalar varios sistemas operativos como Windows y GNU/Linux. • Permite mantener separados datos personales del sistema operativo incluso si utilizan el mismo sistema de archivos, así que si se desea actualizar o reinstalar el sistema operativo no se ponen en riesgo los datos personales. • Los errores físicos en el disco generalmente se ubican en sectores adyacentes y no están distribuidos por todo el disco. Al distribuir los archivos en las diferentes particiones se limitarán las pérdidas de datos en caso de daños físicos al disco. Particiones necesarias para Instalar Linux [12] Para poder llevar a cabo la instalación de Linux son necesarias al menos dos particiones y suficiente espacio si es que se piensa instalar como servidor. Realmente se pueden crear varias particiones pero al menos una para el árbol de archivos o directorio raíz y otra partición especial de intercambio de memoria del tipo Swap, ésta es utilizada por el sistema de archivos 56 como memoria virtual y se recomienda que sea el doble de la memoria física instalada. d. Instalación y Desinstalación de Programas [12] Lo que hace la diferencia entre el software libre y el software propietario es el acceso al código fuente del software libre. Esto significa que los programas se distribuyen como paquetes de archivos fuente. Esto se convierte en un problema para los principiantes porque tienen que compilar ellos mismos el software para poder utilizarlo. Aunque existe versiones precompiladas del software libre más popular siempre depende del sistema operativo que se este utilizando. Afortunadamente existen varios administradores de paquetes que contienen la información necesaria para poder instalar el software con mínima intervención del usuario. El paquete de software se encarga de suministrarle la información necesaria al administrador de paquetes y este se encarga de verificar las dependencias de otros paquetes, verificación de firmas por motivos de seguridad, la ubicación donde se colocaran los archivos y todo lo referente a la instalación.