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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 13-05-2011, 04:15 PM المشاركة 33   
افتراضي



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

أخى الكريم

شكرا جزيلا لك

تقدير اعتز به

بارك الله فيك

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

اعلانات

امل ميمو
:: مهندس متميز ::
تاريخ التسجيل: Mar 2007
المشاركات: 466
نشاط [ امل ميمو ]
قوة السمعة:
قديم 14-05-2011, 03:53 AM المشاركة 34   
افتراضي


اخي الفاضل عبدالعزيز شكرا لك على هذا التدريب
ثانيا بالنسبه لسؤال الاخ اشرف كمال
اولا هذه مواصفات الload cell الخاصه بتحويل الضغط او الوزن الى اشاره كهربيه وذلك عن طريق عنصر اسمه Strain Gageوهي عباره عن مقاومه متغيره توجد داخل load cell وعند التاثير بالضغط يحدث تمدد للمعدن فتتغير مقاومته عن طريق الضغط عليه وعند تسليط التيار عليها يتغير هذا التيار او الفولت حسب استخدام طريقة التحويل بالفولط ام التيار ثم ندخل الاشاره المنغيره الخارجه من الStrain Gage الى amplifier لتكبير الاشاره حيث انها تكون خارجه بالملي فولت مع ملاحظة ان الجهد المغدى لها بالdc في حدود ال5v والخارج منها متغيربالملى وكماهو مذكور بالمواصفات التي هي مذكوره بالload cellهي عباره عن 6 اطراف ويوجد منها طرفان و4اطراف المهم هنشرح load cell ذات الاطراف الاربعه مثلا طرفان للexcitationوهما المؤثران اللذين نغذيهما بالdcوالطرفان الsignalاللذين يتم الخرج من خلالهم عن طريق الضغط وبعدذلك يدخل الخرج على دخل الamplifierثم محول الاشاره التماثليهA/Dويكون يها دائرة ال reference لضبط الفولت الداخل للمحول ثم الى دائرة البفر ثم الى الميكرو لعرضها على lcd او 7segmantلعرض الوزن واحيانا يكون الميكرو بهال A/Dويكون بداخله الamplifier
ارجو ان اكون قد افد
واسف على الاطاله ان اطلت

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

الصورة الرمزية mohatvnet
mohatvnet
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: https://t.me/pump_upp
المشاركات: 958
نشاط [ mohatvnet ]
قوة السمعة:
قديم 14-05-2011, 05:44 PM المشاركة 35   
افتراضي


استاد عبد العزيز ادا اردنا ان نقيس درجة الحرارة بدقة متل 15,7 درجة مئوية اي حساس للحرارة سنستعمل وهل نغير شئ في البرنامج الدي وضعته


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-05-2011, 06:34 PM المشاركة 36   
افتراضي


استاد عبد العزيز ادا اردنا ان نقيس درجة الحرارة بدقة متل 15,7 درجة مئوية اي حساس للحرارة سنستعمل وهل نغير شئ في البرنامج الدي وضعته
أخى الكريم

شكرا جزيلا لك

عذرا لم افهم السؤال مع العلم أن تعريف الدقة هى أقل درجة حرارة يمكن قياسها فيقال دقة حتى واحد درجة أو حتى نصف درجة أو حتى واحد من عشرة من الدرجة وهكذا .

وعموما فأن الحساس LM35 هو الأفضل فى التعامل لوجود العلاقة الخطية بين درجة الحرارة والخرج وأى حساس آخر يحتاج إلى دوائر ربط ورياضيات أكثر تعقيدا ربما نتعرض لها فيما بعد .

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


الصورة الرمزية mohatvnet
mohatvnet
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: https://t.me/pump_upp
المشاركات: 958
نشاط [ mohatvnet ]
قوة السمعة:
قديم 14-05-2011, 07:10 PM المشاركة 37   
افتراضي


نعم استاد عبد العزيز يعني اقل درجة يمكن قياسها

لانني اريد استعمالها في المتحكم في درجة الحرارة واريد ان اعمل الجهاز يقيس بدقة 0.1 يعني متلا من 16.6 الى 16.7


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-05-2011, 09:52 PM المشاركة 38   
افتراضي


أخى الكريم

شكرا جزيلا لك

لى مشاركة سابقة تصلح لما تريد

اكررها فيما يلى :


التدريب السابع مشروع مقياس درجة حرارة رقمى باستخدام حساس درجة الحرارة lm35
مقدمة :
مقياس الحرارة الرقمي هو اختيار جيد كمشروع للدخول إلى عالم الميكروكنترولر لأنه يوفر فرصة للتعرف على استخدام أجهزة الاستشعار لقياس اشارات العالم الحقيقى التناظرية .
يعتمد هذا المشروع على الميكروكونترولر pic16f877 وحساس درحة الحرارة من النوع lm35 . الحساس lm35 هو حساس تناظرى يقوم بتحويل درجة الحرارة المحيطة به إلى جهد تناظرى . يوصل خرج الحساس إلى أحد المداخل التناظرية للميكروكونترولر لاستخلاص قيمة معادلة لدرجة الحرارة في الشكل الرقمي. يتم عرض درجة الحرارة المحسوبة على شاشة وحدة عرض lcd من النوع 16x2 أى سطرين بكل سطر 16حرف في شكل مقياس مئوى°c ومقياس فهرنيت°f.



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-05-2011, 09:53 PM المشاركة 39   
افتراضي


المعلومات النظرية :
الحساس LM35 لا يحتاج إلى أى معايرة خارجية وجهد خرجه يتناسب مع درجة الحرارة . عامل مقياس scale factor التحويل من درجة حرارة إلى جهد هو 10 mV per °C "10 ملى فولت لكل درجة مئوية" .
توجد عدة أشكال من الحساس LM35 كما فى الشكل .




قياس درجة الحرارة السالبة الأقل من الصفر يحتاج لمصدر جهد سالب وهذا المشروع يتناول فقط قياس درجة الحرارة الموجبة من الصفر وحتى 100 درجة مئوية .
يتم يحويل جهد خرج الحساس إلى عدد رقمى مكون من 10 خانات باستخدام المحول ADC الداخلى بالميكروكونترولر .وحيث أن الجهد المراد قياسه بواسطة المحول ADC يكون فى المدى من صفر إلى واحد فولت (والمناظر لدرجة حرارة من صفر حتى 100 درجة مئوية لأن كل درجة مئوية تعطى خرج قدره 10 ملى فولت) فأن المحول ADC يحتاج إلى جهد مرجع منخفض (بدلا من جهد المنبع Vdd= 5V ) للتحويل من تناظرى لرقمى وذلك للحصول على دقة قياس أفضل . يمكن الحصول على جهد المرجع المنخفض باستخدام زنر دايود ومقاومات أو يمكن استخدام دايودات فقط . يمكنك الحصول على جهد مرجع قدره 1.2V بتوصيل دايودان ومقاومة على التوالى بين طرفى مصدر الجهد كما فى الشكل التالى .




