المصطلح: مستشعر ترمومتر المقاومة بأربعة أسلاك

في هذه المقالة ، سنناقش الأنواع المختلفة لأجهزة استشعار درجة الحرارة وكيف يمكن استخدامها في كل حالة على حدة. درجة الحرارة هي معلمة فيزيائية تُقاس بالدرجات. إنه جزء أساسي من أي عملية قياس. تشمل المجالات التي تتطلب قياسات دقيقة لدرجة الحرارة الطب ، والبحوث البيولوجية ، والإلكترونيات ، وبحوث المواد ، والأداء الحراري للمنتجات الكهربائية. يُعرف الجهاز المستخدم لقياس كمية الطاقة الحرارية التي تسمح لنا باكتشاف التغيرات الفيزيائية في درجة الحرارة باسم مستشعر درجة الحرارة. إنها رقمية وتناظرية.

الأنواع الرئيسية لأجهزة الاستشعار

بشكل عام ، هناك طريقتان للحصول على البيانات:

1. الاتصال... تكون مستشعرات درجة الحرارة الملامسة على اتصال جسدي بجسم أو مادة. يمكن استخدامها لقياس درجة حرارة المواد الصلبة أو السوائل أو الغازات.

2. تلامس... تكتشف مستشعرات درجة الحرارة غير المتلامسة درجة الحرارة عن طريق اعتراض بعض طاقة الأشعة تحت الحمراء المنبعثة من جسم أو مادة واستشعار شدتها. يمكن استخدامها فقط لقياس درجة الحرارة في المواد الصلبة والسوائل. لا يمكنهم قياس درجة حرارة الغازات بسبب عديم اللون (الشفافية).

قواعد اختيار جهاز الاستشعار

يتم تحديد مستشعر درجة الحرارة للتدفئة الأرضية مع مراعاة خصائص مثل الطاقة ونوع الغطاء العلوي وطريقة التثبيت والمعدات ذات الوظائف الإضافية.

قوة

يجب أن تلبي القيمة بالتأكيد متطلبات وتحميل الأرضية الدافئة. خلاف ذلك ، لن يعمل المستشعر بشكل صحيح. عندما تكون قوة عنصر التسخين أكبر من قوة المنظم نفسه ، يصبح من الضروري بالإضافة إلى ذلك تثبيت مشغل مغناطيسي بينهما - لمنع تلف الجهاز بسبب زيادة الحمل.

مجموعة الميزات

يتم التحكم في الأرضية الدافئة بواسطة وحدة كهربائية ، مما يسمح لك بضبط تشغيل عناصر التسخين. تتمتع وحدات التحكم الحديثة بوظائف مثل بدء تشغيل النظام وإلغاء تنشيطه ، وضبط ظروف درجة الحرارة ، بالإضافة إلى ضبط وتيرة توصيل وفصل عنصر التسخين.

سهولة الاستعمال

إذا كنت تعتقد أنك لن تفهم البرمجة ، فلا يجب عليك شراء جهاز معقد. حتى مع مراعاة جميع وظائفها. على سبيل المثال ، يجد كبار السن صعوبة كبيرة في التعامل مع الأجهزة القابلة للبرمجة. من الأفضل أن يختاروا الخيار الميكانيكي.

سهل التوصيل

تشير الوثائق المصاحبة لمنظم الحرارة دائمًا إلى كيفية توصيل مستشعر التدفئة تحت الأرضية. تقع المحطات على الحافة على جانب واحد من وحدة التحكم. بعد توصيل الأسلاك الكهربائية وفقًا للمخطط ، سيكون من الضروري التحقق من أداء نظام التدفئة. للقيام بذلك ، قم بقياس المقاومة عند أطراف مستشعر درجة الحرارة وكابل التدفئة الكهربائية ، أو قم بتوصيل أرضية دافئة وزيادة قيم درجة الحرارة من الصفر إلى المؤشر الذي أوصت به SNIP ، أي ما يصل إلى 30 درجة مئوية.

مظهر

لا ينبغي أن يكون المستشعر الحراري مفهومًا وظيفيًا فحسب ، بل يجب أن يكون جذابًا أيضًا في التصميم. تأتي المقابض الحديثة بألوان وأشكال متنوعة. يمكنك اختيار خيار يتناغم مع الجزء الداخلي للغرفة.

أنواع مجسات درجة الحرارة

هناك أنواع مختلفة من أجهزة استشعار درجة الحرارة.من التحكم البسيط في التشغيل / الإيقاف لجهاز ترموستاتي إلى أنظمة التحكم المعقدة لإمدادات المياه ، مع وظيفة تسخينها ، المستخدمة في عمليات زراعة النباتات. يتم تقسيم النوعين الرئيسيين من المستشعرات ، الاتصال وعدم الاتصال ، إلى مستشعرات مقاومة ، جهد كهربائي ، ومستشعرات كهروميكانيكية. أجهزة استشعار درجة الحرارة الثلاثة الأكثر استخدامًا هي:

  • الثرمستورات
  • المزدوجات الحرارية المقاومة
  • الحرارية

تختلف مستشعرات درجة الحرارة هذه عن بعضها البعض من حيث المعلمات التشغيلية.

جهاز

إنها مزدوجة حرارية (صفيحة أو قضيب) مكونة من أسلاك تتصل بأطراف عنصر الاستشعار.

اعتمادًا على معلومات درجة الحرارة ، تتغير مقاومة الجزء الحساس ، على التوالي ، تتغير الإشارة الكهربائية المقدمة إلى منظم الحرارة. وبالتالي ، يتم تحديد القيمة المطلقة لدرجة الحرارة المتوسطة.

مخطط اتصال مستشعر درجة الحرارة

خارجي (مستشعر درجة الحرارة الخارجية للتدفئة الأرضية) ، كقاعدة عامة ، يقع تحت غطاء الأرضية النهائية ويقيس مؤشرات درجة الحرارة الخاصة به. داخلي (مدمج) ، يوجد داخل المنظم ويحدد مستوى تسخين الهواء.

يتم تحديد تصميم مجسات درجة الحرارة اعتمادًا على ميزات النظام:

الثرمستور

الثرمستور هو مقاوم حساس يغير مقاومته الفيزيائية مع درجة الحرارة. عادة ، الثرمستورات مصنوعة من مادة السيراميك شبه الموصلة مثل الكوبالت أو المنغنيز أو أكسيد النيكل ومغطاة بالزجاج. وهي عبارة عن أقراص صغيرة مسطحة ومختومة تتفاعل بسرعة نسبيًا مع أي تغير في درجة الحرارة.

نظرًا لخصائص أشباه الموصلات للمادة ، فإن الثرمستورات لها معامل درجة حرارة سالب (NTC) ، أي تقل المقاومة مع زيادة درجة الحرارة. ومع ذلك ، هناك أيضًا ثرمستورات PTC تزداد مقاومتها مع زيادة درجة الحرارة.

جدول الثرمستور

مزايا الثرمستورات

  • سرعة عالية في الاستجابة للتغيرات في درجات الحرارة والدقة.
  • تكلفة منخفضة.
  • مقاومة أعلى في حدود 2000 إلى 10000 أوم.
  • حساسية أعلى بكثير (~ 200 أوم / درجة مئوية) ضمن نطاق درجة حرارة محدود يصل إلى 300 درجة مئوية.

تبعيات درجة الحرارة للمقاومة

يتم التعبير عن اعتماد المقاومة على درجة الحرارة بالمعادلة التالية:

أين أ ، ب ، ج - هذه ثوابت (بشرط الحساب) ، ر - المقاومة في أوم ، تي - درجة الحرارة في كلفن. يمكنك بسهولة حساب التغير في درجة الحرارة من التغير في المقاومة أو العكس.

كيفية استخدام الثرمستور؟

يتم تصنيف الثرمستورات لقيمتها المقاومة في درجة حرارة الغرفة (25 درجة مئوية). الثرمستور هو جهاز مقاوم سلبي ، لذلك فهو يتطلب إنتاج مراقبة جهد الخرج الحالي. كقاعدة عامة ، يتم توصيلها في سلسلة مع مثبتات مناسبة تشكل مقسم جهد رئيسي.

مثال: النظر في الثرمستور بقيمة مقاومة 2.2K عند 25 درجة مئوية و 50 أوم عند 80 درجة مئوية. يتم توصيل الثرمستور في سلسلة بمقاوم 1 كيلو أوم من خلال مصدر 5 فولت.

لذلك ، يمكن حساب جهد الخرج على النحو التالي:

عند 25 درجة مئوية ، RNTC = 2200 أوم ؛

عند 80 درجة مئوية ، RNTC = 50 أوم ؛

ومع ذلك ، من المهم ملاحظة أنه عند درجة حرارة الغرفة ، تختلف قيم المقاومة القياسية باختلاف الثرمستورات ، لأنها غير خطية. يحتوي الثرمستور على تغير أسي في درجة الحرارة ، وبالتالي ثابت بيتا ، والذي يستخدم لحساب مقاومته لدرجة حرارة معينة. يرتبط جهد خرج المقاوم ودرجة الحرارة ارتباطًا خطيًا.

ميزات واجهة التيار ثنائي السلك في مستشعرات درجة الحرارة LMT01

تين. 4. تنظيم الواجهة الحالية مع LMT01

كما هو مذكور أعلاه ، لنقل نتيجة القياس ، يولد LMT01 تسلسل بت في شكل نبضات العد الحالية. لهذا ، يتطلب المستشعر اثنين فقط من الخيوط (الشكل 4). لتحويل النبضات الحالية إلى الشكل المألوف للدوائر الرقمية الدقيقة ، يمكنك في بعض الحالات استخدام مقاوم واحد (ولكن ليس دائمًا - أكثر من ذلك أدناه).

