|
تحميل كتب مجانية, مراجع للتحميل كتب مجانية, كتب عربية للتحميل, كتب ألكترونية, كتب اجنبية, كتب تعليمية, مراجع عربية,كتب للتحميل, كتب للقراءة. |
| LinkBack | أدوات الموضوع | انواع عرض الموضوع |
#1
| ||
| ||
مشروع عداد السرعة الدورانية (اللفات) RPM بدون تلامس Contactless Tachometer عداد السرعة هو جهاز يعطى معلومات حول السرعة الدورانية لأى عامود أو قرص . غالبا ما يقيس السرعة كعدد لفات لكل دقيقة RMP . فى هذا المشروع سوف يتم عمل عداد لفات بسيط لقياس السرعة الدورانية لقرص بدون وجود أى تلامس طبيعى مع العضو (الكائن) الدوار . مدى هذا العداد 0 - 9999 RPM ويعرض RPM باستخدام 4 وحدات عرض نوع seven-segment باستخدام الميكروكونترولر PIC16F628A . مستشعر (حساس) الأشعة تحت الحمراء Infrared sensor سوف يتم تحقيق الاتصال فى مقياس RPMمن خلال جهاز استشعار الأشعة تحت الحمراء IR diode. حيث يقوم ديود الأشعة تحت الحمراء بإرسال شعاع من الأشعة تحت الحمراء نحو القرص أو العامود الدوار ، وتستقبل النبضة المنعكسة عن طريق دايود ضوئى photo diode . مقاومة الدايود الضوئى تقل بشكل جذري عند تعرضه للأشعة تحت الحمراء. تنعكس الأشعة تحت الحمراء على الأسطح البيضاء وتمتص على الأسطح المظلمة.يمكن اختبار المشروع بقرض دوار أسود (داكن) يمتص الأشعة ولصق قطعة صغيرة من الورق الأبيض (أو أى علامة بيضاء) لعكس الأشعة . نتيجة لذلك نحصل على نبضة منعكسة كل لفة أو كل دورة والتى يتم كشفها عن طريق الدايود الضوئى . دائرة مرسل ومستقبل الأشعة IR بسيطة للغاية . يتم عمل وحدة (موديول) كحساس كما فى الشكل : IR Rxفى الحالة المنطقية المنخفضة . عندما تتواجد نبضة منعكسة تهبط مقاومة الدايود الضوئى المستقبل وكذلك فرق الجهد بين طرفيه ويؤدى ذلك إلى تحول الترانزستور المستقبل إلى حالة التوصيل الكامل أى حالة التشبع وهذا يجعل نبضة المخرج IR Rx فى الحالة المنطقية المرتفعة . يقوم الميكروكونترولر بعد النبضات المستقبلة فى فترة زمنية قدرها واحد ثانية لتحديد عدد لفات القرص فى الدقيقة أى RPM . عمليا يتم أخذ 3 عينات للسرعة RPM والحصول على المتوسط لذلك يستغرق القياس 3 ثوانى . سوف يتم عد النبضات باستخدام موديول المؤقت Timer 0 . الدائرة الكهربية :
__________________ angel4angel4angel4angel4angel4 |
#2
| ||
| ||
الدائرة الكهربية :
التعليق على البرنامج :
__________________ angel4angel4angel4angel4angel4 |
#3
| ||
| ||
كود:
__________________ angel4angel4angel4angel4angel4 |
#4
| ||
| ||
التعليق على البرنامج : 1- مقدمة (رأس) البرنامج : /* 2- دالة التحويل من الأرقام العشرية إلى كود وحدة ليدات الشرائح السبعة ذات المهبط المشترك (القناع) حيث يتم فيها استخدام تعبير switch(…) case…: * Project name: Contact less digital tachometer * Test configuration: MCU: PIC16F628A runs @ 4.0 MHz external crystal oscillator The common cathodes of the four seven segment displays are controlled by RA0, RA1, RA2 and RA3 */ //-------------- Function to Return mask for common cathode 7-seg. display 3- تعريف أطراف (خانات) الميكروكونترولر بأسماء سهلة للفهم وتدل على الوظيفة فمثلا الطرف RB7 يعرف باسم "أرسال الأشعة IR " والطرف RA0 يعرف باسم خانة الآحاد DD0 وهكذا :unsigned short mask(unsigned short num) { switch (num) { case 0 : return 0x3F; case 1 : return 0x06; case 2 : return 0x5B; case 3 : return 0x4F; case 4 : return 0x66; case 5 : return 0x6D; case 6 : return 0x7D; case 7 : return 0x07; case 8 : return 0x7F; case 9 : return 0x6F; } //case end } sbit IR_Tx at RB7_bit; 4- إعلان المتغيرات التى سوف نستخدمها sbit DD0_Set at RA0_bit; sbit DD1_Set at RA1_bit; sbit DD2_Set at RA2_bit; sbit DD3_Set at RA3_bit; unsigned short i, DD0, DD1, DD2, DD3; 5- بداية الدالة الرئيسية :unsigned int Sample1, Sample2, Sample3, RPM; void main() {
TRISB = 0b00000000; // Set PORTB direction to be output TRISA = 0b00110000; // Set PORTA direction to be output
PORTB = 0x00; // Turn OFF LEDs on PORTB
CMCON = 7 ; // Disable comparators
RPM = 0; // Initial Value of Counter
OPTION_REG = 0b00111000; // TOCS=1 for Counter mode, PSA=1 for 1:1
IR_Tx = 0; // Turn OFF IR
do { DD0 = RPM%10; # استخلاص قيمة خانة العشرات DD1 بقسمة RPM على 10 أولا ثم إيجاد باقى خارج قسمة محتويات المتغير RPM على 10 ثم تحويله إلى الكود المقنع لوحدة الليدات السبعة باستدعاء الدالة mask وتخصيص المتغير DD1 كبارامتر لها .DD0 = mask(DD0); DD1 = (RPM/10)%10; # تكرار ماسبق لخانة المئات وخانة الآلاف DD1 = mask(DD1); DD2 = (RPM/100)%10; DD2 = mask(DD2); DD3 = (RPM/1000); DD3 = mask(DD3);
for (i = 0; i<=100; i++) { # بداية يتم تحميل محتويات متغير خانة الآحاد إلى المنفذ PORTB ثم يتم توصيل وحدة الآحاد بجعل طرف التحكم فى المهبط المشترك لها فى الحالة المرتفعة وفصل باقى الوحدات بجعل أطراف التحكم فى المهبط المشترك لها فى الحالة المنخفضة ثم تأخير بسيط 5ملى ثانية .PORTB = DD0; # تكرار ما سبق لخانة العشرات والمئات والآلاف DD0_Set = 1; DD1_Set = 0; DD2_Set = 0; DD3_Set = 0; delay_ms(5); PORTB = DD1; DD0_Set = 0; DD1_Set = 1; DD2_Set = 0; DD3_Set = 0; delay_ms(5); PORTB = DD2; DD0_Set = 0; DD1_Set = 0; DD2_Set = 1; DD3_Set = 0; delay_ms(5); PORTB = DD3; DD0_Set = 0; DD1_Set = 0; DD2_Set = 0; DD3_Set = 1; delay_ms(5); }
DD3_Set = 0;
// First Sample # تصفير سجل المؤقت TMR0TMR0=0; # بداية إرسال الأشعة والانتظار فى حالة الإرسال لمدة ثانية ثم فصل الإرسال ونسخ محتويات سجل المؤقت TMR0 بعد ضربه فى 60 لتحويله لعدد لفات فى الدقيقة إلى المتغير Sample1IR_Tx = 1; Delay_ms(1000); // Delay 1 Sec IR_Tx = 0; Sample1 = TMR0*60;
// Second Sample TMR0=0; IR_Tx = 1; Delay_ms(1000); // Delay 1 Sec IR_Tx = 0; Sample2 = TMR0*60; // Third Sample TMR0=0; IR_Tx = 1; Delay_ms(1000); // Delay 1 Sec IR_Tx = 0; Sample3 = TMR0*60;
RPM = Sample1 + Sample2 + Sample3; RPM = RPM/3;
} while(1); // endless loop }
__________________ angel4angel4angel4angel4angel4 |
#5
| ||
| ||
very goooooooooooooooooooooooooooooooooooooooooooooooooood
|
مواقع النشر (المفضلة) |
| |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
عندك فكرة مشروع ومحتار/ه كيف تنفذه بدون سيولة ماليه ؟؟؟؟؟؟ | الفكرة الأساسية | إعلانات تجارية و إشهار مواقع | 0 | 03-23-2010 09:45 AM |