DS18B20

Lectura de la temperatura del agua:
El sensor DS18B20:

El sensor DS18B20 es un sensor digital que permite la medición de la temperatura con una resolución configurable de 9 a 12 bits que corresponden a incrementos de 0.5ºC, 0.25ºC, 0.125ºC, y 0.0625ºC. Siendo la de 12 bits la utilizada por defecto. Utiliza el protocolo de transmisión 1-Wire de Dallas semiconductor que utiliza un único cable de datos para la comunicación entre dispositivos. El protocolo permite la utilización del mismo bus por varios sensores ya que cada dispositivo viene con una dirección única de 64 bits. El sensor también puede operar en modo alimentación parásita eliminando así la necesidad de conectarlo a una fuente de alimentación externa, el sensor utiliza la energía que recolecta del bus de datos cuando este no se utiliza almacenándola en un condensador.

Características del sensor DS18B20:
  • Alimentación de 3v A 5.5v
  • Consumo de 750nA en modo Standby y 1 mA en modo activo
  • Protocolo de comunicación 1-Wire que requiere un único pin para la comunicación
  • Rango de medición de temperatura de -55ºC a 125ºC
  • Resolución programable de 9 a 12 bits (0.5ºC, 0.25ºC, 0.125ºC y 0.0625ºC)
  • Exactitud de ±0.5ºC de-10ºC a 85ºC
  • Alarma programable de alta y baja temperatura
  • Posibilidad de alimentación en modo parásito sin necesidad de alimentación externa

El siguiente diagrama muestra la arquitectura interna del sensor:


En el encapsulado encontramos la ROM de 64 que contiene la dirección única del sensor, la memoria scratchpad que contiene el registro de 2 bytes que almacena la salida digital del sensor de temperatura, además proporciona acceso al byte donde se almacena los registros de alarma de temperatura alta y baja (TH y TL) y el byte de registro de configuración donde se almacena la configuración de resolución del sensor. Los registros de configuración y de alarma TH y TL no son volátiles, de esta manera conservan los datos una vez apagado el sensor.

Conexión del sensor al microcontrolador:
La conexión se realizará con alimentación externa. El pin de datos necesita una resistencia de pull-up de 4,7K para mantener el nivel del bus en alto cuando este no se utiliza. El pin de datos irá conectado al pin RF2 del microcontrolador y estará configurado como entrada o como salida según se envíen o se reciban datos.

Flowchart para la lectura del sensor DS18B20:
  

Implementación:
  • Diagrama FSM:

El estado inicial es el estado ‘Idle’, si pulsamos el botón RB0 pasamos al modo ‘Setup’, seguidamente se pasa a la lectura del sensor en el estado ‘Read DS18B20’. Una vez leído el sensor en el estado ‘Send data’ se muestran los datos de temperatura por el LCD y se envían los datos al PC. Si pulsamos el botón RB0 se detiene la lectura y el envío de datos y se vuelve al modo ‘Idle’.

  • Esquema Proteus:



Protocolo 1-Wire:

El protocolo 1-Wire  es un protocolo diseñado por Dallas Semiconductor. Una red 1-wire está basada en un maestro y uno o varios dispositivos esclavos que utilizan la misma linea para comunicarse además de una tierra común para todos. Es necesaria una resistencia de pull-up en la linea de datos para mantener la linea en alto.

Características del bus 1-Wire:
  • Bus de comunicación serial asíncrono
  • Utiliza lógica CMOS/TTL con un rango de alimentación de 2.8V a 6V
  • Maestro y esclavo pueden ser transmisor o receptor pero la transmisión solo puede ser en una dirección (half-duplex)
  • Toda la información es leída o escrita empezando por el bit menos significativo (LSB)
  • No se requiere una señal de reloj de sincronización ya que cada dispositivo se auto-sincroniza con el flanco de bajada del maestro
  • Cada dispositivo dispone de una dirección única de 64 bits
  • La velocidad de transmisión alrededor de 15Kbps en modo estandard de 111 Kbps en modo overdrive
  • La alimentación de los esclavos se puede realizar a través del propio bus de datos. Este modo de alimentación se denomina modo parásito.
Operaciones del bus 1-Wire:
Hay cuatro operaciones básicas que se pueden realizar en el bus que son Reset, Escribir '0', Escribir '1' y Leer bit. 

Para escribir un byte de datos combinaremos las operaciones de escribir '0' o '1'.
En la siguiente figura se muestra el diagrama de tiempo del protocolo 1-Wire. Es similar a utilizar PWM (Pulse-Width Modulation) ya que para transmitir un '0' utiliza un pulso ancho y para transmitir un'1' un pulso estrecho durante el time slot.


La comunicación la inicia el maestro con la operación Reset para sincronizar el bus, en ese momento queda a la espera de que los esclavos lleven el bus a nivel alto indicando así que están disponibles para iniciar la comunicación con el maestro. 
Para escribir un dato el maestro lleva el bus a nivel bajo durante 6 us y después dependiendo de si se quiere transmitir un '0' dejará el bus a nivel bajo hasta los 60 us o si quiere transmitir un '1' lo llevará a nivel alto hasta los 60 us.
Para leer un dato el master lleva a nivel bajo durante 6 us el bus en ese momento queda a la espera de que es esclavo envié el bit a transmitir. Para transmitir un '1' el esclavo lleva el bus a nivel alto y para transmitir un '0' lo deja en nivel bajo. El master leerá el bus pasados 15 us y esperará hasta los 60 us para llevar de nuevo el bus a nivel alto y realizar de nuevo la operación de lectura hasta que se termine la transmisión de un byte.

Librerías de Microchip para el protocolo 1-Wire:
Microchip nos proporciona la librería necesaria para la comunicación con los dispositivos compatibles con 1-wire. Las funciones disponibles son la las siguientes:
  • drive_OW_low: Configura el pin como salida y lleva el bus a nivel bajo
  • drive_OW_high: Configura el pin como salida y lleva el bus a nivel alto
  • read_OW: Configura el pin como entrada y lee el estado de este
  • OW_write_byte: Transmite un byte al esclavo
  • OW_read_byte: Lee un byte transmitido por el esclavo
  • OW_reset_pulse: Produce un pulso de reset y detecta la presencia de esclavos
  • OW_write_bit: Envia un bit por el bus
  • OW_read_bit: Lee un bit enviado por el esclavo



ċ
DS18B20.X.production.cof
(130k)
Alberto Gómez,
7 sept 2016, 1:50
ċ
DS18B20.pdsprj
(36k)
Alberto Gómez,
7 sept 2016, 1:50
Comments