Anda di halaman 1dari 11

Microcontroladores: Termmetro I2C

El circuito integrado STCN75 posee un sensor de temperatura de tecnologa CMOS de alta precisin, e incorpora en su interior un convertidor que transforma la temperatura leda en una informacin digital compatible con el estndar I2C. Con una resolucin de 0,5C y una exactitud de +/- 2C, en el rango de 25 a 100C, se convierte en un interesante dispositivo a ensayar. De la mano de Protn+, retomemos los proyectos prcticos con microcontroladores. Anmate, entra y descubre lo sencillo que es construir un instrumento de suma utilidad en cualquier mbito.

A partir de un simple reloj que permite controlar y medir el tiempo, el hombre siempre se ha interesado por cuantificar las magnitudes de los fenmenos climticos que lo rodean: medir la temperatura, la humedad, la radiacin UV, la presin atmosfrica y todo aquello que tenga que ver con mediciones bsicas que, combinadas de forma apropiada entre s, dan el sustento informativo a la meteorologa. El objetivo propuesto El diseo que hoy te presentamos consta de un termmetro digital capaz de ser conectado a travs de una sencilla lnea bifilar (como puede ser un par telefnico) a distancias superiores a un kilmetro. Dicho diseo te permite supervisar temperaturas remotas y activar sistemas calefactores o refrigerantes en funcin de la conveniencia, sin la necesidad de presencia fsica en el lugar y a travs de una aplicacin en el ordenador.

Partes que componen el proyecto El sensor elegido Los medidores de temperatura ms elementales se basan en sistemas que utilizan resistencias especiales que

varan con la temperatura (NTC o PTC). Tambin es comn el uso de diodos discretos y adecuadamente polarizados que aprovechan la linealidad de alguna de sus propiedades para transformar una circulacin de corriente en una referencia de temperatura a la que es expuesto el encapsulado de dicho diodo. Avanzando un poco ms en la complejidad de los sensores empleados en la medicin, nos encontramos con los clsicos y altamente utilizados LM35 y LM335 que proveen a los microcontroladores de tensiones analgicas equivalentes a la temperatura que se est analizando. Todos los sistemas mencionados hasta aqu poseen un problema que suele ser muy difcil de controlar: la estabilidad y precisin de la tensin de alimentacin a los mencionados circuitos analgicos. Cualquier variacin en el suministro energtico puede significar errores de varios grados en la lectura del instrumento, o puede devolver en la presentacin de la informacin drsticas variaciones que impiden una lectura apropiada de la magnitud que se quiere obtener.

Esquema de conexiones del STCN75 Para aliviarte de todos los problemas que causaran el diseo y la construccin de complejos sistemas estabilizados y compensados, hemos decidido ayudarte a construir el termmetro de esta nota con un circuito integrado puramente digital. De esta forma, se evitan circuitos analgicos que puedan inducir errores en la medicin. A travs de la conexin SDA y SCL de un bus I2C hacia el microcontrolador, y al entregar la informacin til en una palabra de 16 bits (es decir, de manera digital), este sencillo dispositivo te resuelve los problemas de ruidos, las variaciones de alimentacin, y te permite manejar programaciones ms complejas con slo ajustar apropiadamente los registros internos del STCN75.

Diagrama en bloques del STCN75 La configuracin de cada uno de estos registros te permitir utilizar el circuito integrado como un termostato comn. Adems, podrs programar alarmas de temperatura y pasar a modo de bajo consumo cuando no se requiera de su utilizacin. Tambin podrs programar una ventana de temperaturas de utilizacin en la que, por debajo de la mnima o por encima de la mxima programada, se active la salida OS/INT energizando una alarma o sistema de aviso. En el datasheet del STCN75 se explica de manera clara la programacin de cada registro para obtener el funcionamiento que deseas. No dejes de leerlo para entender claramente lo que aqu est desarrollado. En el instante de inicializacin o power-up del dispositivo, las condiciones del dispositivo te permiten leer la temperatura sin necesidad de escribir previamente ningn registro, situacin que facilita de manera enorme la programacin del microcontrolador a utilizar. Slo debes leer la direccin nmero cero de los registros, que es donde se almacena la palabra de 16 bits que equivale a la temperatura, y luego debes presentarla en el display LCD que decidas agregar al microcontrolador. Es decir, al dar la instruccin de leer el bus I2C, apuntars a la direccin 0 de los registros del sensor para leer la informacin all almacenada. Una y otra vez, el sistema continuar leyendo cclicamente la temperatura del mbito donde est instalado el STCN75. En cuanto a las dimensiones y al package, puedes apreciar que el encapsulado SO8 es una buena opcin para aplicaciones en placas pequeas. T sabessoldar SMD, ya lo hemos aprendido tambin aqu.

