0
КОРЗИНА
0 ТОВАРА
 Датчик температуры DS18B20+ для Arduino ардуино

Датчик температуры DS18B20+

Требует только один порт для связи. Подробнее...
Модификация
Скоро в продаже Артикул: # 36
140 ₽
Возможен безналичный расчёт для юридических лиц при оформлении заказа
Сообщить о поставке на e-mail:
{{ status }}
  • Доставка товаров по России, Белоруссии, Казахстану
  • Возможен безналичный расчёт для юридических лиц при оформлении заказа
Количество:
Перейти в корзину и оформить заказ.
Telegram
WhatsApp
Обсудить вопросы приобретения, не технические!
*Доступно общение только текстовыми сообщениями, звонки и аудио сообщения не обслуживаются
Онлайн
Описание товара
Подробное описание товара

Общие сведения

Датчик температуры DS18B20+ — позволит измерять температуру окружающей среды.

Характеристики

  • Диапазон измеряемой температуры: −55… 125 °C
  • Напряжение питания: от 3 В до 5,5 В
  • Точность: ±0,5°C (в пределах −10… 85 °C)
  • Потребляемый ток при опросе: 1 мА

Подключение

Для удобства подключения к Arduino воспользуйтесь Trema ShieldTrema Power ShieldMotor Shield или Trema Set Shield.

  • Красный — 5V;
  • Черный — GND;
  • Желтый — любой цифровой вывод Arduino;

Сигнальный провод (жёлтый) необходимо соединить с проводом питания (красный) через резистор 4.7кОм. При подключении только одного датчика можно воспользоваться резистором на 10кОм (в любом удобном Вам формате: стандартный или для макетирования).

Подробнее о датчике

Для работы с модулем предлагаем воспользоваться библиотекой OneWhire.

Подробнее про установку библиотеки читайте в нашей инструкции..

Примеры

Можно использовать готовую  библиотеку iarduino_DS18XXX, для работы с датчиками температуры: «DS18S20», «DS18B20», «DS1822».

Или без нее, примеры ниже.

Вывод адреса, модели, температуры в монитор последовательного порта.

#include <OneWire.h>                          // подключаем библиотеку для работы с интерфейсом OneWire
OneWire  ds(2);                               // Создаём объект с именем ds, и указанием пина, к которому подключен датчик

