ملتقى مهندسي كردستان
اهلا بك زائرنا الكريم انت غير مسجل لدينا يشرفنا الانضمام الى اسرتنا بالضغط على ( تسجيل ) او الذهاب الى القسم الذي تريد وتمتع بوقتك معنا



 
المجلةالرئيسيةالتسجيلدخول

شاطر
 

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

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


تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Empty
مُساهمةموضوع: تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي'   تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Empty2015-06-09, 7:19 pm

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





تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Microcontrolador-pic-16f877a_MLB-F-3817678135_022013


Digital Thermometer


( بداية اريد أن اعبر عن اعتذاري بسبب تأخر الحلقة 2 ، و أود من الاخوة المتابعين ان يتقبلوا اسفي و اعتذاري ، و أتمنى أيضا أن تراسلونا بمشاكلكم التقنية و اقتراحاتكم و بالخصوص ذوي مشاريع التخرج و السلام . )

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


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


دائرة اليوم ، او لنقل الجهاز الذي نحن بصدده اليوم ، متحكم دقيق في درجة الحرارة ، قد يساعد بالاساس اصحاب البيوت البلاستيكية الزراعية ، يحتوى باساس على مايكروكنترولر نوع PIC16F877A ،  الذي يقوم بتحليل المعطيات و التحكم بالاجهزة الثانوية ، و يمكن للمستخدم التواصل مع وحدة المعالجة عن طريق LCD و مفاتيح لادخال المعطيات ،  و القلب النابض لهذه الدائرة هو الحساس LM35 .

مميازات الدائرة أو الجهاز :



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

القلب النابض للدائرة :

في الحقيقة ، فان هذه الدائرة لها قلب و عقل ، فقلبها هو حساس الحرارة LM35 ، لكن عقلها هو المتحكم PIC16F877A ، الذي بدوره يحتوي على CPU(وحدة معالجة مركزية) ، و كذلك مسجل ADC لتحويل الاشارة الانالوج Analog التي ينتجها الحساس LM35 .

كيف تتصرف الدائرة ؟ :



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

الدائرة بسيطة جدا ، حيث أن الحساس LM35 صمم كي يعطي 10mV لكل درجة حرارية C ° ، هذه الاشارة تدخل الى المتحكم لتتم معالجتها .

نقوم أولا تهيئ المتحكم لتعامل مع اشارة انالوج ، سنستعمل لغة السي و بالخصوص الدالة المبسطة ADC_Read(channel) و نحن نعلم أن هذا المتحكم سجل التحويل فيه ADC به 10 بتات ، أي أن الدقة أو resolution الخاصة بهذا السجل هي خارج قسمة أقصى جهد دخل (5 فولت لان هذه الدالة تضع المرجع الاعلى هو نفسه جهد تغذية المتحكم ) على  1023 تساوي تقريبا 4.88mV، هذه القيمة اذا قمنا بقسة جهد دخل 50 ميللي فولت (تناظر 5 درجات حرارة) عليها نحصل على قيمة 10.24 ، وهذه القيمة تعادل تقريبا ضعف قيمة الجهد لدرجة الحرارة 5 ، لذك سنقوم بقسمتها على 2.045 كي نحصل في الاخير على تحويل جهد الدخل الى درجة حرارة دقيقة و نخزن هذه القيمة في متغير لعرضها .

 عند بدأ عمل الدائرة ، تكتب لك رسالة على الـ LCD فيها : '' SLCT A PROGRAM '' ، أي أن المتحكم يطلب منك اختيار البرنامج الذي تريد (تسخين أم تبيرد) ، اذا طغطت على الزر A يكتب لك على الشاشة : '' PROG 1 CHOSEEN '' ، و يشتعل ليد أحمر ، و ينتظر منك التأكيد أو تبديل الاختيار ، فاذا ضغط على الزر B يكتب لك على الشاشة : '' PROG 2 CHOSEEN '' ، و يشتعل ليد الأخضر و ينتظر تأكيد الاختيار بالضغط على V ، ما عليك انت الا ان تكتب على العلبة التي ستضع عليها الجهاز جوار الليد الأحمر كلمة 'التسخين' و جوار الليد الاخر كلمة 'التبريد' ، حتى اذا مررت على الجهاز اثناء عمله تكون على دراية باي ظام هو يشتغل . أذا لم تختر أي نظام ، فان الجهاز سيبقى مجرد تيرمومتر رقمي فقط .

بعد ضغطك على زر التأكيد V ، تظهر لك رسالة اخرى على الشاشة فيها : '' SLCT A REF TEMP '' ، يعني انه يطلب منك ادخال مرجع الحرارة ، تبقى هذه الرسالة مدة ثانية واحدة ، و بعد ذلك يرسل لك المتحكم رسالة على الشاشة فيها : ''REF =0'' ، ما عليك الآن الا الضغط على الزر A لرفع القيمة او الزر B  لانقاصها ،  بهذا تكون تحدد قيمة مرجع الحرارة ، بعد تحديدك لمرجع الحرارة تضغط على الزر A لتأكيد الاختيار ، بعد ذلك تظهر على الشاشة رسالة كالتالي : ''TEMPERATURE='' ، و يعطيك في كل لحظة درجة الحرارة . اذا تخظت درجة الحرارة المرجع المحدد ، يشغل المحرك في حالة برنامج التبريد أو المسخن في حالة برنامج التسخين و تظهر على الشاشة عبارة : ''TEMP+ RUN.'' أو ''TEMP- RUN.'' على حسب البرنامج الذي حددته في البداية .

سيكون الشكل النهائي للجهاز تقريبا تقريـــــــبا بهذا الشكل : 

تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' LM35_OP





  بهذا نكون انهينا  البرمجة ، باقي الاشياء الاخرى سهلة جدا للذين لهم خلفية في الميكروسي ، أما من له لغة اخرى للبرمجة فقد يكون فهم المبدأ ، أما من لم سيبق له التعامل مع اي لغة و لا يعرف عما نتحدث فهذا ليس بمشكل ، يمنه البحث في النت على دروس برمجة المايكروكنترولر بلغة MicroC 



كيف ابني هذا الجهاز ؟




ما تحتاجه لبناء هذا الجهاز :




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



تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Microcontrolador-pic-16f877a_MLB-F-3817678135_022013














                                                                 المتحسس LM35 : 




تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Tmp36pinout




                                                          شاشة عرض LCD 16x2 : 




تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Lcd162b-yhy




                                                                  مكثفين 33 بيكو


 

تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' 312152133_o


                                                                               




                                                          4 مفاتيح ضاغظة (BP) : 




تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' 00097-03-L




                                                      ترانزستورين BC337 : 



تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Bc337



                                                   3 ليدات خضراء و واحد أحمر : 



تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' LED

                                                                 

                                                           2   ديود نوع 1n4007 : 



تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Index


                                                                         



                                                                2 ريلاي 12فولت :



تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Relay+1






      وحدة تسخين heater coil (اختر بلدها ما تشاء ، ضع حتى انذار بدل التسخين) : 


تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' 4082104-close-up-of-red-glowing-heating-element-of-electric-range-oven-selective-focus





                          وحدة تبريد ، انا اخترت موتور بسيط فقط و انت اختر ما تشاء : 





كيف اربط المكونات ببعضها :





تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي' Sans+titre-2





الرسم يظهر ذلك بوضوح ، و الكود البرمجي الذي صممته ايضا سأرفقه مع المحاكاة ، و هذا فيديو أبسط فيه كيف تتعامل مع الجهاز :



ملاحظة :




يمكنك دمج الدائرة السابقة مع دائرة اليوم لتطورها و تصبح قادرا على التحكم في الحرارة عن بعد مثلا باستعمال المقاطاعت على المايكروكنترولر .

إنتهى الموضوع وترقبو مواضيع أخرى من سلسلة إصنعها بنفسك

  
الكود البرمجي : 

sbit LCD_RS at Rd2_bit;
sbit LCD_EN at Rd3_bit;
sbit LCD_D4 at Rd4_bit;
sbit LCD_D5 at Rd5_bit;
sbit LCD_D6 at Rd6_bit;
sbit LCD_D7 at Rd7_bit;

sbit LCD_RS_Direction at TRISd2_bit;
sbit LCD_EN_Direction at TRISd3_bit;
sbit LCD_D4_Direction at TRISd4_bit;
sbit LCD_D5_Direction at TRISd5_bit;
sbit LCD_D6_Direction at TRISd6_bit;
sbit LCD_D7_Direction at TRISd7_bit;
char str[16];
char ste[8];
unsigned int temp;
float v;
int x,y;
void main(){
TRISA=1 ; TRISD=0; TRISC=1; TRISB=0; TRISE=1;
PORTB=0;
x=0;
Lcd_Init();
delay_ms(800);
Lcd_Cmd(_LCD_CLEAR);
Lcd_out(1,2,"SLCT A PROGRAM");
Lcd_Cmd(_LCD_CURSOR_OFF);
for(;;){  if(PORTC.B0==1){y=5; delay_ms(100); Lcd_out(2,1," PROG 1 CHOSEEN");  PORTE=0; PORTE.B2=1;}         //ÇáÊÓÎíä
          if(PORTC.B1==1){y=10; delay_ms(100); Lcd_out(2,1," PROG 2 CHOSEEN"); PORTE=0; PORTE.B1=1;}
          if(PORTC.B2==1){Lcd_Cmd(_LCD_CLEAR); break;}
       }
Lcd_out(1,1," SLCT A REF TEMP");
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
for(;;)  {
          Lcd_out(1,1,"     REF =");
          if(PORTC.B0==1){x=x+1; delay_ms(500);}
          if(PORTC.B1==1){x=x-1; delay_ms(500);}
          if(PORTC.B2==1){break;}
          inttostr(x,str); Lcd_out(2,3,str);
          }
   Lcd_Cmd(_LCD_CLEAR);
   for(;;)
   {
    temp=ADC_Read(2);
    v=temp/2.045;
    floattostr(v,str);
    Lcd_out(1,13,str);
    Lcd_out(1,1,"TEMPERATURE=");
    delay_ms(500);
    if(y==5) { while(v<x)
              {
              PORTB=0X01;
              temp=ADC_Read(2);
              v=temp/2.045;
              delay_ms(500);
              Lcd_out(2,1,"   TEMP+ RUN.");
              delay_ms(500);
              Lcd_Cmd(_LCD_CLEAR);
              if(v>x) {PORTB=0; break; }
              }
              }
    if(y==10){while(v>x)
              {
              PORTB=0X04;
              delay_ms(500);
              Lcd_Cmd(_LCD_CLEAR);
              Lcd_out(2,1,"   TEMP- RUN.");
              delay_ms(500);
              Lcd_Cmd(_LCD_CLEAR);
              temp=ADC_Read(2);
              v=temp/2.045;
              if(v<x) {PORTB=0; break; }
              }}
        }

   }

_________________
الحمد لله على كل حال
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
تحكم في الحرارة بدقة عالية جدا 'تيرمومتر رقمي'
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
ملتقى مهندسي كردستان :: الاقسام الهندسية :: الدارات الالكترونية-
انتقل الى: