Это шестой урок из цикла «Знакомство с Arduino». В этом уроке Вы научитесь основам работы с цифровым датчиком температуры DS18B20.

Для урока Вам понадобится следующие детали:

  • Arduino Nano;
  • беспаечная макетная плата (она же breadboard);
  • провода типа папа-папа;
  • резистор номиналом 4.7 кОм;
  • дисплей OLED 0.96»;
  • цифровой датчик температуры DS18B20.

Также Вам понадобится скачать и установить библиотеки DallasTemperature, OneWire и среду Arduino IDE. Если не знаете/забыли как это сделать, то вернитесь к уроку по среде Arduino IDE.

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

Датчик подключается к Arduino по протоколу 1-Wire, что позволяет подключить большое количество таких датчиков (до 127 штук), используя всего один цифровой вывод. Опрос одного конкретного датчика, подключённого по общей шине,  производится по уникальному серийному 64-разрядному коду, который может быть считан специальной командой.

Подключение цифрового датчика температуры  DS18B20 к Arduino:

Цифровой датчик температуры DS18B20 можно подключить к Arduino двумя способами:

  • С использованием 3х выводов: VCC (питание), GND (земля) и DQ (данные)

Вывод датчика GND подключается к выводу GND Arduino, вывод VCC подключается к выводу +5V Arduino, а вывод DATA подключается к любому цифровому выводу Arduino.

  • С использованием 2х выводов: GND(земля) и DQ (данные). Однако при таком подключении датчик температуры редко может выдавать ошибочные показания

 

Вывод датчика GND подключается к выводу GND Arduino, вывод VCC закорачивается на землю (GND), вывод +5V Arduino подключается к резистору,  а вывод DATA подключается к любому цифровому выводу Arduino.

Однако независимо от выбранного способа подключения, информационный (DQ) вывод датчика необходимо соединить с питанием через резистор 4.7 кОм (при подключении только одного датчика можно использовать резистор на 10 кОм).

При подключении нескольких DS18B20 параллельно (при использовании библиотеки OneWire считывать показания можно со всех датчиков одновременно) нужно учитывать следующие замечания:

  • При подключении больше 10 датчиков необходимо использовать резистор с меньшим сопротивлением (~1.5 кОм или меньше)
  • При подключении больше 10 датчиков может возникнуть погрешность в показаниях. Чтобы предотвратить это, рекомендуется ставить дополнительный резистор 100 Ом … 120 Ом между цифровым выводом Arduino, к которому подключён вывод DQ и выводом DQ на каждом датчике DS18B20.

В нашем примере мы подключим DS18B20 к Arduino при помощи 3х выводов. Также, для вывода текущей температуры мы будем использовать OLED.

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

Электрическая принципиальная схема:

Схема подключения на макетной плате:

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

Текст программы:

Пояснение программы »

В самом начале мы подключаем библиотеки для работы с OLED и DS18B20, а также создаём необходимые переменные для работы с температурой. Функция setup() запускается однократно при запуске программы. В ней инициализируется OLED и датчик температуры DS18B20. При помощи команды sensor.setResolution () устанавливается точность измерения температуры. Функция loop() вызывается после функции setup(). Функция представляет собой бесконечный цикл, в котором выполняется пользовательская программа. В ней мы считываем текущее значение температуры с DS18B20 и выводим её на экран. Также на OLED выводится максимальная и минимальная температуры за весь период измерений.

Когда программа успешно записана в Arduino, на OLED появится текущее значение температуры (сверху), а в нижней части экрана будут значения минимальной и максимальной температуры за весь период измерений. Данные постоянно обновляются.

Для проверки, насколько хорошо Вы усвоили урок, выполните следующие задания.

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

Задания:

  1. Измените точность измерения температуры на минимальный; 

    Показать ответ »

    Для этого нужно изменить значение переменной TEMPERATURE_PRECISION на 9, т.е. должно получиться так #define TEMPERATURE_PRECISION 9// точность измерений (9 … 12). Далее программа остаётся прежней.Текст программы: 

  2. Считывайте температуру и выводите её на OLED в градусах Фаренгейта. 

    Показать ответ »

    Мы считываем температуру в градусах Цельсия при помощи команды temp = sensor.getTempC(Thermometer). Существует аналогичная команда и для градусов Фаренгейта: sensor.getTempF(). При выводе температуры на OLED нужно также поменять значок Цельсия на Фаренгейт. Далее программа остаётся прежней.Текст программы: 

 

 

Спасибо за внимание и до новых встреч!

 

Объявление: Замечания по тексту присылайте на адрес info@robohobby.by