بعد التشغيل ، يبدأ LMT01 دورة قياس تستغرق ما يصل إلى 54 مللي ثانية (الشكل 5). خلال هذا الوقت ، يتشكل تيار مستوى منخفض قدره 28 ... 39 μA عند خرج المستشعر. يتبع ذلك دورة لنقل نتيجة القياس في شكل نبضات تيار بسعة 112 ... 143 μA. يجب أن يقوم المتحكم المستقبِل بحساب هذه النبضات ، على سبيل المثال باستخدام العداد / المؤقت المدمج. نظرًا لأن تردد الإشارات يبلغ حوالي 82 ... 94 كيلو هرتز ، فعندئذٍ مع أقصى عدد من النبضات (4095) ، يمكن أن تصل مدة الإرسال إلى 50 مللي ثانية.

تين. 5. مخططات توقيت تشغيل حساس LMT01

من خلال عدد النبضات المحسوبة (PC) ، يمكن تحديد قيمة درجة الحرارة وفقًا للصيغة 1:

, (1)

وبالتالي ، عند 0 درجة مئوية ، سيولد المستشعر حوالي 800 نبضة.

لسوء الحظ ، لا يكون استخدام مقاوم خارجي واحدًا ممكنًا دائمًا بسبب القيود المفروضة على أدنى انخفاض للجهد عبر مستشعر LMT01. أثناء دورة القياس ، يجب أن يكون الانخفاض عبر المستشعر 2.15 فولت على الأقل أثناء دورة نقل البيانات ، يمكن تقليل انخفاض الجهد إلى 2 فولت. ليس من الصعب إجراء بعض الحسابات التقريبية.

ضع في اعتبارك جهازًا بجهد إمداد Vdd = 3.3 فولت.إذا أخذنا أدنى انخفاض مسموح به عبر المستشعر يساوي 2.15 فولت أثناء دورة القياس ، فستتم ملاحظة إشارة لا تزيد عن 1.15 فولت عبر المقاوم. بالنسبة لمعظم الأجهزة الرقمية وحدات التحكم ، الوحدة المنطقية هي 0 ، 7 Vdd ، والتي ستكون في حالتنا 2.31 فولت. ونتيجة لذلك ، أصبح استخدام المقاوم البسيط مستحيلًا ، نظرًا لأن المتحكم الدقيق ببساطة لن "يرى" إشارة وحدة منطقية. يمكن أن يكون المخرج من هذا الموقف هو استخدام متحكم مع مقارن مدمج أو دوائر تحويل المستوى.

أجهزة استشعار درجة الحرارة المقاومة

أجهزة استشعار مقاومة درجات الحرارة (RTDs) مصنوعة من معادن نادرة ، مثل البلاتين ، والتي تختلف مقاومتها الكهربائية باختلاف درجة الحرارة.

كاشفات درجة الحرارة المقاومة لها معامل درجة حرارة موجب ، وعلى عكس الثرمستورات ، توفر دقة قياس درجة حرارة عالية. ومع ذلك ، لديهم حساسية ضعيفة. يعد Pt100 أكثر المستشعرات المتاحة على نطاق واسع بقيمة مقاومة قياسية تبلغ 100 أوم عند 0 درجة مئوية. العيب الرئيسي هو التكلفة العالية.

مزايا أجهزة الاستشعار هذه

  • نطاق درجة حرارة واسع من -200 إلى 650 درجة مئوية
  • توفير ناتج تيار مرتفع
  • أكثر خطية مقارنة بالمزدوجات الحرارية و RTDs

المكونات الإضافية ودائرة الاستشعار

بالإضافة إلى أجهزة الصمام الثنائي الرئيسية ، تشتمل دائرة مستشعر درجة الحرارة على عدد من العناصر الإضافية. بادئ ذي بدء ، إنه مكثف يحمي الجهاز من التأثيرات الخارجية. الحقيقة هي أن مكبر الصوت التشغيلي حساس للغاية لتأثيرات الحقول الكهرومغناطيسية المتناوبة. يزيل المكثف هذا الاعتماد عن طريق إحداث ردود فعل سلبية.

دائرة استشعار درجة الحرارة

بمشاركة الترانزستور والصمام الثنائي زينر ، يتم تشكيل جهد مرجعي مستقر. هنا ، يتم استخدام المقاومات ذات فئة الدقة الأعلى مع قيمة منخفضة لمعامل درجة الحرارة للمقاومة. وبالتالي ، فإن المخطط بأكمله يكتسب استقرارًا إضافيًا. في حالة حدوث تغييرات كبيرة محتملة في ظروف درجة الحرارة ، يمكن حذف المقاومات الدقيقة. يتم استخدامها فقط للتحكم في ارتفاع درجة الحرارة الصغيرة.

الحرارية

تستخدم مستشعرات درجة الحرارة المزدوجة الحرارية بشكل شائع لأنها دقيقة ، وتعمل على نطاق واسع من درجات الحرارة من -200 درجة مئوية إلى 2000 درجة مئوية ، وهي غير مكلفة نسبيًا. مزدوج حراري بسلك وقابس في الصورة أدناه:

عملية المزدوجة الحرارية

يتكون المزدوج الحراري من معدنين غير متماثلين ملحومين معًا لإنتاج فرق جهد على درجة الحرارة. من اختلاف درجة الحرارة بين التقاطعين ، يتم إنشاء جهد يستخدم لقياس درجة الحرارة. يسمى فرق الجهد بين الوصلات بتأثير سيبيك.

