Sensor 18b20
Click here to load reader
-
Upload
leo-flores -
Category
Documents
-
view
11 -
download
0
Transcript of Sensor 18b20
ESCUELA POLITÉCNICA DEL EJÉRCITO
INGENIERIA ELECTRÓNICA
INSTRUMENTACION Y SENSORES
Nombre: LEONARDO FLORES
Las características del Sensor en CI DS18B20
Descripción
Sensor Digital de temperatura One-wire. Reporta grados C con 9 a 12 bits de precisión -55°C a 125°C. Cada sensor posee un único número de serie de 64-Bit, lo que permite tener un enorme número de sensores en un mismo bus. Este dispositivo es escencial para cualquier proyecto de control de temperatura.
Características:
Interfaz 1-Wire ® que requiere un solo pin del puerto para la comunicación
Cada dispositivo tiene un codigo único de 64-bit almacenado en una ROM
Capacidad de multipuntos simplifica las aplicaciones distribuidas de detección de temperatura
No requiere componentes externos
Puede ser alimentado por la línea de datos. Rango de alimentación 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 Termómetro es seleccionable por el usuario de 9 a 12 bits
Convierte la temperatura a 12-bit de la palabra digital en 750 ms (máx.)
Definibles por el usuario no volátil (NV), ajustes de la alarma
Comando de la alarma de búsqueda identifica y trata los dispositivos cuya temperatura se encuentra fuera de los límites programados (una condición de alarma de temperatura)
Las aplicaciones incluyen termostatos, sistemas industriales, productos de consumo, termómetros, o cualquier otro sistema termosensible
Medición de temperatura por medio del sensor DS1820.
La medición de temperatura es una de las tareas más 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 comunicación 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 librería One_Wire ponen en marcha y
gobiernan estos sensores.
Esta librería 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 librerías con las funciones listas para ser
utilizadas. Concretamente, no tiene que examinar la documentación proporcionada por el
fabricante para utilizar el sensor. Basta con copiar las funciones apropiadas en el programa.
Si le interesa saber cómo se declaran, basta con pulsar sobre alguna de ellas y seleccionar la
opción Help.
Programa
program example_12 ' Nombre de programa
dim LCD_RS as sbit at RB4_bit ' Conexiones del módulo LCDLCD_EN as sbit at RB5_bitLCD_D4 as sbit at RB0_bitLCD_D5 as sbit at RB1_bitLCD_D6 as sbit at RB2_bitLCD_D7 as sbit at RB3_bitLCD_RS_Direction as sbit at TRISB4_bitLCD_EN_Direction as sbit at TRISB5_bitLCD_D4_Direction as sbit at TRISB0_bitLCD_D5_Direction as sbit at TRISB1_bitLCD_D6_Direction as sbit at TRISB2_bitLCD_D7_Direction as sbit at TRISB3_bit ' Final de conexiones del módulo LCD
' Ajustar la constante TEMP_RESOLUTION a la resolusión 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 chartemp as word ' Variable temp es de tipo wordsub 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 dígito de decenas text[2] = temp_whole mod 10 + 48 ' Extraer dígito 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 dígito de miles text[5] = word((temp_fraction div 100) mod 10 + 48) ' Extraer dígito de centenas text[6] = word((temp_fraction div 10) mod 10 + 48) ' Extraer dígito de decenas text[7] = word(temp_fraction mod 10) + 48 ' Extraer dígito de unidades Lcd_Out(2, 5, text) ' Visualizar temperatura en el Lcd
end sub
main: ' Inicio de programaANSEL = 0 ' Configurar pines analógicos como digitales de E/S ANSELH = 0
text = "000.0000"Lcd_Init() ' Inicializar el LcdLcd_Cmd(_LCD_CLEAR) ' Borrar el LcdLcd_Cmd(_LCD_CURSOR_OFF) ' Apagar el cursorLcd_Out(1, 1, " Temperature: ")
Lcd_Chr(2,13,178) ' Visualizar el carácter de grado, 'C' para centígrados' Distintos visualizadores LCD tienen diferentes códigos 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) ' Señal 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) ' Retardo de 520 ms wendend. ' Final de programa
BIBLIOGRAFIA
http://www.mikroe.com/chapters/view/87/libro-de-la-programacion-de-los-microcontroladores-pic-en-basic-capitulo-4-ejemplos/
http://www.olimex.cl/product_info.php?products_id=142