14
Eng: Winmad 2010 ﺑﺴﻢ ﺍﷲ ﺍﻟﺮﲪﻦ ﺍﻟﺮﺣﻴﻢ ﺗﺼﻤﻴﻢ ﻭﺗﻨﻔﻴﺬ ﻧﻈﺎﻡ ﲢﻜﻢ ﻭﻣﺮﺍﻗﺒﺔ ﺪﺭﺟﺔ ﺍﳊﺮﺍﺭﺓ ﺑﺎﺳﺘﺨﺪﺍﻡ ﺍﳌﺘﺤﻜﻢ ﺍﳌﺼﻐﺮPIC16F877A ١ - ﻓﻜﺮﺓ ﺍﳌﺸﺮﻭﻉ: ل متكامليم نظام على تصم فكرة المشروع تقوم ل مراقبة و ال تحكم ل غرفة أو عملية حرارة درجة. من مرجعية مرغوبة حرارة ل ضبط درجة خ، ة بينلمقارنلتبريد تبعا ل التسخين أو ا تشغيل وبالتاليسة والمرغوبةلمقا الحرارة ا درجة. ٢ - ﻣﺒﺪﺃ ﺍﻟﻌﻤﻞ: ارةس الحر ل حساارة من خس الحر سيتم قياLM35 د متناسب مع ھذهطي على خرجه جھ يع الذي المصغرتحكم الم ل معالجته من خ الدرجة والذي ستتمPIC16F877A ارةجة الحر سيقارن در الذي ل أزرارخالھا يدويا من خ سيتم إدجة المرغوبة التيسة مع الدرلمقا ا. وتحكم المقارنة سيقوم بنتيجة المد أو التسخينة التبري بتشغيل دار. ظھارشة امرغوبة على شاسة واللمقاارة اجة الحرض در وسيتم عرستالية كريLCD لحظة كل في. لغة البرمجة ل من ختحكمجة الم برم ستتمC البرنامج بMicroC .

تصميم وتنفيذ نظام للتحكم ومراقبة درجة الحرارة2003

Embed Size (px)

Citation preview

Eng: Winmad 2010

بسم اهللا الرمحن الرحيم

درجة احلرارةلحتكم ومراقبة تصميم وتنفيذ نظام PIC16F877Aباستخدام املتحكم املصغر

: فكرة املشروع -١

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

.درجة الحرارة المقاسة والمرغوبة

: مبدأ العمل -٢

الذي يعطي على خرجه جھد متناسب مع ھذه LM35سيتم قياس الحرارة من خ ل حساس الحرارة الذي سيقارن درجة الحرارة PIC16F877Aالدرجة والذي ستتم معالجته من خ ل المتحكم المصغر

بنتيجة المقارنة سيقوم المتحكم و. المقاسة مع الدرجة المرغوبة التي سيتم إدخالھا يدويا من خ ل أزرار وسيتم عرض درجة الحرارة المقاسة والمرغوبة على شاشة اظھار . بتشغيل دارة التبريد أو التسخين

.في كل لحظة LCDكريستالية .MicroCبالبرنامج Cستتم برمجة المتحكم من خ ل لغة البرمجة

Eng: Winmad 2010

عناصر املشروع -٣

PIC16F877Aالمتحكم -

