Датчик температуры DS18B20 🌡️ KY-001

Содержимое файла в Serial Monitor

Введение

Датчик DS18B20 представляет собой цифровой термометр, который позволяет отслеживать окружающую температуру. Этот датчик имеет уникальный серийный номер и может быть подключен к одному шине вместе с другими датчиками DS18B20.

Технические характеристики:

  1. Диапазон входного напряжения: 3.0V до 5.5V.

  2. Диапазон измерения температуры: -55°C до +125°C, точность в диапазоне -10°C до +85°C ±0.5°C.

  3. Разрешение: 9-12 бит, преобразование в 12-битный цифровой формат за 750 миллисекунд.

Примечания по использованию:

  1. Не путать датчик DS18B20 с обычным транзистором.

  2. Убедиться в правильном подключении питания и заземления.

  3. На практике на шину не следует подключать слишком много датчиков. Учесть ограничения по длине шины для подключения датчиков.

Пример кода для тестирования DS18B20:

#include <OneWire.h>

OneWire ds(10); // подключение к выводу 10

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

void loop() {
  byte data[12];
  byte addr[8];

  if (!ds.search(addr)) {
    ds.reset_search();
    return;
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println("CRC недействителен!");
    return;
  }

  if (addr[0] != 0x28) {
    Serial.println("Устройство не принадлежит семейству DS18S20.");
    return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1); // запуск преобразования
  delay(1000);       // задержка 1 секунда

  ds.reset();
  ds.select(addr);
  ds.write(0xBE);    // чтение Scratchpad

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

  int Temp = (data[1] << 8) + data[0];
  Temp = Temp >> 4;
  Temp = Temp * 1.8 + 32; // преобразование в Фаренгейты

  Serial.print("Температура = ");
  Serial.println(Temp);
}