Vous êtes sur la page 1sur 5

ESCUELA POLITCNICA DEL EJRCITO INGENIERIA ELECTRNICA INSTRUMENTACION Y SENSORES

Nombre: LEONARDO FLORES Las caractersticas del Sensor en CI DS18B20 Descripcin Sensor Digital de temperatura One-wire. Reporta grados C con 9 a 12 bits de precisin 55C a 125C. Cada sensor posee un nico nmero de serie de 64-Bit, lo que permite tener un enorme nmero de sensores en un mismo bus. Este dispositivo es escencial para cualquier proyecto de control de temperatura.

Caractersticas:

Interfaz 1-Wire que requiere un solo pin del puerto para la comunicacin Cada dispositivo tiene un codigo nico de 64-bit almacenado en una ROM Capacidad de multipuntos simplifica las aplicaciones distribuidas de deteccin de temperatura No requiere componentes externos Puede ser alimentado por la lnea de datos. Rango de alimentacin es de 3,0 V a 5,5 V

Medidas de temperaturas de -55 C a +125 C (-67 F a 257 F) 0,5 C exactitud de -10 C a +85 C La resolucion del Termmetro es seleccionable por el usuario de 9 a 12 bits Convierte la temperatura a 12-bit de la palabra digital en 750 ms (mx.) Definibles por el usuario no voltil (NV), ajustes de la alarma Comando de la alarma de bsqueda identifica y trata los dispositivos cuya temperatura se encuentra fuera de los lmites programados (una condicin de alarma de temperatura) Las aplicaciones incluyen termostatos, sistemas industriales, productos de consumo, termmetros, o cualquier otro sistema termosensible Medicin de temperatura por medio del sensor DS1820. La medicin de temperatura es una de las tareas ms frecuentes realizadas por el microcontrolador. En este ejemplo, se utiliza un sensor DS1820 para medir. Es capaz de medir en el rango de 55 C a 125 C con exactitud de 0.5 C. Para transmitir los datos al microcontrolador se utiliza un tipo especial de la comunicacin serial denominado 1-wire. Debido al hecho de que estos sensores son simples de utilizar y con una amplia gama de aplicaciones, las funciones almacenadas en la librera One_Wire ponen en marcha y gobiernan estos sensores.

Esta librera contiene en total tres funciones:

Ow_Reset se utiliza para reiniciar el sensor;

Ow_Read se utiliza para recibir los datos del sensor; y Ow_Write se utiliza para enviar los comandos al sensor.

Este ejemplo muestra la ventaja de utilizar libreras con las funciones listas para ser utilizadas. Concretamente, no tiene que examinar la documentacin proporcionada por el fabricante para utilizar el sensor. Basta con copiar las funciones apropiadas en el programa. Si le interesa saber cmo se declaran, basta con pulsar sobre alguna de ellas y seleccionar la opcin Help. Programa program example_12 ' Nombre de programa dim LCD_RS as sbit at RB4_bit ' Conexiones del mdulo LCD LCD_EN as sbit at RB5_bit LCD_D4 as sbit at RB0_bit LCD_D5 as sbit at RB1_bit LCD_D6 as sbit at RB2_bit LCD_D7 as sbit at RB3_bit LCD_RS_Direction as sbit at TRISB4_bit LCD_EN_Direction as sbit at TRISB5_bit LCD_D4_Direction as sbit at TRISB0_bit LCD_D5_Direction as sbit at TRISB1_bit LCD_D6_Direction as sbit at TRISB2_bit LCD_D7_Direction as sbit at TRISB3_bit ' Final de conexiones del mdulo LCD ' Ajustar la constante TEMP_RESOLUTION a la resolusin correspondiente del sensor: ' DS18x20 utilizado: 18S20: 9 (ajustes por defecto pueden ser 9,10,11 o 12); 18B20: 12 const TEMP_RESOLUTION as byte = 9 ' Constante TEMP_RESOLUTION es de tipo byte dim text as char[9] ' Variable text es de tipo char temp as word ' Variable temp es de tipo word sub procedure Display_Temperature( dim temp2write as word ) const RES_SHIFT = TEMP_RESOLUTION - 8 dim temp_whole as byte ' Variable temp_whole rd fr tipo byte temp_fraction as word ' Variable temp_fraction es de tipo word text = "000.0000" if (temp2write and 0x8000) then ' Comprobar si la temperatura es negativa

text[0] = "-" temp2write = not temp2write + 1 end if temp_whole = word(temp2write >> RES_SHIFT) ' Extraer temp_whole if ( temp_whole div 100 ) then ' Convertir temp_whole en caracteres text[0] = temp_whole div 100 + 48 else text[0] = "0" end if text[1] = (temp_whole div 10) mod 10 + 48 ' Extraer dgito de decenas text[2] = temp_whole mod 10 + 48 ' Extraer dgito de unidades temp_fraction = word(temp2write << (4-RES_SHIFT)) ' Extraer temp_fraction temp_fraction = temp_fraction and 0x000F ' y convertirlo en temp_fraction = temp_fraction * 625 ' unsigned int text[4] = word(temp_fraction div 1000) + 48 ' Extraer dgito de miles text[5] = word((temp_fraction div 100) mod 10 + 48) ' Extraer dgito de centenas text[6] = word((temp_fraction div 10) mod 10 + 48) ' Extraer dgito de decenas text[7] = word(temp_fraction mod 10) + 48 ' Extraer dgito de unidades Lcd_Out(2, 5, text) ' Visualizar temperatura en el Lcd end sub main: ' Inicio de programa ANSEL = 0 ' Configurar pines analgicos como digitales de E/S ANSELH = 0 text = "000.0000" Lcd_Init() ' Inicializar el Lcd Lcd_Cmd(_LCD_CLEAR) ' Borrar el Lcd Lcd_Cmd(_LCD_CURSOR_OFF) ' Apagar el cursor Lcd_Out(1, 1, " Temperature: ") Lcd_Chr(2,13,178) ' Visualizar el carcter de grado, 'C' para centgrados ' Distintos visualizadores LCD tienen diferentes cdigos de caracteres para el grado Lcd_Chr(2,14,"C") ' si ve la letra griega Alfa, introduzca 178 en vez de 223 while 1 ' Leer la temperatura en el bucle principal Ow_Reset(PORTE, 2) ' Seal de reinicio de Onewire

Ow_Write(PORTE, 2, 0xCC) ' Ejecutar el comando SKIP_ROM Ow_Write(PORTE, 2, 0x44) ' Ejecutar el comando CONVERT_T Delay_us(120) Ow_Reset(PORTE, 2) Ow_Write(PORTE, 2, 0xCC) ' Ejecutar el comando SKIP_ROM Ow_Write(PORTE, 2, 0xBE) ' Ejecutar el comando READ_SCRATCHPAD temp = Ow_Read(PORTE, 2) temp = (Ow_Read(PORTE, 2) << 8) + temp Display_Temperature(temp) ' Formatear y visualizar el resultado en el LCD Delay_ms(520) wend end. ' Retardo de 520 ms ' Final de programa

BIBLIOGRAFIA http://www.mikroe.com/chapters/view/87/libro-de-la-programacion-de-losmicrocontroladores-pic-en-basic-capitulo-4-ejemplos/ http://www.olimex.cl/product_info.php?products_id=142

Vous aimerez peut-être aussi