عيون العرب - ملتقى العالم العربي

العودة   عيون العرب - ملتقى العالم العربي > عيــون الأقسام العلمية > تحميل كتب مجانية, مراجع للتحميل

تحميل كتب مجانية, مراجع للتحميل كتب مجانية, كتب عربية للتحميل, كتب ألكترونية, كتب اجنبية, كتب تعليمية, مراجع عربية,كتب للتحميل, كتب للقراءة.

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 09-23-2011, 05:36 AM
 
مشروع عداد السرعة الدورانية (اللفات) RPM بدون تلامس Contactless Tachometer

مشروع عداد السرعة الدورانية (اللفات) RPM بدون تلامس Contactless Tachometer
عداد السرعة هو جهاز يعطى معلومات حول السرعة الدورانية لأى عامود أو قرص . غالبا ما يقيس السرعة كعدد لفات لكل دقيقة RMP .
فى هذا المشروع سوف يتم عمل عداد لفات بسيط لقياس السرعة الدورانية لقرص بدون وجود أى تلامس طبيعى مع العضو (الكائن) الدوار . مدى هذا العداد 0 - 9999 RPM ويعرض RPM باستخدام 4 وحدات عرض نوع seven-segment باستخدام الميكروكونترولر PIC16F628A .
مستشعر (حساس) الأشعة تحت الحمراء Infrared sensor
سوف يتم تحقيق الاتصال فى مقياس RPMمن خلال جهاز استشعار الأشعة تحت الحمراء IR diode. حيث يقوم ديود الأشعة تحت الحمراء بإرسال شعاع من الأشعة تحت الحمراء نحو القرص أو العامود الدوار ، وتستقبل النبضة المنعكسة عن طريق دايود ضوئى photo diode . مقاومة الدايود الضوئى تقل بشكل جذري عند تعرضه للأشعة تحت الحمراء. تنعكس الأشعة تحت الحمراء على الأسطح البيضاء وتمتص على الأسطح المظلمة.يمكن اختبار المشروع بقرض دوار أسود (داكن) يمتص الأشعة ولصق قطعة صغيرة من الورق الأبيض (أو أى علامة بيضاء) لعكس الأشعة . نتيجة لذلك نحصل على نبضة منعكسة كل لفة أو كل دورة والتى يتم كشفها عن طريق الدايود الضوئى .

دائرة مرسل ومستقبل الأشعة IR بسيطة للغاية . يتم عمل وحدة (موديول) كحساس كما فى الشكل :


أشارة التحكم IR Tx تعمل على توصيل وفصل on/off إرسال الأشعة IR . يقوم الميكروكونترولر PIC16F628A بتوصيل ديود IR لمدة واحد ثانية ثم يعد النبضة المستقبلة خلال هذه الفترة من خلال المخرج IR Rx Pulse . فى الوضع العادى يظهر الدايود الضوئى (المستقبل) مقاومة مرتفعة ( عشرات الكيلو أوم ) وكذلك يكون فرق الجهد بين طرفيه مرتفع ويؤدى إلى جعل الترانزستور BC557 (المستقبل) فى حالة عدم توصيل cut off وتكون نبضة
IR Rxفى الحالة المنطقية المنخفضة . عندما تتواجد نبضة منعكسة تهبط مقاومة الدايود الضوئى المستقبل وكذلك فرق الجهد بين طرفيه ويؤدى ذلك إلى تحول الترانزستور المستقبل إلى حالة التوصيل الكامل أى حالة التشبع وهذا يجعل نبضة المخرج IR Rx فى الحالة المنطقية المرتفعة . يقوم الميكروكونترولر بعد النبضات المستقبلة فى فترة زمنية قدرها واحد ثانية لتحديد عدد لفات القرص فى الدقيقة أى RPM . عمليا يتم أخذ 3 عينات للسرعة RPM والحصول على المتوسط لذلك يستغرق القياس 3 ثوانى . سوف يتم عد النبضات باستخدام موديول المؤقت Timer 0 .

الدائرة الكهربية :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #2  
قديم 09-23-2011, 05:37 AM
 
الدائرة الكهربية :


  • وحدات العرض Seven segment المستخدمة من نوع المهبط المشترك . يتم تشغيل الشرائح السبعة (a-g) من خلال الأطراف السبعة RB0-RB6 على الترتيب . يتم التحكم فى الأربعة مهابط المشتركة من خلال الأطراف الأربعة RA0 (خانة الآحاد ) إلى الطرف RA3 (خانة الآلاف ) .
  • يتم إرسال الإشارة IR Tx عن طريق الطرف RB7 .
  • توصل إشارة النبضات المستقبلة IR Rx إلى الطرف RA4/T0CKI .

التعليق على البرنامج :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #3  
قديم 09-23-2011, 05:40 AM
 
كود:
/* * 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 dispalys are controlled by RA0, RA1, RA2 and RA3 */ //-------------- Function to Return mask for common cathode 7-seg. display 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; 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; 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; 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 = 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 TMR0=0; IR_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
رد مع اقتباس
  #4  
قديم 09-23-2011, 05:41 AM
 
التعليق على البرنامج :

1- مقدمة (رأس) البرنامج :

/*
* 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
*/
2- دالة التحويل من الأرقام العشرية إلى كود وحدة ليدات الشرائح السبعة ذات المهبط المشترك (القناع) حيث يتم فيها استخدام تعبير switch(…) case…:
//-------------- Function to Return mask for common cathode 7-seg. display
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
}
3- تعريف أطراف (خانات) الميكروكونترولر بأسماء سهلة للفهم وتدل على الوظيفة فمثلا الطرف RB7 يعرف باسم "أرسال الأشعة IR " والطرف RA0 يعرف باسم خانة الآحاد DD0 وهكذا :
sbit IR_Tx at RB7_bit;
sbit DD0_Set at RA0_bit;
sbit DD1_Set at RA1_bit;
sbit DD2_Set at RA2_bit;
sbit DD3_Set at RA3_bit;
4- إعلان المتغيرات التى سوف نستخدمها
unsigned short i, DD0, DD1, DD2, DD3;
unsigned int Sample1, Sample2, Sample3, RPM;
5- بداية الدالة الرئيسية :
void main() {
  • إعدادات الميكروكونترولر : جميع أطراف المنفذ PORTB كمخارج . وجميع أطراف المنفذ PORTA كمخارج فيما عدا مدخل النبضات RA4 ومدخل الإعادة MCLR = RA5 .
TRISB = 0b00000000; // Set PORTB direction to be output
TRISA = 0b00110000; // Set PORTA direction to be output
  • تصفير المنفذ PORTB
PORTB = 0x00; // Turn OFF LEDs on PORTB
  • فصل المقارنات لجعل جميع الأطراف كمداخل / مخارج رقمية
CMCON = 7 ; // Disable comparators
  • تصفير المتغير الذى يحتوى على قيمة RPM .
RPM = 0; // Initial Value of Counter
  • إعداد السجل OPTION_REG لجعل موديول المؤقت Timer0 يعمل فى نظام العداد للنبضات الخارجية وبدون معامل قسمة .
OPTION_REG = 0b00111000; // TOCS=1 for Counter mode, PSA=1 for 1:1
  • فى البداية تكون إشارة المرسل مفصولة .
IR_Tx = 0; // Turn OFF IR
  • الدخول إلى الحلقة الغير منتهية do{……}while(1) وفيها :

do {
# استخلاص قيمة خانة الآحاد DD0 بإيجاد باقى خارج قسمة محتويات المتغير RPM على 10 ثم تحويله إلى الكود المقنع لوحدة الليدات السبعة باستدعاء الدالة mask وتخصيص المتغير DD0 كبارامتر لها .
DD0 = RPM%10;
DD0 = mask(DD0);
# استخلاص قيمة خانة العشرات DD1 بقسمة RPM على 10 أولا ثم إيجاد باقى خارج قسمة محتويات المتغير RPM على 10 ثم تحويله إلى الكود المقنع لوحدة الليدات السبعة باستدعاء الدالة mask وتخصيص المتغير DD1 كبارامتر لها .
DD1 = (RPM/10)%10;
DD1 = mask(DD1);
# تكرار ماسبق لخانة المئات وخانة الآلاف
DD2 = (RPM/100)%10;
DD2 = mask(DD2);
DD3 = (RPM/1000);
DD3 = mask(DD3);
  • الآن جاء برمجة انتخاب وحدات العرض وحدة تلو الأخرى وفى البداية نستخدم حلقة تعبير for لتكرارهذه العملية 100 مرة حيث يتم البدء بجعل متغير الحلقة i =0 ثم تقييم الشرط i<=100 فإن تحقق يتم زيادة المتغير i بواحد i++ وتنفيذ جسم الحلقة وفيه :
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);
}
  • بعد تكرار الحلقة 100 مرة يتحقق الشرط ويخرج البرنامج من الحلقة ويقوم بفصل وحدة الآلاف للعودة لوضع ابتدائى .
DD3_Set = 0;
  • أخد أول عينة : وتتم بالطريقة التالية
// First Sample
# تصفير سجل المؤقت TMR0
TMR0=0;
# بداية إرسال الأشعة والانتظار فى حالة الإرسال لمدة ثانية ثم فصل الإرسال ونسخ محتويات سجل المؤقت TMR0 بعد ضربه فى 60 لتحويله لعدد لفات فى الدقيقة إلى المتغير Sample1
IR_Tx = 1;
Delay_ms(1000); // Delay 1 Sec
IR_Tx = 0;
Sample1 = TMR0*60;
  • تكرار أخذ العينة رقم 2 والعينة رقم 3
// 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;
  • الحصول على القيمة المتوسطة للعينات الثلاثة بجمعها وقسمتها على 3 ونسح الناتج فى سجل المتغير RPM .

RPM = Sample1 + Sample2 + Sample3;
RPM = RPM/3;
  • تكرار العملية بصفة مستمرة حيث يتكرر : إستخلاص الخانات و عرضها على وحدات العرض
} while(1); // endless loop
}
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #5  
قديم 11-03-2011, 10:14 PM
 
very goooooooooooooooooooooooooooooooooooooooooooooooooood
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
عندك فكرة مشروع ومحتار/ه كيف تنفذه بدون سيولة ماليه ؟؟؟؟؟؟ الفكرة الأساسية إعلانات تجارية و إشهار مواقع 0 03-23-2010 09:45 AM


الساعة الآن 09:42 PM.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Content Relevant URLs by vBSEO
شات الشلة
Powered by: vBulletin Copyright ©2000 - 2006, Jelsoft Enterprises Ltd.
جميع الحقوق محفوظة لعيون العرب
2003 - 2011