PROYECTO TERMÓMETRO Integrantes: Verdié Ariel Quinteroz Henry Curso: 3ero Electrónica Profesores: Susana Collovati Matias Lasarte Diego Correa (MEP) Año: 2011 Índice Introducción al proyecto………………………………….3 Sensor de temperatura……………………………………4 Comunicación con el sensor………………………….5,6,7 Simulaciones realizadas………………………………….8 Comunicación inalámbrica……………………………….9 Código Manchester utilizado…………………….……9,10 Transmisor QFMT1-434…………………………….11,12 Receptor QFMR1-434……………………………….12,13 Introducción al Proyecto Lo que se debe hacer para este proyecto es registrar la temperatura de un ambiente (supóngase) a 50metros de una vivienda y los datos recibidos deben quedar registrados en la PC de la misma. A continuación una explicación de cuales son las etapas y como se va a realizar el proyecto: Medir la temperatura. Recibir lo medido en un pic y convertirlo a grados Celcius Transmitir la temperatura. Recibir la temperatura. Descargar lo recibido a un pic. Mostrar la temperatura en una PC. Etapas: Dicho esto, el proyecto lo dividiremos en 2 etapas; Primera Etapa: Sensar la temperatura, recibir los datos por el pic, convertirlos a grados Celcius y lograr transmitirlos. El sensado de la temperatura se va a realizar con el sensor Maxim Dallas DS18S20PAR (1-Wire Parasite-Power Termómetro Digital) y el pic será el 16F628A. Segunda Etapa: Lograr recibir los datos que se están enviando, transmitir esa información a un pic y mostrar lo recibido en una PC. Diagrama de Bloques del proyecto: Sensor de temperatura El sensor que se utiliza en relación precio/calidad a los demás es el Maxim Dallas DS18B20-PAR (1-Wire Parasite-Power Termómetro Digital) el cual presenta la siguiente distribución de pines: DQ: pin para recepción-transmisión de datos. Vdd: +5V. GND: masa. El DS18B20 se comunica mediante el bus 1 wire que por definición requiere una única línea de datos (Vdd y tierra) para la comunicación con el micro. Tiene un rango de operación de -55 a 125 C y una precisión de +\- 0.5C sobre el rango de -10 a 85C. La característica de este sensor es que puede ser alimentado por una fuente externa o directamente por la energía entregada del micro. En este caso se lo va a alimentar externamente con una batería, ya que esto simplifica las funciones de transmisión/recepción de datos con el micro y a su vez hace que las mismas sean más veloces. El DS18B20 usa el protocolo de bus DALLAS, que implementa la comunicación de bus a través de una única señal de control. La línea de control necesita una resistencia de PullUp, ya que todos los dispositivos conectados al bus están vinculados a través de un puerto Open Drain o “abrir drenaje”. El DS18B20 tiene una resolución de 9 bits, que corresponden a pasos de 0,5 C. El mismo envía primero 8 bits (de LSB a MSB) los cuales indican la temperatura y luego otros 8 bits que son “ceros” en caso de que la temperatura sea positiva y “unos” en caso de que la temperatura sea negativa. Medición de temperatura: Cuando el sensor es iniciado arranca en un estado de reposo (bajo consumo) y su único bus de transmisión actúa siempre como Esclavo. El Maestro (el PIC) debe enviar los datos necesarios para que el sensor sepa que se lo está incializando, los datos requeridos para que convierta la temperatura que está sensando y los datos requeridos para que transmita la temperatura que convirtió. Los datos de salida del DS18B20 están en grados centígrados. La temperatura obtenida es almacenada como un número en complemento A2. En la siguiente tabla se pueden ver ejemplos de datos de salida y la correspondiente lectura de temperatura. Bit 15 a bit 11 = Signo de la temperatura Bit 10 a bit 3 = temperatura Secuencia de petición de datos: Para iniciar una secuencia de petición al sensor se deben realizar los siguientes 3 pasos: Paso 1. Inicialización: Todos los intercambios deben comenzar con una secuencia de inicialización. La secuencia de inicialización consiste de un pulso de reset transmitido por el maestro y seguido de un pulso de presencia transmitido por el esclavo. El pulso de presencia le permite al maestro saber que el dispositivo está presente y listo para operar. Los tiempos de pulsos son los siguientes: Durante la secuencia de inicialización el maestro transmite (TX) el pulso de reset forzando al bus a cero durante un mínimo de 480us. Luego el maestro libera el bus y entra en modo recepción (RX). Cuando el bus el liberado, la resistencia de pullup de 5k fuerza el bus a uno. Cuando el DS18B20 detecta este flanco ascendente, espera entre 15 y 60us y entonces transmite el pulso de presencia forzando el bus a cero durante aprox. 60 a 240us. Paso 2. Comando ROM (seguido por el dato requerido): Luego que el maestro a detectado el pulso de presencia, este puede realizar un pedido de comando ROM. Estos comandos le permiten al maestro determinar cuantos dispositivos y de que tipo están presentes en el bus. Como solo conectaremos 1 sensor no es necesario comunicar al sensor por medio de la rom, por lo que el único comando que se va a utilizar es el siguiente: SKIP ROM [CCh]: El maestro puede usar este comando para direccionar todos los dispositivos simultáneamente sin enviar ninguna información de código ROM. Por ejemplo, el maestro pedir que todos los DS18B20 en el bus realicen una conversión de temperatura enviando un comando SKIP ROM seguido por un comando T [44h]. Paso 3. Comando de función del DS18B20 (seguido por el dato requerido): Después que el maestro del bus a enviado un comando ROM para direccionar al DS18S20 con el cual desea comunicarse, el maestro puede enviar un comando de función al DS18S20. Estos comandos le permiten al maestro escribir o leer de la memoria interna del DS18B20, iniciar una conversión de temperatura y determinar el modo de alimentación. Los que se van a utilizar se nombran a continuación: CONVERT T [44h]: Este comando inicia la conversión de temperatura. Seguido de la conversión, el dato de temperatura será almacenado en los registros de temperatura de la memoria scratchpad y el DS18B20 volverá a su estado de reposo. Si el dispositivo esta alimentado con una fuente externa, el maestro puede hacer un pedido de lectura después del comando de conversión de temperatura y el DS18B20 responderá transmitiendo un cero mientras la conversión se encuentre en curso y un 1 cuando la conversión haya finalizado. READ SCRATCHPAD [BEh]: Este comando le permite al maestro leer el contenido de la memoria scratchpad (memoria en la cual se almacenan los datos obtenidos de temperatura y signo). La lectura comienza con el bit menos significativo del LS byte y continua a través de la memoria scratchpad hasta el noveno bit (MS byte). El maestro debería hacer un pedido de reset para terminar la lectura en cualquier momento. Intervalos de tiempos de lectura: Todos los intervalos de tiempo de lectura deben tener un mínimo de 60us de duración con un mínimo de 1us de recuperación entre intervalos. Un intervalo de lectura es inicializado por el maestro del bus forzando el bus a baja impedancia por un mínimo de 1us para luego liberarlo. Después que el maestro inicializa el intervalo de lectura, el DS18B20 comenzara a transmitir un 1 o un 0 a través del bus. El DS transmite un uno dejando el bus en alta impedancia y transmite un cero forzando el bus a baja impedancia. Cuando transmite un cero el DS liberará el bus sobre el final del intervalo de tiempo, y el bus será forzado nuevamente a su estado de alta impedancia por la resistencia de PullUp. Los datos de salida del DS18B20 son validos 15us después del flaco descendente que inicia el intervalo de tiempo de lectura. Entonces, el maestro debería liberar el bus y muestrear el estado del bus dentro de los 15us después del comienzo del intervalo. Diagrama de flujo A continuación el diagrama de flujo del programa que recibe y almacena la temperatura: Simulaciones en Proteus Pulso de reset y presencia: Skiprom 0XCC (Direccionamiento) Petición de Conversión 0X44 ReadScratchpad 0XBE (Leo la temp.) Simulación de petición de +25 grados Celcius: 0 Temp: 00110010 Signo: 00000 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 Comunicación con Transmisor Inalámbrico Para realizar esta comunicación se va a implementar un radiotransmisor de FM (con su respectivo receptor). Cabe destacar que al realizarse transmisiones inalámbricas es muy probable la aparición de ruidos en una señal con pulsos anchos, por lo que para recibir una correcta obtención de datos, los mismos a transmitir deben estar convertidos a código Manchester. Código Manchester También denominada codificación bifase-L, es un método de codificación eléctrica de una señal binaria en el que en cada tiempo de bit hay una transición entre dos niveles de señal. Es una codificación autosincronizada, ya que en cada bit se puede obtener la señal de reloj, lo que hace posible una sincronización precisa del flujo de datos. Aplicación del código: *Las señales de datos y de reloj, se combinan en una sola que auto-sincroniza el flujo de datos. *Cada bit codificado contiene una transición en la mitad del intervalo de duración de los bits. *Una transición de positivo a negativo representa un 1 y una transición de negativo a positivo representa un 0. Los códigos Manchester tienen una transición en la mitad del periodo de cada bit. Cuando se tienen bits iguales y consecutivos se produce una transición al inicio del segundo bit, la cual no es tenida en cuenta por el receptor al momento de decodificar, solo las transiciones separadas uniformemente en el tiempo son las que son consideradas por el receptor. Hay algunas transiciones que no ocurren a mitad de bit. Estas transiciones no llevan información útil, y solo se usan para colocar la señal en el siguiente estado donde se llevará a cabo la siguiente transición. Aunque esto permite a la señal auto-sincronizarse, en realidad lo que hace es doblar el requerimiento de ancho de banda, en comparación con otros códigos como por ejemplo los Códigos NRZ. Ventajas y desventajas del uso de la codificación Manchester Como ventajas principales se pueden destacar las siguientes: La codificación Manchester o codificación bifase-L es autosincronizada: provee una forma simple de codificar secuencias de bits, incluso cuando hay largas secuencias de periodos sin transiciones de nivel que puedan significar la pérdida de sincronización, o incluso errores en las secuencias de bits. Por ello es altamente fiable. Detección de retardos: directamente relacionado con la característica anterior, a primera vista podría parecer que un periodo de error de medio bit conduciría a una salida invertida en el extremo receptor, pero una consideración más cuidadosa revela que para datos típicos esto llevaría a violaciones de código. El hardware usado puede detectar esas violaciones de código, y usar esta información para sincronizar adecuadamente en la interpretación correcta de los datos. Esta codificación también nos asegura que la componente continua de las señales es cero si se emplean valores positivos y negativos para representar los niveles de la señal, haciendo más fácil la regeneración de la señal, y evitando las pérdidas de energía de las señales. Las principales desventajas asociadas son las siguientes: Ancho de banda del doble de la señal de datos: una consecuencia de las transiciones para cada bit es que el requerimiento del ancho de banda para la codificación Manchester es el doble comparado en las comunicaciones asíncronas, y el espectro de la señal es considerablemente más ancho. La mayoría de los sistemas modernos de comunicación están hechos con protocolos con líneas de codificación que persiguen las mismas metas, pero optimizan mejor el ancho de banda, haciéndolo menor. Funcionamiento del código El código Manchester utilizado posee pulsos de 10 mseg. que son enviados por el pin 9 del pic (RB3). Dos pulsos representan un bit, es decir, 10 mseg en 0v y 10 mseg en 5v representan un bit 0, y 10 mseg en 5v y 10 mseg en 0v representan, respectivamente, un bit 1. Se le asignó este tiempo de duración a los pulsos para evitar conflictos al momento de recibir los datos y así mismo disminuir un gran rango de fallas que pueden llegar a interpretarse por parte del receptor. Se sabe que los transmisores elevan su ganancia al estar mucho tiempo en un solo estado, produciendo una posible pérdida de información al momento en el que tienen que regresar a la ganancia en la que se transmite. Para estabilizar dicha ganancia, se envía una serie de pulsos (unos y ceros alternadamente) seguido de un lapso de 20 mseg en estado alto, 20 mseg en estado bajo y un pulso de 10 mseg en estado alto; así se logra diferenciar en el receptor cuando es que llega la información . Pulsos para la reacomodación de ganancia del transmisor Pulsos de aviso de llegada de información. Módulos transmisores y receptores Transmisor El módulo a implementar para la transmisión de datos es el QM Radio Transmitter Module QFMT1-434; módulo híbrido de radio FM de 433,92 Mhz. El módulo transmisor de radio UHF miniatura QFMT1 es capaz de implementar un enlace simple de telemetría a una velocidad de hasta 10 Kbit/s cuando es usado con uno de los módulos receptores quasar compatibles. Disponible para funcionar a 433,92 y 868 MHz. Estos módulos son capaces de transmitir a distancias de hasta 100 metros (versión 433,92 MHz). El módulo QFMT1 se emplea en aplicaciones de enlaces inalámbricos punto a punto y multipunto incluyendo seguridad en edificios y coches, telemedida y telecontrol en procesos industriales y redes de computadores. Por su pequeño tamaño y bajo consumo, este módulo es ideal para usar en aplicaciones portátiles y soportadas por baterías como son los terminales manuales. Detalles de conexión Descripción de los pines: RF GND (pin 1) RF: pin de tierra, conectado internamente al pin 4 (0 V). Este pin idealmente debe estar conectado al plano de tierra más cercano (por ejemplo el coaxial de la antena). RF OUT (pin2) 50Ω de salida de RF de la antena. Para lograr mejores resultados la impedancia de la antena debe coincidir con la del módulo. VCC (pin 3) V + alimentación Pin (3,0 a 9,0 voltios). El módulo generará una transmisión cuando cuando la alimentación esté presente. Es muy recomendado que un condensador de 100nF esté ubicado como un puente a la alimentación para desacoplar señales parásitas, lo más cerca posible de este pin. GND (pin 4) Conexión de tierra, conectado al pin 1. Data IN (pin 5) Es la entrada de los datos a transmitir. La misma tiene una impedancia de 47KΩ y lo ideal es que sea impulsada por una unidad lógica CMOS o compatible. Los circuitos del controlador a transmitir deben ser alimentados con la misma tensión de alimentación en el módulo Tx. Construcción de la antena: Circuito Transmisor: Receptor Para la recepción se utiliza el módulo QFMR2-434, compatible con el transmisor. Detalles de conexión Descripción de los pines: RF IN (pin 1) 50W de entrada de RF de la antena, conecte con ruta más corta posible. Capacitivamente aislada desde el circuito interno. RF GND (pin 2) Conexión RF de tierra, preferentemente a un plano de tierra firme. RSSI (pin 3) Es un indicador de intensidad de la señal recibida. Entrega una tensión de salida proporcional a la entrada RF señal. No conectado (pin 4) VCC (pin 5) Tensión de suministro. Funciona con una fuente de poder de 5V a 2 mA. RSSI (pin 6) Es un indicador de intensidad de la señal recibida. Entrega una tensión de salida proporcional a la entrada RF señal. DATA OUT (pin 7) Compatible con CMOS a la salida. Esto puede ser decodificado externamente. Construcción de la anterna: Circuito Receptor: