DS18B20 - Sensor de temperatura com resolução programável

Introdução:

DS18B20 é um sensor de temperatura que utiliza interface i2c para programação, ou seja basta um pino disponível no microcontrolador para que o mesmo possa ser utilizado. Possui range de temperatura de -55ºC a +125ºC com resolução de até 12 bits.

Modo de usar:

  • O Sensor possui 3 fios, um vermelho (+VCC), um azul (GND) e um amarelo (I2C ou COM). É necessário colocar um resistor de 470 Ohms entre o VCC e o I2C, de forma que forme uma ligação PULLUP com a entrada do microcontrolador.

(Foto do esquema a ser adicionada)

  • Após isso, deve-se escolher o pino digital do microcontrolador a ser usado (no caso do arduino, pode-se escolher qualquer pino disponível, inclusive analógicos).
  • Tendo o pino de comunicação escolhido, deve-se adicionar as bibliotecas DallasTemperature e OneWire na IDE do arduino. Estas bibliotecas se encontram no arquivo "Libraries.zip" no final desta página.
  • Na biblioteca DallasTemperature, há exemplos de código para utilização do sensor na sua forma mais simples. O exemplo com nome "Single" configura o sensor para 12 bits de precisão e imprime na serial o valor de temperatura em Graus (é também possível obter os valores em Fahrenheit).

Observações:

  • Este sensor possui erro de aproximadamente 0.5ºC para o intervalo de -10ºC a +85ºC e de 2ºC para outros intervalos dentro dos limites suportáveis (-55ºC a +125ºC).
  • A precisão do sensor varia entre 9 e 12 bits configurável via software e quanto mais precisão se tem, maior o tempo entre leituras consecutivas (para 9 bits, 93,75ms e para 12 bits, 750ms).
  • IMPORTANTE: Não podem haver interrupções durante uma leitura de temperatura, pois um erro é emitido caso ocorra. Para evitar que esse problema ocorra, deve-se chamar a função cli() antes da instrução de leitura e a sei() após. Essas duas instruções são responsáveis por desativar e ativar as interrupções globais. Caso ainda ocorram erros de leitura, deve-se desativar cada uma das interrupções antes da leitura. Por algum motivo desconhecido, nem sempre as instruções cli() e sei() conseguem controlar todas as interrupções. Esse bug ocorreu utilizando-se o sensor em um arduino UNO.

Datasheet:

  • O datasheet se encontra no arquivo "DS18B20" no final desta página.

Exemplos de códigos:

  • Os exemplos de códigos podem ser encontrados na biblioteca DallasTemperature. Os exemplos "Single" e "Tester" são os melhores para se começar a trabalhar com o sensor

DS18B20.pdf - Datasheet do DS18B20 (484.1 kB) Alisson Claudino, 25/02/2018 04:08

Libraries.zip - Bibliotecas OneWire e DallasTemperature (51.1 kB) Alisson Claudino, 25/02/2018 04:08