КАК СДЕЛАТЬ ТЕРМОМЕТР НА ARDUINO ПРИ ПОМОЩИ DS18B20
Привет всем! Сегодня я расскажу, как сделать на Arduino термометр с помощью датчика температуры DS18B20.
Информация о самом датчике.
DS18B20 – датчик температуры, являющийся 1-Wire устройством, разработанный Maxim IC. Измерения производятся в градусах по Цельсию, с 9-12-битной разрядностью. Диапазон измеряемых значений - от -55°С до 125°С; точность измерения +/- 0,5°С. Каждый датчик имеет свой уникальный 64-битный серийный номер, что позволяет использовать достаточно большое количество датчиков, подключенных к одной шине.
ШАГ 1.
Что нам понадобится:
- Плата Arduino (UNO, DUE, Micro, проч.). Я использовал A-star micro от polou
- DS18B20 (водонепроницаемый или нет)и один 4,7кОМ резистор, который будет необходимо подключить ко 2 и 3 контакту датчика, чтобы была возможность снимать показания.
- LCD дисплей с I2C шиной
- Макетная плата и провода, чтобы собрать это все вместе.
ШАГ 2.
Чтобы узнать измеренную температуру с помощью Serial Monitor соедините DS18B20 и Arduino с помощью макетной платы и проводов и не забудьте про 4,7кОм резистор между 2 и 3 контактом датчика. Затем скачайте, откройте и загрузите .ino-файл, который называется DS18B20_Serial.
Если все сделано верно, то вы увидите измеренные значения температуры в Serial Monitor, аналогично тем, что на скриншоте.
Необходимые библиотеки:
Скачайтеиразархивируйтеих/Program Files(x86)/Arduino/Libraries
#include <OneWire.h>
#include <DallasTemperature.h>
// Контакт для передачи данных подключен ко 2-му пину на Arduino
#define ONE_WIRE_BUS 2
// Настройка, позволяющая 1-Wire устройству взаимодействовать с любым 1-wire устройством
// (не только c датчиками температуры от Maxim/Dallas)
OneWire oneWire(ONE_WIRE_BUS);
// Передаем наши 1-Wire ссылки датчику температуры
DallasTemperature sensors(&oneWire);
void setup(void)
{
// открываем последовательный порт
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
//запускаембиблиотеку
sensors.begin();
}
void loop(void)
{
// вызываем sensors.requestTemperatures() для получения общей температуры
// запрос распространяется по всем устройствам, подключенным к шине
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures(); //Запроснаполучениетемпературы
Serial.println("DONE");
Serial.print("Temperature is: ");
Serial.print(sensors.getTempCByIndex(0)); // Почему "byIndex"?
// Вы можете подключить больше, чем одно устройство на одну шину
// 0 ссылок на первое подключенное устройство
delay(1000);
}
ШАГ 3.
Если вы не хотите смотреть результаты измерений с помощью Serial Monitor, то этот вариант специально для вас!
Соедините I2C LCD с входами UNO – A4 – SDA, A5 – SCL, а датчик к цифровому входу 2. Скачайте и загрузите DS18B20_I2C_LCD.ino. Если все сделано правильно, то вы увидите значение температуры на дисплее.
Необходимые библиотеки:
Скачайтеиразархивируйтеих/Program Files(x86)/Arduino/Libraries
#include <OneWire.h>
#include <DallasTemperature.h>//
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#define ONE_WIRE_BUS 2
//Настройка, позволяющая 1-Wire устройству взаимодействовать с любым 1-wire устройством (не только c датчиками температуры от Maxim/Dallas)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup()
{
lcd.init();
lcd.backlight();
sensors.begin();
}
void loop()
{
sensors.requestTemperatures();
lcd.setCursor(0, 0);
lcd.print(sensors.getTempCByIndex(0));
lcd.print(" *C");
delay(3000);
}