Comparativa de dimensiones y vista del IC listo para ser soldado en la placa El Microcontrolador El dispositivo seleccionado es el PIC 16F628A del que ya se ha hablado bastante en la revista. Aqu encontrars un entrenador, y hasta un quemador (nombre popular con el que se conoce a un hardware programador), para poder continuar las prcticas con l cuando decidas avanzar hacia otros desarrollos. Particularmente en mi caso utilizo un GTP-USB+ (me ha funcionado siempre de maravillas) pero t podrs utilizar sin inconvenientes el dispositivo mencionado anteriormente para dar tus primeros pasos en este apasionante mundo. El circuito inicial En el circuito se observa (en la parte ms destacada) la conexin del 16F628A al LCD. Luego puedes encontrar ms abajo el rel que utilizars para programar un encendido y apagado de algn sistema de calefaccin (o refrigeracin). Tambin ubicars la conexin del sensor de temperatura y la aplicacin de resistores pull-up a ambas seales del bus I2C. Y arriba del microcontrolador, encontrars el cristal externo de 20Mhz que brindar la referencia de clock al sistema. Podramos haber utilizado cmodamente el oscilador interno que posee el 16F628A, que es de 4Mhz, pero como en futuras ediciones queremos que utilices este mismo circuito en una conexin RS485 a 34800 bps, necesitars para ello un cristal de alta frecuencia. Por otra parte, el software que utilices para realizar el programa que har funcionar al PIC slo admite, en su versin gratuita, cristales de 4 o 20 Mhz.

Diagrama esquemtico del circuito inicial A la izquierda, ingresando por el pin 4, puedes ver el arreglo de componentes que permite obtener el RESET del microcontrolador, al inicializar su conexin. All puedes agregar, si deseas, un pulsador a GND (desde el pin 4) para permitir un reset sin necesidad de desconexin del sistema. Luego, a la izquierda, encontrars el conector ICSP (In CircuitSerial Programer), a travs de cual puedes programar el microcontrolador PIC una y otra vez sin necesidad de retirarlo de la placa donde lo hayas instalado, prctica que te recomendamos para ahorrar tiempo y la integridad fsica de los microcontroladores y zcalos que utilices en tus diseos. Estos ltimos se deterioran muy fcilmente al colocar y quitar reiteradamente el IC. Por ltimo se encuentra la fuente de 5 Volts, que tambin has aprendido a construir gracias a la revista. Notars que el transformador es de 2 X 7,5 Volts para asegurar un funcionamiento del regulador 7805 en baja temperatura. Recuerda que elbacklight del LCD se conecta a los 5 Volts de alimentacin, al igual que un LED, pero en este caso lo hace a travs de una resistencia de 47 Ohms (no figura en el circuito). El firmware dentro del microcontrolador PIC Rara vez se encontrarn dos personas que opinen lo mismo acerca de cul es el mejor software para realizar el programa que correr dentro del microcontrolador PIC. Muchos dirn MPLAB, otros se inclinarn por el C, y otros optarn por el BASIC. Los tres son correctos. Mientras el programa deseado y cargado dentro del microcontrolador PIC cumpla la misin imaginada por el desarrollador, da lo mismo que haya sido escrito en cualquier programa. Funciona y posee todas las prestaciones imaginadas: eso es lo que verdaderamente vale.

