Цифровой датчик температуры arduino

Цифровой датчик температуры arduino

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

Мы сделаем LCD-термометр или, как вариант, Serial-термометр (напечатает данные о температуре на последовательном мониторе Arduino IDE) на основе микроконтроллера Ардуино и цифрового датчика DS18B20, макетов, перемычек. Таким образом, вы сможете измерять температуру воздуха, жидкости, например, воды и температуру земли.

Информация о сенсоре DS18B20

DS18B20 — это цифровой температурный датчик с интерфейсом 1-Wire от Maxim IC. На выходе мы получаем информацию в Цельсиях с точностью от 9 до 12 бит, от -55 до 125 (+/- 0,5). Каждый датчик имеет уникальный 64-разрядный серийный номер, что позволяет использовать огромное количество датчиков на одной шине данных.

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

  • Для уникального интерфейса 1-Wire® требуется только один порт для связи.
  • Каждое устройство имеет уникальный 64-битный последовательный код, хранящийся в ПЗУ.
  • Многоточечная возможность упрощает использование распределенных температурных зондов.
  • Не требует внешних компонентов.
  • Может питаться от линии передачи данных.
  • Диапазон мощности от 3,0 до 5,5 В.
  • Измеряет температуру от -55°C до + 125°C (от -67 °F до + 257 °F) ± 0,5°C от -10°C до + 85°C.
  • Разрешение термометра выбирается пользователем от 9 до 12 бит.
  • Преобразует температуру в 12-битное цифровую переменную в 750 мс (макс.).
  • Определяемые пользователем энергонезависимые (NV) настройки сигнализации.
  • Команда поиска по тревоге идентифицирует и адресует устройства, температура которых находится за пределами запрограммированных пределов (состояние аварийной сигнализации).
  • Применяется в термостатических устройствах, промышленных системах, потребительских товарах, термометрах или в любых термических чувствительных системах.

Комплектующие

Чтобы сделать термометр, вам понадобятся следующие детали:

  • Плата Arduino (UNO, DUE, Micro и т.п.);
  • Датчик DS18B20 (водонепроницаемый или нет);
  • Резистор 4.7К (в некоторых магазинах продается датчик с резистором 4,7 тыс.);
  • ЖК-дисплей 16×2 с шиной I2C;
  • Макет;
  • Перемычки.

Из программного обеспечения нужно иметь установленную Arduino IDE.

Библиотеки

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

/Progam Files (x86)/Arduino/Libraries (по умолчанию):

Все библиотеки вы можете скачать по ссылкам выше или на нашем сайте в разделе Библиотеки.

Термометр через последовательный монитор

Чтобы отобразить данные на последовательном мониторе, подключите датчик DS18B20 к Arduino, используя перемычки и макет, и не забудьте подключить или припаять резистор 4.7k между контактом 2 и 3 датчика.

Затем скачайте, откройте и загрузите файл .ino, который называется — DS18B20_Serial, ниже.

Если все в порядке, вы должны увидеть измеренную температуру на серийном мониторе Arduino IDE.

Термометр с ЖК-дисплеем

Если вы не хотите измерять температуру через последовательный монитор, то этот шаг для вас.

Подключите ЖК-дисплей I2C к контактам UNO:

Затем скачайте и загрузите файл .ino, который называется — DS18B20_I2C_LCD. Если все в порядке, вы увидите показания температуры на дисплее.

DS18B20 — это цифровой датчик температуры. Датчик очень прост в использовании.

Во-первых, он цифровой, а во вторых — у него всего лишь один контакт, с которого мы получаем полезный сигнал. То есть, вы можете подключить к одному Arduino одновременно огромное количество этих сенсоров. Пинов будет более чем достаточно. Мало того, вы даже можете подключить несколько сенсоров к одному пину на Arduino! Но обо всем по порядку.

Arduino датчик температуры DS18B20

