CAPÍTULO 2. ARQUITECTURA Y COMPONENTES. 2.1. ARQUITECTURA DEL SISTEMA. Vamos a proporcionar en este apartado una visión general de la arquitectura del sistema, para que así el lector pueda obtener una mejor comprensión del proyecto. El microcontrolador actuará como intermediario entre la pantalla LCD y los sensores de temperatura, tratando convenientemente los datos suministrados por los sensores antes de actuar sobre el LCD. Debe también controlar las interrupciones que genere el usuario a través de diversos pulsadores para realizar determinadas funciones en el sistema (memorizar la temperatura, mostrar la temperatura memorizada y configurar el sistema). Es lógico pues que la arquitectura del sistema sea la mostrada en la figura: LCD SENSORES PIC BOTONES Fig 1.-Arquitectura general del sistema Se observa como la comunicación es bidireccional tanto para los sensores como para el LCD, ya que habrá instantes en que el PIC mande datos a dichos periféricos, y otros en los que reciba información de ellos. Los botones en cambio solo mandan señales al microcontrolador, generando las interrupciones pertinentes en cada caso. 11
2.2 ELECCIÓN DE COMPONENTES. Pasemos a continuación a decidir los componentes concretos que usaremos en nuestro sistema, es decir, el microcontrolador, los sensores de temperatura y la pantalla LCD, de forma que cada uno de ellos cumpla con las especificaciones vistas anteriormente. La elección de cada dispositivo será de vital importancia, ya que de ello dependerá que logremos los objetivos que se buscan en el proyecto. Se estudiaron detenidamente las características de una gran cantidad de dispositivos, llegándose finalmente a las elecciones que se detallan a continuación. 2.2.1. Sensores de temperatura. Al tratarse este de un proyecto cuyo objetivo final es el de medir temperaturas es evidente que la elección de los sensores será primordial, no solo en cuanto a la precisión en la medida de las temperaturas, sino a que nos marcará la complejidad del diseño debido a los protocolos de comunicación que use, simplicidad del conexionado, tamaño y consumo. Se decidió usar el sensor digital de temperatura DS18S20 de Dallas Semiconductors, que presenta las siguientes características: - Interfaz de un único hilo, lo que permite usar un único pin para la comunicación, reduciendo así el tamaño y conexionado del circuito. - Capacidad de conectar varios sensores en la misma línea, lo que es especialmente apropiado para aplicaciones de medidas distribuidas de temperaturas como la que tratamos. La posibilidad de conectar varios sensores en el mismo hilo se debe a que poseen un número de serie interno de 64 bits que permite identificar por separado cada sensor, por lo que se puede leer la temperatura de cada sensor independientemente. - No necesita ningún componente adicional para funcionar. - Recibe la alimentación por la misma línea de datos. - Es capaz de medir temperaturas entre -55º y 125º con una precisión de 0.5º. La temperatura es leída como una palabra digital de 9 bits. - Consumo máximo de 1 ma para una tensión de operación de 5V. - Frecuencia para la transmisión de datos entre 8.4 y 16.5 KHz. 12
Como vemos este dispositivo cumple perfectamente con las especificaciones que fijamos previamente. 2.2.2. Pantalla LCD. La pantalla es el elemento más simple de elegir, debido a que no es un componente crítico y a que hay una gran variedad de pantallas disponibles en el mercado que cumplen las especificaciones sin más que pequeñas variaciones en consumo y precio. Se eligió el LCD PC 0802-A de Powertip principalmente por ser la de menor precio y tener un tamaño reducido. Sus características principales se detallan a continuación: - Pantalla reflectante con 2 líneas y 8 caracteres por línea. - Interfaz para el bus de datos configurable a 4 u 8 bits. - Contraste ajustable mediante tensión de control - Microprocesador CMOS integrado para gestionar el control de la pantalla. - Posee 192 caracteres predefinidos diferentes, que se representan en matrices de 5x7 puntos. - Consumo máximo de 1.5 ma para tensión de operación de 5V. 2.2.3. Microcontrolador. Para la elección del microcontrolador no bastará con elegir uno que cumpla las especificaciones sin más, sino que tendremos que observar también que sus características no sean demasiado superiores a las necesarias, ya que eso supondrá un aumento tanto de tamaño como de consumo del microcontrolador al tener más electrónica de la necesitamos. Tendremos 3 parámetros principales para la elección del microcontrolador: La memoria RAM que necesitemos, la memoria EEPROM y la frecuencia de operación. 1. RAM.- Puesto que necesitamos guardar los números de serie de al menos 3 sensores (8 bytes cada uno), junto con sus temperaturas correspondientes y su signo, necesitaremos al menos 30 bytes de memoria, pero como además necesitamos RAM para las distintas variables que use el programa fijaremos el mínimo necesario en 64 bytes. 13
2. EEPROM.- Tendremos que guardar en la EEPROM los números de serie de los sensores y su temperatura al igual que en la RAM, pero además tendremos que guardar las diferentes variables de configuración del sistema para que al encenderlo el circuito se configure convenientemente. Podemos pensar también que en algún momento sea necesario salvar alguna variable del programa. Visto esto fijaremos para la EEPROM una capacidad mayor que la RAM, en concreto 128 bytes. 3. Frecuencia de operación.- La frecuencia de operación del sistema nos la dará el mínimo requisito de tiempo necesario para la comunicación con alguno de los periféricos. En concreto para nuestro sistema el instante más pequeño de tiempo que debemos asegurar viene dado por la lectura de datos de los sensores de temperatura, que posee una ventana de 15 µsg, es decir, 67 KHz. Para poder tener una buena resolución temporal fijaremos nuestra frecuencia mínima de operación en 1 MHz, es decir, 15 veces superior a la frecuencia mínima necesaria. Una vez fijados los valores mínimos necesarios para la RAM, EEPROM y frecuencia de operación se procedió a elegir el microcontrolador. Finalmente se seleccionó el PIC 16F676, que posee las siguientes características: - Cuenta con un oscilador interno de 4 MHz calibrado con un error de ±1%, pudiendo usarse también osciladores externos para fijar la frecuencia de trabajo. - Memoria de programa de 1024 bytes. - 64 bytes de memoria RAM. - 128 bytes de memoria EEPROM. - Convertidor analógico/digital de 10 bits de resolución. - 12 pines digitales configurables individualmente como entrada o como salida. 5 de esos pines pueden configurarse también como entradas analógicas. - 2 temporizadores internos, uno de 8 bits y otro de 16 bits, programables con el uso de prescaler. - Posibilidad de generar pull-ups internamente. - Capacidad de interrupción por cambios en los pines. - Solo 35 instrucciones de ensamblador. 14
- Consumo máximo de 1 ma para alimentación de 5V. Como vemos este microcontrolador cumple con todas las especificaciones exigidas, sin sobrepasar demasiado ninguna de ellas para poder optimizar al máximo el sistema. Nos serán muy ventajosos sus 8 niveles de pila, imprescindibles para la reutilización de rutinas encadenadas mediante instrucciones call, lo que nos permitirá reducir al máximo el tamaño del código de forma que el programa quepa en el Kbyte de memoria del que disponemos. 15