Съдържание:

Вземете серийния номер на DS18B20 с Arduino: 5 стъпки
Вземете серийния номер на DS18B20 с Arduino: 5 стъпки

Видео: Вземете серийния номер на DS18B20 с Arduino: 5 стъпки

Видео: Вземете серийния номер на DS18B20 с Arduino: 5 стъпки
Видео: FLProg10: датчик температуры DS18B20 | ESP32 NodeMCU | Визуальное программирование для Arduino 2024, Юли
Anonim
Вземете серийния номер на DS18B20 с Arduino
Вземете серийния номер на DS18B20 с Arduino

Това е кратко ръководство за това как да получите индивидуалните серийни номера на вашите 1-проводни температурни сензори DS18B20.

Това е удобно за проекти, които изискват множество сензори.

Нещата, от които се нуждаете:

  • Arduino 5v (UNO, Mega, Pro Mini и т.н.) - Arduino UNO R3 - AliExpress - eBay
  • Сензор за температура DS18B20 - AliExpress - eBay
  • 4.7k - 1/4w резистор THT - AliExpress - eBay
  • Платформа - AliExpress - eBay
  • Джъмперни проводници - мъжки към мъжки - AliExpress - eBay
  • Компютър с инсталирана Arduino IDE

Стъпка 1: Добавете необходимата библиотека към Arduino IDE

Добавете необходимата библиотека към IDE на Arduino
Добавете необходимата библиотека към IDE на Arduino
  1. Отворете Arduino IDE (използвам 1.8.1)
  2. Кликнете върху „Скица“-> „Включване на библиотека“-> „Управление на библиотеки …“
  3. Изберете лентата за търсене и въведете „dallas“
  4. Кликнете върху „DallasTemperature“и върху „Install“

Като алтернатива можете да изтеглите библиотеката от тук:

Тази библиотека включва библиотеката OnWire.

Стъпка 2: Свържете DS18B20

Свържете DS18B20
Свържете DS18B20
Свържете DS18B20
Свържете DS18B20

С помощта на дъска за хляб свържете +5V, GND и цифров щифт 2 (Pin 2 е вече зададен в примерната скица) от Arduino, като използвате джъмпери за мъжки платки.

Свържете DS18B20 успоредно на 3x клемните ленти на макета.

  • Pin 1 (GND) -> GND (Ground 0V)
  • Pin 2 (DATA) -> Digital Pin 2
  • ПИН 3 (Vdd) -> +5V

За нормален режим на захранване свържете 4.7K резистор от +5V към проводник Digital Pin 2 на макета.

Следващата връзка е чудесен ресурс за едножилен температурен сензор DS18B20.

www.tweaking4all.com/hardware/arduino/ardu…

Стъпка 3: Заредете примерната скица „Single“

Заредете примерната скица
Заредете примерната скица
Заредете примерната скица
Заредете примерната скица

След като го свържете, сте готови да заредите Dallas Temperature "Single" SketchOpen Arduino IDE (използвам 1.8.1) Щракнете върху "File" -> "Examples" -> "Dallas Temperature" -> "Single", добавих със закъснение (5000); на ред 103, за да ми дадете време да копирам серийния номер Изберете подходящата си форма на таблото „Инструменти“-> „Табло“Изберете подходящия си порт „Инструменти“-> „Порт“Сега „Качете“скицата „Скица“-> „Качване“Щракнете върху „Инструменти“-> „Сериен монитор“, уверете се, че скоростта на предаване съвпада с моята, е 9600 Ако скица не сте качили, проверете вашата платка, порт, USB драйвери и т.н.

Стъпка 4: Копирайте серийния номер

Копирайте серийния номер
Копирайте серийния номер
Копирайте серийния номер
Копирайте серийния номер

От „Сериен монитор“ще видите четвъртия ред е „Адрес на устройство 0: xxxxxxxxxxxxxxx“

Това е серийният номер на DS18B20

Ако е "0000000000000000", тогава има проблем с четенето на вашия DS18B20.

Маркирайте го с мишката и натиснете CTRL+C на клавиатурата си, след което го прехвърлете в Notepad

За другите ми проекти моят код използва масив от тези числа. Преформатирах HEX низ в следния формат.

DeviceAddress tempSensorSerial [9] = {

{0x28, 0xFF, 0x07, 0xA6, 0x70, 0x17, 0x04, 0xB5}, {0x28, 0xFF, 0xB2, 0xA6, 0x70, 0x17, 0x04, 0x28}, {0x28, 0xFF, 0x42, 0x98, 0x70, 0x42, 0x04, 0x70,, 0xD3}, {0x28, 0xFF, 0x86, 0xA8, 0x70, 0x17, 0x04, 0xA6}, {0x28, 0xFF, 0x2B, 0x65, 0x71, 0x17, 0x04, 0x76}, {0x28, 0xFF, 0x66, 0x62, 0x17, 0x04, 0xF5}, {0x28, 0xFF, 0xD9, 0x9B, 0x70, 0x17, 0x04, 0x9C}, {0x28, 0xFF, 0x98, 0x6A, 0x71, 0x17, 0x04, 0xED}, {0x28, 0xF, 0x42, 0x71, 0x17, 0x04, 0x4C}};

Стъпка 5: Готово

Завършен
Завършен

Сега можете да идентифицирате всеки отделен 1-жичен температурен сензор DS18B20 във вашия код и да използвате функция като тази:

float getTemperature (байт j) {

sensors.requestTemperaturesByAddress (tempSensorSerial [j]);

float tempC = sensors.getTempC (tempSensorSerial [j]);

връщане tempC;

}

Препоръчано: