السبت، 2 فبراير، 2013

LM35

حساس الحرارة LM35 



ستكون تدوينتي اليوم مخصصة للحديث عن حساس للحرارة مشهور يدعى LM35 , ذو خرج دقيق و مدى عمل واسع, و يعطي مباشرة خرج بالسليسيوس C و بتغير فولتية المخرج شكل منتظم مع درجة الحرارة المُقاسة , و يأتي بأشكال مختلفة و بمواصفات مختلفة , لكن هذا التعليب Package TO46 هو الأكثر شيوعاً 

الشكل الخارجي لها كما في الصورة 

من الصورة يتبين لنا أنها تتكون من 3 أرجل و هي 

Vs : و هي مدخل تغذية الحساس .
Vout:  و هو مخرج درجة الحرارة , و الذي نقوم بوصله بالمتحكم .
Gnd: ارضي الدارة .

المواصفات القياسية لهذا الحساس يمكن معرفتها من النشرة الفنية Datasheet  لها و يمكن أن نلخص أهمها فيما يلي :

1) تتغير فولتية الخرج خطياً مع درجة الحرارة "10mV/C "
2) نسبة الخطأ في درجة الحرارة لا تزيد أو تنقص عن 0.5C 
3) مدى حراري واسع يبدأ من 55C-  سيلسيوس إلى 150C
4)مقاومة الخرج قليلة 
5) يمكن تغذيته ضمن مدى فولتية كبير "من 4- 30 فولت "

هذه أهم المعلومات التي يمكننا أن نستعرض بها ميزات هذا الحساس , و القيم الكهربائية الضرورية لهذا الحساس موجودة في الجدول أدناه :



المعدات :

لكي تنفذ تجربة اليوم  ستحتاج إلى ما يلي :
1) بطاقة أردوينو 
2) الحساس LM35
3) أسلاك توصيل 
4) BreadBoard .
5) وسائل إظهار رقمية " اختيارية في حال توافرها " مثل المقطعات السباعية Seven segment أو الشاشة الكريستالية LCD1602




التوصيل :

التوصيل سهل للغاية 


نأتي الآن لجانب البرمجة .

البرمجة :

المعلومة الأكثر أهمية  لهذا الحساس هو أنه يقوم بمعايرة الخرج مباشرة بالسيلسيوس , ومن النشرة الفنية Datasheet نعرف أنه 

أذن كل 10 ملي فولت على المخرج تساوي 1 سيلسيوس , رائع .


بعد أن تفتح السيريال Serial Monitor  سترى درجة الحرارة  على الشاشة .



لو أردنا تطوير المشروع , فما علينا سوى عرض قيمة الخرج Celsius على شاشة العرض المطلوبة .

هذا البرنامج يوضح عرض درجة الحرارة على 7sement

seven segment temperature display 






تحياتي 



21 التعليقات :

  1. المقال راائع ومتعوب عليه الله يعطيك العافية ..
    أتمنّى لك التوفيق.. بارك الله بك ونفع بك..

    ردحذف
  2. الله يعافيك نور الدين

    أخيراً كُتب لي اليوم أن ارى أول تعليق بعد مرور أكثر من 3 أشهر على افتتاح مدونتي

    شكراً لك أخي الكريم , و أعدك بالمزيد

    ردحذف
  3. يعطيك العافيه اخي على المجهود الرائع الذي تبذله على اظهار هذه المدونه بابهى صوره
    بس عندي استفسار
    كيف بدي اقدر اعالج مشكله error في درجه الحراره لو حكينا هيك بيزبط ؟؟
    input = (LM35*5000)/1024
    input= input - 5000
    celsius =input/10
    ونسبه الخطء 0.5 على ما اظن انها مؤثره شوي
    وشكرا

    ردحذف
    الردود
    1. اهلاً محمد

      على العكس هذا السنسور مميز في هذا الأمر

      اغلب السنسورات التي تماثله , نسبة خطأها +-2سيلسيوس

      النسبة غير مؤثرةلأن 0.5c شبه مهملة مع مدى هذا الحساس "-55>> 150 " سيلسيوس

      جربه و سترى هذا بنفسك

      تحياتي لك صديقي

      حذف
    2. يمكن أيضاً أخذ متوسط حسابي لقراءات هذا الحساس , هذا يقلل نوعا ما من نسبة الخطأ .

      حذف
    3. شكرا الك مهندس
      لم انتبه لمسأله المتوسط الحسابي
      ^^

      حذف
  4. مرحبا يا جماعة بدي مساعدة في برمجة Arduino uno أنا وصلت معها LM35) Temperature sensor على مدخل التماثليA0 و أريد أن أفعل ثلاثة مخارج بشروط معينه
    1:- أذا كانت الحرارة ما بين 13 الى 30 يضيء الليد على مخرج 2
    2:- أذا كانت الحرارة مابين 31 الى 55 يضيء الليد على مخرج 3
    3:- أذا كانت الحرارة مابين 56 الى 90 يضيء لليد على المخرج 4
    أنا بحاجة عقولكم يا اصدقائي
    ومشكورين على تعاونكم (:

    ردحذف
    الردود
    1. أهلاً بك , ستجد الكود في التعليق التالي .

      حذف
  5. //Name :Mohannad Rawashdeh .
    //temeratuer sensor using LM 35 sensor.
    //Push button on pin 3 "as power switch"
    //Lm 35 have 3 pin , +Vcc,Gnd,out
    //hooked up:
    //connect pin one to +5v "from arduino board"
    //connect pin two to A0 analoge input.
    //connect pin three to Gnd
    //LM 35 have a linearity curve
    // it change 10mV for each 1 Celesus
    // Programmed for http://genotronex.blogspot.com/
    //****************************************************************
    float LM35=0;
    float input=0; // reading the voltage on pin A0
    float celsius=0;
    const int first_cond_low =13;
    const int first_cond_high =30;
    const int second_cond_low =31;
    const int second_cond_high =55;
    const int third_cond_low =56;
    const int third_cond_high =90;


    void setup(){
    Serial.begin(9600);
    pinMode(A0,INPUT);
    for(int i=2;i<5;i++){
    pinMode(i,OUTPUT);
    }
    }

    void loop(){

    LM35 = analogRead(A0);
    input = (LM35*5000)/1024; // convert raw sensor value to millivolts
    celsius = input/10; // convert millivolts to Celsius
    Serial.println(" sensor read");
    Serial.println(LM35);
    Serial.println(" --------------------------");
    if(celsius >first_cond_low && celsius <= first_cond_high){
    digitalWrite(2,HIGH);
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    }
    if(celsius >=second_cond_low && celsius <= second_cond_high){
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    digitalWrite(4,LOW);
    }
    if(celsius >=third_cond_low && celsius <= third_cond_high){
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,HIGH);
    }

    delay(1000);
    Serial.print("Temperature: ");
    Serial.print(celsius,2);
    Serial.println(" degrees C");
    Serial.println("_ _ _ _ _ _ _ _ ");
    }

    ردحذف
  6. أخي أريد برنامج في ج اردوينو LM35 الاستشعار مع لوحة اردوينو على شاشة LCD

    ردحذف
    الردود
    1. اكرر نحن هنا لا نكتب كودات خاصة لكل شخص كما يريد , نحن نضعك على اول الطريق و نسهل لك كل المواضيع , و انت عليك ان تبدع ما تريد .

      حذف
  7. يعطيك العافية عالمشروع ..
    عندي سؤال .. ما هو أفضل موقع لمحاكان الأردوينو اونلاين ؟ وماهو إسم الموقع أو البرنامج يلي استخدمتو بالمشروع ؟

    وشكرا جزيلا

    ردحذف
  8. شكرا على الموضوع بس يريت يكون شرح الكود بالعربي

    ردحذف
  9. موضوع رائع
    ولكن سؤال انا جربت الحساس على حهازتسخين وشبكة الحساس على الجهاز وكن درجة الحرارة بدأت من العد 4C مش المفروض يعطي الحساس درجة حرارة الغرفة بصراحة انا مش عارف وين المشكلة

    ردحذف
    الردود
    1. لا تستخدم lm35 بهذا الشكل لانه ابسط من ان يستخدم في قياس حرارة عاليه بشكل مباشرة بدون عزل .
      استخدم الثيرمستور افضل .

      حذف
  10. جيت اجرب الlm35 عن طريق كود مكتوب فى كتاب اردوينو ببساطة ولقيتها بطلع حاجات غريبة قيم بالسالب والموجب زالاختلاف كبيربين القيم وبعضها

    ردحذف
  11. السلام عليكم شكرا على المجهودات المبذولة
    هل يمكن اضهار القيم السالبة
    حسب النشرة الفنية لهذا الحساس نجد التيار المرجعي هو 1,8v وليس 5V

    ردحذف
  12. السلام عليكم
    بغيت مساعدة اريد برنامج الاردوينو للتحكم في درجة حرارة و برودة معينة في الماء بحيث اذا وصل مثلا الى درجة 50 يعمل الاردوينو على اعطاء اوامر لجهاز التبريد بالعمل و العكس صحيح اريد البرنامج لو سمحتون

    ردحذف
  13. م.محمد الرواشده
    جزاك الله خير

    ردحذف
  14. اخي الكريم بدي الكود اذا كانت درجه حراره 37.5 لانو ما بعطيني 37.5 بعطي قيم اعلى من نسبه الخطا كمان

    ردحذف

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.