Датчик температуры: различия между версиями

Материал из MIK32 микроконтроллер
Нет описания правки
Нет описания правки
Строка 2: Строка 2:
[[Файл:Внешний вид и распиновка корпусов.png.png|слева|мини|413x413пкс|Внешний вид и распиновка корпусов]]
[[Файл:Внешний вид и распиновка корпусов.png.png|слева|мини|413x413пкс|Внешний вид и распиновка корпусов]]
Технически, датчики DS18B20 выпускаются в 3-х корпусах: ТО-92, SO, uSOP.  
Технически, датчики DS18B20 выпускаются в 3-х корпусах: ТО-92, SO, uSOP.  


'''Технические характеристики DS18B20'''
'''Технические характеристики DS18B20'''
Строка 17: Строка 16:




[[Файл:Схема прямого подключения одиночного датчика.png|мини|369x369пкс|Схема прямого подключения одиночного датчика]]


'''Подключение к плате'''
'''Подключение к плате'''


''Прямое подключения одиночного датчика:''
''Прямое подключения одиночного датчика:''
[[Файл:Схема прямого подключения одиночного датчика.png|мини|369x369пкс|Схема прямого подключения одиночного датчика]]
 
На рисунке справа показана схема прямого подключения одиночного датчика к Arduino Nano.
На рисунке справа показана схема прямого подключения одиночного датчика к Arduino Nano.


Здесь всё довольно просто. Запитываем DS18B20 от самой платы Arduino, подавая 5V на вывод Vdd датчика. Аналогичным образом соединяем между собой выводы GND. Средний вывод термодатчика подключим, например, к выводу D2 нашей Arduino Nano. Подключать вывод данных (DQ) можно практически на любой вход Arduino, предварительно прописав его номер в скетче. Единственный и самый важный момент, на который следует обратить внимание – это наличие резистора номиналом 4,7k между плюсом питания и линией данных термодатчика. Этот резистор служит для подтяжки линии данных к логической единице и его отсутствие вызовет сбой в работе алгоритма обмена информацией. Значение 4,7k не сильно критично и в некоторых пределах его можно изменять, главное не увлекаться.
Здесь всё довольно просто. Запитываем DS18B20 от самой платы Arduino, подавая 5V на вывод Vdd датчика. Аналогичным образом соединяем между собой выводы GND. Средний вывод термодатчика подключим, например, к выводу D2 нашей Arduino Nano. Подключать вывод данных (DQ) можно практически на любой вход Arduino, предварительно прописав его номер в скетче. Единственный и самый важный момент, на который следует обратить внимание – это наличие резистора номиналом 4,7k между плюсом питания и линией данных термодатчика. Этот резистор служит для подтяжки линии данных к логической единице и его отсутствие вызовет сбой в работе алгоритма обмена информацией. Значение 4,7k не сильно критично и в некоторых пределах его можно изменять, главное не увлекаться.
[[Файл:Прямое подключение группы датчиков.png|слева|мини|372x372пкс|Прямое подключение группы датчиков]]
[[Файл:Прямое подключение группы датчиков.png|слева|мини|372x372пкс|Схема прямого подключение группы датчиков]]
 
 
''Прямое подключения группы датчиков:''
''Прямое подключения группы датчиков:''


Строка 31: Строка 33:


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





Версия от 18:08, 31 мая 2021

DS18B20 – это полноценный цифровой термометр, способный измерять температуру в диапазоне от -55оС до +125оС с программируемой точностью 9-12 бит. При изготовлении на производстве, каждому датчику присваивается свой уникальной 64-битный адрес, а обмен информацией с ведущим устройством (микроконтроллером или платой Arduino) осуществляется по шине 1-wire. Такой подход позволяет подключать к одной линии целую группу датчиков, вплоть до 264.

Внешний вид и распиновка корпусов

Технически, датчики DS18B20 выпускаются в 3-х корпусах: ТО-92, SO, uSOP.

Технические характеристики DS18B20

  • Напряжение питания: 3V-5.5V;
  • Протокол обмена данными: 1-Wire;
  • Способ подключения: прямой / по одной линии с паразитным питанием;
  • Разрешение преобразования температуры: 9 бит – 12 бит;
  • Диапазон измерения температуры: от -55 до +125 оС;
  • Период измерения температуры при максимальной точности 12 бит: 750 мС;
  • Тип индексации на линии 1-Wire: уникальный 64-битный адрес;
  • Есть возможность программирования диапазона тревожного сигнала.


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

Подключение к плате

Прямое подключения одиночного датчика:

На рисунке справа показана схема прямого подключения одиночного датчика к Arduino Nano.

Здесь всё довольно просто. Запитываем DS18B20 от самой платы Arduino, подавая 5V на вывод Vdd датчика. Аналогичным образом соединяем между собой выводы GND. Средний вывод термодатчика подключим, например, к выводу D2 нашей Arduino Nano. Подключать вывод данных (DQ) можно практически на любой вход Arduino, предварительно прописав его номер в скетче. Единственный и самый важный момент, на который следует обратить внимание – это наличие резистора номиналом 4,7k между плюсом питания и линией данных термодатчика. Этот резистор служит для подтяжки линии данных к логической единице и его отсутствие вызовет сбой в работе алгоритма обмена информацией. Значение 4,7k не сильно критично и в некоторых пределах его можно изменять, главное не увлекаться.

Схема прямого подключение группы датчиков


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

С прямым подключением одного датчика всё понятно, теперь рассмотрим прямое подключение группы датчиков к одному выводу Arduino. На рисунке слева показан пример подключения 5-ти датчиков DS18B20. Это количество может быть любым и ограничивается только рамками временем на опрос каждого из них (750мС).

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




Пример кода

Для работы с датчиком нам понадобится библиотека DallasTemperature.h Данная библиотека немного упрощает процесс программирования за счёт более понятных для восприятия функций. После установки, вы получите доступ к 14 примерам хорошо документированного кода на все случаи жизни. Давайте рассмотрим пример работы одним датчиком.

 // Подключаем необходимые библиотеки
#include <OneWire.h>
#include <DallasTemperature.h>

// Шину данных подключаем к выводу №2 Arduino
#define ONE_WIRE_BUS 2

// Создаём экземпляр класса для нашей шины и ссылку на него
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

// ФУНКЦИЯ ПРЕДУСТАНОВОК
void setup(void)
{
  Serial.begin(9600); // Инициализация серийного порта
  sensors.begin(); // Инициализация шины
}

// ОСНОВНОЙ ЦИКЛ
void loop(void)
{
	Serial.print("Reading Temperature...");
	// Подаём команду на чтение
	sensors.requestTemperatures();
	Serial.println("Read");
	Serial.print("Sensor Temperature 1: ");
	// Отображаем значение температуры
	Serial.print(sensors.getTempCByIndex(0));
}