قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 05-09-2013, 06:39 PM المشاركة 1   
افتراضي مشروع حراره باستخدام NTC Twitter FaceBook Google+



في هذا مشروع الغرض منه كيفيه التعامل مع مقاومه حراريه من نوع NTC
http://arabsh.com/files/0d3e414c62f2...g-ntc-rar.html
طبعا مهم كيفيه حساب حراره من هذه المقاومه
كود:
#define segment          portc
#define segment_dir      trisc
#define seg_en1          portb.f1
#define seg_en1_dir      trisb.f1
#define seg_en2          portb.f2
#define seg_en2_dir      trisb.f2
#define led_load         porta.f0
#define led_load_dir     trisa.f0
#define led_alarm        porta.f1
#define led_alarm_dir    trisa.f1
#define led_Tmax         porta.f2
#define led_Tmax_dir     trisa.f2
#define led_Tmin         porta.f3
#define led_Tmin_dir     trisa.f3
#define sw_Tinc          portb.f4
#define sw_Tinc_dir      trisb.f4
#define sw_Tdec          portb.f5
#define sw_Tdec_dir      trisb.f5
#define sw_setting       portb.f6
#define sw_setting_dir   trisb.f6
#define senser           portb.f3
#define senser_dir       trisb.f3
#define is               ==
#define input            1
#define output           0
#define    enable        1
#define disenable        0
#define off              0
#define on               1
#define pressed          0

#define R1                2.2    // 2.2 k ohm
#define R2                1    // 1 k ohm
#define To               298.15// 25+273
#define B                3650
#define R25              1  // 1 k ohm
/////////////////////////    veriable      //////////////////////////////////
const char segment1[]={192,249,164,176,153,146,130,248,128,144};
char x=0, tmax=33, tmin=27, k=0 , select=0 ;
float temp=0;
float zz=0;
char temp2=0;

//////////////////////////////////////////////////////////////////////////////
void init();                       //   function  //
void show_7seg(char number);
void caculated_temperature();
void load();
void setting();
/////////////////////////////////////////////////////////////////////////////
void init()
{
 anselh=2;// RB0_bit is anloge
 trisa.f4=1;
 ansel=0;// porta is digital
    ///  output////
 segment_dir=output;
 seg_en1_dir=seg_en2_dir=output;
 led_Tmax_dir=led_Tmin_dir=output;
 led_load_dir=led_alarm_dir=output;
      //  input //
 sw_Tinc_dir=sw_Tdec_dir=sw_setting_dir=input;
 senser_dir=input;
     //  off all output//
 segment=0xff;// off 7seg
 led_Tmax=led_Tmin=off;
 led_load=led_alarm=off;
 seg_en1=seg_en2=disenable ;
 adc_Init();
}
///////////////////////////////////////////////////////////////////////////////
void main()
{ 
  init();
  while(1)
    {
     if(sw_setting is pressed)
         {
           delay_ms(1000);
           select=1;
           setting();
         }
     load();
    }
}
////////////////////////////////////////////////////////////////////////////////
void load()
{
 caculated_temperature();
 if(temp2>=Tmax)// run
    {
     led_load=on;
     led_alarm=off;
     k=1;
    }
 if(temp2>=(Tmax-5)&& k is 0) // alarm
    {
     led_load=off;
     led_alarm=on;
    }
  if(temp2<=tmin && k is 1) { k=0;led_load=off;}

}
///////////////////////////////////////////////////////////////////////////////
void setting()
{
 while(1)
  {
   if( sw_setting is pressed)
       {
        select++;
        if(select is 3)
             {
              select=0;
              led_Tmin=off;
              led_Tmax=off;
              return;
             }
        delay_ms(50);
       }
   if( select is 1) // setting Tmin
      {
         led_Tmin=on;
         led_Tmax=off;
         show_7seg(tmin);
       if(sw_Tinc is pressed)
         {
           tmin++ ;
           if(tmin is 99) tmin =99;
         }
       if(sw_Tdec is pressed)
          {
            tmin-- ;
           if(tmin is 255) tmin =0;
          }

      }

   if( select is 2) // setting Tmax
      {
        led_Tmin=off;
        led_Tmax=on;
        show_7seg(tmax);
       if(sw_Tinc is pressed)
         {
           tmax++ ;
           if(tmax is 99) tmin =98;
         }
       if(sw_Tdec is pressed)
          {
            tmax-- ;
           if(tmax is 255) tmin =0;
          }

      }
  }
}
///////////////////////////////////////////////////////////////////////////////

