(SKU:RB-02S020)DS18B20 Temperature Sensor

From ALSRobot-Wki
Jump to: navigation, search


P-333.jpg

Contents

Product overview

In 2014, the latest DS18B20 digital temperature sensor produced by DALLAS company in the United States a bus digital temperature sensor DS18B20 components the temperature measurement range and 55 ℃ ~ + 125 ℃, the inherent temperature 0.5 ℃, resolution to support more networking capabilities, multiple DS18B20 can be in only three lines in parallel, realize multi-point temperature measurement, measurement results in 9 ~ 12 digital quantity way serial transmission. DS18B20 digital temperature sensor can be applied in all kinds of single chip microcomputer controller, especially on the Arduino controller is more simple, readily available library function call, can complete temperature measurement, by 3 p sensor cable received special sensor Arduino expansion board, can easily achieve interactive work related to the environmental temperature perception.

specification

  1. Type: digital module (a bus interface)
  2. Can be used to detect the ambient air temperature
  3. Temperature measurement range:-55℃~+125℃
  4. Accuracy of measurement:±0.5 °C(-10 °C to +85 °C)
  5. 9 ~ 12 bit A/D conversion accuracy
  6. resolution of the:0.5℃
  7. power supply voltage:3.3V~5V

Method of use

Pin definition

  • S:output signal
  • +:(VCC)
  • -:(GND)

Application of routine

We use the Arduino controller to do a test to use hardware equipment as follows:

  1. Arduino controller×1
  2. Arduino Sensor extension plate×1
  3. DS18B20 temperature sensor module×1
  4. General 3 p sensor cable×1
  5. USB Data communication line×1
As shown, the use of sensor cable to expand DS18B20 temperature sensor is connected to the Arduino board of digital interface. Download the first library files to your Arduino hardware \ libraries under the installation directory. And then download the compiled code to the Arduino, could be on the serial port assistant window displays the current value of measured.

library files to download:DS18B20库文件

sample1

physical wiring diagram

Ds18b20jiexiantu01.jpg
#include <OneWire.h>
#include <DallasTemperature.h>
 
// 定义DS18B20数据口连接arduino的2号IO上
#define ONE_WIRE_BUS 2
 
// 初始连接在单总线上的单总线设备
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
 
void setup(void)
{
  // 设置串口通信波特率
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");
 
  // 初始库
  sensors.begin();
}
 
void loop(void)
{ 
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // 发送命令获取温度
  Serial.println("DONE");
   
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));  
}
 

sample code2

physical wiring diagram

Ds18b20jiexiantu02.jpg
#include <OneWire.h>
OneWire  ds(10);  // 连接arduino10引脚
 
void setup(void) {
  Serial.begin(9600);
}
 
void loop(void) {
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
   
  if ( !ds.search(addr)) {
    Serial.println("No more addresses.");
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
  }
   
  Serial.print("ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }
 
  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return;
  }
  Serial.println();
  
  // the first ROM byte indicates which chip
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end
   
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
   
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad
 
  Serial.print("  Data = ");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();
 
  // convert the data to actual temperature
 
  unsigned int raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // count remain gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
    // default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");   
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");
}
 

Application effect

Can download program through the Arduino software serial port to see temperature DS18B20 detection environment.

Products related to recommend

购买地址: [1]

Personal tools
Namespaces

Variants
Actions
Navigation
Tools