![Измерване на температура с Arduino NANO и DS18B20 сензор](http://ardudevelop.eu/wp-content/uploads/2024/09/Измерване-на-температура-с-Arduino-NANO-и-DS18B20-сензор.png)
В тази статия ще разгледаме как да използваме Arduino Nano и сензор DS18B20 за измерване на температурата. Ще използваме библиотеките OneWire и DallasTemperature, които могат лесно да бъдат инсталирани през Arduino IDE. Ще разгледаме кода и ще обясним как всяка част от него работи.
Необходими компоненти:
- Arduino NANO
- DS18B20 температурен сензор
- 4.7 kΩ pull-up резистор
- Кабели за свързване
Свързване на хардуера
![Измерване на температура с Arduino NANO и DS18B20 сензор Схема](http://ardudevelop.eu/wp-content/uploads/2024/09/Измерване-на-температура-с-Arduino-NANO-и-DS18B20-сензор-Схема-1024x617.png)
Arduino Nano е нашата страница в която може да се запознаете с параметрите и конфигурацията на пинове (pinout) на тази платформа.
Свържете VCC на DS18B20 към 5V на Arduino Nano, GND към земята, а DQ (сигналния пин) към пин D2 на Nano. За стабилна комуникация, свържете pull-up резистор 4.7kΩ между VCC и DQ.
Документация на DS18B20 сензора
DS18B20-datasheetИнсталиране на библиотеки
- Отворете Arduino IDE.
- Отидете на Sketch -> Include Library -> Manage Libraries.
- В прозореца за управление на библиотеките потърсете DallasTemperature и OneWire, и натиснете Install. Започнете с инсталацията на DallasTemperature. В процеса на инсталация ще видите, че трябва да се инсталира и OneWire. Тогава ще ви се появи прозорец който ще ви пита “Искате ли да инсталирате липсващите зависимости (библиотеки)”. Щракнете на “Install All”, за да инсталирате двете библиотеки.
- Може да ги инсталирате ръчно като ги изтеглите от тук: OneWire, DallasTemperature.
![Измерване на температура с Arduino NANO и DS18B20 сензор инсталиране на библиотеките](http://ardudevelop.eu/wp-content/uploads/2024/09/Измерване-на-температура-с-Arduino-NANO-и-DS18B20-сензор-инсталиране-на-библиотеките-1024x674.png)
Ако не сте се запознали с възможностите на Arduino IDE и как се инсталират библиотеки в него, разгледайте нашата страница: Arduino IDE бърз преглед.
С тези библиотеки можем да управляваме DS18B20 сензора чрез Arduino Nano. Ако не
Код за изчитане на температурата с Arduino и DS18B20
Ето и кода, който ще използваме за измерване на температурата с DS18B20:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void) {
Serial.begin(9600);
sensors.begin();
}
void loop(void) {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
if(tempC != DEVICE_DISCONNECTED_C) {
Serial.print("Temperature = ");
Serial.print(tempC);
Serial.println("*C");
}
else {
Serial.println("Error: Could not read temperature data");
}
}
Обяснение на кода
1. Импортиране на библиотеки
#include <OneWire.h>
#include <DallasTemperature.h>
Първите два реда включват библиотеките OneWire и DallasTemperature. OneWire осигурява комуникация по 1-Wire (една жица), който използва DS18B20, докато DallasTemperature ни позволява лесно да четем данни от сензора.
2. Дефиниране на пин и създаване на обекти
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
Тук дефинираме пина, към който е свързан DS18B20 (в нашия случай D2 на Arduino Nano). След това създаваме обект oneWire, който използва този пин за комуникация. Обектът sensors е създаден с помощта на DallasTemperature библиотеката и ще използва oneWire за комуникация със сензора.
3. Настройки на програмата
void setup(void) {
Serial.begin(9600);
sensors.begin();
}
Във функцията setup()
стартираме сериен монитор с Serial.begin(9600)
, за да можем да виждаме резултатите на компютър. С sensors.begin()
инициализираме температурния сензор и го подготвяме за работа.
4. Основен цикъл за измерване на температура
void loop(void) {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
Във функцията loop()
първо извикваме sensors.requestTemperatures()
, за да кажем на сензора да започне измерване на температурата. След това, с getTempCByIndex(0)
, получаваме измерената температура в градуси Целзий за първия (или единствен) свързан сензор.
5. Проверка за правилно изчитане на данните
if(tempC != DEVICE_DISCONNECTED_C) {
Serial.print("Temperature = ");
Serial.print(tempC);
Serial.println("*C");
}
else {
Serial.println("Error: Could not read temperature data");
}
}
След като получим стойността на температурата, проверяваме дали резултатът е валиден. Ако температурата е различна от DEVICE_DISCONNECTED_C
(индикатор, че няма връзка с устройството), тя се отпечатва на серийния монитор. В противен случай изписваме съобщение за грешка “Error: Could not read temperature data”.
Видео презентация на кода:
Заключение
Този код показва колко лесно можем да свържем и прочетем данни от DS18B20 температурен сензор, използвайки Arduino NANO и библиотеките OneWire и DallasTemperature. Програмата непрекъснато изисква и показва температурата на сензора в реално време. Това решение е подходящо за различни проекти, включително системи за мониторинг на околната температура, домашна автоматизация и много други.
Съвети за използване:
- Можете да използвате повече от един DS18B20 сензор на една и съща 1-Wire линия, като всяко устройство има уникален адрес.
- В случай на проблеми с конвертирането на температурата, проверете връзките и резистора (pull-up резисторът между VCC и DQ е задължителен).