DS18B20 имеет различные форм-факторы. Так что выбор, какой именно использовать, остается за вами. Доступно три варианта: 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92. Серфинг по eBay или Aliexpress показывает, что китайцы предлагают версию TO-92 во влагозащищенном корпусе. То есть, вы можете смело окунать подобное чудо в воду, использовать под дождем и т.д. и т.п. Эти сенсоры изготавливаются с тремя выходными контактами (черный — GND, красный — Vdd и белый — Data).

Читайте также:  Предупреждение от мвд о штрафе

Различные форм-факторы датчиков DS18B20 приведены на рисунке ниже.

Модель DS18B20 во влагозащищенном корпусе:

DS18B20 удобен в использовании. Запитать его можно через контакт data (в таком случае вы используете всего два контакта из трех для подключения!). Сенсор работает в диапазоне напряжений от 3.0 В до 5.5 В и измеряет температуру в диапазоне от -55°C до +125°C (от -67°F до +257°F) с точностью ±0.5°C (от -10°C до +85°C).

Еще одна крутая фича: вы можете подключить параллельно вплоть до 127 датчиков! и считывать показания температуры с каждого отдельно. Не совсем понятно, в каком проекте подобное может понадобится, но подключить два сенсора и контролировать температуру в холодильнике и морозильной камере можно. При этом вы оставите свободными кучу пинов на Arduino. В общем, фича приятная.

Что вам понадобится для контроля температуры с помощью Arduino и DS18B20

  • Естественно, вам необходима Arduino IDE;
  • Библиотека OneWire library, которая значительно облегчает работу с Arduino и датчиком DS18B20;
  • Скетч.

Скачать Arduino IDE можно с официального сайта Arduino.

Библиотеку OneWire Library можно скачать на OneWire Project Page (желательно скачивать последнюю версию библиотеки).

  • Как минимум один цифровой датчик температуры DS18B20;
  • Контроллер Arduino (в данном примере используется Arduino Uno);
  • 3 коннектора;
  • Монтажная плата (Breadboard);
  • USB кабель для подключения Arduino к персональному компьютеру.

Ссылки для заказа необходимого оборудования из Китая

USB кабель необходим для программирования нашего Arduino. После того, как вы "зальете" скетч на плату, можно подключать ее к отдельному источнику питания.

Подключение DS18B20 к Arduino

Датчик подключается элементарно.

Контакт GND с DS18B20 подключается к GND на Arduino.

Контакт Vdd с DS18B20 подключается к +5V на Arduino.

Контакт Data с DS18B20 подключается к любому цифровому пину на Arduino. В данном примере используется пин 2.

Единственное, что необходимо добавить из внешней дополнительной обвязки — это подтягивающий резистор на 4.7 КОм.

Схема подключения DS18B20 к Arduino показана ниже (в скетче, который будет приведен ниже, проверьте строки 10 и 65. В них указаны пины, к которым вы подключали контакт сигнала с датчика и режим питания!):

На рисунке ниже приведена фотография нашей простой схемы "в жизни".

Паразитное и обычное питание

Есть альтернативный вариант подключения — так называемое "паразитное" подключение. В этом случае мы не будем подключать пин +5V к пину Vdd на датчике DS18B20. Вместо этого мы подключим контакт Vdd с датчика DS18B20 к GND. Преимущества такого подключения очевидны: нам понадобится всего два коннектора!

Недостатком такого подключения является ограничение количества одновременно подключаемых сенсоров. Кабели для подключения должны быть максимально короткими!

В общем, с "паразитным" подключением надо быть аккуратнее и лучше его все-таки не использовать. Результаты (значения температур) могут оказаться самыми неожиданными.

Скетч для Arduino и сенсора DS18B20

Установливаем библиотеку OneWire Library

После того как вы скачали архив с библиотекой, ее надо импортировать. Для этого в Arduino IDE выберите пункт “Sketch” — “Import Library” — “Add Library” и выберите архив, который вы скачали. Если у вас возникли проблемы, с установкой библиотеки, ознакомьтесь с инструкцией по установке библиотек в Arduino.

Загружаем скетч на Arduino

Скетч, который представлен ниже, есть в библиотеке OneWire, в категории examples. Перейдите в “File” — “Examples” — “OneWire” и выберите пример “DS18x20_Temperature”. Код программы представлен ниже.

