Датчик температуры DS18B20 является цифровым температурным датчиком. Это означает, что вы можете измерить температуру с помощью очень простой схемы. Он связывается с общей шиной, что означает, что вы можете подключить несколько устройств и измерить их значения, используя только один цифровой вывод Arduino.
Датчик имеет всего три контакта, как вы можете видеть на следующем рисунке. DS18B20 также доступен в водонепроницаемой версии.
Вот некоторые основные особенности датчика температуры DS18B20:
- Коммуникации по однопроводной шине связи
- Температура рабочего диапазона: от -55ºC до 125ºC
- Точность +/- 0,5 ºC (между диапазоном от -10ºC до 85ºC)
Необходимые детали
Arduino UNO, breadboard, датчик температуры DS18B20, резистор 4700 Ом, перемычки.
Схема
Требуется 3-проводное соединение. Вот схема, которую вы должны соблюдать:
Чёрная деталь на схеме — это датчик температуры.
Одновременно можно считывать температуру более чем одного датчика, используя только один цифровой контакт Arduino. Для этого вам просто нужно соединить все контакты D0 с любым цифровым выводом Arduino.
Вам нужно будет установить библиотеки OneWire и DallasTemperature.
- У вас должна быть .zip-архивы библиотек.
- Добавьте через “скетч” — “библиотеки”-”добавить zip библиотеку”
Загрузите следующий код на плату Arduino.
#include <OneWire.h>
#nclude <DallasTemperature.h>
// ds18b20 подключается к цифровому выходу 2 Arduino
#define ONE_WIRE_BUS 2
// Настройка экземпляра oneWire для связи с любыми устройствами OneWire
OneWire oneWire(ONE_WIRE_BUS);
//передача ссылк OneWire на датчик температуры
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
// Запуск датчиков
sensors.begin();
}
void loop(void){
// Вызовите sensor.requestTemperatures (), чтобы выдать глобальную температуру и запросы всем устройствам на шине
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
//Вы можете иметь более одной микросхемы на одной шине. 0 относится к первому IC на проводе
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" - Fahrenheit temperature: ");
Serial.println(sensors.getTempFByIndex(0));
delay(1000);
}
Наконец, вы должны открыть серийный монитор Arduino IDE со скоростью 9600 бод, и вы увидите температуру, отображаемую как в градусах Цельсия, так и по Фаренгейту:
Поделитесь этой статьей с другом, который также любит электронику.
И пишите в комментариях, если возникли трудности.