void setup(void) {
  Serial.begin(9600);                         // инициируем передачу данных в монитор последовательного порта на скорости 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)) {                    // если функция принимает значение false, значит
    Serial.println("No more addresses.");     // больше устройств не найдено. Выводит в монитор порта сообщение об этом.
    Serial.println();                         // добавляем символ новой строки
    ds.reset_search();                        // функция начинает новый поиск устройства.
    delay(250);                               // задержка 250 мсек
    return;
  }
  Serial.print("ROM =");                      // выводим текст в монитор порта. "ROM" - это адрес устройства
  for ( i = 0; i < 8; i++) {                  // запускаем цикл
    Serial.write(' ');                        // между значениями добавляем пробел
    Serial.print(addr[i], HEX);               // в монитор порта побайтово выводим адрес устройства в 16-ричной кодировке
  }
  if (OneWire::crc8(addr, 7) != addr[7]) {    // выполяем проверка контрольной суммы CRC
    Serial.println("CRC is not valid!");      // если контрольная сумма не верна - отправляем в монитор порта сообщение об этом
    return;
  }
  Serial.println();                           // добавляем символ новой строки
  switch (addr[0]) {// Модель датчика температуры                                       Флаг типа модуля                В данном блоке проверяем значение старшего байта полученного адреса и по нему определяем модель модуля
    case 0x10:          Serial.println("  Chip = DS18S20");                             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, 0);                          // отправка команды выполнить конвертацию
  delay(1000);                                // задержка в 1 сек (для выполнения конвертации)
  present = ds.reset();                       // флаг сброса шины перед приёмом данных с модуля
  ds.select(addr);                            // указываем устройство, с которым далее будет работать код
  ds.write(0xBE);                             // считываем значение из scratchpad-памяти модуля
  Serial.print("  Data = ");                  // в монитор порта выводим текст "Значение"
  Serial.print(present, HEX);                 // выводим в монитор порта значение с модуля, в 16-ричной кодировке
  Serial.print(" ");                          // добавляем символ новой строки
  for ( i = 0; i < 9; i++) {                  // запускаем цикл считывания 9 байт информации с модуля
    data[i] = ds.read();                      // побайтовое чтение значений с модуля
    Serial.print(data[i], HEX);               // выводим в монитор порта значение байта, считанного с модуля
    Serial.print(" ");                        // между значениями добавляем пробел
  }
  Serial.print(" CRC=");                      // выводим в монитор порта текст CRC (контрольная сумма)
  Serial.print(OneWire::crc8(data, 8), HEX);  // выводим в монитор порта значение CRC
  Serial.println();                           // добавляем символ новой строки
  int16_t raw = (data[1] << 8) | data[0];     // конвертация значения температуры в 16-битный тип данных
  if (type_s) {                               // если подключена модель DS18S20
    raw = raw << 3;                           // тогда сдвигаем значение на 3 влево для получения 12-битного разрешения точности температуры
    if (data[7] == 0x10) {                    // если указанный бит совпадает с условием, то
      raw = (raw & 0xFFF0) + 12 - data[6];    // пересчитываем сырое значение
    }
  } else {                                    // для всех остальных моделей
    byte cfg = (data[4] & 0x60);              // для задания разрешения вводится переменная (по умолчанию установлено 12-битное разрешение)
    if (cfg == 0x00) raw = raw & ~7;          // если значение переменной и указанного бита совпадают, тогда устанавливается 9-битное разрешение точности
    else if (cfg == 0x20) raw = raw & ~3;     // если значение переменной и указанного бита совпадают, тогда устанавливается 10-битное разрешение точности
    else if (cfg == 0x40) raw = raw & ~1;     // если значение переменной и указанного бита совпадают, тогда устанавливается 11-битное разрешение точности
  }
  celsius = (float)raw / 16.0;                // переводим значения в градусы Цельсия
  fahrenheit = celsius * 1.8 + 32.0;          // переводим значения в градусы Фаренгейта
  Serial.println("  Temperature = ");         // выводим в монитор порта текста Температура
  Serial.print(celsius);                      // выводим значения в градусах Цельсия
  Serial.println(" Celsius, ");               // выводим в монитор порта текста "градусы Цельсия"
  Serial.print(fahrenheit);                   // выводим значения в градусах Фаренгейта
  Serial.println(" Fahrenheit");              // выводим в монитор порта текста "градусы Цельсия"
}

В мониторе порта вы можете наблюдать:

  • ROM - адрес устройства на шине OneWire;
  • Chip - название модуля;
  • Data - сырое значение с модуля
  • Temperature Celsius - температура в градусах Цельсия;
  • Temperature Fahrenheit - температура в градусах Фаренгейта;

Комплектация

  • 1х датчик температуры DS18B20+;

Ссылки

Товары
Первой необходимости и другие вещи, которые могут пригодиться!
В наличии
Цифровой термометр (Trema-модуль): Измеряет температуру окружающей среды. Подробнее
259
В наличии
312
В наличии
356
Скоро в продаже
146
Скоро в продаже
Датчик кислотности жидкости (pH-метр) с дисплеем, RS485 / Modbus: Датчик имеет гальваническую развязку и дисплей Подробнее
4590
В наличии
Датчик касания Roborace: Сенсор для определения препятствия путём физического контакта машинки Roborace с преградой Подробнее
390
Скоро в продаже
Щуп pH-метра, BNC: Подробнее
1490
В наличии
21
В наличии осталось 3 шт.
762
В наличии
239
В наличии
Датчик газа MQ-2 - широкого спектра газов (Trema-модуль): Для обнаружения дыма и углеводородногых газов Подробнее
316
В наличии
1890
Скоро в продаже
Датчик температуры DS18B20+: Требует только один порт для связи. Подробнее
140
Скоро в продаже
Бесконтактный датчик уровня жидкости XKC-Y25-V (100 см): Сенсор для измерения уровня жидкости без физического соприкосновения Подробнее
640
Или перейти в корзину и оформить заказ.
Гарантии и возврат Используя сайт Вы соглашаетесь с условями
Есть вопрос?