Оглавление:

Получение серийного номера DS18B20 с помощью Arduino: 5 шагов
Получение серийного номера DS18B20 с помощью Arduino: 5 шагов

Видео: Получение серийного номера DS18B20 с помощью Arduino: 5 шагов

Видео: Получение серийного номера DS18B20 с помощью Arduino: 5 шагов
Видео: Термостат на Arduino, до 5 датчиков DS18B20 2024, Ноябрь
Anonim
Получите серийный номер DS18B20 с помощью Arduino
Получите серийный номер DS18B20 с помощью Arduino

Это краткое руководство о том, как получить индивидуальные серийные номера однопроводных датчиков температуры DS18B20.

Это удобно для проектов, требующих нескольких датчиков.

Вещи, которые нужно:

  • Arduino 5v (UNO, Mega, Pro Mini и т. Д.) - Arduino UNO R3 - AliExpress - eBay
  • Датчик температуры DS18B20 - AliExpress - eBay
  • Резистор THT 4,7 кОм - 1 / 4Вт - AliExpress - eBay
  • Макетная плата - AliExpress - eBay
  • Провода перемычки - мужчина к мужчине - AliExpress - eBay
  • Компьютер с установленной Arduino IDE

Шаг 1. Добавьте необходимую библиотеку в Arduino IDE

Добавьте необходимую библиотеку в Arduino IDE
Добавьте необходимую библиотеку в Arduino IDE
  1. Откройте Arduino IDE (я использую 1.8.1)
  2. Нажмите «Эскиз» -> «Включить библиотеку» -> «Управление библиотеками…»
  3. Выберите строку поиска и введите "dallas".
  4. Щелкните "DallasTemperature" и щелкните "Установить".

В качестве альтернативы вы можете загрузить библиотеку отсюда:

Эта библиотека включает в себя библиотеку OnWire.

Шаг 2: Подключите DS18B20

Подключите DS18B20
Подключите DS18B20
Подключите DS18B20
Подключите DS18B20

Используя макетную плату, подключите + 5V, GND и цифровой контакт 2 (контакт 2 уже установлен в примерном эскизе) от Arduino, используя перемычки макетной платы Male to Male.

Подключите DS18B20 параллельно 3 клеммным колодкам на макетной плате.

  • Контакт 1 (GND) -> GND (Земля 0 В)
  • Контакт 2 (ДАННЫЕ) -> Цифровой контакт 2
  • Контакт 3 (Vdd) -> + 5 В

Для нормального режима питания подключите резистор 4,7 кОм от +5 В к проводу цифрового контакта 2 на макетной плате.

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

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

Шаг 3: Загрузите образец эскиза «Одиночный»

Загрузите пример эскиза
Загрузите пример эскиза
Загрузите пример эскиза
Загрузите пример эскиза

После того, как вы его подключили, вы готовы загрузить Dallas Temperature "Single" SketchOpen Arduino IDE (я использую 1.8.1). Нажмите "File" -> "Примеры" -> "Dallas Temperature" -> "Single" Я добавил в опоздании (5000); в строке 103, чтобы дать мне время скопировать серийный номер. Выберите подходящую форму платы "Инструменты" -> "Плата". Выберите соответствующий порт "Инструменты" -> "Порт". Теперь "Загрузить" эскиз "Эскиз" -> "Загрузить" Нажмите «Инструменты» -> «Монитор последовательного порта», убедитесь, что скорость передачи данных соответствует моей 9600. Если вы не загрузили скетч, проверьте вашу плату, порт, драйверы USB и т. Д.

Шаг 4. Скопируйте серийный номер

Скопируйте серийный номер
Скопируйте серийный номер
Скопируйте серийный номер
Скопируйте серийный номер

В «Serial Monitor» вы увидите 4-ю строку «Device 0 Address: xxxxxxxxxxxxxxxx».

Это серийный номер DS18B20.

Если это «0000000000000000», значит, существует проблема с чтением вашего DS18B20.

Выделите его с помощью мыши и нажмите CTRL + C на клавиатуре, а затем вставьте его в Блокнот.

Для других моих проектов мой код использует массив этих чисел. Я переформатировал строку HEX в следующий формат.

DeviceAddress tempSensorSerial [9] = {

{0x28, 0xFF, 0x07, 0xA6, 0x70, 0x17, 0x04, 0xB5}, {0x28, 0xFF, 0xB2, 0xA6, 0x70, 0x17, 0x04, 0x28}, {0x28, 0xFF, 0x42, 0x984x, 0x70, 0x70, 0x42, 0x984x, 0x70, 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}, {0x28x, 0x28, 0x99, 0x42, 0x71, 0x17, 0x04, 0x4C}};

Шаг 5: Готово

Законченный
Законченный

Теперь вы можете идентифицировать каждый отдельный однопроводный датчик температуры DS18B20 в своем коде и использовать такую функцию:

float getTemperature (byte j) {

sensor.requestTemperaturesByAddress (tempSensorSerial [j]);

float tempC = сенсоры.getTempC (tempSensorSerial [j]);

return tempC;

}

Рекомендуемые: