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:
- Chip: DS18B20 (datasheet);
- Tensão de operação: 3-5,5V;
- Faixa de medição: -55°C a +125°C;
- Precisão: ±0.5°C entre -10°C e +85°C;
- Encapsulamento: TO-92.
- Biblioteca: https://github.com/PaulStoffregen/OneWire
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
Se você quer aprender mais sobre Eletrônica,
Microcontroladores, Arduino, Raspberry Pi e ESP8266
Comentários
Postar um comentário