Данный пример использует библиотеку OneWire Library, для того, чтобы собрать данные со всех подключенных датчиков температуры DS28B20 (как подключить несколько сенсоров описано в конце статьи) и отобразить их в окне серийного монитора Arduino IDE.

Читайте также:  Договорные матчи в российском футболе

В окне серийного монитора вы увидите примерно следующее:

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

Обычное или паразитное питание?

DS18B20 может работать в обычном или в так называемом "паразитном" режиме. В обычном режиме для подключения используется 3 коннектора, в "паразитном" режиме — в его лишь 2.

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

  • Для "паразитного" режима в строке 65 надо указать: ds.write(0x44, 1);
  • Для обычного режима в строке 65 указывается: ds.write(0x44);

Убедитесь, что вы указали корректные пины!

В строке 10, где указано “OneWire ds(2);” устанавливается пин, к которому подключен контакт data с сенсора.

В этом примере использован пин 2, но значения пина по умолчанию в примере OneWire стоит на 10. Можно использовать и его.

// пример использования библиотеки OneWire DS18S20, DS18B20, DS1822

OneWire ds(2); // на пине 10 (нужен резистор 4.7 КОм)

DS18B20 — это цифровой датчик температуры. Датчик очень прост в использовании.

Во-первых, он цифровой, а во вторых — у него всего лишь один контакт, с которого мы получаем полезный сигнал. То есть, вы можете подключить к одному Arduino одновременно огромное количество этих сенсоров. Пинов будет более чем достаточно. Мало того, вы даже можете подключить несколько сенсоров к одному пину на Arduino! Но обо всем по порядку.

Arduino датчик температуры DS18B20

DS18B20 имеет различные форм-факторы. Так что выбор, какой именно использовать, остается за вами. Доступно три варианта: 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92. Серфинг по eBay или Aliexpress показывает, что китайцы предлагают версию TO-92 во влагозащищенном корпусе. То есть, вы можете смело окунать подобное чудо в воду, использовать под дождем и т.д. и т.п. Эти сенсоры изготавливаются с тремя выходными контактами (черный — GND, красный — Vdd и белый — Data).

Различные форм-факторы датчиков DS18B20 приведены на рисунке ниже.

Модель DS18B20 во влагозащищенном корпусе:

DS18B20 удобен в использовании. Запитать его можно через контакт data (в таком случае вы используете всего два контакта из трех для подключения!). Сенсор работает в диапазоне напряжений от 3.0 В до 5.5 В и измеряет температуру в диапазоне от -55°C до +125°C (от -67°F до +257°F) с точностью ±0.5°C (от -10°C до +85°C).

Еще одна крутая фича: вы можете подключить параллельно вплоть до 127 датчиков! и считывать показания температуры с каждого отдельно. Не совсем понятно, в каком проекте подобное может понадобится, но подключить два сенсора и контролировать температуру в холодильнике и морозильной камере можно. При этом вы оставите свободными кучу пинов на Arduino. В общем, фича приятная.

Что вам понадобится для контроля температуры с помощью Arduino и DS18B20

  • Естественно, вам необходима Arduino IDE;
  • Библиотека OneWire library, которая значительно облегчает работу с Arduino и датчиком DS18B20;
  • Скетч.

Скачать Arduino IDE можно с официального сайта Arduino.

Библиотеку OneWire Library можно скачать на OneWire Project Page (желательно скачивать последнюю версию библиотеки).

  • Как минимум один цифровой датчик температуры DS18B20;
  • Контроллер Arduino (в данном примере используется Arduino Uno);
  • 3 коннектора;
  • Монтажная плата (Breadboard);
  • USB кабель для подключения Arduino к персональному компьютеру.
Читайте также:  Как наложить другой фон на фото

Ссылки для заказа необходимого оборудования из Китая

USB кабель необходим для программирования нашего Arduino. После того, как вы "зальете" скетч на плату, можно подключать ее к отдельному источнику питания.

Подключение DS18B20 к Arduino

Датчик подключается элементарно.