void caculated_temperature()
{
 temp=ADC_Read(9);
 temp=temp*5000/1023;
 zz=(1/ (log( ( temp*(R1+R2)-(5000*R2) )/((5000-temp)*R25))/B +3.354e-3) )-273.15; // equation fot NTC
 temp2=zz;
 if(zz>=100)temp2=99; // max value beacuse using 7seg two segment only
 if(zz<=1)temp2=0;
 show_7seg(temp2);
}
///////////////////////////////////////////////////////////////////////////////
void show_7seg(char number)
{
 for(x=0;x<20;x++)
     {
      seg_en2=disenable;seg_en1=enable;
      segment=segment1[number/10];
      delay_ms(5);
      segment=0xff;

      seg_en1=disenable;seg_en2=enable;
      segment=segment1[number%10];
      delay_ms(5);
      segment=0xff;
     }
}


///////////////////////////////////////////////////////////////////////////////
فكره مشروع
انه يتم عمل ضبط للدرجات الحراره MAX و MIN اذا ارتفعت الحراره الى MAX-5 يشتغل ليد واذا تجاوزت MAX يشتغل ليد اخضر ( طبعا ممكن ربط اي حمل )
وهنا يبقى ليد شغال الى ان تهبط حراره الى MIN
المهم في مشروع هو كود حساب الحراره
كود:
void caculated_temperature()
{
 temp=ADC_Read(9);
 temp=temp*5000/1023;
 zz=(1/ (log( ( temp*(R1+R2)-(5000*R2) )/((5000-temp)*R25))/B +3.354e-3) )-273.15; // equation fot NTC
 temp2=zz;
 if(zz>=100)temp2=99; // max value beacuse using 7seg two segment only
 if(zz<=1)temp2=0;
 show_7seg(temp2);
}
من اين حصلت على معادله انظرو الرابط
http://www.giangrandi.ch/electronics/ntc/ntc.shtml
مشكله هنا معادله تعتمد على مقاومه كيف اجعل مايكرو يحسب مقاومه
بكل بساطه هنا نستخدم مقسم جهد طيب اشلون احسب مقاومه
كود:
V=(R2+RT)*5/(R1+R2+RT)
بترتيب معادله نحصل على RT
كود:
RT={V*R1+R2(5-V)}/(5-V)
هنا يتم حساب V من خلال قراءه الفولتيه من انلوك
ومن ثم يتم حساب مقاومه ومنها درجات الحراره
ملاحظه/ V سميتها temp
والفولتيه التي يتم قراتها من انلوك هي بملي فولت وعليه تصبح معادله
كود:
RT={V*R1+R2(5000-V)}/(5000-V)
وهذه هي معادله اصليه
http://www.giangrandi.ch/electronics/ntc/T(R).gif
تم تعويض بدلا من مقاومه حراريه بمعادله التي تم اشتقاقها اعلاه
لاحظو معادله في كود
كود:
zz=(1/ (log( ( temp*(R1+R2)-(5000*R2) )/((5000-temp)*R25))/B +3.354e-3) )-273.15; // equation fot NTC
وايضا تم وضع مقاومه متغيره 1k ohmبدلا من ntc لغرض محاكاه في بروتيس ولكن توجد مشكله وهي لما تنخفض درجات حراره مقاومه تزداد كثيرا عن 1k ohm ولكن في بروتيس كيف ازيدها
وعليه درجات حراره تصل الى اقل قيمه لها 25 لاني مستخدم مقاومه متغيره ولكن لو استخدمت NTC فانها حراره تصل الى 0
==============================================
كيف تتأكد من معادله صحيحه اليك جدول
http://img01.arabsh.com/uploads/imag...444367f600.png


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 05-09-2013 الساعة 06:44 PM
اعلانات

الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:0
قديم 06-09-2013, 11:45 AM المشاركة 2   
افتراضي


اخي 100 شكر
انا في حاجة الى مساعدتك واني ابحث عن هدا المشروع من مدة
ان امكن تعديل الكود
220 = 99°
2.2k=22°

هل هد ممكن NTC
املك NTC من النوع اد انخفضة الحرارة تكبر المقاومة

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 06-09-2013, 12:10 PM المشاركة 3   
افتراضي


اخي 100 شكر
انا في حاجة الى مساعدتك واني ابحث عن هدا المشروع من مدة
ان امكن تعديل الكود
220 = 99°
2.2k=22°

هل هد ممكن NTC
املك NTC من النوع اد انخفضة الحرارة تكبر المقاومة
بخدمتك اخي
بس سؤال لكي بعدها اعدل كود
ماذا تقصد بهذه
220 = 99°
2.2k=22°
ارجو توضيح
وانا حاضر


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:0
قديم 06-09-2013, 02:35 PM المشاركة 4   
افتراضي


اخي شكرا
انا عندي NTC
عندما تكون درجة الحرارة 99درجة قياس الNTC يعطي 200 اوم
و
عندما تكون درجة الحرارة 22درجة قياس الNTC يعطي 2.2 كيلو اوم
و


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 06-09-2013, 03:22 PM المشاركة 5   
افتراضي


اخي شكرا
انا عندي NTC
عندما تكون درجة الحرارة 99درجة قياس الNTC يعطي 200 اوم
و
عندما تكون درجة الحرارة 22درجة قياس الNTC يعطي 2.2 كيلو اوم
و
سلام عليكم
اخي كريم الاشياء التي تتغير في كود
هي فقط موضحه بالصور
http://img02.arabsh.com/uploads/imag...454a6cf603.png
http://img02.arabsh.com/uploads/imag...454a6cf602.png
http://img02.arabsh.com/uploads/imag...454a6cf60d.png
وهما فقط بتغير قيم المقاومات R1 و R2
فعندما يتم ضبط هذه القيم ستحصل على درجه حراره
ولكي اغير هذه القيم فأن NTC فيها معطيات ثابيه
وهي
1- قيمه مقاومه عند درجه حراره 25 وبمعادله تسمى R25
2- قيمه B وهذه قيمه ثابته

ويمكن حصول عليها من داتا شيت
الا يوجد عليها رقم

ا


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:0
قديم 06-09-2013, 03:42 PM المشاركة 6   
افتراضي


شكرااا اخي
لن تنجح العملية انا في انتضار مشروع جاهز تكون فيه مقاومة ntc متغيرة

2.2 k


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:0
قديم 06-09-2013, 03:57 PM المشاركة 7   
افتراضي


[IMG][/IMG]

اخي انا اتعامل مع هدا NTC و لهو مقاومة متغيرة و لها قطبان قطب ارضي وقطب معلومات

عندا يستحسس الحرارة تنخفض المقاومة و عندا القرائة العادية يعطي
2.2k
تصل الحرارة ال 99
500

و هدا المساعد التبلو الثاني

[IMG][/IMG]


التعديل الأخير تم بواسطة : المخترع01 بتاريخ 06-09-2013 الساعة 04:07 PM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 06-09-2013, 05:17 PM المشاركة 8   
افتراضي


شكرااا اخي
لن تنجح العملية انا في انتضار مشروع جاهز تكون فيه مقاومة ntc متغيرة

2.2 k
اخي كريم
تريد تعديل بالكود ولكن سأخذ من داتا شيت قيم التاليه
http://img02.arabsh.com/uploads/imag...454b65f305.png
مقاومهntc=2.2k , B=3950
http://arabsh.com/files/0d3e414361f5...g-ntc-rar.html

ملاحظه
في بروتيس لاتنزل درجه حراره عن 10 لانني استخدم مقاومه متغيره فلايمكن زيادتها عن 4 كيلواوم بينما مقاومه حراريه تزداد عن ذلك

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 03:46 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025