إذا كان كلا المركبين في نفس درجة الحرارة ، فإن احتمال الاختلاف في المركبات المختلفة هو صفر ، أي V1 = V2. ومع ذلك ، إذا كانت الوصلات في درجات حرارة مختلفة ، فإن جهد الخرج بالنسبة لفرق درجة الحرارة بين الوصلات سيكون مساويًا للاختلاف V1 - V2.

أنواع مجسات درجة الحرارة

ميكانيكي الكتروني

أبسط وأرخص نوع من المنظمين. جزء العمل الرئيسي هو صفيحة معدنية خاصة تستجيب لزيادة أو نقصان درجة الحرارة. يتم تشغيل وإيقاف النظام عن طريق تغيير انحناء اللوح أثناء التسخين والتبريد. لن يعمل تحديد قيمة درجة الحرارة الدقيقة على مثل هذا المنظم.

إلكتروني

يحتوي الجهاز على عنصر خاص يولد إشارة خاصة. تعتمد القوة بشكل مباشر على قيم درجة الحرارة المحيطة. في مثل هذه الأجهزة ، يمكنك ضبط قراءات دقيقة لدرجة حرارة التسخين تصل إلى جزء من الدرجة. يتم التحكم في النظام عن طريق أزرار وشاشة صغيرة.

قابل للبرمجة

أغلى العناصر الحرارية. على ذلك ، يمكنك تعيين قيم معينة ، عند الوصول إلى تشغيل أو إيقاف تشغيل النظام بأكمله من قبل المنظم. بفضل الجهاز ، يتم إنشاء مناخ محلي في الغرفة التي تناسب شخصًا معينًا. من الممكن تكوين منظم الحرارة بحيث يتم تشغيل النظام في وقت محدد. أي أن الأرضيات يتم تسخينها قبل وصول المالك إلى المنزل ، وفي نفس الوقت لا يتم استهلاك الكهرباء عندما لا يكون المالك.

تتميز العديد من الطرز بتصميمات مشرقة وأنيقة وشاشات LCD توفر المعلومات وتسهل الضبط الدقيق.

العمل مع المكتبات الجاهزة

لذلك ، للعمل مع مستشعرات درجة الحرارة DS18B20 على الشبكة ، يمكنك العثور على عدد كبير من المكتبات ، ولكن كقاعدة عامة ، يتم استخدام اثنتين من أكثر المكتبات شيوعًا. إنها مكتبة ومكتبة. علاوة على ذلك ، تعد المكتبة الثانية إضافة أكثر ملاءمة على الأولى ولا يمكن استخدامها بدونها. بمعنى آخر ، قبل توصيل مكتبة DallasTemperature.h ، يجب عليك أيضًا توصيل OneWire.h. من الممكن تثبيت مكتبات معينة في Arduino IDE.

مكتبة OneWire.h

لنفكر أولاً في العمل مع مكتبة OneWire.h. فيما يلي قائمة بوظائفها مع وصف موجز.

  • OneWire temperatureSensor (uint8_t pinNumber)

هذه الوظيفة هي مُنشئ لفئة OneWire وتقوم بإنشاء كائن مستشعر درجة الحرارة ، أي يفتح قناة اتصال مع جهاز استشعار أو مجموعة من أجهزة الاستشعار على دبوس رقم التعريف الشخصي. في أمثلةنا (الأشكال 3-5) هذا هو الدبوس “D2” من Arduino Nano. لقد قمنا بتوصيل ناقل البيانات DQ DS18B20.

مثال:

OneWire درجة الحرارة
(
د 2
);
// جهاز استشعار أو مجموعة أجهزة استشعار متصلة بالدبوس D2

  • uint8_t بحث (addrArray)

تبحث الوظيفة عن الجهاز التالي في ناقل 1-Wire ، وعندما يتم العثور عليها ، تُدخل قيمة العنوان في مصفوفة addrArray ، وتعود بالقيمة true. نظرًا لأن العنوان الفريد لكل مستشعر هو 64 بت ، يجب أن يكون حجم addrArray 8 بايت. إذا فشل البحث ، فإن الوظيفة ترجع خطأ. وتجدر الإشارة إلى أنه عند توصيل عدة مستشعرات درجة حرارة بحافلة واحدة ، سيتم توجيه كل استدعاء لوظيفة البحث إلى المستشعر التالي ، ثم التالي ، وما إلى ذلك ، حتى يتم تعداد جميع الأجهزة الموجودة على الناقل. تكمن خصوصية هذه الوظيفة في تذكر العناوين التي تمت معالجتها بالفعل. لإعادة تعيين قائمة الانتظار ، تحتاج إلى استدعاء وظيفة reset_search () ، والتي سيتم مناقشتها أدناه.

مثال:

بايت addrArray
[
8
];
// صفيف لتخزين عنوان 64 بت // إذا كان الجهاز غائبًا على الإطلاق في الناقل أو تم تعداد جميع الأجهزة // اعرض المعلومات المقابلة في شاشة المنفذ
لو(!
جهاز استشعار درجة الحرارة
.
بحث
(
addrArray
))
مسلسل
.
println
(
"لا مزيد من العناوين".
);
// وإلا ، إذا استجاب الجهاز التالي لطلب التواجد ، // اعرض عنوان 64 بت في شاشة المنفذ
آخر{بالنسبة(
أنا
=
0
;
أنا
<
8
;
أنا
++)
مسلسل
.
مطبعة
(
addrArray
[
أنا
],
عرافة
);
}

  • فارغreset_search ()

