Mundarija:

Arduino yordamida DS18B20 seriya raqamini oling: 5 qadam
Arduino yordamida DS18B20 seriya raqamini oling: 5 qadam

Video: Arduino yordamida DS18B20 seriya raqamini oling: 5 qadam

Video: Arduino yordamida DS18B20 seriya raqamini oling: 5 qadam
Video: 7 проектов. Сборка светодиодного ЖК-будильника с использованием DS1307 и Arduino | Урок 105 2024, Iyul
Anonim
Arduino yordamida DS18B20 seriya raqamini oling
Arduino yordamida DS18B20 seriya raqamini oling

Bu DS18B20 1 simli harorat sensorlarining individual seriya raqamlarini olish bo'yicha tezkor qo'llanma.

Bu bir nechta sensorlarni talab qiladigan loyihalar uchun qulay.

Sizga kerak bo'lgan narsalar:

  • Arduino 5v (UNO, Mega, Pro Mini va boshqalar) - Arduino UNO R3 - AliExpress - eBay
  • Harorat sensori DS18B20 - AliExpress - eBay
  • 4.7k - 1/4w THT qarshilik - AliExpress - eBay
  • Non paneli - AliExpress - eBay
  • Jumper simlari - erkakdan erkakgacha - AliExpress - eBay
  • Arduino IDE o'rnatilgan kompyuter

1 -qadam: Arduino IDE -ga kerakli kutubxonani qo'shing

Arduino IDE -ga kerakli kutubxonani qo'shing
Arduino IDE -ga kerakli kutubxonani qo'shing
  1. Arduino IDE -ni oching (men 1.8.1 dan foydalanmoqdaman)
  2. "Eskiz" -> "Kutubxonani qo'shish" -> "Kutubxonalarni boshqarish …" ni bosing.
  3. Qidiruv panelini tanlang va "dallas" so'zini kiriting.
  4. "DallasTemperature" ni bosing va "O'rnatish" ni bosing.

Yoki kutubxonani bu erdan yuklab olishingiz mumkin:

Bu kutubxona OnWire kutubxonasini o'z ichiga oladi.

2 -qadam: DS18B20 simini ulang

DS18B20 simini ulang
DS18B20 simini ulang
DS18B20 simini ulang
DS18B20 simini ulang

Non paneli yordamida +5V, GND va Digital Pin 2 (Pin 2 allaqachon misol eskizda o'rnatilgan) yordamida Erkakdan Erkagacha non taxtali o'tish moslamalari yordamida.

DS18B20 -ni non panelidagi 3x terminal tasmalariga parallel ulang.

  • Pin 1 (GND) -> GND (Ground 0V)
  • 2 -pin (DATA) -> Raqamli 2 -pin
  • 3 -pin (Vdd) -> +5V

Oddiy quvvat rejimi uchun +5V dan 4,7K gacha bo'lgan rezistorni non panelidagi Digital Pin 2 simiga ulang.

Quyidagi havola DS18B20 1 simli harorat sensori uchun ajoyib manba.

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

3 -qadam: "Yagona" namunaviy eskizni yuklang

Misol chizmasini yuklang
Misol chizmasini yuklang
Misol chizmasini yuklang
Misol chizmasini yuklang

Tarmoqqa ulangandan so'ng, siz Dallas haroratini "yagona" SketchOpen Arduino IDE yuklashga tayyormiz (men 1.8.1 dan foydalanmoqdaman) "Fayl" -> "Misollar" -> "Dallas harorati" -> "Yagona" ni bosing. kechikish (5000); 103 -qatorda menga seriya raqamini nusxalashga vaqt berish uchun mos keladigan taxtali shaklini tanlang "Asboblar" -> "Kengash" O'zingizga mos keladigan portni tanlang "Asboblar" -> "Port" Endi "Yuklab oling" "Sketch" -> "Yuklash" eskizini. "Asboblar" -> "Serial monitor" ni bosing, agar men yuklamagan bo'lsangiz, karta, port, USB drayverlari va boshqalarni tekshiring.

4 -qadam: Seriya raqamini nusxalash

Seriya raqamini nusxalash
Seriya raqamini nusxalash
Seriya raqamini nusxalash
Seriya raqamini nusxalash

"Seriya monitor" dan siz 4 -qatorni ko'rasiz "Qurilma 0 manzili: xxxxxxxxxxxxxxxx"

Bu DS18B20 seriya raqami

Agar "0000000000000000" bo'lsa, DS18B20 -ni o'qishda muammo bor.

Uni sichqoncha bilan ajratib ko'rsatish va klaviaturadagi CTRL+C tugmachalarini bosib Notepad -ga qo'ying

Boshqa loyihalarim uchun mening kodim bu raqamlar qatoridan foydalanadi. Men HEX satrini quyidagi formatga qayta formatladim.

DeviceAddress tempSensorSerial [9] = {

{0x28, 0xFF, 0x07, 0xA6, 0x70, 0x17, 0x04, 0xB5}, {0x28, 0xFF, 0xB2, 0xA6, 0x70, 0x17, 0x04, 0x28}, {0x28, 0xFF, 0x42, 0x98, 0x92, 0xD3}, {0x28, 0xFF, 0x86, 0xA8, 0x70, 0x17, 0x04, 0xA6}, {0x28, 0xFF, 0x2B, 0x65, 0x71, 0x17, 0x04, 0x76}, {0x28, 0xF6, 0x6, 6x2, 0x17, 0x04, 0xF5}, {0x28, 0xFF, 0xD9, 0x9B, 0x70, 0x17, 0x04, 0x9C}, {0x28, 0xFF, 0x98, 0x6A, 0x71, 0x17, 0x04, 0xED 0, {0xED, 0}, 0x42, 0x71, 0x17, 0x04, 0x4C}};

5 -qadam: tugadi

Bajarildi
Bajarildi

Endi siz har bir DS18B20 1 simli harorat sensori kodini aniqlay olasiz va quyidagi funktsiyadan foydalanishingiz mumkin:

float getTemperature (bayt j) {

sensorlar.requestTemperaturesByAddress (tempSensorSerial [j]);

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

qaytish tempC;

}

Tavsiya: