Рассмотрим пример простого термометра на датчике DS18B20.

 

Детали для Части 1Требуемые детали

      • Arduino Uno V3 (можно заменить на любой совместимый клон, а также на Nano)
    • Датчик DS18B20 типа TO92
    • Резистор 4.7K ( Если нет под рукой именно такого номинала, то возьмите что-то близкое из того что есть)
    • Макетная плата на 400 контактов
    • Набор цветных проводов папа-папа (Для проводов питания старайтесь использовать красный и черный, чтобы не путать их с сигнальными линиями)

 

 

Фото 1.1

 

 

        Как вы можете видеть на Фото 1.2 схема соединений крайне проста. На макетной плате создается короткий отрезок 3-х проводной шины GND — DQ — VCC. После чего на эту шину устанавливается резистор, который соединяет DQ и VCC, затем устанавливается датчик DS18B20. (   средний контакт информационный, крайние контакты — питание, + питания крайний правый, если смотреть на лицевую сторону). Подключите плату Arduino.

 

Макет термометра

      • Красный — Arduino Uno 5V ->  VCC DS18B20
      • Белый — Arduino Uno IO12 ->  DQ DS18B20*
      • Черный — Arduino Uno GND ->  GND DS18B20

* Можно использовать другой IO на Arduino, но тогда внесите изменение в программу тоже

Фото 1.2

 

 

        После того как макет собран откройте среду разработки Arduino IDE и загрузите в Arduino Uno следующую программу.

 

         Если загрузка программы прошла успешно, то откройте Serial Monitor на закладке Tools в Arduino IDE. Надеюсь вы увидите что-то похожее.

 

 

Журнал измерений

        В окошко Serial Monitor каждые 3сек выводится текущая температура. Можете поменять задержку чтобы делать это чаще или наоборот реже.
        Вернемся к программе и подробно ее разберем.
        Первым делом подключаются требуемые библиотеки. Добавьте их в вашей Arduino IDE, если там их еще нет.

        Далее создается объект oneWire для взаимодействия со всеми устройствами OneWire, подключенными к пину IO12 на Arduino.

        Создается объект sensors для связи датчиков температуры и объекта oneWire

         Далее в Setup происходит инициализация Serial Monitor (на скорости 9600) и инициализация температурных датчиков. При инициализации датчиков по умолчанию выбирается максимальное 12-бит разрешение. Если требуется меньше, то это можно изменить с помощью метода setResolution()

       Затем в основном рабочем цикле используется библиотечный метод requestTemperatures (), который запрашивает температуру от всех датчиков на шине.

        После чего функции Serial.print () обеспечивают вывод результатов. Метод getTempCByIndex() получает температуру в градусах Цельсия от датчика с индексом 0. В нашем случае датчик единственный и поэтому он имеет индекс 0.

        В завершение функцией delay() устанавливается пауза в 3с, перед тем как делать следующее измерение.

         Таким образом программа разобрана, но вы можете поэкспериментировать с ней, добавляя туда какие-то дополнительные функции или библиотечные методы на свое усмотрение.

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

 

 

Журнал измерений

Журнал измерений  На этом завершаемся.