ملحوظة :
بالقياس العملى للجهد عبر الدايودان وجد 1.196 V وقياسه عمليا هام للحصول على نتائج دقيقة .
كما يمكنك استخدام مقاومة 1K بدلا من المقاومة 3.6K .
نحتاج لبعض العمليات الرياضية للتحويل من تناظرى لرقمى :
جهد المرجع 1.196 V والمحول ADC بسعة 10-bit ، لذلك فإن أى جهد دخل فى المدى بين 0-1.196V سوف يتم تحويله إلى عدد رقمى فى المدى بين 0-1023 .
وتكون دقة التحويل ( خارج قسمة المدى الكامل للجهد على المدى الكامل لكود عدد التحويل ليعطى الجهد لكل قسم ) 1.196/1024 = 0.001168 V/Count.
لذلك يكون العدد الرقمى N للخرج المناظر لأى جهد دخل Vin هو N = Vin/0.001168.
مثال :
نفترض أن درجة الحرارة المحيطة هى 26.4 °C .
يكون جهد خرج الحساس 264 mV (0.264 V): .
ويكون كود العدد لخرج المحول ADC : 0.264/0.001168 = 226
إذا عكسنا العملية : أى أن كان لدينا فى خرج المحول ADC عدد رقمى قدره 226 يمكننا العودة للخلف بتحويله إلى جهد الدخل بضربه فى الدقة ثم نحول هذا الجهد إلى درجة الحرارة بالقسمة على عامل قياس الحساس وهو (10 mV/°C) كما يلى :
temperature = 226 * 0.001168 (V/Count) / 0.01 (V/°C) = 26.4 °C
لتجنب استخدام الأعداد الحقيقية التى تحتوى على علامة عشرية متحركة والتى تسمى floating فقط نستخدم عملية ضرب كما يلى (الدقة كعدد صحيح) :
temperature = 226 * 1168 = 263968
عند عرض النتيجة نحتاج لوضع علامة عشرية فى المكان الرابع من اليسار .لذلك تكون درجة الحرارة المحسوبة 26.3968°C والتى هى قريبة بالفعل من الفعلية .
فى هذا المشروع سوف يتم عرض درجة الحرارة بدقة كسر عشرى واحد أى نقوم بقسمة العدد العلوى على 1000 لنحصل على 263 ويتم بيان درجة الحرارة بالشكل 26.3 °C .
بعد اشتقاق درجة الحرارة بالدرجات المئوية يمكنك تحويلها إلى الفهرنيت باستخدام المعادلة البسيطة التالية :
temperature in °F = 9 x temperature in °C /5 + 32
فى هذه الحالة يتم ضرب درجة الحرارة المئوية فى 10 فتتحول 26.3 إلى263 (للتخلص من العلامة العشرية ) ويمكنك استخدام العلاقة :
temperature in °F = 9 x temperature in °C /5 + 320
وحيث إن العدد الذى يمثل درجة الحرارة المئوية قد لا يقبل القسمة على 5 بالضبط ( العدد 263 لا يقبل القسمة على 5 ( يمكنك مرة أخرى التخلص من العلامة العشرية بالضرب مرة أخرى فى 10 وتصبح المعادلة الجديدة :
temperature in °F = 9 x temperature in °C x 10 /5 + 3200
or,
temperature in °F = 18 x temperature in °C + 3200 = 18 x 263+3200 = 7934
أى أن 79.34 °F تكافىء 26.3 °C
فى هذا المشروع سوف يتم عرض النتيحة بالشكل 79.3 °F
الدائرة الكهربية :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-05-2011, 09:54 PM المشاركة 40   
افتراضي


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



يتم توصيل جهد المرجع للطرف RA3 . ويوصل خرج الحساس LM35 إلى المدخل التناظرى RA0/AN0 .
تعرض درجة الحرارة على وحدة عرض LCD نوع 16X2 وتعمل فى نظام 4-bit . تستخدم المقاومة المتغيرة 5K للتحكم فى تباين الشاشة . يستخدم المذبذب الداخلى بتردد 4.0 MHz .
البرنامج :
البرنامج :


كود:
/* Digital Thermometer using PIC16F877 and LM35 Oscillator * 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF */ // LCD module connections sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; // End LCD module connections // Define Messages char message0[] = "LCD Initialized"; char message1[] = "Room Temperature"; // String array to store temperature value to display char *tempC = "000.0"; char *tempF = "000.0"; // Variables to store temperature values unsigned int tempinF, tempinC; unsigned long temp_value; void Display_Temperature() { // convert Temp to characters if (tempinC/10000) // 48 is the decimal character code value for displaying 0 on LCD tempC[0] = tempinC/10000 + 48; else tempC[0] = ' '; tempC[1] = (tempinC/1000)%10 + 48; // Extract tens digit tempC[2] = (tempinC/100)%10 + 48; // Extract ones digit // convert temp_fraction to characters tempC[4] = (tempinC/10)%10 + 48; // Extract tens digit // print temperature on LCD Lcd_Out(2, 1, tempC); if (tempinF/10000) tempF[0] = tempinF/10000 + 48; else tempF[0] = ' '; tempF[1] = (tempinF/1000)%10 + 48; // Extract tens digit tempF[2] = (tempinF/100)%10 + 48; tempF[4] = (tempinF/10)%10 + 48; // print temperature on LCD Lcd_Out(2, 10, tempF); } void main() { ADCON0 = 0 ; // Connect AN0 to ADC module ADCON1 = 0b00000101; // Connect AN0, select Vref=AN3 = 1.19V TRISB = 0b00000000; // PORTC All Outputs TRISA = 0b00001001; // PORTA All Outputs, Except RA0and RA3 Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // CLEAR display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Out(1,1,message0); Delay_ms(1000); Lcd_Out(1,1,message1); // Write message1 in 1st row // Print degree character Lcd_Chr(2,6,223); Lcd_Chr(2,15,223); // Different LCD displays have different char code for degree symbol // if you see greek alpha letter try typing 178 instead of 223 Lcd_Chr(2,7,'C'); Lcd_Chr(2,16,'F'); do { temp_value = ADC_Read(0); temp_value = temp_value*1168; tempinC = temp_value/1000; tempinC = tempinC*10; tempinF = 9*tempinC/5 + 3200; Display_Temperature(); Delay_ms(1000); // Temperature sampling at 1 sec interval } while(1); }



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