Ds18b20 sensor de temperaura digital - Arduino Esp8266

Imagem: http://bildr.org


O sensor DS18B20 feito pela Dallas faz a leitura de temperaturas entre -55°C e +125°C com precisão de 0,5°C e seu encapsulamento é ideal para utilização em protoboard, placas de teste ou circuitos definitivos. Realize medições de temperatura de forma precisa utilizando apenas um pino do controlador com o sensor de temperatura DS18B20.

Características Técnicas:




Efetue a montagem conforme o esquema abaixo, observe a pinagem, a ligação invertida causará a queima do sensor. Conecte o pino de sinal ao pino 2 do seu Arduino. Está ligação requer um resistor de pull-up 4.7k entre o pino de alimentação e o pino de sinal.



Esquema de ligação - Imagem: http://bildr.org


Código

Este código é uma cópia reduzida do divulgado no site oficial do projeto Arduino. Copie e cole o código em sua IDE e faça o upload para o seu Ardunio. Após o carregamento abra o monitor serial e observe que ele inicia o envio da temperatura ambiente. Não se esqueça de fazer o download da biblioteca OneWire neste link: https://github.com/PaulStoffregen/OneWire



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <OneWire.h>

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2

void setup(void) {
Serial.begin(9600);
}

void loop(void) {
float temperature = getTemp(); //will take about 750ms to run
Serial.println(temperature);

}


float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end

delay(750); // Wait for temperature conversion to complete

byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad


for (int i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB); //using two's compliment
float TemperatureSum = tempRead / 16;

return TemperatureSum;

}




Autor: http://bildr.org/blog/wp-content/uploads/2011/06/DS18S20-hookup.png
Colaboração Loja Virtual: Robohelp

Se você quer aprender mais sobre Eletrônica, 
Microcontroladores, Arduino, Raspberry Pi e ESP8266

Visite nossa Biblioteca Virtual completa para download gratuito clicandoaqui...


Comentários