DS18B20 (DS18S20) – подключение к Arduino
#include <OneWire.h>
// OneWire DS18S20, DS18B20, DS1822 Temperature Example
//
// http://www.pjrc.com/teensy/td_libs_OneWire.html
//
// The DallasTemperature library can do all this work for you!
// http://milesburton.com/Dallas_Temperature_Control_Library
OneWire ds(10); // on pin 10 (a 4.7K resistor is necessary)
void setup(void) {
Serial.begin(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)) {
Serial.println(«No more addresses.»);
Serial.println();
ds.reset_search();
delay(250);
return;
}
Serial.print(«ROM =»);
for( i = 0; i < 8; i++) {
Serial.write(‘ ‘);
Serial.print(addr[i], HEX);
}
if (OneWire::crc8(addr, 7) != addr[7]) {
Serial. println(«CRC is not valid!»);
return;
}
Serial.println();
// the first ROM byte indicates which chip
switch (addr[0]) {
case 0x10:
Serial.println(» Chip = DS18S20″); // or old DS1820
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, 1); // start conversion, with parasite power on at the end
delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds. write(0xBE); // Read Scratchpad
Serial.print(» Data = «);
Serial.print(present, HEX);
Serial.print(» «);
for ( i = 0; i < 9; i++) { // we need 9 bytes
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(» «);
}
Serial.print(» CRC=»);
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();
// Convert the data to actual temperature
// because the result is a 16 bit signed integer, it should
// be stored to an «int16_t» type, which is always 16 bits
// even when compiled on a 32 bit processor.
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// «count remain» gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 — data[6];
}
} else {
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let’s zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93. 75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
Serial.print(» Temperature = «);
Serial.print(celsius);
Serial.print(» Celsius, «);
Serial.print(fahrenheit);
Serial.println(» Fahrenheit»);
}
Подключение датчика DS18B20 к Arduino
Датчик DS18B20 предназначен для измерения температуры. Датчик имеет влагозащищенный корпус, что позволяет использовать его в условиях дождя или же для измерения температуры жидкостей. Возможно также исполнение без герметичного корпуса.
Характеристики:
- Питание: 3 … 5,5 В постоянного тока
- Диапазон измеряемых температур: -55 … +125 °C от -10 до +85°C с точностью ±0,5°C
- Период измерений: 1 сек.
между измерениями
- Выходной сигнал: Цифровой
Датчик DS18B20 имеет всего 3 вывода:
GND – «Земля»
Vdd – Питание
Data – вывод данных
Возможна работа в режиме паразитного питания (без использования вывода Vdd), подробней об этом можно прочитать тут.
Подключение к Arduino:
Для подключения датчика нам необходимы:
- Любая Arduino-совместимая плата
- Резистор 4,7 Ком (для негерметичного исполнения)
- Компьютер с установленной средой Arduino IDE.
- USB кабель для подключения Arduino к персональному компьютеру
Принципиальная схема подключения компонентов:
Для негерметичного исполнения:
В некоторых датчиках в герметичном исполнении нагрузочные резисторы уже присутствуют, поэтому рекомендуется сначала проверить работоспособность датчика без резистора и только потом, если не заработает, добавить резистор номиналом около 4. 7 КОм в разрыв между сигнальным проводом и проводом питания, как на схеме выше.
Для герметичного или для датчика на модуле:
Скетч для Arduino:
Для считывания показаний с датчика необходимо использовать библиотеки*:
- OneWire
- DallasTemperature
*Библиотека Arduino – программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту. Библиотека содержит в себе различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими электронными компонентами.
Пример кода:
// Подключение библиотек
#include <DallasTemperature.h> #include <OneWire.h> // Определяем пин шины данных OneWire (можно выбрать любой свободный) #define ONE_WIRE_BUS 2 // Задаем пин шины данных OneWire OneWire oneWire(ONE_WIRE_BUS); // Указываем, что будем работать с температурным датчиком (по такому же принципу
// можно работать с любыми устройствами, поддерживающими OneWire) DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); sensors.begin(); }
void loop(void) { Serial.print("Запрос температуры..."); sensors.requestTemperatures(); // Посылаем команду для считывания температуры Serial.println("ГОТОВО"); Serial.print("Температура: "); Serial.println(sensors.getTempCByIndex(0)); // Индекс "0" означает, что мы работаем с первым
// устройством на шине, в нашем случае единственным delay(1000); }
DS18B20 подключение к Arduino: схемы, программирование датчика температуры
Одним из универсальных аппаратов управления по праву считается микроконтроллер. В отличие от своих аналоговых собратьев он способен не только действовать по строгим рамкам нескольких, железно заложенных конструкцией операций, но и изменять последовательности контролирующих импульсов в соответствии с внешними факторами. Конечно, в пределах установленной человеком программы.
Информация о событиях, происходящих вне блока управления, поступает к нему от подключенных датчиков. Последние, в зависимости от своей направленности, «чувствуют» изменения света во всех его проявлениях, возникновение и силу звука, состав атмосферы, вибрацию, давление или температуру.
Все перечисленное в комплексе, позволяет создавать на основе микроконтроллера сложные конечные автоматы, обслуживающие рутинные операции, связанные со всеми нишами жизни. Хорошим примером станут известные всем кондиционеры. Они не только включаются по времени или командам с пульта, но и контролируют при помощи термометра нагрев окружающего воздуха. При чрезмерном охлаждении включается повышение его температуры, при избытке тепла — вентиляция. Нормы, к которым приводится окружающая среда в автоматическом режиме, задаются человеком и могут в любое время изменены согласно его желаниям. Всю названую функциональность обеспечивает микроконтроллер.
Настоящее устройство выполняется не только в виде впаянных «намертво» компонентов конечных агрегатов, но и отдельными платами, доступными к приобретению разработчикам. Самыми распространенными моделями среди них можно назвать STM32, Raspberry PI и Arduino. Последние из списка, по комплексу своих характеристик, наиболее подходят для легкого создания самодельных и достаточно сложных систем логического контроля. Достигается это за счет широкой базы датчиков и релейных контуров доступных на рынке, изначально ориентированных на совместное использование с Ардуино.
В разрезе темы статьи, будет рассмотрен вопрос о работе сенсора DS18B20 Arduino, его отличие от иных, а также соединение сенсора с микроконтроллером, с получением измеренной уже температуры.
Сенсоры, определяющие температуру
Датчик температуры подключаемый к Arduino, как и в случае любого другого микроконтроллера, существует в двух видах: цифровой и аналоговый. Разница между настоящими термометрами в виде передаваемой на управляющую плату информации. Для первых характерна выдача уже готовых цифровых последовательностей, с которыми контроллер может работать непосредственно. Вторые только изменяют физическую характеристику идущего через них тока в зависимости от внешнего воздействия. То есть, Arduino, еще должен и преобразовать получаемый результат к цифровому виду, «зная» тип самого устройства и таблицу соответствия приходящего сигнала реальным значениям.
В последнем случае падает конечная точность измерений, так как сам микроконтроллер, о котором идет речь, может определять лишь изменения с градацией в 1024 уровня. Кроме того, для каждого чувствительного аналогового устройства требуется свой отдельный входящий канал. Единственное, что нивелирует минусы аналоговых сенсоров — их низкая цена и простота конструкции, которая обеспечивает достаточную длительность бесперебойной работы. Наибольшее распространение среди таких детекторов тепла получили модели на основе чипсета LM35 — TMP35, TMP37, LM335. Существует и широкий спектр аналогичных решений от иных производителей.
Другое дело — цифровые датчики. Никаких сторонних вычислений микроконтроллеру проводить для такого термометра не нужно. Достаточно получить итоговую цифровую последовательность с контакта всех сенсоров, расположенных на единой линии. Каждый из которых подключается к ней параллельно. Их максимальное количество ограничено лишь физическими возможностями дальности хода сигнала между микроконтроллером и чувствительным элементом.
Шина передачи в названом случае называется 1-Wire. В ней, для определения конечного отправителя показаний, используется уникальный идентификационный код «зашитый» в сам конечный датчик, что помогает избежать путаницы с изначальным адресантом. Хорошим примером цифровых детекторов такого типа служит DS18B20 Arduino и его варианты разных производителей — DS18S20, DS1820, DS1822, MAX31820. Все они основаны на логике DS18.
Есть у цифровых датчиков и недостаток. Они сильно подвержены влиянию импульсных электрических помех от стороннего оборудования или самой линии питания. Чувствительна аппаратура и к сильным магнитным полям. В достаточно простых и не критичных системах, фактором можно пренебречь, но в важных контролирующих комплексах он требует обращения на себя особого внимания.
Вне зависимости от разновидности датчиков Ардуино, они поставляются в открытом, более удобном к монтажу исполнении, или закрытом, защищенном корпусе, препятствующем попаданию влаги. Последний фактор позволяет использовать термометры на основе DS1820 или LM35 в весьма агрессивной для электроники среде — насыщенном водой пространстве. Речь идет не только о допустимости прямого погружения их в жидкость, но и об функционировании в воздухе, насыщенном ее парами.
Ниши применения
Сферы, в которых требуется измерение температуры датчиком не счесть. Как и список всей аппаратуры, работа которой непосредственно зависит от значения характеристики. Сюда можно отнести упомянутые ранее кондиционеры, холодильники, печи всех видов, любые иные агрегаты от которых требуется контроль нагрева либо охлаждения. Можно вспомнить даже обычный аквариум.
Его жители достаточно критически относятся к температуре окружающей среды. Если она слишком горячая или холодная — водные обитатели погибнут. В теплой они жизнерадостны, активны и развиваются. Здесь, как раз поможет электронный термометр, объединенный с микроконтроллером Ардуино. Последний, в зависимости от показаний первого, будет включать обогрев водной массы или пытаться предотвратить превышение установленных температурных лимитов.
К нише использования датчиков, определяющих нагрев либо охлаждение среды можно отнести и чисто информационные системы. Здесь сразу вспоминается медицинский или бытовой термометр. Применение привычных их вариантов исполнения бывает в некоторых случаях неудобным, как по скорости получения значений температуры, так и по периоду ее измерения.
Характеристики DS18B20
Цифровой датчик Ардуино DS18B20 поставляется в одном из следующих видов исполнения:
Марка | Корпус | Кол-во контактов |
---|---|---|
DS18B20+ | TO-92 | 3 |
DS18B20Z+ | SO | 8 |
DS18B20U+ | μSOP | 8 |
Вне зависимости от конечного количества исходящих контактов, рабочие из них только три: два питания GND и VCC +5В и один данных шины 1-Wire, обозначаемый на схемах через DQ. Корпус ТО-92 выполняется производителями как в открытом виде, так и защищенном от воздействия влаги. В последнем случае исходящие линии кабеля разделяют по следующей цветовой маркировке:
Цвет | Контакт |
---|---|
Черный | GND |
Красный | VDD |
Белый | DQ |
Класс устройств DS18 подразумевает бытовое, а не экстремальное использование. Соответственны и возможности сенсора:
- Питание: от 3 до 5.5 В
- Чувствительность: от −55 до +125 ºС
- Интерфейс передачи данных: 1-Wire
- Точность: до 0.5 градуса в пределах от −10 до +85 ºС. С температурами ниже или выше она падает, и разница с реальным состоянием может составить до 2 ºС в любую сторону.
Принципиальная схема соединений
Датчик DS1820 подключается к Arduino одним из двух способов: нормальным или паразитным. Разница в количестве используемых контактов. Первый требует три, с полным отдельным питанием, для второго достаточно пары. В последнем случае применение нескольких температурных сенсоров на одной линии не рекомендуется, так как кодовые сигналы, поступающие от одного, могут внести искажения в работу других.
Подключение DS18B20 к Arduino обоими методами требует использования сопротивления 4.7 кОм в целях подтягивания сигнала к шине данных:
Оперирование термометром DS18B20
Так как Ардуино с сенсором нагрева работает по цифровой шине передачи информации 1-Wire, нужно включить в текст скетча библиотеку обслуживающую настоящий протокол. Скачать ее последнюю версию можно на GitHub по адресу:
https://github.com/PaulStoffregen/OneWire
Скетч, использующий только настоящую библиотеку:
https://cloud.mail.ru/public/Fifd/twtiPmtka
Все приведенное можно упростить, вызывая функции библиотеки DallasTemperature, которая находится аналогично первой на GitHub. Ее адрес:
https://github.com/milesburton/Arduino-Temperature-Control-Library
Перед тем, как писать скетч, использующий возможности OneWire в связке с DallasTemperature, требуется определить адреса всех конечных устройств единой шины. Для этого в составе библиотечного кода есть пример Multipe, который при своем выполнении выводит уникальные идентификационные коды всех сенсоров температуры DS18 расположенных на шине. Используя полученные данные, и подключив настоящую библиотеку, не трудно получать их показания уже для своего кода:
https://cloud.mail.ru/public/ucnZ/4WJByWExo
В заключение
Определяющие нагрев сенсоры, в совокупности с Ардуино, вне зависимости от их типа — цифровых класса DS18 или использующих аналоговый сигнал, на основе чипа LM35, дают широкий спектр возможностей конечному пользователю. Достаточная точность, вкупе с низким энергопотреблением позволяют применять аналогичные сенсоры во множестве сфер, от быта до производства.
Самые часто используемые ниши — создание прототипов холодильников, контроллеров температуры воды в ванных, бойлерах и чайниках, или в качестве элементов климатического оборудования. Применяется термометр вместе с микроконтроллером и в сельском хозяйстве. Централизованное определение температур в закутах, амбарах или стойлах, выяснение текущего нагрева яиц в инкубаторах — все названое по силам настоящей связке датчиков с управляющими устройствами.
Видео по теме
Мой мир
Вконтакте
Одноклассники
Яндекс Дзен | Открывайте новое каждый день
Яндекс Дзен | Открывайте новое каждый день
Яндекс.Дзен – это платформа, которая подбирает контент специально для вас. В Дзене есть статьи и видео на разные темы от блогеров и медиа.
Ваш личный Дзен
Дзен понимает ваши интересы и собирает ленту для вас. Он анализирует действия: что вы смотрите, кому ставите лайки, на кого подписываетесь, а после – рекомендует вам и уже любимые источники, и ещё неизвестные, но интересные публикации.
Вы смотрите и ставите лайки
шаг 1
Алгоритм отслеживает это и подбирает контент
шаг 2
Вы видите интересные именно вам материалы
шаг 3
Интересные истории
В Дзене есть популярные медиа и талантливые блогеры. Ежедневно они создают тысячи историй на сотни разных тем. И каждый находит в Дзене что-нибудь для себя.
Примеры публикаций
В Дзене действительно много уникальных статей и видео. Вот несколько примеров популярного сейчас контента.
Дзен — простой, современный и удобный
Посмотрите на главные возможности сервиса и начните пользоваться всеми преимуществами Дзена.
Читайте о своих интересах.
Алгоритмы Дзена понимают, что вам нравится, и стараются показывать только то, что будет действительно интересно. Если источник вам не подходит — его можно исключить.
1/4
Тематические ленты.
С общей ленты со всеми статьями легко переключайтесь на тематические: кино, еда, политика, знаменитости.
2/4
Разнообразные форматы.
Открывайте разные форматы историй для чтения и общения. В приложении удобно читать статьи и смотреть видео, писать комментарии.
3/4
Оставайтесь в курсе событий!
Возвращайтесь к нужным статьям: добавляйте статьи в Сохранённое, чтобы прочитать их позже или сохранить в коллекции. Настройте уведомления, чтобы не пропустить самое интересное от любимых блогеров, медиа и каналов.
4/4
Читайте о своих интересах.
Алгоритмы Дзена понимают, что вам нравится, и стараются показывать только то, что будет действительно интересно. Если источник вам не подходит — его можно исключить.
1/4
Тематические ленты.
С общей ленты со всеми статьями легко переключайтесь на тематические: кино, еда, политика, знаменитости.
2/4
Разнообразные форматы.
Открывайте разные форматы историй для чтения и общения. В приложении удобно читать статьи и смотреть видео, писать комментарии.
3/4
Оставайтесь в курсе событий!
Возвращайтесь к нужным статьям: добавляйте статьи в Сохранённое, чтобы прочитать их позже или сохранить в коллекции. Настройте уведомления, чтобы не пропустить самое интересное от любимых блогеров, медиа и каналов.
4/4
Читайте о своих интересах.
Алгоритмы Дзена понимают, что вам нравится, и стараются показывать только то, что будет действительно интересно. Если источник вам не подходит — его можно исключить.
1/4
Тематические ленты.
С общей ленты со всеми статьями легко переключайтесь на тематические: кино, еда, политика, знаменитости.
2/4
Разнообразные форматы.
Открывайте разные форматы историй для чтения и общения. В приложении удобно читать статьи и смотреть видео, писать комментарии.
3/4
Оставайтесь в курсе событий!
Возвращайтесь к нужным статьям: добавляйте статьи в Сохранённое, чтобы прочитать их позже или сохранить в коллекции. Настройте уведомления, чтобы не пропустить самое интересное от любимых блогеров, медиа и каналов.
4/4
Дзен доступен во всем мире более чем на 50 языках
Смело рекомендуйте Дзен своим друзьям из других стран.
العَرَبِيَّةالعَرَبِيَّة
Удобно пользоваться в смартфоне
У Дзена есть приложения для iOS и Android.
Пользуйтесь в браузере
Дзен доступен с любого устройства в вашем любимом браузере. Также Дзен встроен в Яндекс.Браузер.
Удобно пользоваться в смартфоне
У Дзена есть приложения для iOS и Android.
Пользуйтесь в браузере
Дзен доступен с любого устройства в вашем любимом браузере. Также Дзен встроен в Яндекс.Браузер.
Удобно пользоваться в смартфоне
У Дзена есть приложения для iOS и Android.
Пользуйтесь в браузере
Дзен доступен с любого устройства в вашем любимом браузере. Также Дзен встроен в Яндекс.Браузер.
© 2015–2021 ООО «Яндекс», 0+
Дизайн и разработка — Charmer
К сожалению, браузер, которым вы пользуйтесь, устарел и не позволяет корректно отображать сайт. Пожалуйста, установите любой из современных браузеров, например:
Яндекс.Браузер
Google Chrome
Firefox
Safari
Схема подключения датчика температуры ds18b20 к arduino
3. 9
/
5
(
10
голосов
)
DS18B20 представляет собой стандартный температурный датчик, разработанный и изготовленный на цифровой основе. Его очень просто эксплуатировать за счет простоты конструкции, а также его адаптивных возможностей к работе с Arduino Processing LCD.
Главными его преимуществами являются:
- Наличие всего одного контакта для получения полезного сигнала. Это дает возможность подключения огромного количества идентичных сенсоров DS18B20 к одному Arduino Processing LCD.
- Цифровая система функционирования.
- Возможность подключения огромного количества идентичных сенсоров к одному пину Arduino Processing LCD.
Подключение датчика DS18B20 к Arduino
Все датчики типа DS18B20 имеют несколько форм-факторов, которые могут существенно облегчить работу с ними. Право выбора самого форм-фактора всегда, само собой, остается за клиентом. Сегодня на рынке преобладают 3 варианта этой продукции, а именно: 8Pin SO (150 mils), 8Pin µSOP и 3Pin TO92. Информация, которую мы почерпнули, свидетельствует о том, что китайские производители также предлагают приобрести датчик 3Pin TO92, снабженный специальной влагозащитной оболочкой. Это даст вам возможность погружать аппарат в жидкость, использовать во время плохой погоды и в других случаях. У всех сенсоров всегда имеется 3 выходных контакта: черного, красного и белого цветов. Они соответствуют значениям GND, Vdd и Data соответственно.
Дополнительное удобство эксплуатации DS18B20 для Arduino Processing LCD обеспечивается тем, что он может быть подключен к электросети через белый контакт. В этом случае вы будете использовать всего пару контактов вместо тех трех, которые требуются для нормального подключения. Датчик способен функционировать при напряжении в сети от 3 до 5,5 Вольт, а также фиксировать изменения температуры, если она находится в диапазоне от -55 до плюс 125 по Цельсию. Погрешность, которую может выдавать термостат при измерении температуры, составляет 0,5 градуса по Цельсию.
Очень приятным обстоятельством при использовании датчика DS18B20 для Arduino Processing LCD является то, что параллельно к одному аппарату можно подключить до 127 датчиков DS18B20 одновременно.
Трудно представить себе ситуацию, в которой это может потребоваться. Но если установить, например, один датчик в холодильнике, а другой — в морозилке, это будет весьма полезно. Опять же в таком случае у вас останется просто огромное количество свободных пинов для «Ардуино».
Что нужно, чтобы настроить работу датчика DS18B20 для Arduino Processing LCD
Из программного обеспечения вам в обязательном порядке потребуются:
- Программа Arduino IDE.
- База данных OneWire library, примечательная тем, что она значительным образом упрощает работу как с самим Arduino, так и со всеми датчиками, включая DS18B20.
- Скетч.
Программу «Ардуино» можно скачать с ее официального сайта — там есть ее последняя версия в открытом доступе.
База данных OneWire Library может быть скачана на OneWireProjectPage. При этом желательно загружать к себе на компьютер самую свежую ее версию.
Программа Arduino IDE
Из оборудования вам в обязательном порядке потребуются:
- Nano-датчик для измерения температурных показателей DS 18B20 в количестве минимум одного экземпляра.
- Контроллер «Ардуино».
- Термостат.
- Коннекторы в количестве 3 штук.
- Плата для монтажных работ.
- Кабель, который будет обеспечивать подключение «Ардуино» к вашему компьютеру посредством USB-соединения.
Кабель, описанный в последнем пункте, необходим для программирования Arduino Processing LCD. После того как скетч будет успешно загружен на плату, ее можно будет смело подсоединять к независимому источнику питания.
Nano-датчик температуры DS 18B20
Подключение датчика DS 18B20 к Arduino Processing LCD
Чтобы правильно произвести подключение датчика к системе «Ардуино», необходимо действовать в соответствии со следующим алгоритмом:
- Черный контакт температурного датчика нужно подключить к GND-системе «Ардуино».
- Красный контакт температурного датчика нужно подключить к +5V системы «Ардуино».
- Красный контакт температурного датчика может быть подключен к любому свободному цифровому пину в системе «Ардуино».
- Подключить к внешней обвязке системы специальный резистор на 4,7 килоома.
Полная схема подключения датчика температуры DS 18B20 к системе Arduino Processing LCD показана на изображении ниже.
Схема подключения датчиков температуры DS 18B20 к системе Arduino
Установка базы данных OneWireLibrary
После успешной закачки архива с базой данных на свой компьютер, ее необходимо импортировать в систему «Ардуино». В панели управления программой необходимо выбрать следующие пункты Sketch – «Импортировать базу данных» — «Добавить базу данных». После этого — выбрать скачанный вами на персональный компьютер архив. Если вы столкнулись с непредвиденными трудностями во время импорта базы данных в систему, следует более тщательно ознакомиться с инструкцией по управлению базами данных в «Ардуино».
Загрузка скетча в систему
Как правило, нужный скетч всегда есть в базе данных OneWireLibrary в категории «примеры». Вам нужно перейти в панели управления программой по такому алгоритму: “Файл” — “Примеры” — OneWire и выбрать пример, который будет содержать название подключаемого датчика температуры.
Эта функция используется для того, чтобы в базу данных могла поступать информация обо всех датчиках температуры DS 18B20 и отображаться на мониторе системы «Ардуино».
Какой тип питания выбрать
Все датчики температуры типа DS 18B20 для Arduino Processing LCD могут работать в обычном или так называемом «паразитном» режиме. При этом если обычный режим подключения предусматривает нормальное функционирование всех 3 коннекторов, то «паразитический» — только 2. Что бы получать правильную и точную информацию со всех датчиков, нужно выбрать правильный режим питания в скетче:
- чтобы воспользоваться «паразитным» режимом, необходимо ввести dswrite (0x44,1) в 65-й строке;
- обычным режимом — ввести dswrite (0x44) в 65-й строке.
В обязательном порядке следует убедиться в том, что введенные вами названия пинов являются правильными.
Подключение термодатчика DS18b20 к программе Arduino
Как подключить несколько датчиков температуры DS 18B20 одновременно
Подключение нескольких датчиков температуры типа DS 18B20 к Arduino Processing LCD возможно. Это обеспечивается базой данных OneWirelibrary, способной считывать всю информацию со всех подключенных устройств одновременно.
Если речь идет о подключении большого числа датчиков (например, если их больше 10), должны быть использованы резисторы с более низким показателем сопротивления (к примеру, 1,5 килоома или меньше).
Если же вы собрались подсоединять больше десятка датчиков DS 18B20, могут быть проблемы с их точностью. В таком случае можно установить резистор (сопротивление — примерно 100 Ом) между белым контактом на аппарате «Ардуино» и белым контактом на каждом датчике.
Автор, специалист в сфере IT и новых технологий.
Получил высшее образование по специальности Фундаментальная информатика и информационные технологии в Московском государственном университете имени М.В. Ломоносова. После этого стал экспертом в известном интернет-издании. Спустя время, решил попробовать писать статьи самостоятельно. Ведет популярный блог на Ютубе и делится интересной информацией из мира технологий.
Загрузка…
Датчик температуры DS18B20. Влияние саморазогрева на точность измерений. — StopTest.ru
// Arduino UNO, Atmega 328P, robotdyn.com
/******************************************/
#include <OneWire.h> // подключаем библиотеку для управления устройствами по Протоколу 1-Wire, в нашем случае термодатчиками DS18B20
OneWire DS18B20(4); // с помощью конст-ра библиотеки опр-ем условное название объекта OneWire и номер выв. к которому он подключен
// в данном случае объект OneWire называется так же как называется и сам датчик
#define POWER_MODE 0 // Определяем режим питания датчиков, 0 — внешнее, 1 – паразитное (#define задает имя и значение константе)
#define POWER_DS18B20 6 // Определяем вывод 6 платы для подачи питания на датчик и светодиод
#define TIME_OUT 750 // задаем время (мс) между командами 44h («измерить температуру») и BEh («читать температуру»)
byte conf[3]={0x00,0x00,0x7F}; // третий элемент массива это байт для записи в регистр конфигурации для установки разрешения
// разрешение преобразования температуры может устанавливаться:
// 1F (9 бит;0.5°C;93.75мс), 3F (10 бит;0.25°C;187.5мс)
// 5F (11 бит;0.125°C;375мс),7F (12 бит;0,0625°C;750мс)
uint16_t i;
uint32_t ms1, ms2; // переменные для хранения промежуточных значений пройденного времени
boolean go, count; // логическая переменная
float temperature; // переменная типа float для хранения значения измеренной температуры
byte data[9]; // массив для размещения девяти байт после чтения памяти датчика 18B20
void setup() {
Serial. begin(250000); //инициализируем работу с монитором порта в Arduino IDE (инструменты/монитор порта)
pinMode (POWER_DS18B20, OUTPUT);
digitalWrite(POWER_DS18B20, HIGH); // подаем питание на датчик через вывод POWER_DS18B20 для изменения регистра конфигурации
DS18B20.reset(); // инициализация датчика для работы с оперативной памятью
DS18B20.write(0xCC, POWER_MODE); // 0xCC — команда пропуск ROM
DS18B20.write(0x4E, POWER_MODE); // 0x4E — команда на запись байта конфигурации в оперативную память
DS18B20.write_bytes(conf, 3); // передаем данные из массива conf в оперативную память датчика
DS18B20.reset(); // инициализация датчика для работы с энергонезависимой памятью
DS18B20.write(0xCC, POWER_MODE); // 0xCC — команда пропуск ROM
DS18B20.write(0x48, POWER_MODE); // 0x48 — команда записи байта конфигурации из операт. памяти в энергонез.память
digitalWrite(POWER_DS18B20, LOW); // отключаем питание датчика
}
void loop() {
if (Serial. read() == ‘r’) { // символ «r» является командой на вкл. датчика и начало процесса измер-я темп-ры
go = true; // устанавливаем флаг начала процесса измерения температуры
digitalWrite(POWER_DS18B20, HIGH); // подаем питание на датчик
ms2 = millis(); // фиксируем начало периода вывода значений температуры в монитор порта
}
if (go == true) {
if (count==0) {
DS18B20.reset(); // инициализация датчика для измерения температуры
DS18B20.write(0xCC, POWER_MODE); // 0xCC — команда пропуск ROM
DS18B20.write(0x44, POWER_MODE); // 0х44 — команда на выполнение преобразования температуры
count=!count; // установим флаг, что выполняется процесс преобразования температуры
ms1 = millis(); // фиксируем начало периода обращения к датчику
}
if ((millis() — ms1) > TIME_OUT) { // условие, выполняющееся если прошел период времени, превышающий TIME_OUT (мс)
DS18B20. reset(); // инициализация датчика для чтения памяти
DS18B20.write(0xCC, POWER_MODE); // команда пропуск ROM,
DS18B20.write(0xBE, POWER_MODE); // 0хBE — команда чтения памяти
DS18B20.read_bytes(data, 9); // читаем девять байт из памяти датчика побайтно и сохраняем в массив data
int16_t raw = (data[1]<<8)|data[0]; // обработка байтов регистра измер-ой темп-ры (операция сдвига, операция ИЛИ)
temperature = (float)raw / 16; // преобразуем полученные данные в значение температуры в градусах Цельсия
count=!count; // сбросим флаг процесса преобразования температуры
}
if (( millis() — ms2) > 1000) { // условие выполняется каждую секунду и выводит знач. темп. в монитор порта,
ms2 = millis();
Serial.print(temperature,4); // выводим температуру, после запятой оставляем 4 знака
Serial.print(» «);
Serial. println(i++); // выводим счетчик секунд
}
}
}
Датчик температуры DS18B20 с проводом 1м.
Датчик DS18B20 поможет вам измерить температуру воды в аквариуме или в чайнике. Можно использовать его для измерения температуры на улице и при этом не бояться, что датчик зальёт дождём. Дачники оценят возможность измерять температуру почвы в теплице и на участке.
Этот датчик температуры основан на популярной микросхеме DS18B20. Он позволяет определить температуру окружающей среды в диапазоне от -55°C до +125°C и получать данные в виде цифрового сигнала с 12-битным разрешением по 1-Wire протоколу. Этот протокол позволит подключить огромное количество таких датчиков, используя всего 1 цифровой порт контроллера, и всего 2 провода для всех датчиков: земли и сигнала. В этом случае применяется так называемое «паразитное питание», при котором датчик получает энергию прямо с линии сигнала. Каждый датчик имеет уникальный прошитый на производстве 64-битный код, который может использоваться микроконтроллером для общения с конкретным сенсором на общей шине. Код отдельного сенсора может быть считан отдельной командой.
В постоянной памяти DS18B20 можно сохранить граничные значения температуры, при выходе из которых сенсор будет переходить в режим тревоги. На общей шине из многих сенсоров микроконтроллер может за раз узнать, какие из них перешли в этот режим. Таким образом становится легко определить проблемный участок в контролируемой среде.
Разрешение показаний настраивается и может составлять от 9 до 12 бит. Меньше разрешение — выше скорость преобразования.
Подключение
Герметичный датчик на основе микросхемы DS18B20 можно подключить двумя способами:
По трём проводам: питание (красный), земля (чёрный) и сигнал (белый).
По двум проводам: земля и сигнал. В этом случае датчик изредка может давать неверные показания, которые легко исключить из конечного результата фильтрацией.
Независимо от способа подключения, сигнальный провод необходимо соединить с питанием через резистор 4,7 кОм. При подключении только одного датчика, подойдёт и резистор на 10 кОм.
Для подключения датчика к Arduino или к макетной плате удобно будет использовать нажимной клеммник.
Для подключения 1-Wire устройств к Arduino существует готовая библиотека, а для работы именно с DS18B20 существует библиотека-надстройка от Майлса Бёртона.
Учебное пособие по интерфейсу
Arduino DS18B20 | Как измерить температуру
В этом проекте мы узнаем об однопроводном цифровом датчике температуры DS18B20 и о том, как работает интерфейс Arduino DS18B20.
Датчики температуры — очень важные устройства, поскольку они помогают нам в измерении, мониторинге и поддержании температуры комнаты, прибора или устройства.
Ранее мы использовали очень популярный датчик температуры LM35 почти во всех проектах, связанных с температурой.Теперь мы попробуем другой датчик температуры под названием DS18B20 для измерения температуры с помощью Arduino.
Связанный проект: Цифровой термометр на базе Arduino
Обзор датчика температуры DS18B20
DS18B20 — это датчик температуры 1-Wire (однопроводной), производимый Maxim Integrated. Он обеспечивает измерения температуры в градусах Цельсия с разрешением от 9 до 12 бит.
Датчик температуры DS18B20 обменивается информацией через интерфейс 1-Wire или шину 1-Wire, систему, разработанную Dallas Semiconductor.В интерфейсе 1-Wire для связи требуется только один провод (ну, технически вам нужно два провода: один провод данных и один провод GND).
Другой важной особенностью датчика температуры DS18B20 является то, что каждый датчик DS18B20 поставляется с 64-битным последовательным кодом, специфичным для этого датчика.
Используя этот уникальный код, вы можете подключить множество датчиков DS18B20 к одной шине 1-Wire и получить доступ к информации с помощью одного контроллера. Этот тип настройки может быть полезен в ситуациях, когда несколько датчиков DS18B20 распределены на огромной территории.
Ниже приведены некоторые из основных характеристик цифрового термометра DS18B20.
- Использует интерфейс 1-Wire, которому требуется только один провод для передачи данных.
- Программируемое разрешение от 9 до 12 бит.
- Он может измерять температуру в диапазоне от -55 0 C до +125 0 C.
- Доступен в различных корпусах, таких как TO-92, 8-контактный SO и 8-контактный µSOP.
Схема контактов DS18B20
На следующем изображении показана схема контактов цифрового датчика температуры DS18B20 в его корпусе TO-92.
Описание контактов датчика температуры DS18B20
Как вы можете видеть на приведенной выше схеме контактов, датчик DS18B20 состоит из трех контактов, а именно: V DD , DQ и GND.
В DD : Это вывод питания. При использовании паразитного режима питания он должен быть заземлен (подробнее об этом позже).
DQ: Это контакт ввода / вывода данных. Это штифт с открытым стоком, и его нужно тянуть ВЫСОКОЕ. Обеспечивает питание в паразитном режиме питания.
GND: Это контакт заземления.
Блок-схема DS18B20
На следующем рисунке показана функциональная блок-схема датчика температуры DS18B20. Он состоит из схемы источника питания, 64-битного ПЗУ, контроллера памяти, основного датчика температуры и области электронного блокнота, в которой есть регистр температуры и несколько других регистров для хранения конфигурации и триггеров высокого и низкого уровня сигналов тревоги.
64-битное ПЗУ хранит уникальный серийный код устройства. Цифровой выходной сигнал датчика температуры сохраняется в 2-байтовом регистре температуры блокнота.Блокнот также состоит из 1 байта для регистра триггера высокого уровня сигнала тревоги, регистра запуска сигнала низкого уровня и регистра конфигурации каждый.
Используя регистр конфигурации, вы можете установить разрешение цифрового выхода от 9 до 12 бит. Чтобы сохранить данные, хранящиеся в конфигурации, регистрах верхнего и нижнего уровней аварийного сигнала, даже когда устройство выключено, эти три регистра реализованы как EEPROM.
Питание датчика DS18B20
Есть два способа включить датчик DS18B20.Один из способов — это традиционный способ подключения внешнего источника питания к выводу V DD датчика. В этой операции нет ничего особенного.
Второй способ включения датчика DS18B20 — вот что интересно. Второй способ питания датчика называется режимом Parasite Power Mode, в котором нет необходимости во внешнем источнике питания.
В режиме паразитного питания DS18B20 потребляет питание от вывода DQ, когда на нем установлен ВЫСОКИЙ уровень.Когда на шине 1-Wire высокий уровень, он питает DS18B20. Когда на шине низкий уровень заряда, накопленный в паразитном конденсаторе мощности (C PP ) питает датчик. В режиме паразитного питания вывод V DD подключен к GND.
Взаимодействие DS18B20 с Arduino
В этом проекте мы увидим, как подключить датчик температуры DS18B20 к Arduino. Поскольку датчик основан на 1-проводной связи, для него требуется только один провод между Arduino и DS18B20.
Принципиальная схема интерфейса Arduino DS18B20
На следующем изображении показана принципиальная схема интерфейса Arduino DS18B20.
Необходимые компоненты
- Arduino UNO
- DS18B20 Цифровой датчик температуры
- ЖК-дисплей 16 × 2
- Потенциометр 10 кОм
- Резистор 4,7 кОм (1/4 Вт)
- Резистор 330 Ом (1/4 Вт)
- 5 мм LED
- Соединительные провода
- Макетная плата
- Блок питания
Схема схемы
Схема интерфейса Arduino DS18B20 очень проста. Все, что вам нужно, это подключить V DD и GND датчика к + 5V и GND и подключить контакт DQ датчика к любому из контактов цифрового ввода / вывода (он подключен к контакту 8 цифрового ввода / вывода. ).
Вывод DQ подтягивается ВЫСОКОЕ с помощью резистора 4,7 кОм.
Поскольку нам нужно просматривать измеренную температуру, я подключил простой ЖК-дисплей 16X2 к Arduino.
Код
Код проекта приведен ниже. Вам необходимо скачать две библиотеки для Arduino: OneWire и DallasTemperature. Вы можете загрузить эти библиотеки по следующим ссылкам: Загрузить библиотеку OneWire и загрузить библиотеку DallasTemperature.
Работа интерфейса Arduino DS18B20
Работа с проектом очень проста.Arduino связывается с DS18B20 через интерфейс 1-Wire и извлекает информацию о температуре от датчика. Извлеченная информация отображается на ЖК-дисплее 16X2.
Приложения
Датчик температуры DS18B20 может использоваться в различных приложениях, например:
- Термометры
- Температурно-чувствительные системы
- Бытовая электроника
- Промышленное оборудование
- Термостаты
ESP8266 WiFi Датчик температуры DS18B20 (Arduino IDE )
В этом руководстве мы покажем, как собрать датчик температуры DS18B20 и ESP8266 без Arduino.Мы будем использовать Arduino IDE и сообщать температуру через WiFi на сервере EasyIoT.
Температура датчика отображается в веб-интерфейсе сервера EasyIoT. Если регистрация данных включена, вы можете увидеть график температуры.
ESP8266 WiFi-модуль
ESP8266 ESP-01 Модуль последовательного беспроводного приемопередатчика WIFI | |
$ 2.11 | |
$ 17,00 |
ESP8266 ESP-03 Последовательный модуль беспроводного приемопередатчика WIFI | ||||
$ 2,07 | ||||
ESP Модуль беспроводного приемопередатчика | ||||
$ 2,06 | ||||
$ 1,75 |
ESP8266 ESP-05 Последовательный модуль беспроводного приемопередатчика WIFI | ||||
88 |
ESP8266 ESP-07 Модуль последовательного беспроводного приемопередатчика WIFI | |||
$ 2,18 | |||
$ 1,88 | |||
Сеть ESP 7,43 долл. | |
долл. США 2,65 |
Датчик температуры DS18B20
DS18B20 Датчик температуры DALLAS | |
$ 0.99 | |
$ 0,70 |
4,7 кОм резистор
400X 0.Комплект металлопленочных резисторов мощностью 25 Вт 1/4 Вт 1% 20 Стоимость каждого 20 шт. 10 ~ 1 МОм | |
$ 1,88 | |
$ 5,50 |
См. Руководство по покупке в конце руководства.
На сервере EasyIoT добавьте новый узел в виртуальный драйвер. Тип узла — Температура (AI). Учебное пособие по добавлению узла на сервер EasyIoT можно найти здесь. Запомните адрес виртуального узла, потому что он вам понадобится позже.
Программа
доступна на GitHub.Он основан на программе, предоставленной участником сообщества @Dennis. Для загрузки программы вам понадобится ESP8266 Arduno IDE. Прочтите руководство по Arduino ESP8266 IDE, как программировать ESP8266 в Arduino IDE.
В программе вам нужно будет изменить некоторые настройки. Сначала установите имя пользователя и пароль точки доступа:
#define AP_SSID "your ssid"
#define AP_PASSWORD "пароль вашей точки доступа"
Затем измените настройки, связанные с сервером EasyIoT, такие как имя пользователя, пароль, IP-адрес, порт и адрес узла.Измените следующие строки:
#define EIOT_USERNAME "admin"
#define EIOT_PASSWORD "test"
#define EIOT_IP_ADDRESS "192.168.1.5"
#define EIOT_PORT 80
#define EIOT_NODE "N13S0"
Схема подключения очень проста. Добавьте DS18B20 к ESP8266 GPIO2 и один подтягивающий резистор.
Проверьте также датчик температуры EasyIoT Clud ESP8266 DS18B20.
Дополнительные руководства см. На http://iot-playground.com/build
Для поддержки этого сайта и разработки фреймворка EasyIoT покупайте в нашем магазине.
DS18B20 Датчик температуры DALLAS
Цифровой термометр DS18B20 обеспечивает измерение температуры от 9 до 12 бит по Цельсию.
$ 0,99>> $ 0,79>>
5PCS DS18B20 DALLAS Temperature Sensor
Цифровой термометр DS18B20 обеспечивает измерение температуры от 9 до 12 бит по Цельсию.
$ 3.08>>
DS18B20 DALLAS Водонепроницаемый датчик температуры
Цифровой термометр DS18B20 обеспечивает измерение температуры от 9 до 12 бит по Цельсию 12-битные измерения температуры по Цельсию.
1,89 $>>
Комплект металлопленочных резисторов 400X 0,25 Вт 1/4 Вт 1% 20 Стоимость за каждые 20 шт. 10 ~ 1 МОм
1,88 $>> 5 долларов США.50>>
5шт. Модуль регулятора 3.3V 800mA
Базовый регуляторный модуль на базе AMS1117.
$ 1,12>> $ 1,56>>
2xAA 3V отсек для батарейного отсека, корпус, провод
Этот 2xAA-держатель для батареек станет красивым завершающим штрихом в вашем проекте с батарейным питанием.
$ 0,99>> $ 0,99>>
Пластиковый футляр для хранения батарей 2xAA, 10 шт. Держатель коробки
Этот держатель для батарей 2xAA добавляет красивый завершающий штрих вашему проекту с батарейным питанием.
$ 3.84>> $ 3.78>>
ESP8266 ESP-01 Модуль последовательного беспроводного приемопередатчика WIFI
ESP8266 Модуль последовательного беспроводного приемопередатчика WIFI
$ 2,11>> $ 17.00>>
ESP8266 ESP-03 Модуль последовательного беспроводного приемопередатчика WIFI
ESP8266 последовательный модуль WIFI модели ESP-03
$ 2,07>> $ 2,15>>
ESP8266 ESP-12 Модуль беспроводного приемопередатчика WIFI
ESP8266 Беспроводной модуль WIFI последовательного порта ESP-12
2,06 $>> $ 1.75>>
ESP8266 ESP-05 Модуль беспроводного приемопередатчика WIFI
Модуль беспроводного приемопередатчика ESP8266 ESP-05
$ 1.88>>
ESP8266 Lua Nodemcu WIFI Network Development Board
ESP8266 Lua Nodemcu WIFI Network Development Board
$ 7,4653>> $ 2. >>
Учебное пособие по датчику температуры DS18B20 с Arduino и ESP8266
Привет, как дела, ребята! Акарш здесь из CETech.
Сегодня мы собираемся добавить новый датчик в наш арсенал, известный как датчик температуры DS18B20.Это датчик температуры, аналогичный DHT11, но имеющий другой набор применений. Мы будем сравнивать его с различными типами доступных датчиков температуры и рассмотрим технические характеристики этих датчиков.
Ближе к концу этого руководства мы будем сопрягать DS18B20 с Arduino и ESP8266 для отображения температуры. В случае Arduino температура будет отображаться на последовательном мониторе, а для ESP8266 мы будем отображать температуру на веб-сервере.
Давайте начнем с веселья сейчас.
Изготовьте печатные платы для вашего проектаВы должны проверить нашу печатную плату, чтобы получить печатные платы для вашего проекта онлайн.
Они используют надежные компоненты, полученные от аккредитованных поставщиков, таких как Arrow, Avnet, Future Electronics и т. Д., И предлагают разумные цены, в конечном итоге максимизирующие прибыль пользователя. Специализируясь на многослойных и жестко-гибких технологиях, их приоритетом является поддержание высоких стандартов качества.
Наша печатная плата ориентирована на заказы малых и средних объемов и обеспечивает очень конкурентоспособную цену для объемов от 1 до 100 кв.метров. Вам просто нужно загрузить файлы в любом из доступных форматов (Gerber, .pcb, .pcbdoc или .cam), и прототипы печатных плат будут доставлены к вашему порогу.
Вы также можете проверить их партнера WellPCB за хорошими предложениями.
Сравнение различных типов датчиков температуры В приведенном выше сравнении используются три датчика: DS18B20, DHT11 и термистор NTC, но здесь мы ограничим наше сравнение только цифровыми датчиками. Это не означает, что термистор NTC не так важен, как цифровые датчики. Фактически, развитие цифровых датчиков возможно только благодаря термистору NTC.Цифровые датчики состоят из термистора NTC, соединенного с некоторыми микропроцессорами, которые в конечном итоге выдают цифровой выход.
Основными пунктами сравнения являются: —
1. DS18B20 является водонепроницаемым и прочным, в то время как DHT11 — нет, поэтому в реальных сценариях и приложениях, где требуется контактное зондирование, обычно используется DS18B20, тогда как DHT11 используется в приложения на открытом воздухе.
2. DS18B20 выдает данные размером 9–12 бит, а DHT11 выдает данные размером 8 бит.
3. DS18B20 показывает только температуру, в то время как DHT11 может использоваться для получения температуры, а также влажности.
4. DS18B20 охватывает более широкий диапазон температур по сравнению с DHT11, а также имеет лучшую точность по сравнению с DHT (+ 0,5 градуса по сравнению с +2 градусом для DHT11).
5. Когда дело доходит до цен, эти датчики имеют небольшую разницу между собой, поскольку два разных варианта DS18B20, которые представляют собой упакованные провода, и корпус TO92, имеют стоимость от 1 до 0 долларов.4, в то время как DHT11 стоит около 0,6 доллара.
Таким образом, мы можем сказать, что DS18B20 несколько лучше, чем DHT11, но лучший выбор может быть сделан только на основе приложения, для которого требуется датчик.
Вы можете получить больше информации о DS18B20, прочитав его техническое описание отсюда.
Подключение DS18B20 к ArduinoЗдесь мы будем подключать датчик температуры DS18B20 к Arduino, чтобы получать температуру и отображать ее на последовательном мониторе.
Для этого шага нам требуются — датчик температуры Arduino UNO, DS18B20 (в корпусе или в корпусе TO92, какой доступен) и резистор 4,7 кОм.
Датчик DS18B20 имеет 3 провода: черный, красный и желтый. Черный — для GND, красный — для Vcc, а желтый — для сигнального контакта
1. Подключите контакт GND или черный провод датчика к GND.
2. Подключите контакт Vcc или красный провод датчика к источнику питания 5 В.
3. Подключите сигнальный контакт или желтый провод к 5V через 4.7 кОм, а также подключите этот сигнальный контакт к цифровому контакту № 12 Arduino.
Для лучшего понимания вы можете обратиться к схеме, показанной выше.
Кодирование Arduino для отображения температурыНа этом этапе мы будем кодировать нашу плату Arduino для получения и отображения температуры через последовательный монитор.
1. Подключите плату Arduino UNO к ПК.
2. Перейдите отсюда в репозиторий Github для этого проекта.
3. В репозитории GitHub вы увидите файл с именем «Базовый код», откройте этот файл, скопируйте код и вставьте его в вашу Arduino IDE.
4. Выберите правильную плату и COM-порт на вкладке «Инструменты» и нажмите кнопку загрузки.
5. После загрузки кода откройте Serial Monitor и выберите правильную скорость передачи (9600 в нашем случае), и вы сможете увидеть там температуру, измеренную DS18B20.
Вы можете наблюдать за повышением и падением температуры, выполняя подходящие действия для повышения или стабилизации температуры, например, протирая металлическую часть или поджигая зажигалку рядом с металлической частью датчика упакованного типа.
Подключение DS18B20 к ESP8266На этом этапе мы будем подключать DS18B20 к модулю ESP8266 для получения температуры.
Для этого шага нам понадобятся = модуль ESP8266, резистор 4,7 кОм и датчик температуры DS18B20 (в корпусе или в корпусе TO92, в зависимости от того, что доступно).
Подключения для этого шага аналогичны подключениям, выполненным с помощью Arduino.
1. Подключите контакт GND или черный провод датчика к GND.
2. Подключите контакт Vcc или красный провод датчика к контакту 3.Питание 3 В.
3. Подключите сигнальный контакт или желтый провод к 3,3 В через резистор 4,7 кОм, а также подключите этот сигнальный контакт к GPIO12, который является контактом D5 модуля.
Для лучшего понимания вы можете обратиться к схеме, показанной выше.
Настройка IDE ArduinoДля кодирования ESP8266 с использованием Arduino IDE нам необходимо установить плату ESP8266 в дополнительные платы Arduino IDE, поскольку они не предустановлены. Для этого нам необходимо выполнить шаги, указанные ниже: —
1.Перейдите в Файл> Настройки
2. Добавьте http://arduino.esp8266.com/stable/package_esp8266com_index.json в URL-адреса диспетчера дополнительных плат.
3. Выберите Инструменты> Плата> Менеджер плат
4. Найдите esp8266 и установите плату.
5. Перезагрузите среду IDE.
Кодирование ESP8266 для отображения температурыНа этом этапе мы собираемся ввести код ESP8266 для считывания температуры, и после этого, вместо того, чтобы отображать эту температуру на последовательном мониторе, мы собираемся отображать ее на веб-сервере.
1. Отсюда перейдите в репозиторий Github для этого проекта.
2. В репозитории вы увидите код с именем «ESP8266 Temperature Web Server», вам просто нужно скопировать этот код и вставить его в Arduino IDE.
3. После вставки кода измените SSID и пароль в коде на коды вашей сети Wi-Fi.
4. На вкладке «Инструменты» выберите правильную плату и COM-порт, а затем нажмите кнопку загрузки.
5. Когда код будет загружен, откройте последовательный монитор IDE, а затем нажмите кнопку обновления на модуле ESP8266, вы получите запись на каком-то неизвестном языке, а под ним будет присутствовать IP-адрес.Вам необходимо скопировать этот IP-адрес, так как это адрес веб-сервера, который будет отображать температуру.
И готовоКогда код загружен и IP-адрес получен. Откройте веб-сервер, используя этот IP-адрес
На веб-сервере будут отображаться показания температуры в градусах Цельсия, а также в градусах Фаренгейта.
Помимо веб-сервера, показания температуры также можно наблюдать на последовательном мониторе.
Вы заметите, что по мере изменения температуры рядом с датчиком, показания на веб-сервере также изменяются.
Вот и все для демонстрации.
Цифровой термометр с использованием датчика Arduino и DS18B20
// Подключение Arduino к датчику температуры DS18B20
#include
#define DS18B20_PIN 10
// Подключения ЖК-модуля (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd (2, 3, 4, 5, 6, 7);
int raw_temp;
температура поплавка;
char txt [] = «C»;
void setup (void) {
// запуск последовательного порта
Serial.begin (9600);
// настраиваем количество столбцов и строк ЖК-дисплея
lcd.begin (16, 2);
txt [0] = 223; // Поместите символ градуса (°)
lcd.setCursor (2, 0);
lcd.print («Температура:»);
}
void loop (void) {
if (ds18b20_read (& raw_temp)) {
Serial.print («Temperature =»);
temp = (float) raw_temp / 16; // Преобразование необработанного значения температуры в градусы Цельсия (температура в ° C = raw / 16)
Serial.печать (темп); // Вывести значение температуры в градусах Цельсия
Serial.println («° C»); // Печать ‘° C’
// Отображение температуры на ЖК-дисплее
lcd.setCursor (4, 1);
жк. Печать (темп.);
lcd.print (txt);
}
else {
Serial.println («Ошибка связи!»);
lcd.setCursor (4, 1);
lcd.print («Ошибка!»);
}
задержка (1000);
}
bool ds18b20_start () {
bool ret = 0;
digitalWrite (DS18B20_PIN, LOW); // Отправляем импульс сброса на датчик DS18B20
pinMode (DS18B20_PIN, OUTPUT);
delayMicroseconds (500); // Ждем 500 мкс
pinMode (DS18B20_PIN, INPUT);
delayMicroseconds (100); // ждем чтения ответа датчика DS18B20
if (! digitalRead (DS18B20_PIN)) {
ret = 1; // Датчик DS18B20 присутствует
delayMicroseconds (400); // Ждем 400 мкс
}
return (ret);
}
void ds18b20_write_bit (логическое значение) {
digitalWrite (DS18B20_PIN, LOW);
pinMode (DS18B20_PIN, OUTPUT);
delayMicroseconds (2);
digitalWrite (DS18B20_PIN, значение);
delayMicroseconds (80);
pinMode (DS18B20_PIN, INPUT);
delayMicroseconds (2);
}
void ds18b20_write_byte (значение байта) {
byte i;
для (i = 0; i <8; i ++)
ds18b20_write_bit (bitRead (value, i));
}
bool ds18b20_read_bit (void) {
bool value;
digitalWrite (DS18B20_PIN, LOW);
pinMode (DS18B20_PIN, OUTPUT);
delayMicroseconds (2);
pinMode (DS18B20_PIN, INPUT);
delayMicroseconds (5);
значение = digitalRead (DS18B20_PIN);
delayMicroseconds (100);
возвращаемое значение;
}
байт ds18b20_read_byte (void) {
байт i, значение;
для (i = 0; i <8; i ++)
bitWrite (значение, i, ds18b20_read_bit ());
возвращаемое значение;
}
bool ds18b20_read (int * raw_temp_value) {
if (! Ds18b20_start ()) // Отправить стартовый импульс
return (0); // Возвращаем 0, если ошибка
ds18b20_write_byte (0xCC); // Отправляем команду пропуска ПЗУ
ds18b20_write_byte (0x44); // Отправляем команду начала преобразования
while (ds18b20_read_byte () == 0); // Ожидаем завершения преобразования
if (! Ds18b20_start ()) // Отправляем стартовый импульс
return (0); // Возвращаем 0, если ошибка
ds18b20_write_byte (0xCC); // Отправляем команду пропуска ПЗУ
ds18b20_write_byte (0xBE); // Отправляем команду чтения
* raw_temp_value = ds18b20_read_byte (); // Считываем младший байт температуры и сохраняем его в младшем байте raw_temp_value
* raw_temp_value | = (unsigned int) (ds18b20_read_byte () << 8); // Считываем старший байт температуры и сохраняем его в raw_temp_value MSB байт
return (1); // OK -> return 1
}
Wemos mini DS18B20, пример датчика температуры
DS18B20 — это датчик температуры, который можно использовать в различных простых проектах.Эта часть использует 1-проводную шину (I2C), и вы можете подключить несколько датчиков к вашему Arduino.
Эта деталь также имеет относительно низкую стоимость и требует только дополнительного подтягивающего резистора 4 кОм. В приведенном ниже примере мы сделаем базовый пример, который считывает температуру и выходные данные через последовательный порт и может быть проверен с помощью последовательного монитора в Arduino IDE.
Давайте посмотрим на список запчастей
Список деталей
Этикетка | Деталь Тип |
---|---|
DS1 | DS18B20 Датчик температуры 1-Wire |
Часть 1 | Arduino Uno (Rev3) |
R1 | 4.Резистор 7 кОм |
Макет
Как всегда, будьте осторожны, чтобы не получить неправильные соединения, вы можете обратиться за помощью к распиновке для устройства ниже. DS18B20 может питаться от 3,0 В до 5,5 В, поэтому вы можете просто подключить его вывод GND к 0 В, а вывод VDD к + 5 В от Wemos Mini
.
Вот схема подключения, показывающая, как подключить wemos к резистору и датчику.
Схема
Код
# включить// Пример температуры OneWire DS18S20, DS18B20, DS1822 OneWire DS (D4); // на выводе D4 (необходим резистор 4,7 кОм) недействительная настройка (недействительна) { Serial.begin (9600); } недействительный цикл (недействительный) { байт i; байт присутствует = 0; byte type_s; байтовые данные [12]; адрес байта [8]; плавать по Цельсию, по Фаренгейту; если (! ds.search (адрес)) { ds.reset_search (); задержка (250); возвращаться; } если (OneWire :: crc8 (адрес, 7)! = адрес [7]) { Serial.println («CRC недействителен!»); возвращаться; } Серийный.println (); // первый байт ПЗУ указывает, какая микросхема переключатель (адрес [0]) { case 0x10: type_s = 1; перерыв; case 0x28: type_s = 0; перерыв; case 0x22: type_s = 0; перерыв; По умолчанию: Serial.println («Устройство не является устройством семейства DS18x20.»); возвращаться; } ds.reset (); ds.select (адрес); ds.write (0x44, 1); // запускаем преобразование с включенным паразитным питанием в конце задержка (1000); присутствует = ds.reset (); ds.select (адрес); ds.написать (0xBE); // Чтение блокнота для (я = 0; я <9; я ++) { данные [я] = ds.read (); } // Преобразуем данные в фактическую температуру int16_t raw = (данные [1] << 8) | данные [0]; if (type_s) { raw = raw << 3; // 9-битное разрешение по умолчанию если (данные [7] == 0x10) { raw = (raw & 0xFFF0) + 12 - данные [6]; } } еще { байт cfg = (данные [4] & 0x60); если (cfg == 0x00) raw = raw & ~ 7; // 9-битное разрешение, 93,75 мс иначе, если (cfg == 0x20) raw = raw & ~ 3; // 10-битное разрешение, 187.5 мс иначе, если (cfg == 0x40) raw = raw & ~ 1; // 11-битное разрешение, 375 мс } Цельсий = (с плавающей точкой) необработанный / 16,0 Фаренгейт = Цельсий * 1,8 + 32,0; Serial.print ("Температура ="); Serial.print (по Цельсию); Serial.print («Цельсия»); Serial.print (по Фаренгейту); Serial.println ("Фаренгейт"); }
Выход
Откройте серийный монитор, и вы должны увидеть что-то вроде этого
выход ds18b20
Links
DS18B20 TO-92 Датчик температуры
Цифровой датчик температуры с одной шиной DS18B20 Модуль для электронных строительных блоков Arduino
Предыдущая статья Пример Wemos Mini и DHT ProСледующая статья Пример датчика Wemos mini bmp180
Сделайте термометр, используя модуль датчика температуры DS18B20 и ЖК-дисплей 16x2, взаимодействующий с arduino uno - KT778
Arduino IDE 1.8.5 (программируемая платформа для Arduino)
Нажмите, чтобы загрузить: https://www.arduino.cc/en/Main/Software
ЦИФРОВОЙ ДАТЧИК ТЕМПЕРАТУРЫ DS18B20
Это водонепроницаемая версия датчика температуры DS18B20 Arduino. Удобно, когда вам нужно измерить что-то далеко или во влажных условиях. Датчик работает при температуре до 125 ℃, кабель имеет оболочку из ПВХ, поэтому мы рекомендуем держать его при температуре ниже 100 ℃. Поскольку они цифровые, вы не получите никакого ухудшения сигнала даже на больших расстояниях! DS18B20 обеспечивает от 9 до 12-битных (настраиваемых) показаний температуры по интерфейсу 1-Wire, поэтому от центрального микропроцессора необходимо подключить только один провод (и землю).Может использоваться с системами 3,0-5,5 В.
- Используется для питания / данных от 3,0 В до 5,5 В
- ± 0,5 ℃ Точность от -10 ℃ до + 85 ℃
- Используемый диапазон температур: от -55 до 125 ℃ (-67 ℉ до + 257 ℉)
- 9 до 12-битного разрешения по выбору
- Использует интерфейс 1-Wire - для связи требуется только один цифровой контакт
- Уникальный 64-битный идентификатор, записанный в чип
- Несколько датчиков могут использовать один контакт
- Система сигнализации ограничения температуры
- Время запроса меньше 750 мс
- 3-проводной интерфейс:
Красный провод - VCC
Черный провод - GND
Желтый провод - ДАННЫЕ
16 * 2 ЖК-ДИСПЛЕЙ
- Режим ЖК-дисплея: STN, положительный, трансфлективный
- Цвет дисплея: темно-синий / желто-зеленый
- Угол обзора: 6H
- Метод вождения: 1/16 нагрузки, 1/5 смещения
- Подсветка: желто-зеленая светодиодная подсветка
- Габаритные размеры: 803615.8 MAX
16 * 2 ЖК-ДИСПЛЕЙ
Символ | Внешнее соединение | Функция | |||
VSS | 2 VSS | ||||
VDD | ИСТОЧНИК ПИТАНИЯ для логики lcm | ||||
V0 | Регулировка контрастности | 9000 | |||
RW | MPU | Сигнал выбора чтения / записи | |||
E | MPU | DB Signal | 72 72 | MPU | Четыре Lo w заказать двунаправленные три линии государственной шины.Используется для передачи данных между MPU и LCM. Эти четыре не используются между 4-битными операциями. |
DB4 ~ DB7 | MPU | Четыре двунаправленных линии высокого порядка Три линии шины состояния, используемые для передачи данных между MPU | |||
A | Светодиод питания | Блок питания для BKL | |||
K |
ПРИМЕЧАНИЕ |
|
- Подключите положительную шину потенциометра 10 кОм к положительной на макете, отрицательную к отрицательной на макетной плате и сигнальный контакт к контакту 3 ЖК-дисплея.
- Подключите положительный полюс DS18B20 к любому положительному, отрицательный к отрицательному и выходной вывод к Arduino D8, а выходной вывод к 5 В через резистор 4,7 кОм.
- Подключите Arduino 5V к положительной шине и заземление к отрицательной шине.
- Подключите
Контакт 1 ЖК-дисплея к заземлению
Контакт 2 - 5 В
Контакт 4 - D7 Arduino
Контакт 5 - земля
Контакт 6 - D6 Arduino
Контакт 11 - D5 arduino
Вывод 12 на D4 arduino
Вывод 13 на D3 arduino
Вывод 14 на D2 arduino
Вывод 15 на 5 В через 330 Ом
Вывод 16 на отрицательную шину.
- Подключите положительную клемму к положительной, а отрицательную - к отрицательной шине на макетной плате.
https://docs.google.com/document/d/e/2PACX-1vSeHIcwXZaeV5zN7gWdf-ZnPYdzfEGg53qfDDt6LLOWF_mXchO-bNczhNLzcgxuJVZ6O9000/92020003 Датчик температуры 9um может быть 9um, как DS
DS18B20 Распиновка датчика температуры, спецификации, эквиваленты и лист данных
DS18B20 Датчик температуры
Датчик температуры DS18B20
Датчик температуры DS18B20
Распиновка датчика температуры DS18B20
нажмите на картинку для увеличения
Конфигурация контактов
№: | Имя контакта | Описание |
1 | Земля | Подключить к земле цепи |
2 | Vcc | Запитывает датчик, может быть 3.3В или 5В |
3 | Данные | Этот вывод выдает на выходе значение температуры, которое может быть считано с использованием однопроводного метода. |
Характеристики датчика DS18B20
- Программируемый цифровой датчик температуры
- Обменивается данными с использованием метода 1-Wire
- Рабочее напряжение: от 3 В до 5 В
- Диапазон температур: от -55 ° C до + 125 ° C
- Точность: ± 0.5 ° С
- Выходное разрешение: от 9 до 12 бит (программируемое)
- Уникальный 64-битный адрес позволяет мультиплексировать
- Время преобразования: 750 мс при 12 бит
- Программируемые опции сигнализации
- Доступен как To-92, SOP и даже как водонепроницаемый датчик
Примечание. Прочтите далее, чтобы узнать, почему эти параметры важны. Также техническое описание DS18B20 можно найти внизу страницы
.
Альтернативные датчики температуры
Термопара, TMP100, LM75, DHT11, SHT15, LM35DZ, TPA81, D6T
Датчики эквиваленты DS18B20
DS18S20
Где использовать датчик DS18B20
DS18B20 - это программируемый 1-проводной датчик температуры от компании maxim Integrated.Он широко используется для измерения температуры в жестких условиях окружающей среды, таких как химические растворы, шахты, почва и т. Д. Датчик имеет прочное сужение, а также его можно приобрести с водонепроницаемой опцией, что упрощает процесс монтажа. Он может измерять температуру в широком диапазоне от -55 ° C до + 125 ° с приличной точностью ± 5 ° C. Каждый датчик имеет уникальный адрес и требует только одного вывода MCU для передачи данных, поэтому это очень хороший выбор для измерения температуры в нескольких точках без ущерба для большей части ваших цифровых выводов на микроконтроллере.
Как использовать датчик DS18B20
Датчик работает по методу связи 1-Wire. Для этого требуется только вывод данных, подключенный к микроконтроллеру с подтягивающим резистором, а два других вывода используются для питания, как показано ниже.
Подтягивающий резистор используется для поддержания высокого уровня линии, когда шина не используется. Значение температуры, измеренное датчиком, сохраняется в 2-байтовом регистре внутри датчика. Эти данные могут быть прочитаны с использованием метода 1-Wire, отправив последовательность данных.Есть два типа команд, которые должны быть отправлены для чтения значений: одна - это команда ПЗУ, а другая - команда функции. Значение адреса каждой памяти ПЗУ вместе с последовательностью указано в таблице данных ниже. Вы должны прочитать его, чтобы понять, как общаться с датчиком.
Если вы планируете связать его с Arduino, то вам не нужно беспокоиться обо всем этом. Вы можете разработать легкодоступную библиотеку и использовать встроенные функции для доступа к данным.
Приложения
- Измерение температуры в жестких условиях
- Измерение температуры жидкости
- Применения, в которых необходимо измерять температуру в нескольких точках
2D-Модель
.