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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 19-08-2013, 09:58 PM المشاركة 1   
افتراضي قياس درجة الحرارة الموجبة والسالبة وتصميم متحكم فى تكييف - ثلاجة - غرف تبريد - عنبر د Twitter FaceBook Google+



قياس درجة الحرارة الموجبة والسالبة وتصميم متحكم فى تكييف - ثلاجة - غرف تبريد - عنبر دواجن .....والمترجم Proton :
الحساس LM35 شائع الاستخدام وهو حساس دقيق لدرجة الحرارة بالدرجات المئوية ، ويمكن استخدامه لقياس درجة الحرارة بدقة نصف 0.5 درجة مئوية . يمكن ربط هذا الحساس بسهولة بالميكروكونترولر PIC وإنشاء مقاييس لدرجة الحرارة و متحكمات فى درجة الحرارة وأجهزة إنذار بالحريق و...
الحساس LM35 :


هذا الحساس له ثلاثة أطراف كما فى الشكل . جهد التغذية Vcc يمكن أن يكون من 4V إلى 20V . لاستخدام الحساس ببساطة قم بتوصيل الطرف Vcc بالجهد +5V وطرف الأرضى (المشترك) GND بالأرضى وطرف الخرج Out بأحد أطراف المداخل التناظرية للميكروكونترولر . هذا الخرج يتغير خطيا مع درجة الحرارة وهو يساوى 10 ملى فولت لكل درجة مئوية . إذا كان الخرج 310 mV، على سبيل المثال ، فإن درجة الحرارة تكون 31 درجة مئوية ( بالقسمة على 10 ) .
سوف نستخدم المحول ADC بالميكروكونترولر PIC بسعة 10 بت (0-1024) ، فإذا كان جهد المرجع المستخدم هو 5V فإن دقة التحويل (أقل جهد يمكن قياسه) تكون :
5000/1024 = 4.88mV
بمعنى آخر : أقل نتيجة تحويل ADC هى البت أو الوحدة "1" ، لذلك يكون أقل جهد يمكن قياسه هو 5mV وهو يناظر درجة حرارة تساوى 0.5 درجة مئوية وهى دقة القياس .
مثال :
إذا كانت نتيجة التحويل ADC هى 10 فهذا يعنى أن جهد الدخل :
10 x 4.88mV = 48.8mV
وهو يناظر حوالى 5 درجة مئوية ( كل درجة مئوية تناظر 10 ملى فولت) .
يمكننا قراءة قيمة أى قناة تحويل ADC باستخدام الدالة ADC_value = ADIn 0 ، حيث يتم حفظ نتيجة التحويل فى المتغير ADC_value. بيانات هذا المتغير يجب أن تكون من نوع word حيث أن مدى قيمة نتيجة التحويل هو 0-1024 .

ملحوظة :
معامل التحويل الكلى من عدد يقع بين 0-1024 إلى درجة حرارة هو : (5000/1024) /10 = 0.488
أى أن : ADC_value (degrees) = ADC_value ( number) * 0.488


الدائرة الكهربية :




البرنامج :
كود:
;3units-7segment-ADC-PIC16F876A Device = 16F876A Xtal 4
;To Read ADC Declare Adin_Res = 10 ; 10-bit result required Declare Adin_Tad = FRC ; RC OSC chosen Declare Adin_Stime = 50 ;Allow 50us sample time
TRISA = %00000001 ; Configure AN0 (PortA.0) as an input ADCON1 = %10000000 ;Set analogue Input On PORTA.0
Output PORTB ; All PORTB pins as output PORTB = 0 ;Clear PORTB
Dim ADC_value As Word ; 0 to 1024 Dim ONES As Word ;DIGIT 0 for ONES 0 to 9 Dim TENS As Word ;DIGIT 1 for TENS 0 to 9 Dim HUNDREDS As Word ;DIGIT 2 for HUNDREDS 0 to 9
Symbol Enable_ONES = PORTB.6 Symbol Enable_TENS = PORTB.5 Symbol Enable_HUNDREDS = PORTB.4
START: ;Read the value from channel 0 of the ADC And place result in Variable ADC_value. ADC_value = ADIn 0 ADC_value = ADC_value * 0.488 ;To covert to degrees [( 5000/1024) / 10 ] ;ADC_value consists of ONES=ADC_value Dig 0 TENS=ADC_value Dig 1 HUNDREDS = ADC_value Dig 2
Display: PORTB=240 | ONES ; Sens ONES data ; Note : 240 = %11110000 , (|) OR to use bit0 to bit3 for 7 segment ;and make bit4 to bit7 high for enable function
;Enable (LE) 4511 ONES digit by low pulse Low Enable_ONES : DelayMS 1 : High Enable_ONES : DelayMS 1
PORTB=240 | TENS ; Send TENS data
;Enable (LE) 4511 TENS digit by low pulse Low Enable_TENS : DelayMS 1 : High Enable_TENS : DelayMS 1
PORTB=240 | HUNDREDS ; Send HUNDREDS data
;Enable (LE) 4511 HUNDREDS digit by low pulse Low Enable_HUNDREDS : DelayMS 1 : High Enable_HUNDREDS : DelayMS 1
GoTo START End


اعلانات

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


مقياس درجة حرارة موجب وسالب :
الدائرة الكهربية :










البرنامج :

كود:
;3units-7sement-ADC-PIC16F876A -P - N -TEMP. Device = 16F876A Xtal 4
Declare Adin_Res = 10 ' 10-bit result required Declare Adin_Tad = FRC ' RC OSC chosen Declare Adin_Stime = 50 ' Allow 50us sample time
;Dim Var1 as Word TRISA = %00000011 ' Configure AN0 (PortA.0) and AN1(port A .1) as an inputs ADCON1 = %10000000 ' Set analogue inputs
Output PORTB ; All PORTB pins as output PORTB = 0 ;Clear PORTB
Output PORTC PORTC = 0
Dim Temp_P As Word ; Positive temp Dim Temp_N As Word ;Negative temp Dim Temp_Result As Word ;Result temp
Dim ONES As Word ;DIGIT 0 for ONES 0 to 9 Dim TENS As Word ;DIGIT 1 for TENS 0 to 9 Dim HUNDREDS As Word ;DIGIT 2 for HUNDREDS 0 to 9
Symbol Enable_ONES = PORTB.6 Symbol Enable_TENS = PORTB.5
START:
;Read the value from channel 0 and channel 1 and store the result. Temp_P = ADIn 0 ; Place the conversion into variable Temp_N = ADIn 1 ;Place the conversion into variable ;Convert Temp_P = Temp_P * 0.488 Temp_N = Temp_N * 0.488
;Case 1 If Temp_P > Temp_N Then Temp_Result = Temp_P - Temp_N
Diplay_p: ;Temp_Result consists of ONES=Temp_Result Dig 0 TENS=Temp_Result Dig 1
PORTB=240 | ONES ; Sens ONES data ; Note : 240 = %11110000 , (|) OR to use bit0 to bit3 for 7 segment ;and make bit4 to bit7 high for enable function
;Enable (LE) 4511 ONES digit by low pulse Low Enable_ONES : DelayMS 1 : High Enable_ONES : DelayMS 1
PORTB=240 | TENS ; Send TENS data
;Enable (LE) 4511 TENS digit by low pulse Low Enable_TENS : DelayMS 1 : High Enable_TENS : DelayMS 1
PORTC = %01110011 ; Letter "P"
;Case 2 ElseIf Temp_P < Temp_N Then Temp_Result = Temp_N - Temp_P
Diplay_N: ;Temp_Result consists of ONES=Temp_Result Dig 0 TENS=Temp_Result Dig 1
PORTB=240 | ONES ; Sens ONES data ; Note : 240 = %11110000 , (|) OR to use bit0 to bit3 for 7 segment ;and make bit4 to bit7 high for enable function
;Enable (LE) 4511 ONES digit by low pulse Low Enable_ONES : DelayMS 1 : High Enable_ONES : DelayMS 1
PORTB=240 | TENS ; Send TENS data
;Enable (LE) 4511 TENS digit by low pulse Low Enable_TENS : DelayMS 1 : High Enable_TENS : DelayMS 1
PORTC = %01000000 ; g segment
EndIf
GoTo START End

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

حمودي1010
:: مهندس جيد ::
تاريخ التسجيل: Apr 2007
المشاركات: 237
نشاط [ حمودي1010 ]
قوة السمعة:0
قديم 20-08-2013, 07:50 AM المشاركة 3   
Thumbs up


السلام عليكم
بارك الله فيك اخى عبد العزيز
هل يمكن ان نجد البرنامج بلغة المكروسي

الله يكون في عونك


الصورة الرمزية زكرياء المغربي
زكرياء المغربي
:: عضو فضي ::
تاريخ التسجيل: Feb 2013
الدولة: المغرب
المشاركات: 682
نشاط [ زكرياء المغربي ]
قوة السمعة:100
قديم 20-08-2013, 08:01 AM المشاركة 4   
افتراضي


