[سلسلة تعلم الأردوينو] حساس الحرارة LM35 ولوحة الأردوينو
نتعلم في هذه التدوينة كيفية استخدام ربط حساس الحرارة نصف الناقل LM35 مع لوحة الأردوينو بهدف مراقبة درجة الحرارة في الوسط المحيط
في المقالات السابقة تعلمنا كيفية قراءة دخل تماثلي من خلال المغارز التماثليةفي الكثير من التجهيزات الكهربائية و الالكترونية نضطر لمراقبة درجة الحرارة بالوقت الحقيقي ، لأنها تشير بشكل أو بآخر للحالة الحالية للجهاز، ويحذر من حصول مشاكل بحال استمرت درجة الحرارة بالارتفاع أو الانخفاض إلى حد معين حسب الاستخدام. يستخدم حساس قياس درجة الحرارة أيضا بعدد كبير الأجهزة نذكر أمثلة عنها : المكيف، الفرن الكهربائي، السيارات وأجهزة الحاسوب. قبل البدء، ننصح بالاطلاع على مقالنا الخاص بقراءة الجهد من المغارز التماثلية على لوحة الأردوينو: اضغط هنا.
يمكنكم أيضاً الاطلاع على كافة مقالات سلسلة تعلم الأردوينو من فهرس الدروس الخاص بها
1. مقدمة حول حساس الحرارة LM35
عبارة عن دارة متكاملة تُشبه الترانزستور من حيث الشكل الخارجي حيث تمتلك ثلاثة مغارز. تُستخدم لقياس درجة الحرارة ضمن المجال الحراري المقاس بالدرجة المئوية (Celsius) -55 وحتى +150 درجة مئوية، وتولد خرجاً هو عبارة عن جهد كهربائي تماثلي تتناسب قيمته مع قيمة درجة الحرارة المحيطة. يُعتبر خرج حساس الحرارة LM35 خطي. من ناحية تحسس الحرارة، وعلى افتراض أن درجة الحرارة ارتفعت درجة مئوية واحدة، فإن هذا سيتناسب بزيادة في الجهد على خرج الحساس بمقدار 10 ميللي فولت. يتميز بتكلفته المنخفضة وملائمته للعمل في مجال التحكم، يعمل ضمن جهود 4 فولت وحتى 30 فولت.
يمكن الاطلاع على ورقة البيانات (datasheet) الخاصة بالحساس من هنا.
الشكل التالي يوضح توزع الأطراف للحساس:
- اقرأوا أيضاً: تعرفوا على الحساسات Sensors
2. مثال تطبيقي – جهاز إنذار بحال ارتفاع درجة الحرارة عن درجة حرارة معينة
1.2 شرح عمل الدارة
يتم قراءة خرج الحساس من خلال أحد مغارز الدخل التماثلي، ومن ثم استخلاص قيمة درجة الحرارة اعتماداً على قيمة الجهد التماثلي الذي تمت قرائته، وطباعة القيمة على شاشة المراقب التسلسلي. في حال ارتفاع درجة الحرارة عن حد معين وليكن 30 درجة مئوية سيتم تشغيل ليد ضوئي أحمر وبحال كانت درجة الحرارة بالحالة المقبولة سيتم تشغيل ليد ضوئي أخضر.
2.2. العتاد المستخدم
- لوحة أردوينو أونو Arduino UNO، أو أي لوحة متوافقة معها.
- لوحة تجريب إلكترونية.
- أسلاك توصيل Jumper-Wire..
- حساس حرارة LM35.
- ديود ضوئي LED أخضر ومقاومة أومية 220 أوم.
- ديود ضوئي LED أحمر ومقاومة أومية 220 أوم.
3.2 البرامج المستخدمة
بيئة التطوير الرسمية الخاصة بلوحات الأردوينو (للتحميل: اضغط هنا )
4.2 توصيل العتاد
يتم توصيل العناصر بالشكل الآتي:
- لمبات الإشارة كل منها يوصل إلى مغرز رقمي ولتكن المغارز 2 لليد الأحمر، و3 لليد الأخضر.
- يوصل الحساس للتغذية 5 فولت والتأريض GND، ويوصل الخرج OUT إلى مغرز دخل تماثلي وليكن A0.
تتوضح التوصيلات السابقة من خلال المخطط الآتي:
5.2 الشيفرة البرمجية
/** * Control LEDs using Temperature-Read from LM35 Sensor */ int G_LED = 3; // Green LED pin int R_LED = 2; // Red LED pin int LM35_OUT = A0; // Input pin float VOLTAGE, TEMP ; // Variables for calculations void setup() { Serial.begin(9600);// Begin The Serial Communication pinMode(G_LED, OUTPUT);// Make The G_LED Pin Output pinMode(R_LED, OUTPUT); // Make The R_LED Pin Output } void loop() { // Read The Voltage From The LM35_OUT Pin VOLTAGE = analogRead(LM35_OUT); // Convert The Value From 0-1023 To 0-5 Volt VOLTAGE = VOLTAGE * 5.0 / 1024; // Convert The Voltage From Volt To Milli Volt VOLTAGE = VOLTAGE * 1000; // Convert The Voltage To Temperture : 1 Celsius = 10mV TEMP = VOLTAGE / 10; //Printing On Serial Monitor Serial.print("Temp = "); Serial.print(TEMP); Serial.println("Celsius "); delay(500); // Check The Temperture Value if (TEMP > 25) { digitalWrite(G_LED, LOW); digitalWrite(R_LED, HIGH); } else { digitalWrite(G_LED, HIGH); digitalWrite(R_LED, LOW); } }
6.2 شرح الشيفرة البرمجية
- في البداية تم تعريف عدة متحولات من أجل التحكم بالمغارز المختلفة:
- المتحول int G_LED من أجل التحكم بإضاءة الليد الأخضر
- المتحول int R_LED من أجل المتحكم بإضاءة الليد الأحمر
- المتحول int LM35_OUT من أجل قراءة خرج الحساس LM35 على مغرز الدخل التماثلي A0
- المتحول float VOLTAGE من أجل تخزين قيمة الجهد التي يتم قرائتها على مغرز الدخل التماثلي A0
- المتحول float TEMP من أجل حساب درجة الحرارة من قيمة الجهد VOLTAGE التي تم قرائتها على مغرز الدخل التماثلي A0
int G_LED = 3; // Green LED pin int R_LED = 2; // Red LED pin int LM35_OUT = A0; // Input pin float VOLTAGE, TEMP ; // Variables for calculations
- ضمن التابع ()void setup تم ضبط إعدادات لوحة الأردوينو:
- تهيئة المراقب التسلسليّ Serial Montior للعمل عند سرعة تبادل قدرها 9600 بت في الثانية، وذلك عبر التعليمة
Serial.begin(9600);// Begin The Serial Communication
- تهيئة المغارز الرقمية 3 و 2 للعمل كمغارز خرج. تم إسناد القيم 3 و 2 إلى المتحولات G_LED و R_LED وبالتالي يمكن استخدام هذه المتحولات بشكلٍ مباشر عند تهيئة المغارز الرقمية
pinMode(G_LED, OUTPUT);// Make The G_LED Pin Output pinMode(R_LED, OUTPUT); // Make The R_LED Pin Output
- ضمن التابع ()void loop
- تخزين قيمة الجهد الذي تتم قرائته على المغرز التماثلي A0 في المتحول VOLTAGE. التابع analogRead يعيد قيمة بين 0 و 1023، ولحساب قيمة الجهد ضمن المجال 0 و 5 فولت يجب إجراء عملية تحويل بسيط، وأخيراً يتم تحويل القيمة من فولت إلى ميللي فولت لاستخدامها لاحقاً في حساب قيمة درجة الحرارة الحالية. هذا يتم عبر التعليمات التالية:
// Read The Voltage From The LM35_OUT Pin VOLTAGE = analogRead(LM35_OUT); // Convert The Value From 0-1023 To 0-5 Volt VOLTAGE = VOLTAGE * 5.0 / 1024; // Convert The Voltage From Volt To Milli Volt VOLTAGE = VOLTAGE * 1000;
- حساب قيمة درجة الحرارة الحالية من قيمة الجهد المخزنة في المتحول VOLTAGE (بواحدة الميللي فولت):
// Convert The Voltage To Temperture : 1 Celsius = 10mV TEMP = VOLTAGE / 10;
- طباعة قيمة درجة الحرارة الحالية على شاشة المراقب التسلسلي
//Printing On Serial Monitor Serial.print("Temp = "); Serial.print(TEMP); Serial.println("Celsius "); delay(500);
- التحقق من قيمة درجة الحرارة الحالية واتخاذ قرار بشأن إطفاء أو تشغيل الليدات الضوئية، ففي حال كانت الحرارة فوق 25 درجة يُضيء الليد الأحمر ويتم إطفاء الأخضر، وفي حال كانت الحرارة أقل من 25 يتم تنفيذ الأمر المعاكس
// Check The Temperture Value if (TEMP > 25) { digitalWrite(G_LED, LOW); digitalWrite(R_LED, HIGH); } else { digitalWrite(G_LED, HIGH); digitalWrite(R_LED, LOW); }
7.2 أفكار تطويرية
- يمكنك تطوير خوارزمية القراءة لأخذ أكثر من قيمة لدرجة الحرارة من عدة حساسات تقع ضمن نفس الوسط وحساب المتوسط الحسابي لتلك القيم للحصول على القيمة الدقيقة.
- يمكنك ربط عدة حساسات لقياس درجة الحرارة بعدة أوساط (غرف مثلا وترقيم كل منها برقم مثلا 1,2,3,..) والحصول على درجة حرارة وسط معين منهم بإرسال رقم الوسط من خلال شاشة المراقب التسلسلي.
3. ملخص
- يُعتبر حساس الحرارة LM35 من الخيارات الجيدة وسهلة التحكم التي تتيح قراءة درجة الحرارة الوسط المحيط. يولد الحساس خرجاً خطياً حيث تتناسب قيمة الجهد على خرج الحساس مع درجة الحرارة.
- يمكن استخدام لوحة الأردوينو لقراءة خرج الحساس حيث يتم وصل مغرز خرج الحساس مع أحد مغارز الدخل التماثلي على لوحة الأردوينو
- يمكن استثمار قيمة درجة الحرارة التي تم قرائتها من خرج الحساس لتنفيذ أغراض تحكمية مثل تشغيل وإطفاء ليدات، أو حتى في مشاريع أخرى مثل تشغيل وإطفاء أو حتى ضبط أنظمة تكييف
بالتوفيق
كان الله في عونكم