Информационный портал MSEVM



Содержание > Arduino > Набор для Arduino "37 SENSOR" > 01. Temperature sensor module DS18B20


Описание

  • Напряжение питания в пределах 3,0 В - 5,5 В
  • Диапазон измерения температуры -55 - +125 °C
  • Каждое устройство имеет уникальный серийный код длиной 64 разряда
  • Возможность подключения нескольких датчиков через одну линию связи
  • Тревожный сигнал передает данные об адресе датчика, у которого температуры вышла за заданные пределы

Подключение к ардуино

Устанавливаем библиотеку OneWire, заливаем данный код в ардуино. Код:

/* DS18S20 Temperature Sensor Module sample project
*/
#include  <OneWire.h>
int inPin=10; // define D10 as input pin connecting to DS18S20 S pin
OneWire ds(inPin); 
 
void setup(void) {
  Serial.begin(9600);
}
 
void loop(void) {
  int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
 
  if ( !ds.search(addr)) {
      ds.reset_search();
      return;
  }
 
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); 
 
  delay(1000);  
 
 
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);  
 
 
 
  for ( i = 0; i < 9; i++) { 
    data[i] = ds.read();
  }
  Serial.print("Temperature: ");
  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  
  if (SignBit)
  {
    TReading = (TReading ^ 0xffff) + 1;
  }
  Tc_100 = (6 * TReading) + TReading / 4; 
  Whole = Tc_100 / 100; 
  Fract = Tc_100 % 100;
  if (SignBit)
  {
     Serial.print("-");
  }
  Serial.print(Whole);
  Serial.print(".");
  if (Fract < 10)
  {
     Serial.print("0");
  }
  Serial.print(Fract);
  Serial.print(" C\n");
}




Теперь открываем монитор порта, куда будет выводиться значение температуры.

Обсуждение: http://msevm.com/forum/index.php?topic=7688.0





e-mail рассылки
Радиолюбитель
Подписаться письмом

















afb44aa5




Яндекс цитирования Rambler's Top100