Pantalla de instalacin de Protn+ Lite El programa que utilizaremos es el Protn+ en su versin LITE, el cual posee ciertas limitaciones de uso en su versin de demostracin, que t puedes ver en el sitio de descarga del mismo. Queremos contarte que estamos trabajando duro para conseguir la versin completa del programa y poder comenzar cuanto antes a desarrollar trabajos conconectividad USB que posean interfaces al ordenador donde podamos desplegar instrumental, dataloggers, y todo lo que tenga que ver con la interaccin entre el diseo y el ordenador. Afortunadamente, para este proyecto inicial, nuestro programa (firmware) alcanzar y no tendr problemas de ser compilado y preparado para ser introducido en el microcontrolador PIC. Podremos crear sin inconvenientes el archivo .HEX que se requiere gracias a Protn+ LITE. Pero si aspiramos a lograr conectividad USB (nuestro objetivo) necesitaremos obligatoriamente la versin completa del programa. Ustedes qu opinan? Cmo se arma un programa para cargar dentro del PIC? Protn+ posee una facilidad de uso admirable para todo el que se inicia y comienza a transitar el mundo de los microcontroladores. Pero como todo lenguaje de programacin, requiere de un armado estructurado en la secuencia de las lneas del programa para que pueda ser interpretado y compilado correctamente. Lo primero que debers determinar dentro del listado del programa es el dispositivo a utilizar y la frecuencia del cristal que usar tu diseo.

Encabezado y eleccin del microcontrolador a utilizar Observa que todo lo que se inicie con un apstrofo ser considerado por el programa como un comentario y no ser tenido en cuenta al momento de compilar el archivo, ni al contabilizar las lneas permitidas por la versin LITE de Protn+. Es decir, a pesar de haber llegado a la lnea 11, el programa slo contabilizar dos lneas. Una vez elegido el modelo permitido del microcontrolador y el valor de frecuencia del cristal (20 Mhz), puedes seguir plantendole al programa los parmetros de definicin de los perifricos que vas a utilizar en torno al microcontrolador. Luego viene la configuracin del registro que maneja los comparadores internos mediante el nombre CMCON; se le adjudica a ste el valor que indica el datasheet para su desconexin. En la siguiente lnea, debes aclarar que trabajars en modo totalmente digital ALL_DIGITAL = TRUE. Inmediatamente despus definirs la conexin del LCD donde DTPIN te indica a qu pin del microcontrolador ir conectado el Terminal DT del LCD, y lo mismo para los terminales RS yEN. Por ltimo, en la definicin del LCD encontrars la lnea que indica que usars la conexin de 4 bits (INTERFACE), la cantidad de renglones que utilizar el LCD (LINES) y el tipo de display a utilizar, adjudicando un 0 para alfanumricos y un 1 para grficos.

Declaraciones iniciales dentro del firmware El prximo paso es indicarle al microcontrolador los pines que utilizars como SDA y SCL (las lneas que forman el bus I2C). Inmediatamente despus adjudicars a la etiqueta (label) LEER el valor que deber llamar al STCN75. El nmero cargado en esta etiqueta le indicar que es a l a quien el microcontrolador

est llamando dentro del bus. Esto se realiza de esta manera ya que pueden existir otros dispositivos I2C conectados al mismo bus. Recordemos que este protocolo admite muchos dispositivos conectados en paralelo, que pueden comunicarse con el microcontrolador cuando ste lo desee. En el caso del STCN75, la direccin viene dada por el numero binario %10010001. Dicho de otro modo, el microcontrolador le dir al dispositivo seleccionado a ti te estoy llamando. Esta accin de cargar la direccin en la etiqueta LEER la realiza la instruccin SYMBOL. Por ltimo, y antes de empezar a definir el trabajo del microcontrolador, le indicars al sistema los nombres y los tamaos de las variables donde el firmware ir cargando sus datos en la medida en que los necesite, solicite y utilice. Por supuesto que todo esto est explicado en el HELP del programa. Un ejemplo es la variable WORD que puede desdoblarse en dos variables BYTE (LOW y HIGH), a las que reasignaremos nuevos nombres para su manipulacin dentro del firmware. Es comn dar un pequeo retardo (DELAYMS) de 100 milisegundos para estabilizar el funcionamiento del sistema; luego debes iniciar el trabajo con la pantalla limpia (CLS). El paso siguiente ser cargar con valores especficos algunas variables para asegurar un inicio vlido y no al azar. El bucle principal del firmware Aqu dentro se desarrolla la accin: el trabajo de interaccin entre el microcontrolador y el mundo exterior, en este caso, a travs del sensor de temperatura y el rel RL1.

