جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
هذا دليل سريع حول كيفية الحصول على الأرقام التسلسلية الفردية لأجهزة استشعار درجة الحرارة DS18B20 ذات السلك الواحد.
هذا مفيد للمشاريع التي تتطلب أجهزة استشعار متعددة.
أشياء تحتاجها:
- Arduino 5v (UNO ، Mega ، Pro Mini ، إلخ) - Arduino UNO R3 - AliExpress
- مستشعر درجة الحرارة DS18B20 - AliExpress - eBay
- 4.7k - 1/4w المقاوم THT - AliExpress - eBay
- اللوح - AliExpress - eBay
- أسلاك توصيل معزز - ذكر لذكر - AliExpress - eBay
- جهاز كمبيوتر مثبت عليه Arduino IDE
الخطوة 1: أضف المكتبة المطلوبة إلى Arduino IDE
- افتح Arduino IDE (أنا أستخدم 1.8.1)
- انقر فوق "رسم" -> "تضمين مكتبة" -> "إدارة المكتبات …"
- حدد شريط البحث واكتب "دالاس"
- انقر على "DallasTemperature" وانقر على "تثبيت"
أو يمكنك تنزيل المكتبة من هنا:
تتضمن هذه المكتبة مكتبة OnWire.
الخطوة 2: ارفع توصيل DS18B20
باستخدام لوحة الخبز ، قم بتوصيل + 5V و GND و Digital Pin 2 (تم تعيين Pin 2 بالفعل في مثال الرسم التخطيطي) من Arduino باستخدام وصلات توصيل من Male إلى Male.
قم بتوصيل DS18B20 بالتوازي مع الشرائط الطرفية 3x على لوح التجارب.
- السن 1 (GND) -> GND (الأرض 0 فولت)
- الدبوس 2 (البيانات) -> الدبوس الرقمي 2
- دبوس 3 (Vdd) -> + 5V
بالنسبة لوضع الطاقة العادي ، قم بتوصيل المقاوم 4.7K من + 5V إلى سلك Digital Pin 2 على اللوح.
يعتبر الرابط التالي مصدرًا رائعًا لجهاز استشعار درجة الحرارة DS18B20 أحادي السلك.
www.tweaking4all.com/hardware/arduino/ardu…
الخطوة 3: تحميل مثال الرسم التخطيطي "مفرد"
بمجرد الانتهاء من توصيله ، تكون جاهزًا لتحميل درجة حرارة دالاس "مفرد" SketchOpen Arduino IDE (أنا أستخدم 1.8.1) انقر فوق "ملف" -> "أمثلة" -> "درجة حرارة دالاس" -> "فردي" أضفته تأخير (5000) ؛ في السطر 103 لإعطائي الوقت لنسخ الرقم التسلسلي حدد نموذج اللوحة المناسب "أدوات" -> "لوحة" حدد المنفذ المناسب "أدوات" -> "منفذ" الآن "تحميل" الرسم التخطيطي "رسم" -> "تحميل" انقر فوق "أدوات" -> "Serial Monitor" تأكد من أن معدلات البث بالباود المطابقة لي هي 9600 إذا لم يتم تحميل الرسم ، فتحقق من اللوحة ، المنفذ ، برامج تشغيل USB وما إلى ذلك.
الخطوة 4: انسخ الرقم التسلسلي
من "Serial Monitor" سترى السطر الرابع هو "عنوان الجهاز 0: 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 ، 0x98 ، 0x70 ، 0x17 ، 0x04 ، 0xD3} ، {0x28 ، 0xFF ، 0x86 ، 0xA8 ، 0x70 ، 0x17 ، 0x04 ، 0xA6} ، {0x28 ، 0xFF ، 0x2B ، 0x65 ، 0x71 ، 0x17 ، 0x04 ، 0x76} ، {0x28 ، 0xFF ، 0x66 ، 0x62 ، 0x71 ، 0x17 ، 0x04 ، 0xF5} ، {0x28 ، 0xFF ، 0xD9 ، 0x9B ، 0x70 ، 0x17 ، 0x04 ، 0x9C} ، {0x28 ، 0xFF ، 0x98 ، 0x6A ، 0x71 ، 0x17 ، 0x04 ، 0xED} ، {0x28 ، 0xFF ، 0x99 ، 0x42 ، 0x71 ، 0x17 ، 0x04 ، 0x4C}} ؛
الخطوة 5: انتهى
يمكنك الآن تحديد كل مستشعر درجة حرارة أحادي السلك DS18B20 في الكود الخاص بك واستخدام وظيفة مثل هذه:
تعويم getTemperature (بايت j) {
sensors.requestTemperaturesByAddress (tempSensorSerial [j]) ؛
تعويم tempC = sensors.getTempC (tempSensorSerial [j]) ؛
عودة tempC ؛
}