DS18B20 — это цифровой датчик, который применяется для измерения температуры (диапазон -55 °C до 125 °C), а также обладает программируемой уникальной точностью (до 12 бит).
Данное устройство способно контролировать и регулировать степень нагретости какого-либо материала, вещества и т.п. в технологическом процессе, обеспечивая тем самым его безопасность.
Датчик DS18B20: схема построения
Прибор DS18B20 имеет сразу 3 ключевых корпуса:
- Сторона ТО-92;
- Стенка SO-150mil;
- Корпус uSOP.
Если говорить о внутренней структуре, то следует рассмотреть небольшую микросхему, которая представлена на рисунке:
Контроллер влажности и температуры STC 3028 обзор настройка подключение
Данная микросхема свидетельствует о наличии сразу нескольких ключевых модульных блоков в строении DS18B20, отвечающих за механизм правильного действия устройства.
Итак, начать стоит с блока «POWER SUPPLY SENSE» он обеспечивает полное питание для функционирования всей системы. Помощником «POWER SUPPLY SENSE» является юнфер «PARASIT POWER CIRCUIT», способный ,в случае необходимости, взять на себя функцию распорядителя питания.
К еще одному ключевому элементу в структуре термодатчика следует отнести «64-BITROM AND 1-WIREPORT». Это модуль структуры, отвечающий за хранение уникального кода устройства и передачу этого кода во внутреннюю память DS18B20 «SCRATCHPAD». «SCRATCHPAD», в свою очередь, взаимодействуя с регистрами «MEMORY CONTROL LOGIC» и «1-Wire», подает сигнал связи следующим принципиально-важным блокам датчика:
- «TEMPERATURE SENSOR»(система, предназначенная для считывания преобразованных показателей температур);
- «CONFIGURATON REGISTER»(структура, отвечающая за настройку уникальной программируемой точности, которая варьируется от 9 бит до 12 или, если рассматривать градусы Цельсия, от 0.5 °C до 0.0625 °C.);
- «8-BIT CRC GENERATOR»(система, предназначенная сугубо для защитной функции);
- «ALARM HIGH TRIGGER» (блок, ограничивающий нижние пределы температуры DS18B20);
- «ALARM LOW TRIGGER» (система, ограничивающая верхние пределы температуры DS18B20).
Подключение датчика DS18B20
Подключение датчика DS18B20, как правило, происходит двумя-тремя простыми способами. Мы рассмотрим эти способы на примере подключений DS18B20 к плате Arduino и esp8266.
Подключение датчика DS18B20 к Arduino
Начнем с прямого подключения единичного датчика к Arduino:
Для начала необходимо прикрепить устройство непосредственно к плате Arduino: поэтому подаем «5V» к выводу «Vdd» устройства. Таким же способом связываем друг с другом выводной «GND». Затем срединный датчик DS18B20 фиксируем на каком-либо выходном регистре (по желанию). Допустим, это будет регистр «D2».
Подключение вывода данных «DQ» необходимо производить только после того, как вы записали номерной код Arduino на скетч. Кроме того, очень важным аспектом, о котором необходимо сказать, является присутствие номинального резистора «4,7k», который располагается между линиями устройства и блоками питания. Отметим, что данный резистор предназначен для обеспечения полного функционирования (то есть без сбоев) линий термодатчика.
Теперь перейдем к рассмотрению подключения несколькими датчиками DS18B20 к плате Arduino:
Мы возьмем в пример ситуацию с 5-ю датчиками DS18B20. Итак, как мы видим, все 5 датчиков в шине подсоединены параллельным образом, при этом, они стягиваются номинальным резистором «4,7k». Таким образом, действие платы Arduino будет определяться уникальным и точным кодом каждого из этих 5-ти датчиков.
Пришла очередь третьего способа подключения DS18B20 к плате Arduino при помощи паразитного питания:
В данном случае очевидно, что датчик/датчики принимает/принимают импульс линейных данных датчика, которые расположены между блоками «Vdd» и «GNG». А существенную роль и здесь играет все тот же номинальный резистор «4,7k», который не только стягивает линейные данные датчика, но и обеспечивает функционирование всей “буферной” системы и конструкции.
Подключение датчика DS18B20 к esp8266
Теперь перейдем к обсуждению подключения датчика DS18B20 к esp8266. Начнем, пожалуй, с прямого подключения:
Резистор 1 (R1) определяет сопротивление не более 2,2-х КОм. При наличии такого резистора, срединный вывод “DATA” прикрепляется к кабельному блоку, либо «GND», либо «VCC», а также соединяется с центральной трубкой, что и обеспечивает качественное: прочное, герметичное подключение.
Наконец, поговорим о последнем способе подключения датчика DS18B20 к esp8266:
Данный способ осуществляется с помощью номинального резистора «4,7k», который подтягивает всю систему к питанию, и с помощью трех контактов вывода датчика DS18B20, обеспечивающих, в свою очередь, подключение линий «DQ» к срединному «DATA».
Характеристики датчика DS18B20
Температурный датчик DS18B20 имеет множество особенностей не только в своей конструкции, но и в своей эксплуатации. Вот главные из них:
- Измеритель DS18B20 питается напряжением, величина которого варьируется от 3-х Вольт до 5,5 Вольт;
- Термодатчик DS18B20 способен измерять значения температур в диапазоне от -55 °C до 125 °C;
- Пропускная способность датчика DS18B20 доходит до отметки 12 бит;
- Величина погрешности прибора DS18B20 составляет (+,- ) 0,5 ° C;
- Медленное перемещение измерителя DS18B20 относительно любого устройства не превышает единицы.
Взаимосвязь между разрешением датчика DS18B20 и температурой
На самом деле, рассмотреть взаимосвязь между разрешением прибора DS18B20 и температурой можно с помощью следующей картинки:
Однако, предлагаю сделать это более детально.
Начнем с девяти-битного разрешения. При этой величине температура может принимать следующие значения:
Таким образом, при разрешении 9 бит можно сделать 10.5 измерений/сек для вышеназванных температурных величин.
При расширении 10 бит температура принимать такие величины:
- 0.00 °C;
- 0.25 °C;
- 0.50 °C;
- 0.75 °C;
Можно сделать вывод, что при разрешении 10 бит можно сделать 5.3 измерений/сек для вышеназванных температурных величин.
При разрешении 11 бит температура имеет возможность принять следующий вид:
- 1) 0.00 °C;
- 2) 0.125 °C;
- 3) 0.25 °C;
- 4) 0.375 °C;
- 5) 0.50 °C;
- 6) 0.625 °C;
- 7) 0.75 °C;
- 8) 0.875 °C.
Таким образом, при разрешении 11 бит можно сделать 2.6 измерений/сек для вышеназванных температурных величин.
При разрешении 12 бит температура может принимать следующие значения:
- 1) 0,00 °C;
- 2) 0,0625 °C;
- 3) 0,125 °C;
- 4) 0,1875 °C;
- 5) 0,25 °C;
- 6) 0,3125 °C;
- 7) 0,375 °C;
- 8) 0,4375 °C;
- 9) 0,50 °C;
- 10) 0,5625 °C;
- 11) 0,625 °C;
- 12) 0,6875 °C;
- 13) 0,75 °C;
- 14) 0,8125 °C;
- 15) 0,875 °C;
- 0,9375 °C.
Это говорит о том, что при расширении 12 бит можно сделать 1.3 измерений/сек для вышеназванных температурных величин.
Основные функциональные способности датчика DS18B20
Термодатчик DS18B20 имеет в своем функционале сразу несколько важнейших команд:
- Навык преобразования температур. (Данная способность может поместить температуру в двух-байтный блок оперативной памяти, после чего датчик переходит в состояние низкого потребления. В этом состоянии DS18B20 считывает код данных и определяет режим состояния процесса);
- Команда записи памяти. (Она дает возможность сохранить три байта данных в оперативной памяти DS18B20. При это, следует уточнить, что ведущий прибор перебрасывает информацию с наименьшего бита);
- Способность чтения памяти. (Применяется для прочтения оперативной памяти памяти прибора. Сброс данных осуществляется с самых наименьших битов или байтов, при этом, в случае необходимости, эта команда способна прекратить сброс данных);
- Команда копирования памяти. (Она помогает скопировать все данные внутренней памяти устройства в блок EEPROM, что приводит к осуществлению в дальнейшем питательной способности системы);
- Способность перезагрузки EEPROM. (Дает возможность регистрам передохнуть, перезагружая все значения на блоках. Кроме того, только после перезагрузки DS18B20 происходит процесс прочтения оперативной памяти памяти прибора и сообщается о ее состоянии).
Где можно купить датчик DS18B20?
Термодатчик DS18B20 является достаточно востребованным устройством в наше время. Если вы думаете, что найти его будет сложно, а цена вас испугает, то вы сильно ошибаетесь. Я советую вам приобрести данный прибор на Aliexpress. Там вы найдете DS18B20 и его аналоги по смешной цене, получите быструю, а самое главное качественную доставку.
Если в статье Вы не всё поняли про этот датчик, рекомендую посмотреть видео:
Источник: www.ruselectronic.com
Электрика: Подключение нескольких датчиков к показометру температуры (лайфхак)
Коротко о сути: статья о том, как легко и просто подключить к показометру температуры с Алиэкспресс несколько датчиков и переключаться между ними.
Речь пойдет о вот таких показометрах, работающих с датчиком DS18b20
Показометры с АЛИ
Комплект поставки: один прибор, один датчик.
Как я писал выше, работают они от датчиков DS18b20, преимущество которых в том, что значение температуры передается в цифровом виде. Обычно, по правилам эти датчики объединяются в общую шину и показания идут по ней, а показывающее устройство выдает на экран значение температуры, соответствующее конкретному датчику исходя из его индивидуального номера, который прошивается в датчик при изготовлении.
Типовая схема подключения нескольких DS18b20 к одному показывающему устройству.
Я же предлагаю просто коммутировать шину данных к одному показометру через переключатель, а датчики подключить параллельно.
Собственно в этом и есть лайфхак, ибо схема работает.
С обратной стороны прибор выглядит вот так:
Показометр, вид сзади
Полный размер
Что из себя представляет сам датчик DS18b20…
… и его распиновка:
Предлагаемая мной схема подключения:
Полный размер
Все просто и даже примитивно, собрать может любой, кто хоть как то умеет держать паяльник твердой рукой. Познаний в программировании не требуется.
Я делал эту штуку для измерения температуры внутри/снаружи автомобиля, поэтому мне достаточно двух датчиков.
Если же вспомнить о существовании галетных переключателей, скажем на 5 положений 1 направление…
Галетный переключатель
… то легко можно к одному показывающему прибору подключить 5 датчиков. Например, температуру внутри/снаружи, температуру масла АКПП, температуру ОЖ и чегонибудь еще. Главное чтобы показывающий прибор смог запитать такое количество датчиков по току… Ну, тут надо пробовать, если что можно подкинуть на датчики внешнее питание 5В.
Я уже как то писал в этом блоге статью по изготовлению самих датчиков, поэтому сильно на них останавливаться не буду. В этот раз сделал вот такие:
Полный размер
Кабельные наконечники. Внутри датчики DS18b20 с термопастой. Герметизация на герметик и термоусадку.
Ну и видео конечного результата как это работает. 20 секунд:
Видно, что после переключения показометр немножко впадает в ступор, на полсекундочки, но по моему это не критично.
Источник: www.drive2.ru
KY-015 — Модуль с датчиком температуры и влажности DHT11. Подключение к Arduino.
Для Arduino существует большое количество датчиков и модулей измерения температуры. Модули KY-001, KY-013 мы уже рассмотрели в предыдущих уроках. Сегодня поговорим о модуле KY-015, который оснащен датчиком DHT11, он может измерять не только температуру, но и влажность воздуха.
Описание модуля KY-015 с датчиком DHT11.
Модуль датчика температуры и влажности KY-015 обеспечен цифровым последовательным интерфейсом для измерения влажности и температуры и передачи показаний Arduino.
Технические характеристики KY-015.
Модуль KY-015 состоит из цифрового датчика влажности и температуры DHT11 и резистора 1 кОм. DHT11 использует внутренний термистор и емкостной датчик влажности для определения условий окружающей среды, а внутренний чип отвечает за преобразование показаний в последовательный цифровой сигнал.
Диапазон измерения влажности
Точность измерения влажности
Разрешение измерения влажности
Диапазон измерения температуры
От 0 ºC до 50 ºC
Точность измерения температуры
Разрешение измерения температуры
Дальность передачи сигнала
Схема подключения модуля KY-015 с датчиком DHT11 к Arduino UNO.
Схема подключения модуля KY-015 с датчиком DHT11 к Arduino NANO.
Подключаем линию питания (посередине) и землю (-) к +5 и GND соответственно. Сигнал (S) подключаем к контакту 2 на Arduino.
Пример скетча KY-015 для Arduino без использования библиотек.
int DHpin = 2; // pin ввода/вывода byte dat[5]; byte read_data() < byte i = 0; byte result = 0; for (i = 0; i < 8; i++) < while (digitalRead(DHpin) == LOW); // ждать 50 микрсек. delayMicroseconds(30); //Продолжительность высокого уровня оценивается для определения того, являются ли данные » 0 » или «1» if (digitalRead(DHpin) == HIGH) result |= (1 return result; > void start_test() < digitalWrite(DHpin, LOW); //Потяните вниз шину, чтобы отправить сигнал запуска delay(30); //Задержка превышает 30 мс, так что DHT 11 может обнаружить сигнал запуска digitalWrite(DHpin, HIGH); delayMicroseconds(40); //Дождитесь ответа DHT11 pinMode(DHpin, INPUT); while(digitalRead(DHpin) == HIGH); delayMicroseconds(80); // DHT11 реагирует, потянув шину низко на 80 микрсек. if(digitalRead(DHpin) == LOW) delayMicroseconds(80); //DHT11 подтянут 80 микрсек, чтобы начать отправку данных; for(int i = 0; i < 5; i++) //При получении данных о температуре и влажности контрольные биты не учитываются; dat[i] = read_data(); pinMode(DHpin, OUTPUT); digitalWrite(DHpin, HIGH); //После завершения отпускаем шины данных, ожидая, когда хост начнет следующий сигнал >void setup() < Serial.begin(9600); pinMode(DHpin, OUTPUT); >void loop() < start_test(); Serial.print(«Humdity = «); Serial.print(dat[0], DEC); //Отображает целочисленные биты влажности; Serial.print(‘.’); Serial.print(dat[1], DEC); //Отображает десятичные знаки влажности; Serial.println(‘%’); Serial.print(«Temperature = «); Serial.print(dat[2], DEC); //Отображает целочисленные биты температуры; Serial.print(‘.’); Serial.print(dat[3], DEC); //Отображает десятичные знаки температуры; Serial.println(‘C’); byte checksum = dat[0] + dat[1] + dat[2] + dat[3]; if (dat[4] != checksum) Serial.println(«— Checksum Error!»); else Serial.println(«— OK»); delay(1000); >
Данный пример кода можно загрузить в Arduino и получать показания с датчика DHT11. Предварительно ничего настраивать и устанавливать не нужно. В мониторе порта мы увидим значения температуры и влажности с датчика DHT11.
Пример кода с использованием библиотеки «DHT sensor library».
Для данного примера нам понадобиться библиотека «DHT sensor library». Установить ее можно через менеджер библиотек, для этого переходим «Скетч -> Подключить библиотеку -> Управлять библиотеками…».
В строке поиска указываем «DHT11» и устанавливаем библиотеку «DHT sensor library». Для этого нажимаем на кнопку «Установка».
Для работы библиотеки «DHT sensor library» нужна библиотека «Adafruit_Sensor», которую можно скачать с сайта github или внизу урока, в разделе «Файлы для скачивания».
Скачать библиотеку с github можно выбрав «Code -> Download ZIP».
После чего в Arduino IDE выбираем «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку…».
Выбираем скаченный архив с библиотекой.
С библиотекой устанавливается 2 примера. Один из которых мы будем использовать в нашем уроке. Для этого переходим в меню «Файл -> Примеры -> DHT sensor library -> DHTtest».
В данном примере нам нужно указать пин подключения модуля. Также раскомментировать строчку подключения нашего датчика.
#include «DHT.h» #define DHTPIN 2 // контакт, к которому подключаемся // и расскомментировать строчку датчика: #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) // инициализируйте датчик DHT DHT dht(DHTPIN, DHTTYPE); void setup() < Serial.begin(9600); Serial.println(«DHTxx test!»); dht.begin(); >void loop() < delay(2000); // считывание данных температуры и влажности float h = dht.readHumidity(); // температура в Цельсиях: float t = dht.readTemperature(); // температура в Фаренгейте: float f = dht.readTemperature(true); // проверяем, корректно ли прочитались данные, // и если нет, то пробуем еще раз: if (isnan(h) || isnan(t) || isnan(f)) < Serial.println(«Failed to read from DHT sensor!»); // «Не данных с DHT!» return; >// рассчит теплового индекса; float hi = dht.computeHeatIndex(f, h); Serial.print(«Humidity: «); // «Влажность: » Serial.print(h); Serial.print(» %t»); Serial.print(«Temperature: «); // «Температура: » Serial.print(t); Serial.print(» *C «); Serial.print(f); Serial.print(» *Ft»); Serial.print(«Heat index: «); // «Тепловой индекс: » Serial.print(hi); Serial.println(» *F»); >
Также не забудьте, чтобы строчки подключения других датчиков были закомментированы.
Загружаем пример и смотрим в мониторе порта.
Как видим все работает отлично и показания выводятся. При этом значения достаточно стабильные. Точность показаний я не стал проверять, как делал с модулем KY-013. Это вы можете сделать самостоятельно.
Вывод про модуль KY-015.
В связи с тем, что модуль оснащён датчиком DHT11, показания температуры и влажности не очень точные, но при этом применять его для измерения температуры и влажности в бытовых условиях можно. Например, настроить автоматическое включения вытяжки в ванной, данного модуля будет достаточно и не стоит покупать более дорогие аналоги.
Понравился Урок KY-015 — Модуль с датчиком температуры и влажности DHT11 ? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Источник: arduino-tex.ru