تسلم ايدك مهندسنا الغالي فتح لله
بس عندي في بعض ما قلت لبس ، ما معنى نتيجة التحويب هي 10
و ان امكن كود بالميكروسي
و السلام عليكم و رحمة الله و بركاته


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 20-08-2013, 09:27 AM المشاركة 5   
افتراضي


تسلم ايدك مهندسنا الغالي فتح لله
بس عندي في بعض ما قلت لبس ، ما معنى نتيجة التحويب هي 10
و ان امكن كود بالميكروسي
و السلام عليكم و رحمة الله و بركاته
أخى الكريم

شكرا جزيلا لك

أى 10 تقصد ، فربما تغيير ترتيب الكلمات قد غير من المعنى المقصود

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


الصورة الرمزية زكرياء المغربي
زكرياء المغربي
:: عضو فضي ::
تاريخ التسجيل: Feb 2013
الدولة: المغرب
المشاركات: 682
نشاط [ زكرياء المغربي ]
قوة السمعة:100
قديم 20-08-2013, 09:41 AM المشاركة 6   
افتراضي


هذه يا استاذ فتح الله
إذا كانت نتيجة التحويل ADC هى 10 فهذا يعنى أن جهد الدخل :
10 x 4.88mV = 48.8mV


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 20-08-2013, 10:03 AM المشاركة 7   
افتراضي


كما توقعت ، الكتابة المباشرة بالمنتديات قد تغير من ترتيب الكلمات ويمكن إعادة صياغة الكتابة بالشكل التالى :

إذا كانت نتيجة التحويل ADC هو العدد 10 من بين القيم 0-1024 فيمكن الحصول على جهد الدخل بضرب نتيجة التحويل فى دقة الوحدة الواحدة وهى 4.88 كما يلى :
كود:
10 * 4.88 = 48.8mV


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 20-08-2013, 11:10 AM المشاركة 8   
افتراضي


البرنامج بلغة السى والمترجم ميكروسى برو :

كود:
// Positive and Negative Temperature //Variables unsigned Temp_P; unsigned Temp_N; unsigned Temp_Result; unsigned ONES; unsigned TENS; unsigned HUNDREDS; #define Enable_ONES PORTB.B6 #define Enable_TENS PORTB.B5 //main void main() { TRISA = 0b00000011; // Configure AN0 (PortA.0) and AN1(port A .1) as an inputs ADCON1 = 0b10000000; // Set analogue inputs TRISB = 0; // All PORTB pins as output PORTB = 0; //Clear PORTB TRISC=0; PORTC = 0; //Endless loop while (1) { //Read the value from channel 0 and channel 1 and store the result. Temp_P = ADC_Read(0); // Place the conversion into variable Temp_N = ADC_Read(1); //Place the conversion into variable //Convert Temp_P = Temp_P * 0.488 ; Temp_N = Temp_N * 0.488 ; //Case 1 if(Temp_P > Temp_N) { Temp_Result = Temp_P - Temp_N; //Diplay_p:Temp_Result consists of TENS = Temp_Result / 10 ; ONES = Temp_Result % 10 ; PORTB=240 | ONES ; // Send ONES data // Note : 240 = %11110000 , (|) OR to use bit0 to bit3 for 7 segment //and make bit4 to bit7 high for enable function //Enable (LE) 4511 ONES digit by low pulse Enable_ONES=0 ; Delay_MS(1) ; Enable_ONES=1 ; Delay_MS(1) ; PORTB=240 | TENS ; //Send TENS data //Enable (LE) 4511 TENS digit by low pulse Enable_TENS=0 ; Delay_MS(1) ; Enable_TENS=1 ; Delay_MS(1) ; PORTC = 0B01110011 ; //Letter "P" } //Case 2 //if(Temp_P < Temp_N) else { Temp_Result = Temp_N - Temp_P ; //Diplay_N: Temp_Result consists of TENS = Temp_Result / 10 ; ONES = Temp_Result % 10 ; PORTB=240 | ONES ; //Sens ONES data // Note : 240 = %11110000 , (|) OR to use bit0 to bit3 for 7 segment //and make bit4 to bit7 high for enable function //Enable (LE) 4511 ONES digit by low pulse Enable_ONES=0 ; Delay_MS(1) ; Enable_ONES=1 ; Delay_MS(1) ; PORTB=240 | TENS ; //Send TENS data //Enable (LE) 4511 TENS digit by low pulse Enable_TENS=0 ; Delay_MS(1) ; Enable_TENS=1 ; Delay_MS(1) ; PORTC = 0B01000000 ; //g segment }
} }

إضافة رد

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

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

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


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

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