Контакт GND с DS18B20 подключается к GND на Arduino.

Контакт Vdd с DS18B20 подключается к +5V на Arduino.

Контакт Data с DS18B20 подключается к любому цифровому пину на Arduino. В данном примере используется пин 2.

Единственное, что необходимо добавить из внешней дополнительной обвязки — это подтягивающий резистор на 4.7 КОм.

Схема подключения DS18B20 к Arduino показана ниже (в скетче, который будет приведен ниже, проверьте строки 10 и 65. В них указаны пины, к которым вы подключали контакт сигнала с датчика и режим питания!):

На рисунке ниже приведена фотография нашей простой схемы "в жизни".

Паразитное и обычное питание

Есть альтернативный вариант подключения — так называемое "паразитное" подключение. В этом случае мы не будем подключать пин +5V к пину Vdd на датчике DS18B20. Вместо этого мы подключим контакт Vdd с датчика DS18B20 к GND. Преимущества такого подключения очевидны: нам понадобится всего два коннектора!

Недостатком такого подключения является ограничение количества одновременно подключаемых сенсоров. Кабели для подключения должны быть максимально короткими!

В общем, с "паразитным" подключением надо быть аккуратнее и лучше его все-таки не использовать. Результаты (значения температур) могут оказаться самыми неожиданными.

Скетч для Arduino и сенсора DS18B20

Установливаем библиотеку OneWire Library

После того как вы скачали архив с библиотекой, ее надо импортировать. Для этого в Arduino IDE выберите пункт “Sketch” — “Import Library” — “Add Library” и выберите архив, который вы скачали. Если у вас возникли проблемы, с установкой библиотеки, ознакомьтесь с инструкцией по установке библиотек в Arduino.

Загружаем скетч на Arduino

Скетч, который представлен ниже, есть в библиотеке OneWire, в категории examples. Перейдите в “File” — “Examples” — “OneWire” и выберите пример “DS18x20_Temperature”. Код программы представлен ниже.

Данный пример использует библиотеку OneWire Library, для того, чтобы собрать данные со всех подключенных датчиков температуры DS28B20 (как подключить несколько сенсоров описано в конце статьи) и отобразить их в окне серийного монитора Arduino IDE.

В окне серийного монитора вы увидите примерно следующее:

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

ROM = 28 88 84 82 5 0 0 6A

Data = 1 56 1 4B 46 7F FF A 10 D1 CRC=D1

Temperature = 21.37 Celsius, 70.47 Fahrenheit

No more addresses.

Обычное или паразитное питание?

DS18B20 может работать в обычном или в так называемом "паразитном" режиме. В обычном режиме для подключения используется 3 коннектора, в "паразитном" режиме — в его лишь 2.

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

  • Для "паразитного" режима в строке 65 надо указать: ds.write(0x44, 1);
  • Для обычного режима в строке 65 указывается: ds.write(0x44);

Убедитесь, что вы указали корректные пины!

В строке 10, где указано “OneWire ds(2);” устанавливается пин, к которому подключен контакт data с сенсора.

В этом примере использован пин 2, но значения пина по умолчанию в примере OneWire стоит на 10. Можно использовать и его.

// пример использования библиотеки OneWire DS18S20, DS18B20, DS1822

OneWire ds(2); // на пине 10 (нужен резистор 4.7 КОм)

Ссылка на основную публикацию
Хрипит динамик в машине причины
Атмосфера в салоне автомобиля во многом зависит от работы акустической системы. В бюджетных машинах штатная магнитола и динамики оставляют желать...
Фиксированная шапка сайта при прокрутке
Допустим у вас важная информация например контакты находятся в шапке и вы хотите что бы они всегда были на веду...
Фиксированное меню при скролле
Создаём эффект залипания при прокручивании страницы на блоках меню навигации, бокового виджета и меню с помощью jQuery и без него....
Хром видео не на весь экран
БлогNot. Chrome 33 перестал показывать YouTube в полный экран. Chrome 33 перестал показывать YouTube в полный экран. Видел такой запрос....
Adblock detector