كما ذكر أعلاه ، تعيد هذه الوظيفة تعيين قائمة انتظار الاقتراع للأجهزة الموجودة على ناقل 1-Wire إلى البداية. يجب استخدامه دائمًا جنبًا إلى جنب مع وظيفة البحث عندما يعرض الأخير خطأ. على سبيل المثال ، في حالتنا مع 5 أجهزة استشعار في الحافلة ، من خلال استدعاء وظيفة البحث 5 مرات ، يمكننا الحصول على 5 عناوين. للمرة السادسة ، ستعيد وظيفة البحث false إلينا وستقوم بذلك مع كل استطلاع تالٍ حتى يتم مسح قائمة الانتظار. يجب الانتباه إلى هذا لتجنب المواقف غير المفهومة.

مثال:

بايت addrArray
[
8
];
// صفيف لتخزين عنوان 64 بت // إذا كان الجهاز غائبًا على الإطلاق في الناقل أو تم تعداد جميع الأجهزة // إعادة تعيين قائمة انتظار الاقتراع لتكرار دورة البحث
لو(!
جهاز استشعار درجة الحرارة
.
بحث
(
addrArray
))
جهاز استشعار درجة الحرارة
.
reset_search
();

  • uint8_tإعادة تعيين ()

تبدأ وظيفة إعادة الضبط بسلك واحد عملية الاتصال. يتم استدعاؤه في كل مرة نريد التواصل مع مستشعر درجة الحرارة. يمكن أن تكون قيم الإرجاع صحيحة أو خاطئة. سنحصل على القيمة الحقيقية إذا استجاب مستشعر واحد على الأقل في الحافلة لإعادة الضبط بنبض التواجد. خلاف ذلك ، نحن على خطأ ؛

مثال:
لو(!
جهاز استشعار درجة الحرارة
.
إعادة تعيين
())
مسلسل
.
println
(
"لا توجد أجهزة استشعار في الحافلة"
);آخر
مسلسل
.
println
(
"تم الكشف عن جهاز استشعار"
);

  • فارغحدد (addrArray)

تتيح لك الوظيفة تحديد جهاز معين نريد العمل به في الوقت الحالي. يتم الاختيار من خلال التحديد الصريح لعنوان 64 بت الذي تم إدخاله في مصفوفة addrArray. يمكن تعيين العنوان بشكل صريح عن طريق كتابته في المصفوفة أو باستخدام وظيفة البحث التي تمت قراءتها مسبقًا. لاحظ أنه يجب استدعاء وظيفة إعادة الضبط قبل استدعاء select. مع إعادة الضبط التالية ، يتم قطع الاتصال بجهاز الاستشعار المحدد حتى يتم تحديد المكالمة التالية.
مثال:
بايت addrArray
[
8
];
// صفيف لتخزين عنوان 64 بت // إذا كان الجهاز غائبًا على الإطلاق في الناقل أو تم تعداد جميع الأجهزة // إخراج المعلومات المقابلة إلى مراقب المنفذ
لو(!
جهاز استشعار درجة الحرارة
.
بحث
(
addrArray
))
مسلسل
.
println
(
"لا مزيد من العناوين".
);
// وإلا ، إذا استجاب الجهاز التالي لطلب التواجد ، // حدده للعمل اللاحق
آخر{
جهاز استشعار درجة الحرارة
.
إعادة تعيين ()
;
// لا تنسَ إصدار الأمر temperatureSensor reset
.
حدد (addrArray)
;
// حدد مصفوفة بعنوان القراءة
}

  • فارغتخطى ()

الوظيفة مناسبة فقط عند العمل باستخدام مستشعر واحد في الحافلة وتتخطى ببساطة اختيار الجهاز. بمعنى آخر ، لا يمكنك استخدام وظيفة البحث ، وبالتالي الوصول بسرعة باستخدام المستشعر الوحيد لديك.

مثال:
جهاز استشعار درجة الحرارة.
إعادة تعيين
();
// إعادة ضبط إطار مستشعر درجة الحرارة
.
تخطى
();
// حدد المستشعر الوحيد لمزيد من العمل معه

  • فارغكتابة (uint8_tبايت ، uint8_t powerType = 0)

ترسل الوظيفة بايت من البيانات إلى الجهاز المحدد في الناقل. تشير الوسيطة powerType إلى نوع مصدر الطاقة لأجهزة الاستشعار (0 - يتم تشغيل أجهزة الاستشعار مباشرة من مصدر خارجي ؛ 1 - يتم استخدام اتصال بالطاقة الطفيلية). يمكن حذف المعلمة الثانية إذا تم استخدام طاقة خارجية ، لأنها 0 افتراضيًا.

مثال:

