
يشرح هذا المقال بالتفصيل الجانب البرمجي لربط عدة حساسات DS18B20 على نفس خط البيانات مع الأردوينو، وطريقتين مختلفتين لقراءة كل حساس على حدة.
المكونات المطلوبة
لوحة أردوينو، عدة حساسات DS18B20، مقاومة سحب علوي 4.7 كيلو أوم، وأسلاك توصيل.
طريقة التوصيل
تتصل جميع الحساسات على التوازي بخطوط التغذية (5 فولت) والأرضي ومنفذ الإشارة نفسه (المنفذ الرقمي 2 في هذا المشروع)، مع مقاومة سحب علوي واحدة بقيمة 4.7 كيلو أوم بين خط الإشارة والتغذية للحفاظ على استقرار النقل، تمامًا كما في التوصيل بحساس واحد لكن بعدد أكبر من الوحدات على نفس الخط.
الطريقة الأولى: القراءة بالترتيب (Index)
تكتشف مكتبة Dallas Temperature جميع الحساسات المتصلة تلقائيًا عند بدء التشغيل، وتمنح كل واحد رقمًا تسلسليًا (0، 1، 2...)، بحيث يقرأ الكود كل حساس عبر دالة getTempCByIndex(i) بالتنقل بين الأرقام.
الطريقة الثانية: القراءة بالعنوان الفريد
يمتلك كل حساس عنوانًا سداسيًا عشريًا فريدًا؛ يستخدم كود اكتشاف مخصص لتحديد وطباعة عنوان كل حساس، ثم يُدرَج هذا العنوان يدويًا في الكود الرئيسي واستدعاء دالة getTempC(deviceAddress) لقراءة حساس بعينه عبر معرّفه الفريد بدلًا من ترتيب الاتصال.
أي طريقة أفضل؟
تتميز الطريقة الثانية (العنونة) بموثوقية أعلى، إذ لا يتأثر الكود بتغيّر ترتيب توصيل الحساسات أو استبدال أحدها، على عكس الطريقة الأولى التي تعتمد على ترتيب الاكتشاف وقد تتغير النتائج مع أي تعديل في التوصيل.
يمكنك إيجاد حساسات DS18B20 بأعداد مختلفة ضمن متجر Juthour Tech.
Leave your comment