Lazo principal del programa En la etiqueta INICIO comienza el lazo principal del programa que te permitir leer la temperatura ambiente. Segn los datos que hayas programado de mnima y mxima, hars actuar o desactivars el rel RL 1 que, en este caso en particular, conecta un sistema de calefaccin. El primer paso es abrir el bus mediante la instruccin BSTART. Luego, mediante la instruccin BUSIN, debes iniciar la comunicacin con el dispositivo I2C que se encuentre en la direccin LEER (que en este caso es el sensor de temperatura) y debes indicarle que lo que exista en el registro 0 lo cargue dentro de la variable B, mediante la instruccin BUSIN LEER, 0, [B]. Una vez que esto sucedi, el microcontrolador cerrar el contacto I2C con la instruccin BSTOP. Ms atrs en el texto, cuando se designaron las variables a utilizar, adjudicaste el nombre B a una variable WORD, es decir, a una variable que se puede considerar doble BYTE, a la que ahora Protn+ ha dividido en C = B.HIGHBYTE y D = B.LOWBYTE. Las caractersticas de los valores obtenidos de esta separacin estn claramente explicados en el datasheet del STCN75 y en los comentarios del listado del programa, aunque

pueden resumirse de la siguiente manera: lo cargado en la variable C determina el valor de la temperatura en nmeros enteros (positivos o negativos, segn el nmero obtenido), mientras que lo almacenado en la variable D indica si la medicin es en grados enteros o con 5 dcimas por encima, tal como es la resolucin del sensor. Las siguientes instrucciones imprimen en el LCD los valores obtenidos: en el primer rengln puedes colocar la palabra TEMPERATURA, tratando de centrarla en la pantalla, mientras que en el segundo rengln, luego de dejar cinco espacios, escribirs la variable A, que a temperaturas sobre cero es un carcter vaco. Si la temperatura leda est debajo de los cero grados centgrados aparecer un signo menos. Inmediatamente despus llega el valor de C expresado en numeracin decimal y que equivale, como dijimos antes, al valor entero del nmero a mostrar. A este nmero le sigue la coma y termina el nmero con F representando al decimal del valor mostrado. 158 es el smbolo , en cdigo ASCII. Termina la lnea con la inclusin de la letra C para expresar el resultado en grados centgrados. La ltima parte del programa incluye las comparativas de los valores obtenidos con nmeros constantes que sirven de referencia para activar o desactivar el rel. Puedes ver claramente que la expresin indica que si C es menor a 20, se debe activar el rel poniendo la salida correspondiente en un estado lgico alto, y que si es mayor a 26 se debe colocar en estado bajo. Esto genera una ventana lgica que indica que si la temperatura desciende de los 20 grados se encender la calefaccin, mientras que si supera los 26 grados el sistema ordenar su apagado. Con los arreglos que ya estars analizando, tambin puedes cambiar los valores de programacin para encender el aire acondicionado del coche o del dormitorio, y hasta tal vez, para mantener estable la temperatura de tu terrario activando un calefactor que mantenga siempre estable la temperatura ambiente. Por ltimo el programa finaliza en la instruccin END.

Termmetro en pleno funcionamiento Conclusiones finales Por supuesto que no incluimos aqu el listado del programa, a pesar de ser pequeo, pero s te dejamos las imgenes para que t lo escribas y, de esta forma, analices lo que haces y por qu lo haces para captar mejor el conocimiento. Nada de copy-paste. Nos despedimos dicindote que en la prxima entrega agregaremos a este diseo la posibilidad de conectarse a un bus RS485 que te permitir trabajar al termmetro en forma remota para seguir la evolucin del funcionamiento a cientos de metros, a travs de tu ordenador. En el mercado encontrars mucha variedad de circuitos integrados que funcionan como termmetros va bus I2C y que tal vez sean de mayor exactitud al utilizado en este artculo. Un ejemplo claro es el LM92, de National Semiconductor. La implementacin del STCN75 ha sido a modo de ejemplo y para orientarte sobre algunas de las posibilidades y facilidades de uso que brinda el protocolo I2C en los microcontroladores.

Diseo de impreso utilizado para el sensor Trabajo de los Lectores: Aqu pueden ver el trabajo desarrollado por el lector y amigo Yesbond, que generosamente ha realizado un video donde nos muestra su trabajo con un sensor de temperatura TMP100. Este sensor tambin trabaja por bus I2C como el STCN75 empleado en el artculo. Felicitaciones Yesbond!,GRACIAS por mostrarnos tu trabajo!