DS18B20: Функции датчика температуры

  • Датчик DS18B20 может измерять температуру от -55°C до 125°C с регулируемым разрешением от 9 до 12 бит.
  • Он может получать питание через свой вывод данных или использовать внешний источник для большей стабильности.
  • Он позволяет подключать несколько датчиков к одной шине, каждый из которых идентифицируется своим уникальным 64-битным адресом.
  • Он совместим с Arduino с использованием библиотек OneWire и DallasTemperature.

дс18б20

El Датчик DS18B20 приобрел популярность благодаря своей надежности и универсальности для измерения температуры. Он широко используется в проектах электроники с микроконтроллерами, такими как Arduino, PIC или ESP8266, благодаря простоте использования и возможности подключения нескольких датчиков к одной шине, что делает его идеальным вариантом как для любителей, так и для профессионалов.

Одной из главных особенностей этого датчика является то, что он использует только один кабель для передачи данных по протоколу 1-Wire, что облегчает его интеграцию в самые разнообразные проекты. Кроме того, DS18B20 может работать в двух различных режимах мощности, что делает его еще более гибким. В этой статье мы подробно объясним, как это работает, как можно подключить несколько датчиков и как оптимизировать измерения температуры.

Особенности DS18B20

DS18B20 производится компанией Максим Интегрированный, среди прочих, и представлен в различных инкапсуляциях, формат TO-92 (аналогично многим транзисторам) один из самых распространенных. Кроме того, его также можно найти в герметичном и водонепроницаемом исполнении, что делает его идеальным для измерения температуры в суровых или влажных условиях.

Среди наиболее примечательных особенностей DS18B20 можно выделить:

  • Диапазон температур, который он может измерять, охватывает от от -55°С до 125°С, что делает его пригодным для промышленного и бытового применения.
  • Su программируемое разрешение может варьироваться между 9 и 12 бит, что позволяет осуществлять точную настройку в соответствии с потребностями каждого проекта.
  • Каждый датчик имеет уникальный адрес 64 биты, что облегчает идентификацию нескольких датчиков, подключенных к одной шине.

Режимы мощности DS18B20

распиновка ds18b20

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

Питание через вывод данных (паразитное питание)

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

Однако важно отметить, что для его корректной работы необходимо соединить контакты GND y VDD на берегу. Дополнительно желательно включить транзистор МОП-транзистор что помогает в ситуациях, когда для преобразования температуры требуется больший ток.

Питание от внешнего источника

Самый распространенный и рекомендуемый способ питания DS18B20 — через внешний источник, подключенный к контакту VDD. Этот метод гарантирует стабильное напряжение независимо от трафика данных по шине 1-Wire, что выгодно для проектов, требующих постоянной точности.

Как использовать DS18B20 с Arduino

соединение с ардуино

Для работы с этим датчиком на платформе Arduino необходимо использовать две фундаментальные библиотеки: -Wire y ДалласТемпература. Эти библиотеки облегчают общение и позволяют легко выполнять считывание и настройку.

Библиотека OneWire: Обеспечивает связь по протоколу 1-Wire. Его можно скачать с сайта Репозиторий GitHub.

Книжный магазин ДалласаТемпература: Он содержит функции, необходимые для считывания температуры и настройки датчика. Загрузите его с ссылку.

После того, как вы установили обе библиотеки, вы можете без проблем приступить к работе с датчиком. Ниже мы объясним несколько примеров того, как считывать температуру и как работать с несколькими датчиками.

Пример 1: Показания температуры с помощью одного датчика

Чтобы выполнить измерение температуры с помощью одного DS18B20, подключенного к Arduino, базовая схема включает в себя простое подключение вывода данных датчика к цифровой контакт 2 Arduino вместе с резистором Натяжение 4.7 кОм.

Это основной код для чтения температуры датчика:

#include <OneWire.h>  #include <DallasTemperature.h>  OneWire  ds(2);  DallasTemperature sensors(&ds); void setup() {   Serial.begin(9600);   sensors.begin(); } void loop() {   sensors.requestTemperatures();   float tempC = sensors.getTempCByIndex(0);   Serial.print("Temperatura= ");   Serial.print(tempC);   Serial.println(" °C");   delay(1000); }

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

Пример 2. Использование нескольких датчиков на разных контактах

При работе с более чем одним DS18B20 существует два способа подключения датчиков. Первый — это назначение каждому датчику отдельного цифрового контакта Arduino. В этом случае для каждого датчика потребуется подтягивающий резистор сопротивлением 4.7 кОм.

Здесь мы покажем вам пример работы с двумя датчиками, подключенными к разным контактам:

#include <OneWire.h>  #include <DallasTemperature.h>  OneWire ds1(2); OneWire ds2(3);  DallasTemperature sensors1(&ds1); DallasTemperature sensors2(&ds2); void setup() {   Serial.begin(9600);   sensors1.begin();   sensors2.begin(); } void loop() {   sensors1.requestTemperatures();   float temp1 = sensors1.getTempCByIndex(0);   sensors2.requestTemperatures();   float temp2 = sensors2.getTempCByIndex(0);   Serial.print("Temperatura 1 = ");   Serial.print(temp1);   Serial.print(" °C   Temperatura 2 = ");   Serial.println(temp2);   delay(1000); }

Пример 3: Несколько датчиков, подключенных к одному контакту

Другая возможность подключения нескольких DS18B20 в проекте — использование для всех одного контакта и одной и той же шины 1-Wire. При этом каждый датчик должен иметь свой уникальный идентификационный номер, присвоенный на заводе. Здесь мы объясним, как получить эти адреса, используя следующий код:

#include <OneWire.h> OneWire ds(2); void setup(void) {   Serial.begin(9600); } void loop(void) {   byte address[8];   if (!ds.search(address)) {     Serial.println("No more addresses.");     ds.reset_search();     delay(250);     return;   }   Serial.print("Address: ");   for (int i = 0; i < 8; i++) {     Serial.print(address[i], HEX);     if (i < 7) Serial.print(", ");   }   Serial.println();   delay(250); }

Если у вас есть адреса всех датчиков, вы можете прочитать конкретный датчик, используя его уникальный адрес. Следующий код показывает, как это сделать:

#include <DallasTemperature.h>  OneWire ds(2);  DallasTemperature sensors(&ds);  DeviceAddress sensor1 = {0x28, 0xFF, 0xCA, 0x4A, 0x5, 0x16, 0x3, 0xBD}; DeviceAddress sensor2 = {0x28, 0xFF, 0x89, 0x3A, 0x1, 0x16, 0x4, 0xAF};  void setup() {   Serial.begin(9600);   sensors.begin(); } void loop() {   sensors.requestTemperatures();   float temp1 = sensors.getTempC(sensor1);   float temp2 = sensors.getTempC(sensor2);   Serial.print("Temp sensor 1: ");   Serial.println(temp1);   Serial.print("Temp sensor 2: ");   Serial.println(temp2);   delay(1000); }

Плюсы этого метода в том, что вы экономите контакты на Arduino и можете параллельно подключить множество датчиков к одной и той же шине данных.

На этих примерах вы можете убедиться в универсальности и мощности датчика DS18B20. Его очень легко реализовать, и если вам нужно подключить несколько датчиков, у вас есть полная гибкость, позволяющая сделать это разными способами. DS18B20 — один из самых надежных датчиков для измерения температуры, а благодаря низкому энергопотреблению и простоте программирования он идеально подходит для всех типов проектов.

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


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.