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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 02:00 AM المشاركة 1   
افتراضي مشروع تحكم فى تدفئة وتبريد مكان باستخدام الميكروكونترولر PIC16F877A والحساس LM35 قابل Twitter FaceBook Google+



مشروع تحكم فى تدفئة وتبريد مكان باستخدام الميكروكونترولر PIC16F877A والحساس LM35 قابل للبرمجة :
فى هذا المشروع سوف نحتاج إلى حساس درجة الحرارة LM35 ، هذا الجهاز له خرج يتغير بمقدار 10 ملى فولت لكل درجة مئوية ، ويمكن أن يتم تغذيته بجهد فى المدى 4-30V ، ويستشعر الحرارة فى المدى بين
-55 ° C و 150 ° C .
لقياس درجة الحرارة يتم توصيل طرف خرج الحساس LM35 بالطرف RA0(AN0) ، والذى يتم إعداده كدخل لقناة تحويل من تناظرى لرقمة بدقة 10-bit ، بيانات هذه القيمة يتم حفظها فى متغير بحجم 2 بايت (16 بت) ، والذى يتم قسمته على 128 ، لأن نتيجة تحويل A/D تكون 10 بت من ضمن 16 بت ممثلة بالشكل التالى 1111111111000000 ، حيث يوجد 6 بتات تحتوى على أصفار والتى يجب تجاهلها ، حيث أننا نحتاج فقط إلى 8 بتات الموجودة بالبايت الأول (من اليسار) بالإضافة إلى 2 بت الموجودة بالبايت الثانى ، إذا قسمنا هذا العدد على 64 فسوف يتم إزالة الستة بتات التى تحتوى على أصفار ونحصل على بيانات مكونة من 10 بتات ، وهذا يعنى أن القيمة القصوى لنتيجة التحويل A/D تكون 1204 (تناظر جهد دخل تناظرى 5V) ، وتكون الدقة ( أقل قيمة يمكن قياسها هى قسم واحد من 1024 قسم ) 5V/1024أى حوالى 5 mV، ولكن الدقة تزداد لأن دقة الحساس LM35 هى 10mV لكل درجة مئوية . سوف يتم تخفيض الدقة إلى 9 بتات وهذا سوف يتحقق بالقسمة على 128 حيث يتم التخلص من 7 بتات من البايت الثانى (الأدنى قيمة) ، نتيجة لذلك تكون أقصى قيمة هى 512 ، وهى الأقرب لمقياس الحساس LM35 ومن ثم لن نحتاج لحسابات مقياس درجة الحرارة وهذا هو السبب فى اختيار الدقة 9-bit .
طريقة عمل المشروع الأساسى :
· إذا ظلت درجة الحرارة بين 20 ° C و 24 ° C لم يتم تشغيل أى ريلاى .
· لكن إذا لم تمكن درجة الحرارة فى هذا المدى يتم تشغيل الريلاى المناظر لتدفئة أو تبريد الجو .
· إذا أردنا تعديل مدى درجة الحرارة ، يتم الضغط على الزر Enter مع استخدام الأزرار الأخرى لزيادة أو نقصان درجة حرارة المطلوبة لمقارنة الحد الأدنى وبمجرد التسجيل يتم الضغط على الزر E مرة أخرى ، عندئذ سوف يتم السؤال لتحديد درجة الحرارة القصوى , فنتبع نفس الخطوات السابقة وعندما تضغط على الزر E سوف يومض الليد ثلاثة مرات لبيان أن القيمة الجديدة قد تم تسجيلها بالفعل فى الذاكرة الدائمة .
الدائرة الكهربية :













اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 02:02 AM المشاركة 2   
افتراضي


البرنامج :

كود:
Device = 16F877A
Xtal = 20
LCD_DTPin PORTB.4
LCD_RSPin PORTB.2
LCD_ENPin PORTB.3
Adin_Res 10 ; Set the resolution to 10
Adin_Tad FRC ; Choose the RC osc for ADC samples
Adin_Stime 50 ; Allow 50us for charge time
Input PORTA.0 ;TRISA =%1 , pin A.0 as input
ADCON1 = %00001110 ;pin A.0 as analog and others as Digital, left justified
Dim ADC_result As Word ;create variable " ADC_result" to store data
Dim Min_Temp As Byte
Dim Max_Temp As Byte
Dim x As Byte ; repeat count variable 
Dim g As 223 ;g = constant 223 this is the degrees in ASCII
Dim cool_relay As PORTD.2 ;Names for pins
Dim heat_relay As PORTD.3
Dim led As PORTD.4
Dim enter As PORTD.5 ; E button
Dim increase As PORTD.6 ; increase button 
Dim decrease As PORTD.7 ; decrease button 
EWrite 0,[20,24] ;Initial content of EEprom 
starting: ;3 flashes of the LED which indicates work
For x =1 To 3
High led
DelayMS 200
Low led
DelayMS 200
Next
Min_Temp = ERead 0 ;EEprom reads 0 and saves it to Min_Temp
Max_Temp = ERead 1 ;EEprom reads 1 and saves it to Max_Temp
sensing:
ADC_result = ADIn 0 ; read channel 0 (A0) And store in ADC_result
Print Cls ;LCD clean
Print At 1,1,"Tmin Tactual Tmax" ; send text at line 1 , box 1 
ADC_result = ADC_result /128 ; the ADC_result divide by 128 => AD 9-bit
Print At 2,7, Dec ADC_result,g,"C" ;Display el decimal de ADC_result
Print At 2,1, Dec Min_Temp,g,"C" ; Display the decimal Min_Temp
Print At 2,13, Dec Max_Temp,g,"C" ; Display the decimal Max_Temp
For x = 1 To 50 ;repeated 50 times
If enter =0 Then record1a ; E button pressed 
DelayMS 10
Next
If ADC_result < Min_Temp Then heat ;if data is <Min_Temp going to heat
If ADC_result > Max_Temp Then cool
Low heat_relay : Low cool_relay ;off the 2 relays
GoTo sensing ;continue to sensing
heat:
High heat_relay : Low cool_relay
GoTo sensing
 
cool:
High cool_relay : Low heat_relay
GoTo sensing
record1a:
GoSub debounce
record1:
Print Cls
Print At 1,1, "Temp.Program "
Print At 2,1,"Low= ",Dec Min_Temp ,g,"C"
DelayMS 100
If decrease=0 Then subtract1
If increase=0 Then add1
If enter=0 Then recordA
GoTo record1
subtract1:
GoSub debounce ;key debounce program
If Min_Temp < 1 Then record1
Min_Temp= Min_Temp -1
GoTo record1
add1:
GoSub debounce
If Min_Temp > 40 Then record1
Min_Temp= Min_Temp + 1
GoTo record1
recordA:
GoSub debounce
EWrite 0,[Min_Temp] ;EEPROM write to address 0 "Min_Temp" value
record2:
Print Cls
Print At 1,1, "Temp.Program "
Print At 2,1,"High= ",Dec Max_Temp ,g,"C"
DelayMS 100
If decrease=0 Then subtract2
If increase=0 Then add2
If enter=0 Then recordB
GoTo record2
subtract2:
GoSub debounce
If Max_Temp < 5 Then record2
Max_Temp= Max_Temp -1
GoTo record2
add2:
GoSub debounce
If Max_Temp > 50 Then record2
Max_Temp= Max_Temp + 1
GoTo record2
recordB:
GoSub debounce
EWrite 1,[Max_Temp] ;write to address 1 of the EEPROM "Max_Temp" value
GoTo starting
debounce: ;key debounce program
High led
DelayMS 150
Low led
debounce2:
If decrease=0 Then debounce2
If increase=0 Then debounce2
If enter=0 Then debounce2
DelayMS 100
Return
End

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

محمد55555
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2013
المشاركات: 82
نشاط [ محمد55555 ]
قوة السمعة:0
قديم 22-07-2013, 10:37 AM المشاركة 3   
افتراضي


البرنامج :

كود:
Device = 16F877A
Xtal = 20
LCD_DTPin PORTB.4
LCD_RSPin PORTB.2
LCD_ENPin PORTB.3
Adin_Res 10 ; Set the resolution to 10
Adin_Tad FRC ; Choose the RC osc for ADC samples
Adin_Stime 50 ; Allow 50us for charge time
Input PORTA.0 ;TRISA =%1 , pin A.0 as input
ADCON1 = %00001110 ;pin A.0 as analog and others as Digital, left justified
Dim ADC_result As Word ;create variable " ADC_result" to store data
Dim Min_Temp As Byte
Dim Max_Temp As Byte
Dim x As Byte ; repeat count variable 
Dim g As 223 ;g = constant 223 this is the degrees in ASCII
Dim cool_relay As PORTD.2 ;Names for pins
Dim heat_relay As PORTD.3
Dim led As PORTD.4
Dim enter As PORTD.5 ; E button
Dim increase As PORTD.6 ; increase button 
Dim decrease As PORTD.7 ; decrease button 
EWrite 0,[20,24] ;Initial content of EEprom 
starting: ;3 flashes of the LED which indicates work
For x =1 To 3
High led
DelayMS 200
Low led
DelayMS 200
Next
Min_Temp = ERead 0 ;EEprom reads 0 and saves it to Min_Temp
Max_Temp = ERead 1 ;EEprom reads 1 and saves it to Max_Temp
sensing:
ADC_result = ADIn 0 ; read channel 0 (A0) And store in ADC_result
Print Cls ;LCD clean
Print At 1,1,"Tmin Tactual Tmax" ; send text at line 1 , box 1 
ADC_result = ADC_result /128 ; the ADC_result divide by 128 => AD 9-bit
Print At 2,7, Dec ADC_result,g,"C" ;Display el decimal de ADC_result
Print At 2,1, Dec Min_Temp,g,"C" ; Display the decimal Min_Temp
Print At 2,13, Dec Max_Temp,g,"C" ; Display the decimal Max_Temp
For x = 1 To 50 ;repeated 50 times
If enter =0 Then record1a ; E button pressed 
DelayMS 10
Next
If ADC_result < Min_Temp Then heat ;if data is <Min_Temp going to heat
If ADC_result > Max_Temp Then cool
Low heat_relay : Low cool_relay ;off the 2 relays
GoTo sensing ;continue to sensing
heat:
High heat_relay : Low cool_relay
GoTo sensing
 
cool:
High cool_relay : Low heat_relay
GoTo sensing
record1a:
GoSub debounce
record1:
Print Cls
Print At 1,1, "Temp.Program "
Print At 2,1,"Low= ",Dec Min_Temp ,g,"C"
DelayMS 100
If decrease=0 Then subtract1
If increase=0 Then add1
If enter=0 Then recordA
GoTo record1
subtract1:
GoSub debounce ;key debounce program
If Min_Temp < 1 Then record1
Min_Temp= Min_Temp -1
GoTo record1
add1:
GoSub debounce
If Min_Temp > 40 Then record1
Min_Temp= Min_Temp + 1
GoTo record1
recordA:
GoSub debounce
EWrite 0,[Min_Temp] ;EEPROM write to address 0 "Min_Temp" value
record2:
Print Cls
Print At 1,1, "Temp.Program "
Print At 2,1,"High= ",Dec Max_Temp ,g,"C"
DelayMS 100
If decrease=0 Then subtract2
If increase=0 Then add2
If enter=0 Then recordB
GoTo record2
subtract2:
GoSub debounce
If Max_Temp < 5 Then record2
Max_Temp= Max_Temp -1
GoTo record2
add2:
GoSub debounce
If Max_Temp > 50 Then record2
Max_Temp= Max_Temp + 1
GoTo record2
recordB:
GoSub debounce
EWrite 1,[Max_Temp] ;write to address 1 of the EEPROM "Max_Temp" value
GoTo starting
debounce: ;key debounce program
High led
DelayMS 150
Low led
debounce2:
If decrease=0 Then debounce2
If increase=0 Then debounce2
If enter=0 Then debounce2
DelayMS 100
Return
End
شكرا ياستاذنا الكريم على هذا المشروع الجميل وكن لى استفسار عن لغة البرمجة المستخدمة هل هى ميكرو سى ام نوع اخر وشكرا


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 11:52 AM المشاركة 4   
افتراضي


شكرا ياستاذنا الكريم على هذا المشروع الجميل وكن لى استفسار عن لغة البرمجة المستخدمة هل هى ميكرو سى ام نوع اخر وشكرا
أخى الكريم

شكرا جزيلا لك

اللغة المستخدمة هى لغة Basic مع المترجم Proton

مع تمنياتى بدوام التوفيق


محمد55555
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2013
المشاركات: 82
نشاط [ محمد55555 ]
قوة السمعة:0
قديم 22-07-2013, 01:32 PM المشاركة 5   
افتراضي


أخى الكريم

شكرا جزيلا لك

اللغة المستخدمة هى لغة Basic مع المترجم Proton

مع تمنياتى بدوام التوفيق
شكرا ياستاذى على هذة المعلومة ولكن هل يمكن كتابة هذا البرنامج بلغة الميكروسى؟ وجزاك اللة خيرا.


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 01:46 PM المشاركة 6   
افتراضي


شكرا ياستاذى على هذة المعلومة ولكن هل يمكن كتابة هذا البرنامج بلغة الميكروسى؟ وجزاك اللة خيرا.
أخى الكريم

شكرا لك

نعم يمكن ، لكن للأسف أنا حاليا منشغل بلغة Basic ، ويمكن للأخوة الأفاضل المساعدة فى ذلك .

مع تمنياتى بدوام التوفيق


Eng/Mohammed ad
:: مهندس ::
تاريخ التسجيل: Mar 2011
المشاركات: 34
نشاط [ Eng/Mohammed ad ]
قوة السمعة:0
قديم 22-07-2013, 03:52 PM المشاركة 7   
افتراضي


الناس برة شغالة على DSP و DSpic وشغل عالى
واحنا لسة بنعمل تحكم فى الحرارة


hams90
:: مهندس ::
تاريخ التسجيل: May 2013
المشاركات: 31
نشاط [ hams90 ]
قوة السمعة:0
قديم 25-07-2013, 08:16 AM المشاركة 8   
افتراضي


اتمنى من يستطييع تحويله للغة الميكرووسي يفيدنا ولكم جزيل الشكر

إضافة رد

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

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

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


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

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