Uma das formas mais fáceis e baratas de adicionar sensor de temperatura no seu projecto Arduino é usar o Sensor de Temperatura de 1 Fio DS18B20. Estes sensores são bastante precisos e não necessitam de componentes externos para funcionar. Assim, com apenas algumas conexões e algum código Arduino, você estará detectando a temperatura em pouco tempo!

DS18B20 Sensor de Temperatura de 1 fio

DS18B20 é um sensor de temperatura de 1 fio fabricado pela Dallas Semiconductor Corp. A interface única de 1 fio® requer apenas um pino digital para comunicação bidirecional com um microcontrolador.

O sensor vem normalmente em dois fatores de forma. Um que vem na embalagem TO-92 parece exatamente como um transistor comum. Outro num estilo de sonda à prova de água que pode ser mais útil quando é necessário medir algo longe, debaixo de água ou debaixo do solo.

Tipos do sensor de temperatura DS18B20

DS18B20 O sensor de temperatura é bastante preciso e não necessita de componentes externos para funcionar. Ele pode medir temperaturas de -55°C a +125°C com ±0,5°C Precisão.

A resolução do sensor de temperatura é configurável pelo usuário para 9, 10, 11, ou 12 bits. No entanto, a resolução padrão na energização é de 12 bits (ou seja, precisão de 0,0625°C).

O sensor pode ser alimentado com uma fonte de alimentação de 3V a 5,5V e consome apenas 1mA durante as conversões de temperatura ativa.

Aqui estão as especificações completas:

Fornecimento de energia 3V a 5.5V
Consumo corrente 1mA
Faixa de temperatura -55 a 125°C
Acuracidade ±0.5°C
Resolução 9 a 12 bit (selecionável)
Tempo de conversão < 750ms

Múltiplos DS18B20 Num único autocarro

Uma das maiores vantagens da DS18B20 é que múltiplos DS18B20s podem coexistir no mesmo 1-Autocarro de arame. Como cada DS18B20 tem um código de série único de 64 bits gravado na fábrica, é mais fácil diferenciá-los uns dos outros.

Esta funcionalidade pode ser uma enorme vantagem quando se pretende controlar muitas DS18B20s distribuídas por uma grande área.

Para saber como ler a temperatura de múltiplos sensores de temperatura DS18B20, consulte este tutorial.

Interfacing Multiple DS18B20 Digital Temperature Sensors with Arduino

Uma das maiores vantagens do DS18B20 é que múltiplos DS18B20 podem coexistir no mesmo bus de 1 fio. Como cada DS18B20 tem um único 64-bit…

DS18B20 Sensor Pinout

GND é um pino de terra.

DQ é um barramento de dados de 1 fio deve ser conectado a um pino digital no microcontrolador.

PinoVDD fornece energia para o sensor que pode estar entre 3,3 a 5V.

Fiação DS18B20 Sensor de Temperatura para Arduino

>

Suficiente da teoria, Vamos Praticar! Vamos ligar o DS18B20 ao Arduino.

As ligações são bastante simples. Comece conectando VDD ao pino de saída 5V no Arduino e GND à terra.

Próximo conecte o pino de sinal digital restante DQ ao pino digital 2 no Arduino. Você também precisará adicionar o resistor de pull-up 4.7k entre o sinal e o pino de energia para manter a transferência de dados estável. (os pull-ups internos no arduino não funcionam)

Tenha cuidado para obter o DS18B20 da maneira correta. Se o colocar de forma errada, ficará quente e depois quebrar-se-á.

Ligação DS18B20 Sensor de Temperatura ao Arduino

Se estiver a usar a versão à prova de água do DS18B20, ligue a banda vermelha a 5V, a preta liga à terra e a banda amarela são dados que vão para o pino digital 2 no arduino. Você ainda precisa conectar um resistor pullup 4.7K dos dados a 5V.

Fio à prova d’água DS18B20 Sensor de temperatura para Arduino

Biblioteca de instalação para DS18B20

O protocolo Dallas 1-Wire é um pouco complexo, e requer um monte de código para analisar a comunicação. Para esconder esta complexidade desnecessária instalaremos a biblioteca DallasTemperature.h para que possamos emitir comandos simples para obter leituras de temperatura do sensor.

>

Para instalar a biblioteca navegue até ao Sketch >Inclua a biblioteca >Gerir bibliotecas…Aguarde que o Library Manager descarregue o índice das bibliotecas e actualize a lista de bibliotecas instaladas.

Filtre a sua pesquisa digitando ‘ds18b20’. Deve haver um par de entradas. Procure por DallasTemperature por Miles Burton. Clique nessa entrada, e então selecione Install.

Esta biblioteca de Temperatura Dallas é uma biblioteca específica de hardware que lida com funções de nível inferior. Ela precisa ser emparelhada com a One Wire Library para se comunicar com qualquer dispositivo de um fio e não apenas com o DS18B20. Instale também esta biblioteca.

Código Arduino

O seguinte esboço irá dar-lhe uma compreensão completa de como ler leituras de temperatura do Sensor de Temperatura DS18B20 e pode servir como base para experiências e projectos mais práticos.

#include <OneWire.h>#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire deviceOneWire oneWire(ONE_WIRE_BUS);// Pass oneWire reference to DallasTemperature libraryDallasTemperature sensors(&oneWire);void setup(void){ sensors.begin();// Start up the library Serial.begin(9600);}void loop(void){ // Send the command to get temperatures sensors.requestTemperatures(); //print the temperature in Celsius Serial.print("Temperature: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print((char)176);//shows degrees character Serial.print("C | "); //print the temperature in Fahrenheit Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0); Serial.print((char)176);//shows degrees character Serial.println("F"); delay(500);}

Aqui está como a saída se parece no monitor de série.

Explicação do código:

O esboço começa por incluir bibliotecas OneWire.h e DallasTemperature.h e declarar o pino Arduino ao qual o pino de sinal do sensor está conectado.

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2

A seguir criamos um objeto de um fio passando o pino de sinal do sensor para o seu construtor. Este objeto de um fio nos permite comunicar com qualquer dispositivo de um fio, não apenas com o DS18B20. Para comunicar com o sensor DS18B20, precisamos criar um objeto da biblioteca DallasTemperature e passar referência do objeto de um fio como um parâmetro.

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);

Após a criação de um objeto DallasTemperature, podemos emitir abaixo comandos simples para interagir com o sensor.

  • begin() função procura sensores conectados no barramento e define a resolução do bit (12 bits) para cada um.
  • requestTemperatures() função envia comando para todos os sensores no barramento para realizar uma conversão de temperatura.
  • getTempCByIndex(deviceIndex) função lê e retorna a leitura da temperatura do sensor. deviceIndex não é nada mais que a localização do sensor no barramento. Se você estiver usando apenas um DS18B20 no barramento, configure-o para 0.

Outras funções úteis na biblioteca DallasTemperature.h

Existem algumas funções úteis que você pode usar com o objeto DallasTemperature. Poucas delas estão listadas abaixo:

  • setResolution() função define a resolução do conversor analógico-digital interno do DS18B20 para 9, 10, 11, ou 12-bits, correspondendo a incrementos de 0,5°C, 0,25°C, 0,125°C e 0,0625°C, respectivamente.
  • bool getWaitForConversion() função retorna o valor do flag de espera para conversão. Pode ser útil quando você quer verificar se uma conversão de temperatura está completa.
  • setHighAlarmTemp() & setLowAlarmTemp() função define os alarmes internos de temperatura alta & alarmes de temperatura baixa para um dispositivo em graus Celsius. O intervalo válido é -55 a 125°C
  • bool hasAlarm() função retorna verdadeiro se o dispositivo tiver uma condição de alarme quando a temperatura excede a alta & ajuste de temperatura de alarme baixa.

função retorna verdadeiro se o dispositivo tiver uma condição de alarme quando a temperatura excede a alta

admin

Deixe uma resposta

O seu endereço de email não será publicado.

lg