Arduino:Примеры/Гайд по использованию температурного датчика DS18B20 с Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Черновик |
Гайд по использованию температурного датчика DS18B20 с Arduino[1]
Это руководство объясняет, как считывать температуру при помощи температурного датчика DS18B20 и платы Arduino.
Температурный датчик DS18B20
Температурный датчик DS18B20 – это 1-проводной цифровой температурный датчик. Ему требуется очень простая электрическая цепь. Он коммуницирует через общую шину, и это значит, что вы можете считывать данные с нескольких температурных датчиков, используя всего один цифровой контакт Arduino.
Как видно на картинке ниже, этот датчик оснащен всего тремя контактами:
У датчика DS18B20 есть и водонепроницаемая версия:
Функции
Главные функции температурного датчика DS18B20:
- Коммуникация: через 1-проводную шину
- Диапазон измеряемой температуры: от -55°C до 125°C
- Точность: +/- 0,5% (в диапазоне от -10°C до 85°C)
Считывание температуры с помощью DS18B20 и Arduino
Проект, который мы создадим, будет считывать температуру при помощи датчика DS18B20 и платы Arduino, а считанные значения будут показаны в мониторе порта IDE Arduino.
Необходимые компоненты
- Одна плата Arduino Uno
- Одна макетная плата
- Один температурный датчик DS18B20
- Один резистор на 4700 Ом
- Провода-перемычки
Схема
Датчик DS18B20 может работать в двух режимах:
- Нормальный режим. В этом случае нужно будет подключить все три контакта DS18B20. Ниже – схема того, каким должно быть подключение:
- Паразитный режим. В этом случае нужно подключить только два контакта DS18B20: GND и контакт для передачи данных. Питание к датчику будет идти через контакт для данных.
Ниже – схема того, каким должно быть подключение:
Вы можете считывать температуру сразу с нескольких датчиков DS18B20, используя всего один цифровой контакт Arduino. Для этого вам нужно подключить контакты DQ от всех датчиков к цифровому контакту Arduino.
Код
Вам нужно будет установить две библиотеки: OneWire и Dallas Temperature.
Установка библиотеки OneWire
- Кликните здесь, чтобы скачать библиотеку OneWire. В результате в вашу папку загрузок должен скачаться ZIP-файл.
- Распакуйте этот ZIP-файл. В результате у вас должна получиться папка под названием «OneWire-master».
- Переименуйте папку «OneWire-master» на «OneWire».
- Переместите папку «OneWire» в папку библиотек IDE Arduino.
- Откройте IDE Arduino.
Установка библиотеки DallasTemperature
- Кликните здесь, чтобы скачать библиотеку DallasTemperature. В результате в вашу папку загрузок должен скачаться ZIP-файл.
- Распакуйте этот ZIP-файл. В результате у вас должна получиться папка под названием «Arduino-Temperature-Control-Library-master».
- Переименуйте папку «Arduino-Temperature-Control-Library-master» на «DallasTemperature».
- Переместите папку «DallasTemperature» в папку библиотек IDE Arduino.
- Наконец, откройте IDE Arduino.
После установки необходимых библиотек загрузите в IDE Arduino скетч, показанный ниже:
/*********
Автор - Руи Сантос (Rui Santos)
Более подробно о проекте на: http://randomnerdtutorials.com
За основу взят пример «Dallas Temperature Library»
*********/
#include <OneWire.h>
#include <DallasTemperature.h>
// контакт для данных подключаем к цифровому контакту 2 на Arduino:
#define ONE_WIRE_BUS 2
// создаем экземпляр класса OneWire, чтобы с его помощью
// общаться с однопроводным устройством
// (т.е. в нашем случае – с температурным датчиком):
OneWire oneWire(ONE_WIRE_BUS);
// передаем объект oneWire объекту sensors:
DallasTemperature sensors(&oneWire);
void setup(void)
{
// запускаем последовательную коммуникацию (в отладочных целях):
Serial.begin(9600);
// запускаем библиотеку:
sensors.begin();
}
void loop(void){
// вызываем функцию sensors.requestTemperatures(),
// которая приказывает всем устройствам, подключенным к шине,
// выполнить конверсию температурных данных:
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
// "Температура в Цельсиях: "
// почему «byIndex»? к одной шине может быть подключено
// больше одного датчика; самое первое устройство на шине – это «0»:
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" - Fahrenheit temperature: ");
// " - Температура в Фаренгейтах: "
Serial.println(sensors.getTempFByIndex(0));
delay(1000);
}
Наконец, открываем монитор порта IDE Arduino на скорости 9600 бод. В нем должны появиться данные о температуре – в градусах Цельсия и Фаренгейта.
См.также
Внешние ссылки
- Страницы с устаревшим атрибутом подсветки синтаксиса «enclose»
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Черновик
- Надо доработать
- Черновой вариант статьи
- Черновой вариант
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino