КАК СДЕЛАТЬ ТЕРМОМЕТР НА ARDUINO ПРИ ПОМОЩИ DS18B20

 

Привет всем! Сегодня я расскажу, как сделать на Arduino термометр с помощью датчика температуры DS18B20.

Информация о самом датчике.

DS18B20 – датчик температуры, являющийся 1-Wire устройством, разработанный Maxim IC. Измерения производятся в градусах по Цельсию, с 9-12-битной разрядностью. Диапазон измеряемых значений - от -55°С до 125°С; точность измерения +/- 0,5°С. Каждый датчик имеет свой уникальный 64-битный серийный номер, что позволяет использовать достаточно большое количество датчиков, подключенных к одной шине.

ШАГ 1.

Что нам понадобится:

  1. Плата Arduino (UNO, DUE, Micro, проч.). Я использовал A-star micro от polou
  2. DS18B20 (водонепроницаемый или нет)и один 4,7кОМ резистор, который будет необходимо подключить ко 2 и 3 контакту датчика, чтобы была возможность снимать показания.
  3. LCD дисплей с I2C шиной
  4. Макетная плата и провода, чтобы собрать это все вместе.

ШАГ 2.

Чтобы узнать измеренную температуру с помощью Serial Monitor соедините DS18B20 и Arduino с помощью макетной платы и проводов и не забудьте про 4,7кОм резистор между 2 и 3 контактом датчика. Затем скачайте, откройте и загрузите .ino-файл, который называется DS18B20_Serial.

Если все сделано верно, то вы увидите измеренные значения температуры в Serial Monitor, аналогично тем, что на скриншоте.

Необходимые библиотеки:

  1. 1-Wire
  2. Dallar Temperature

Скачайтеиразархивируйтеих/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. Если все сделано правильно, то вы увидите значение температуры на дисплее.

Необходимые библиотеки:

  1. 1-Wire
  2. Dallar Temperature
  3. I2C LCD

Скачайтеиразархивируйтеих/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);

  }