: عناصر تشغيل المتحكم -

) 5Volt L7805منظم جھد ، 22pFمكثفتين ، 4MHZھزاز كريستالي ( LM35الحرارة حساس -

LCD 2×16شاشة اظھار كريستالية -

. BC337ترانزستورات -

. فولط ١٢) ريليه ( زواجل -

ليدات للدOلة -

لتحييز اPزرار 10KΩمقاومات -

.لليدات 470Ωمقاومات -

|مروحة للتبريد -

مسخن -

.فولط مستمرة 12تغذية كھربائية -

Eng: Winmad 2010

شرح األجزاء -٤

:LM35حساس الحرارة -١- ٤

مل فولت لكل درجة حرارة مئوية ١٠يمتاز بشبه الخطية يعطي في خرجه - .مئوية ٢٥يعطي دقة تقدر بنصف درجة مئوية في درجة حرارة - .درجة مئوية ١٥٠إلى ٥٥ -مجال الحرارة التي يقيسھا من - .مناسب لتطبيقات التحكم - .فولت ٣٠ – ٤جھد الذي يعمل عنده من ال - ميكرو أمبير، ٦٠يقدر التيار المسحوب منه ب - . درجة مئوية ٠.٠٨عامل التسخين الذاتي - . مل أمبير ١أوم عند تيار تحميل ٠.١ممانعة خرج منخفضة - .درجة مئوية ٠.٢٥+ ٠.٢٥ -يعطي عدم خطية بمقدار -

LCD: شاشة اظھار الكريستالية -٢- ٤

Eng: Winmad 2010

تحتل شاشات ا_ظھار بالبلورات السائلة حيزا واسعا من التطبيقات اOلكترونية عالميا وقد تطورت كبيرا حتى أصبحت تستخدم في أكثر اPجھزة اOلكترونية كبديل عن شاشات ا_ظھار الضوئية تطوراLED سنذكر منھاو بھا للميزات العديدة التي تتمتعوذلك نظرا:

مما يجعلھا كثيرة اOستخدام في LEDتستھلك طاقة كھربائية قليلة مقارنة مع - .البطاريات اPجھزة التي تعمل على -كون .ابلية إظھار اعقد الرسوم في مساحات صغيرة بسبب ارتفاع نسبة التباين ق -باستخدام ا_ضاءة ه م وھذا ما تم حلوO تصدره جعلھا O ترى في الظ تعكس الضوء LCDشاشات -

. الخلفية

مضروبة ) اPعمدة(عديدة من ھذه الشاشات بقياسات عديدة وتقدر بعدد المحارف تتوفر عالميا أنواع

بعدد اPسطر

:شرح أقطاب الشاشة : قطب وھي ١٦تمتلك ھذه الشاشة

قطب التغذية السالب ويطبق عليه جھد صفر فولط :VSS )١(القطب - قطب التغذية الموجب ويطبق عليه خمسة فولط VDD :) ٢(القطب - قطب التباين عندما يطبق عليه خمسة فولط Oيمكن رؤية شيء بينما يصبح VEE) ٣(القطب -

.في أعلى حدة تباين عندما نطبق عليه صفر فولط ويطبق واحد ، يطبق عليه صفر عند ارسال كلمة تحكم ( مسجل اختيار الدخل RS) ٤(القطب -

عند ارسال معطيات عند الكتابة على الشاشة نطبق صفر وعند القراءة : قطب القراءة أو الكتابة RW )٥(القطب -

منھا نطبق واحد وعادة يوصل مباشرة إلى اPرضي عند استعمال الشاشة .للعرض فقط

حيث أن اي عملية على الشاشة يجب ارفاقھا بنبضة تمكين وھي قطب التمكين ب E )٦(القطب - تحدث عند الجبھة الھابطة

بت Oرسال المعطيات ٨أقطاب المعطيات للشاشة بطول D0 ..to D7 )١٤إلى ٧(اPقطاب - .وكلمات التحكم

باOرضي وال ١٥قطبي الليد الذي يضيء خلفية الشاشة يوصل K , A) ١٦ و١٥( القطبين - بالخمسة فولط١٦

Eng: Winmad 2010

BC337: الترانزستور كمفتاح الكتروني -٣- ٤ :سنستخدم الترانزستور كمفتاح الكتروني كالتالي

:ةبالخصائص التاليBC337 يمتاز VCE_max= 50 Volt

VCE_saturate = 0.2 Volt VBE_saturate = 0.65 Volt ,

IC_max= 800mA

: توصيلة الترانزستور في حال المفتاح تكون

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

، وتصل التغذية إلى الحمل :الريليه -٤- ٤

محدودين ضمن مجال التيار الذي يتحمله في حال استخدام الترانزستور السابق كمفتاح الكتروني سنكون الترانزستور في حالة الوصل وبالتالي إذا أردنا أن نقوم بوصل سخان مث فإننا أمام تيار كبير O يمكن

.لھذا الترانزستور أن يتحمله وبالتالي تم استخدام الريليه كوسيلة مساعدة لھذا الغرض

C

B

E

C

B

E

10KΩ

الحمل

VCC

GND

من قطب المتحكم

Normally Close

Normally Open

The Coil

Eng: Winmad 2010

:الترانزستور يتم كالتالي استخدام الريليه مع

PIC16F877Aمواصفات المتحكم

DC - 20 MHz التشغيلتردد

FLASH Program Memory (14-bitذاكرة الربنامج

words) 8K

Data Memory (bytes) 368ذاكرة املعطيات

EEPROM Data Memory 256الذاكرة

Interrupts 14املقاطعات

I/O Ports Ports A,B,C,D,Eاملنافذ

Timers 3التاميرات

Capture/Compare/PWM Modulesl 2

Serial Communications MSSP, USARTاالتصال التسلسلي

Parallel Communications PSPاالتصال التفرعي

التحويل التشابهي الرقمي 10-bit Analog-to- Digital Module

8 input channels

C

B

E

10KΩ

VCC

GND

من قطب المتحكم

Eng: Winmad 2010

PIC16F877Aالمتحكم -٥-٤

:كما ھو مبين في الشكل فإن المتحكم يمتلك أربعون قطبا موزع كالتالي VSS VDDأقطاب التغذية - OSC1 OSC2 .قطبي الھزاز الكريستالي - قطب إعادة التشغيل - PortA PortB PortC PortD PortEمنافذ الدخل والخرج وھي - :حيث ، اPقطاب وظائف عديدة باOضافة إلى كونھا اقطاب دخل وخرج رقمية وتمتلك ھذه أقطاب المقاطعات والتايمرات تكون أقطاب للتحويل التشابھي الرقمي و

المخطط الصندوقي لبنية المتحكم -١-٥- ٤

Instruction Set 35 instructions

Eng: Winmad 2010

MicroC والتعليمات الخاصة في المبدل التشابھي الرقمي في المتحكم -٢-٥- ٤

وبالتالي فان القيمة 1024=210بت أي 10إن المبدل التشابھي الرقمي في ھذا المتحكم ھو بطول من أجل مجال جھد الدخل من ) 0 (1023---التي سيعطيھا المبدل ستكون من

)0—Vcc . ( :بالشكل التالي ) قيمة التبديل ( تعطى الع قة التي تحسب القيمة في مسجل المبدل

في لغة ) ADC(فھي مضروبة داخليا في مكتبية O1024 حاجة لضرب القيمة بـ: م حظة بالتالي يصبح MicroCالبرمجة

. المطبق خارجيا الجھد على قطب المبدل: :حيث

فولط الجھد المرجعي للمبدل ويساوي :

Eng: Winmad 2010

القيمة الموجودة في مسجل المبدل داخل المتحكم:

: النھائي الذي نرغب الحصول عليه وھووبالتالي يكون الجھد

: وفي مشروعنا أخذنا الجھد المرجعي من داخل المتحكم وبالتالي

: يجب أن نكتب في البرنامج : ومنه

MicroCالتعليمات الخاصة للمبدل التشابھي الرقمي في برنامج يوضح الجدول التالي التعليمات . )ADC(تسمى MicroCھناك مكتبية خاصة بالمبدل في برنامج

: البرنامج في المستخدمة لتشغيل المبدلبين القوسين يجب تحديد قطب المحول

المستخدم النتيجة ستخزن في متحول من نوع

unsigned

Unsigned ADC_Read(unsigned short channel);

MicroC فيوالتعليمات الخاصة بھا المتحكم باستخدام LCDالشاشة -٣-٥- ٤

فيكفي أن نحدد ماھي اPقطاب الواجب يعتبر وصل الشاشة وتشغيلھا باستخدام المتحكم أمر سھل نوعا ما .وصلھا مع المتحكم وتعريفه بذلك

قطب لھذه الشاشة سيتم وصل ستة أقطاب منھا فقط للمتحكم والباقي سيتم ١٦كما تعرفنا سابقا فھناك .المتحكم وصلھا كھربائيا مباشرة بدون :المتحكم ھي بدوناOقطاب التي سيتم وصلھا

قطب التغذية السالب ويطبق عليه جھد صفر فولط :VSS )١(القطب - قطب التغذية الموجب ويطبق عليه خمسة فولطVDD :) ٢(القطب - .قطب التباين نطبق عليه صفر فولط VEE )٣(القطب - نطبق صفر Pننا سنقرأ فقط من الشاشة: قطب القراءة أو الكتابة RW )٥(القطب - باPرضي ١٥قطبي الليد الذي يضيء خلفية الشاشة يوصل K , A) ١٥و١٦( القطبين - . بالخمسة فولط ١٦وال

:لمتحكم ھي بااOقطاب التي سيتم وصلھا مسجل اختيار الدخل RS) ٤(القطب - قطب التمكين E )٦(القطب - أقطاب المعطيات للشاشة D7 D6 D5 D4 :باPقطا -

: MicroCجدول بالتعليمات الھامة المستخدمة في المشروع لتشغيل الشاشة في وھذا يسھل العمل والجدول التالي يوضح MicroCكما نعلم فھناك مكتبية خاصة بالشاشة في برنامج

: أھم التعليمات المستخدمة في المشروع ;()void Lcd _Init تشغيل الشاشة

يجب تعريف كل اPقطاب بھذه الطريقة ذ RB4بالقطب RSفھنا تم وصل القطب

sbit Lcd_RS at RB4_bit;

يجب تعريف اتجاه الدخل لكل اPقطاب بھذه .الطريقة أيضا

sbit Lcd_RS_Direction at TRISB4_bit;

;void Lcd_Cmd(char out_char) أمر للشاشة إرسال

Eng: Winmad 2010

(Lcd_FIRST_ROW_) اPولأمر التحرك للسطر (Lcd_SECOND_ROW_) أمر التحرك للسطر الثاني

(Lcd_CLEAR_) أمر مسح الشاشة (Lcd_CURSOR_OFF_) المؤشر إطفاء أمر

void Lcd _Out(char row, char column, char تعليمة الكتابة على الشاشة*text);

: خمطط الدارة -٥

proteusproteusproteusproteusالدارة في برنامج المحاكات الدارة في برنامج المحاكات الدارة في برنامج المحاكات الدارة في برنامج المحاكات

Eng: Winmad 2010

EagleEagleEagleEagleالدارة في برنامج رسم الدارات المطبوعة الدارة في برنامج رسم الدارات المطبوعة الدارة في برنامج رسم الدارات المطبوعة الدارة في برنامج رسم الدارات المطبوعة

MicroC for PICعلى برنامج : Cالكود بلغة ال -٦

Eng: Winmad 2010

4MHZتردد الھزاز ،، PIC16f877Aمشروع التحكم بدرجة حرارة غرفة باستخدام المتحكم

;int temp_res تعريف متحول درجة الحرارة المقاسة من النوع الصحيح

;char temp[10] ١٠تعريف متحول حرفي لvظھار على الشاشة بطول

;unsigned int rtemp=10 تعريف متحول صحيح غير مؤشر لدرجة الحرارة المرجعية

;char ntemp[10] ١٠بطول تعريف متحول حرفي لدرجة الحرارة

:تعريف مداخل الشاشة

;RS sbit LCD_RS at RB2_bitليوصل مع القطب RB2تعريف المنفذ

;EN sbit LCD_EN at RB3_bitليوصل مع القطب RB3تعريف المنفذ

;D4 sbit LCD_D4 at RB4_bitليوصل مع القطب RB4تعريف المنفذ

;D5 sbit LCD_D5 at RB5_bitليوصل مع القطب RB5تعريف المنفذ

;D6 sbit LCD_D6 at RB6_bitليوصل مع القطب RB6تعريف المنفذ

;D7 sbit LCD_D7 at RB7_bitليوصل مع القطب RB7تعريف المنفذ

تھيئة اطراف المتحكم المربوطة بالشاشة لتأخذ وضعيات الدخل أو الخرج

sbit LCD_RS_Direc/on at TRISB2_bit;

sbit LCD_EN_Direc/on at TRISB3_bit;

sbit LCD_D4_Direc/on at TRISB4_bit;

sbit LCD_D5_Direc/on at TRISB5_bit;

sbit LCD_D6_Direc/on at TRISB6_bit;

sbit LCD_D7_Direc/on at TRISB7_bit;

;Lcd_Cmd(_LCD_FIRST_ROW) تعليمة بدأ الكتابة من السطر اOول

()void adc )استدعاء المبدل التشابھي الرقمي( تابع فرعي لقياس الحرارة

;temp_res = ADC_Read(2) و إسنادھا إلى المتحول RA2قراءة قيمة الجھد على القطب

;temp_res = (temp_res *5)/10 ميلي فولط O١٠ن كل درجة تقابل تصحيح القيمة

;IntToStr(temp_res,temp) لصيغة سلسلة للكتابة على الشاشة قيمة درجة الحرارة تحويل

()void print تابع فرعي للكتابة على الشاشة

;Lcd_Cmd(_LCD_CLEAR) تعليمة مسح الشاشة

; lcd_out(1,1,"Now temp") بدءا من السطر اOول والعمود اPول Now tempكتابة كلمة

; lcd_out(2,1,"Ref temp") بدءا من السطر الثاني والعمود اPول Ref tempكتابة كلمة

()void test تابع فرعي لمقارنة درجة الحرارة المقاسة مع المرجعية

if(temp_res>rtemp) )الجو حار ( المقاسة أكبر من المرجعية إذا

C ( PORTC=0b00000101; //coolعلى القطب اPول من المنفذ ( تشغيل التبريد

if(temp_res<rtemp) )الجو بارد (المقاسة أصغر من المرجعية إذا

C ( PORTC=0b00001010; //hotعلى القطب الثاني من المنفذ ( تشغيل التسخين

Eng: Winmad 2010

if(temp_res==rtemp) حالة تساوي المقاسة مع المرجعية

;PORTC=0x00 اطفاء الكل

()void main التابع الرئيسي

TRISA =0b00000100;

;TRISD =0b00000011 )لxزرار ( كدخل Dتھيئة أول قطبين من المنفذ

;TRISC =0x00 كخرج Cتھيئة المنفذ

;()Lcd_Init تعليمة تشغيل الشاشة

;Lcd_Cmd(_LCD_CURSOR_OFF) تعليمة اطفاء مؤشر الشاشة

lcd_out(1,4,"Temperature") كتابة عنوان المشروع واسم المصمم في بداية تشغيل الدارة

lcd_out(2,3,"System Control")

delay_ms(2000)

Lcd_Cmd(_LCD_CLEAR)

lcd_out(1,3,"Designed By")

lcd_out(2,3,"Fouz Mar/ni")

delay_ms(2500)

;()print اذھب لتابع الطباعة لعرض الكتابة على الشاشة

do حلقة Oنھائية

;IntToStr(rtemp,ntemp) قيمة درجة الحرارة المرجعية لصيغة سلسلةتحويل

١طباعة قيمة درجة الحرارة المقاسة بدءا من السطر ١٠والعمود

lcd_out(1,10,temp) ;

٢طباعة قيمة درجة الحرارة المرجعية بدءا من السطر ١٠والعمود

lcd_out(2,10,ntemp);

;()test استدعاء تابع الفحص

if(portd.f1==0 && rtemp>0) انقاص درجة الحرارة المرجعيةفحص حالة زر

;--rtemp انقاص درجة الحرارة المرجعية مع كل ضغطة زر

;delay_ms(50) تأخير زمني ضروري لم ئمة سرعة ضغط الزر واقعيا

if(portd.f0==0&&rtemp<=100) فحص حالة زر زيادة درجة الحرارة المرحعية

;++rtemp زيادة درجة الحرارة المرجعية مع كل ضغطة زر

;delay_ms(50) تأخير زمني ضروري لم ئمة سرعة ضغط الزر واقعيا

;()adc استدعاء تابع التحويل التشابھي الرقمي

;while(1) استكمال الحلقة ال نھائية

والشكل النهائي للمشروعالدارة املطبوعة -٧

Eng: Winmad 2010

::::

أرجو الفائدة للجميع

Eng: Winmad

اهللاهللاهللاهللا مت بعونمت بعونمت بعونمت بعون