جهاز استشعار درجة الحرارة
.
إعادة تعيين
();
// إعادة ضبط إطار مستشعر درجة الحرارة
.
تخطى
();
// حدد المستشعر الوحيد لمزيد من العمل معه // أرسل أمرًا لتحويل درجة الحرارة ، // باستخدام اتصال مع طاقة طفيلية من ناقل بيانات المستشعر
.
كتابة
(
0x44
,
1
);

  • uint8_tاقرأ ()

تقوم هذه الوظيفة بقراءة بايت واحد من البيانات التي يرسلها الجهاز التابع (المستشعر) إلى ناقل 1-Wire.

مثال:

// اقرأ 9 بايت من البيانات من ناقل 1-Wire ووضع النتيجة في صفيف بايت صفيف
[
9
];بالنسبة(
uint8_t أنا
=
0
;
أنا
<
9
;
أنا
++){
مجموعة مصفوفة
[
أنا
]=
جهاز استشعار درجة الحرارة
.
اقرأ
();}

  • ثابت uint8_t crc8 (const uint8_t * addr ، uint8_t len) ؛

تم تصميم الوظيفة لحساب المجموع الاختباري. مصمم للتحقق من الاتصال الصحيح بمستشعر درجة الحرارة. هنا addr هو مؤشر إلى صفيف البيانات ، و len هو عدد البايت.

مثال:

بايت addrArray
[
8
];
// صفيف لتخزين عنوان 64 بت // إذا كان الجهاز غائبًا على الإطلاق في الناقل أو تم تعداد جميع الأجهزة // إخراج المعلومات المقابلة إلى مراقب المنفذ
لو(!
جهاز استشعار درجة الحرارة
.
بحث
(
addrArray
))
مسلسل
.
println
(
"لا مزيد من العناوين".
);
// وإلا ، إذا استجاب الجهاز التالي لطلب التواجد ، // تحقق من المجموع الاختباري لعنوانه
آخر{
// إذا لم يتطابق المجموع الاختباري ، اعرض رسالة خطأ
لو(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
مسلسل
.
println
(
"اتفاقية حقوق الطفل غير صالحة!"
);}}
قمنا بفحص كل وظيفة من وظائف مكتبة OneWire.h بشكل منفصل ومن أجل إصلاح المادة ، سأقدم أدناه رسمًا تخطيطيًا لقراءة درجة الحرارة من مجموعة من مستشعرات درجة الحرارة DS18B20 ، والتي سيتم توصيلها بالدبوس D2 باستخدام دائرة طاقة طفيلية. سيتضمن الرسم تعليقات مفصلة على جميع النقاط الضرورية.

# تضمين // نقوم بتوصيل المكتبة للعمل مع أجهزة الاستشعار الحرارية DS18B20OneWire ds
(
2
);
// يتم توصيل مستشعر أو مجموعة من المستشعرات بطرف D2 الخاص بإعداد Arduino // PRESET FUNCTION void
(
فارغ
){
مسلسل
.
يبدأ
(
9600
);
// تهيئة العمل مع المنفذ التسلسلي} // حلقة فارغة للدورة الرئيسية
(
فارغ
){
بايت أنا
;
// متغير مساعد لحلقات البايت الحالية
=
0
;
// متغير لتحديد جاهزية المستشعر لبايت type_s
;
// متغير لتحديد نوع المستشعر الحراري على ناقل بيانات البايت
[
12
];
// صفيف لتخزين المعلومات الواردة من عنوان بايت المستشعر
[
8
];
// صفيف لتخزين عنوان 64 بت لمستشعر تعويم مئوية
,
فهرنهايت
;
// المتغيرات لحساب درجة الحرارة // إذا لم يتم العثور على الأجهزة الموجودة على الناقل أو تم تعداد جميع الأجهزة الموجودة على الناقل // اعرض المعلومات المقابلة في شاشة المنفذ ، وأعد تعيين قائمة الانتظار // وقم بإجراء بحث مرة أخرى ، في انتظار 250 مللي ثانية
لو(!
س
.
بحث
(
العنوان
)){
مسلسل
.
println
(
"لا مزيد من العناوين".
);
مسلسل
.
println
();
س
.
reset_search
();
تأخير
(
250
);إرجاع;}
// إذا تم العثور على الجهاز التالي على الناقل ، اعرض عنوانه الفريد // في شاشة المنفذ في التسلسل السداسي
.
مطبعة
(
"ROM ="
);بالنسبة(
أنا
=
0
;
أنا
<
8
;
أنا
++){
مسلسل
.
كتابة
(
‘ ‘
);
مسلسل
.
مطبعة
(
العنوان
[
أنا
],
عرافة
);}
// تحقق من المجموع الاختباري لعنوان الجهاز الذي تم العثور عليه // وإذا لم يكن مطابقًا ، اعرض المعلومات المقابلة
لو(
OneWire
::
crc8
(
العنوان
,
7
)!=
العنوان
[
7
]){
مسلسل
.
println
(
"اتفاقية حقوق الطفل غير صالحة!"
);إرجاع;}
مسلسل
.
println
();
// تحقق من صفر بايت من العنوان ، والذي يحتوي على معلومات // حول نوع معين من مستشعر درجة الحرارة. اعتمادًا على قيمة صفر // بايت ، نعرض سلسلة الشريحة في شاشة المنفذ. إذا كان البايت الصفري يحتوي على قيمة // غير معروفة ، فإننا نعرض رسالة حول عائلة غير معروفة من مستشعر درجة الحرارة.
تحول(
العنوان
[
0
]){قضية
0x10
:
مسلسل
.
println
(
"رقاقة = DS18S20"
);
type_s
=
1
;فترة راحة;قضية
0x28
:
مسلسل
.
println
(
"رقاقة = DS18B20"
);
type_s
=
0
;فترة راحة;قضية
0x22
:
مسلسل
.
println
(
"رقاقة = DS1822"
);
type_s
=
0
;فترة راحة;إفتراضي:
مسلسل
.
println
(
"الجهاز ليس جهاز عائلة DS18x20."
);إرجاع;}
س
.
إعادة تعيين
();
// إعادة تعيين الحافلة لتهيئة تبادل البيانات ds
.
تحديد
(
العنوان
);
// حدد المستشعر بالعنوان الحالي للعمل معه // أرسل الأمر لتحويل درجة الحرارة (وفقًا للوثائق 0x44) // لا تنسى المعلمة الثانية "1" ، نظرًا لأننا نرسل البيانات عبر / / خط مع مصدر طاقة طفيلي. س
.
كتابة
(
0x44
,
1
);
// يبدأ المستشعر في التحويل ، والذي يستغرق الحد الأقصى وفقًا للوثائق. 750 مللي ثانية // لنكون في الجانب الآمن ، سننظم وقفة لمدة ثانية تأخير
(
1000
);
// إعادة تعيين الحافلة مرة أخرى لقراءة المعلومات من المستشعر // احفظ استجابة وظيفة إعادة التعيين () للمتغير الحالي لمزيد من العمل معها.
=
س
.
إعادة تعيين
();
س
.
تحديد
(
العنوان
);
// أعد تحديد المستشعر حسب عنوانه ، نظرًا لوجود نبضة إعادة تعيين // يسمح الأمر 0xBE ، وفقًا للوثائق الفنية ، بقراءة الذاكرة الداخلية // لمستشعر درجة الحرارة (Scratchpad) ، والتي تتكون من 9 بايت. س
.
كتابة
(
0xBE
);
// قراءة وعرض 9 بايت من الذاكرة الداخلية لمستشعر درجة الحرارة المسلسل إلى شاشة المنفذ
.
مطبعة
(
"البيانات ="
);
مسلسل
.
مطبعة
(
هدية
,
عرافة
);
مسلسل
.
مطبعة
(
» «
);بالنسبة(
أنا
=
0
;
أنا
<
9
;
أنا
++){
البيانات
[
أنا
]=
س
.
اقرأ
();
مسلسل
.
مطبعة
(
البيانات
[
أنا
],
عرافة
);
مسلسل
.
مطبعة
(
» «
);}
// تحقق والإخراج إلى المنفذ لمراقبة المجموع الاختباري للبيانات المتسلسلة المستلمة
.
مطبعة
(
"CRC ="
);
مسلسل
.
مطبعة
(
OneWire
::
crc8
(
البيانات
,
8
),
عرافة
);
مسلسل
.
println
();
// ابدأ عملية تحويل البيانات المستلمة إلى درجة الحرارة الفعلية ، // التي يتم تخزينها في 0 و 1 بايت من ذاكرة القراءة. للقيام بذلك ، نقوم بدمج هذين // البايتين في رقم واحد من 16 بت int16_t raw
=(
البيانات
[
1
]<<
8
)|
البيانات
[
0
];
// قبل إجراء مزيد من التحويل ، تحتاج إلى تحديد العائلة التي ينتمي إليها هذا المستشعر // (قمنا سابقًا بحفظ النتيجة في متغير type_s). // اعتمادًا على العائلة ، سيتم حساب درجة الحرارة بشكل مختلف ، // نظرًا لأن DS18B20 و DS1822 يُرجعان قيمة 12 بت ، بينما يُرجع DS18S20 قيمة 9 بت
لو(
type_s
){
// إذا كان المستشعر ينتمي إلى عائلة DS18S20 الخام
=
الخام
<<
3
;
// الدقة الافتراضية هي 9 بت
لو(
البيانات
[
7
]==
0x10
){
الخام
=(
الخام
&
0xFFF0
)+
12

البيانات
[
6
];}}آخر{
// حدد دقة القياس التي تم تكوين هذا المستشعر بها بايت cfg
=(
البيانات
[
4
]&
0x60
);
// في درجات الدقة المنخفضة ، يمكنك صفر البتات الأقل أهمية ، // نظرًا لعدم تحديدها مبكرًا
لو(
cfg
==
0x00
)
الخام
=
الخام
&~
7
;
// 9 بت (يستغرق التحويل 93.75 مللي ثانية)
آخرلو(
cfg
==
0x20
)
الخام
=
الخام
&~
3
;
// 10 بت (يستغرق التحويل 187.5 مللي ثانية)
آخرلو(
cfg
==
0x40
)
الخام
=
الخام
&~
1
;
// 11 بت (التحويل يأخذ 375 مللي ثانية) // الدقة الافتراضية هي 12 بت (التحويل يأخذ 750 مللي ثانية)
}
// حساب وإخراج قيم درجة الحرارة إلى شاشة المنفذ المئوي
=(
يطفو
)
الخام
/
16.0
;
فهرنهايت
=
درجة مئوية
*
1.8
+
32.0
;
مسلسل
.
مطبعة
(
"درجة الحرارة ="
);
مسلسل
.
مطبعة
(
درجة مئوية
);
مسلسل
.
مطبعة
(
"درجة مئوية،"
);
مسلسل
.
مطبعة
(
فهرنهايت
);
مسلسل
.
println
(
فهرنهايت
);}
إذا تم كل شيء بشكل صحيح ، فسنرى في نافذة مراقب المنفذ شيئًا مشابهًا لما يلي (الشكل 6):

الشكل 6 - نتيجة العمل مع مكتبة OneWire.h

مكتبة DallasTemperature.h

تعتمد هذه المكتبة على المكتبة السابقة وتبسط عملية البرمجة قليلاً بسبب وظائف أكثر قابلية للفهم. بعد التثبيت ، سيكون لديك إمكانية الوصول إلى 14 نموذجًا من التعليمات البرمجية الموثقة جيدًا لجميع المناسبات. في إطار هذه المقالة ، سيتم النظر في مثال على التشغيل باستخدام مستشعر واحد.

تظهر نتيجة البرنامج في الشكل 7

الشكل 7 - نتيجة قراءة درجة الحرارة باستخدام مكتبة DallasTemperature.h

// نقوم بتوصيل المكتبات الضرورية # include #include // نقوم بتوصيل ناقل البيانات بالدبوس # 2 من Arduino # حدد ONE_WIRE_BUS 2 // أنشئ مثيلًا للفئة لحافلةنا ورابطًا لها OneWire oneWire
(
ONE_WIRE_BUS
);
أجهزة استشعار درجة الحرارة في دالاس
(&
سلك واحد
);
// إعداد باطل وظيفة الإعداد المسبق
(
فارغ
){
مسلسل
.
يبدأ
(
9600
);
// تهيئة مجسات المنفذ التسلسلي
.
يبدأ
();
// تهيئة الحافلة
}
// الدورة الرئيسية
(
فارغ
){
مسلسل
.
مطبعة
(
"قراءة درجة الحرارة ..."
);
// أرسل الأمر لقراءة أجهزة الاستشعار
.
طلب درجات الحرارة
();
مسلسل
.
println
(
"اقرأ"
);
مسلسل
.
مطبعة
(
"درجة حرارة المستشعر 1:"
);
// عرض قيمة درجة الحرارة المسلسل
.
مطبعة
(
مجسات
.
getTempCByIndex
(
0
));}

مستشعر درجة الحرارة KY-001 بواجهة بسلك واحد

يستخدم هذا المستشعر لقياس درجة الحرارة بدقة. يتم إجراء الاتصال مع المستشعر عبر واجهة 1-Wire [1-2] ، والتي تسمح لك بتوصيل العديد من الأجهزة المماثلة بلوحة Arduino باستخدام دبوس متحكم واحد [3-4]. تعتمد الوحدة على الدائرة الدقيقة ds18b20 [5].

حجم الوحدة 24 × 15 × 10 مم ، الوزن 1.3 جرام ، ويستخدم موصل ثلاثي السنون للتوصيل. جهة اتصال مركزية - مصدر طاقة + 5 فولت ، اتصل بـ "-" - عام ، اتصل بـ "S" - معلوماتية.

تحتوي اللوحة على مؤشر LED أحمر يضيء عند تبادل المعلومات.

الاستهلاك الحالي 0.6 مللي أمبير أثناء تبادل المعلومات و 20 ميكرو أمبير في وضع الاستعداد.

توصيل هذا النوع من المستشعرات بـ Arduino موصوف جيدًا في العديد من المصادر [6-8]. في هذه الحالة ، تتجلى المزايا الرئيسية لـ Arduino مرة أخرى - تعدد الاستخدامات ووجود قدر كبير من المعلومات المرجعية. للعمل مع المستشعر ، ستحتاج إلى مكتبة OneWire [9]. بعد تحميل البرنامج من [8] (هناك خطأ في الإصدار الأول من البرنامج - لا يوجد # تضمين اتصال مكتبة في رأس الكود) ، يمكن ملاحظة المعلومات التالية في شاشة المنفذ التسلسلي.

اختبر المؤلف أيضًا الكود من [7] ، كل شيء يعمل على الفور ، في شاشة المنفذ التسلسلي يمكنك قراءة معلومات حول نوع المستشعر المتصل وبيانات درجة الحرارة الفعلية.

بشكل عام ، مستشعر مفيد للغاية يجعل من الممكن التعرف على واجهة 1-Wire في الممارسة العملية. يعطي المستشعر بيانات درجة الحرارة الصحيحة على الفور ، ولا يحتاج المستخدم إلى المعايرة.

تقييم
( 1 تقدير ، متوسط 4 من 5 )

دفايات

أفران