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

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

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

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #11  
قديم 09-22-2011, 04:54 PM
 
التدريب السادس مشروع إنشاء جهاز قياس فولت رقمى DVM (فولت ميتر) يعتمد على الميكروكونترولر PIC
مقدمة :
يتناول هذا المشروع إنشاء مقياس جهد رقمى بسيط DVM باستخدام الميكروكونترولر PIC16F877 . مدى القياس
0-20V ويمكن بالطبع زيادة أو نقصان مدى جهد الدخل كما ترغب بعد فهم طريقة معايرة التدريج scaling .
يقوم الميكروكونترولر بقراءة جهد الدخل من خلال أحد القنوات الثمانية وتحويله إلى عدد رقمى باستخدام المحول ADC الداخلى . بإجراء بعض العمليات الرياضية على نتيجة التحويل فأن هذا العدد الرقمى يمكن تحويله كمقياس للجهد الفعلى .
يتم عرض الجهد على وحدة LCD .

الدائرة الكهربية والوصف :
لا يمكنك تغذية إشارة الجهد 20V مباشرة إلى قناة مدخل الميكروكونترولر . هذه القيمة مرتفعة جدا عن جهد العمل وقد تسبب تلف الميكروكونترولر . لذلك فنحن نحتاج أولا إلى تخفيض جهد الدخل إلى قيمة جهد عمل آمن للميكروكونترولر . يمكن تحقيق ذلك باستخدام مقسم (مجزىء) جهد بسيط مكون من مقاومات كما فى الشكل .




باستخدام المقاومتين R1 و R2 يمكن تخفيض جهد الدخل ليتحول من المدى 0-20V ويصبح فى المدى
0-5V . لقيم المقاومات R1 و R2 المختارة يمكنك رؤية أن جهد الخرج (Vout) من مقسم الجهد هو ربع 1/4 جهد الدخل . عندما يتعدى جهد الدخل 20V فسوف يزيد جهد الخرج عن 5V وهذا يسبب ضررا للميكروكونترولر . إذا تم توصيل زنر دايود بجهد 5.1V بين طرفى المقاومة R1 فإن الخرج Vout سوف لا يزيد أبد عن 5.1V . هذا يؤدى إلى حماية الميكروكونترولر من التلف المحتمل نتيجة زيادة جهد الدخل .
يتم توصيل الجهد Vout إلى طرف القناة التناظرية AN0 للميكروكونترولر PIC16F877 .
باقى الدائرة كما هو مبين بالشكل التالى :




وحدة العرض LCD موصلة فى نظام 4-bit . إذا كانت وحدة LCD تمتلك 14 طرف فقط فلا يكون لديك إضاءة خلفية كما يمكنك تجاهل الطرفين 15 و 16 إن كانا موجودين .يتم التحكم فى التباين باستخدام المقاومة المتغيرة 5K المتصلة بين الجهد +5V والأرضى .
المفتاح الضاغط لإعادة العمل reset خارجيا مفيد لوضع النظام فى حالة ابتدائية معروفة عندما يتوقف الميكروكونترولر عن تنفيذ تلبرنامج لأى سبب .


البرنامج :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #12  
قديم 09-22-2011, 04:55 PM
 
البرنامج :
قبل البدء فى كتابة كود هذا المشروع تحتاج لإجراء بعض العمليات الرياضية على نتيجة التحويل من تناظرى لرقمى . أنت تعلم أنه فى أى تطبيق يستخدم التحويل من تناظرى إلى رقمى يحتاج إلى جهد مرجع ثابت لكى نحصل على نتيجة رقمية دقيقة لإشارة الدخل التناظرى .إذا لم يكن جهد المرجع ثابت ومستقر فإن خرج المحول ADC سوف لا يكون له معنى أو دلالة .
فى هذا المشروع يتم اختيار جهد المرجع الموجب ليساوى جهد المصدر أى Vdd(+5V) وجهد المرجع السالب ليساوى الصفر Vss . نتيجة لذلك سوف يقوم المحول ADC بتحويل أى جهد للدخل فى المدى بين
0-5 V إلى كود عدد رقمى بين 0-1023 . مصدر الخطأ الرئيسى فى هذا المشروع هو دقة المقاومات R1 و R2

الحسابات :

أى قيمة لجهد الدخل التناظري بين 0 – 5 V تناظرها قيمة واحدة من 1024 مستوى (كعداد من 0 إلى 1023)
أقل قيمة جهد يمكن تحويلها هى التى تناظر وحدة أو قسم أو عدة واحدة من الأقسام 1024 وهذا الجهد يعبر عن دقة عملية التحويل ويسمى بالقدرة على التحليل أو دقة القياس Resolution وواضح أنها تعدل ما قيمته قسم واحد من 1024 قسم وبالتالى يمكن التعبير عنها بقسمة أقصى جهد دخل ممكن وهو 5V على عدد الاقسام الكلى وهو 1024 لنحصل على الجهد المناظر لقسم واحد فقط ( أقل جهد يمكن قياسه) أى الدقة وتكون بالصيغة :
Resolution = 5/1024 = 0.0049 V/Count or Div
إى 0.0049 V لكل قسم واحد وهو أدنى جهد يمكن الاحساس به وتحويله إلى عدد رقمى هو الواحد .
ولمعرفة عدد الأقسام N الناتجة عن التحويل والمناظرة لجهد دخل معين Vx :
5V----1024
Vx-----N
N = ( Vx/5) * 1024
Or
N = Vx / 0.0049 Div
أى نقسم الجهد على الدقة
فى هذا المشروع :
أقصى جهد دخل فعلى لهذا المشروع هو Vx من خرج مقسم الجهد والذى يمكن التعبير عنه بالصيغة :
Vx = Vin/4

Vin = 4 Vx

But:

Vx=( 5/1024) * N =0.0049 * N

Then:

Vin = 4 * 0.0049 * N = 0.02 * N
لتجنب استخدام الأعداد الحقيقية من نوع floating يتم الضرب فى 100 فنحصل على
Vin = 2*N
الخلاصة : المعادلة السابقة تربط العلاقة بين الجهد المراد قياسه Vin وعدد أقسام المحول المناظرة N الناتجة .

مثال توضيحى :
نفترض أن جهد الدخل (قبل مقسم الجهد) Vin = 4.6V عندئذ يكون الجهد الواصل لمدخل الميكروكونترولر (بعد مقسم الجهد) يساوى نسبة قسمةالجهد ونفرض أنها 0.2457 (وهى الربع تقريبا) مضروبا فى جهد الدخل المطلوب قياسه أى :
Vx = 0.2457*Vin = 1.13V
وهذا الجهد هو يناظر كود عدد تحويل تناظرى قدره (نقسم على الدقة ) :

N = 1.13/0.0049 = 231

بضرب هذا العدد فى 2 نحصل على 0462 فى شكل رقم بأربع خانات
2*231 = 0462
هذه النتيجة ذات الأربع أرقام (خانات) (0462) سوف يكون الرقمين الأولين 62 يمثلان أرقام العشرات والآحاد لكسر الجهد المقاس بينما الخانتين الأخيرتين 04يمثلان أرقام آحاد وعشرات العدد الصحيح لهذا الجهد لذلك يكون الجهد المقاس 04.62 V وسوف يتم عرض أول ثلاثة أرقام فقط لتكون (04.6 V) .
سوف نحتاج إلى تعريف الطرف RA0/AN0 كمدخل تناظرى. ويتم استخدام الجهد Vdd = +5V كجهد مرجعى للمحول ADC .
التعليق على البرنامج :
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #13  
قديم 09-22-2011, 04:56 PM
 
التعليق على البرنامج :

/* Project: Digital Voltmeter based on PIC16F877
Oscillator @ 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF
*/
1- تعريف أطراف توصيل الميكروكونترولر بوحدة العرض LCD
// LCD module connections
· 6 أطراف بالمنفذ PORTC
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;
· و 6 خانات تحكم بسجل التحكم TRISC
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
2- تعريف (إعلان) الرسائل والمتغيرات المستخدمة قبل الدخول للدالة الرئيسية
· الرسالة الأولى ثابتة وتنص على DVM Project .
char Message1[] = “DVM Project”;
  • تعريف متغير لحفظ نتيجة التحويل باسم ADC_Value ومتغير لحفظ جهد العرض باسم DisplayVolt
unsigned int ADC_Value, DisplayVolt;
· والاشارة إلى متغير باسم volt يحتوى على نص عرض الجهد بالصيغة 00.0
char *volt = "00.0";
3- الدالة الرئيسية : ونبدءها بإعدادات الميكروكونترولر :
void main() {
# تهيئة الطرف RA0/AN0 كمدخل تناظرى وباقى الأطراف كمداخل / مخارج رقمية

ADCON1 = 0b00001110 ; // RA0/AN0 is analog input
# تخصيص موديول المحول داخليا للقناة AN0 .
ADCON0 = 0 ; // Analog channel select @ AN0

# تهيئة جميع أطراف المنفذ PORTB والمنفذ PORTA كمخارج فيما عدا طرف الدخل التناظرى AN0
TRISB = 0b00000000; // PORTB All Outputs
TRISA = 0b00000001; // PORTA All Outputs, Except RA0
· بعد ذلك تهيئة وحدة العرض LCD لبدء العمل

Lcd_Init(); // Initialize LCD
· ومسح الشاسة
Lcd_Cmd(_LCD_CLEAR); // CLEAR display
· ومنع ظهور (عرض) المؤشر على الشاشة
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
· ثم كتابة الرسالة الثابتة وهى الرسالة الأولى : DVM Project بدءا من الصف الأول والعامود الأول
Lcd_Out(1,1,Message1);
· ثم كتابة حرف V فى الصف الثانى والعامود العاشر لتظهر بعد قيمة الجهد .

Lcd_Chr(2,10,'V');
· الدخول فى الحلقة الغير منتهية do{…} while(1) حيث يتم تنفيذ :
do {
# قراءة المدخل التناظرى من القناة رقم 0 ونسخ نتيجة التحويل إلى سجل المتغير ADC_Value .
ADC_Value = ADC_Read(0);
# ضرب محتويات سجل المتغير ADC_Value فى 2 ونسخ النتيجة لسجل المتغير DisplayVolt ( على سبيل المثال 0462 )

DisplayVolt = ADC_Value * 2;
· الحصول على العدد الصحيح لخانة الآلاف : بالقسمة على 1000 وإضافة العدد 48 لتحويل العدد السابق لكود أسكى ونسخ العدد فى الخانة رقم 0 للمتغير volt ( 0462 / 1000 = 0 كعدد صحيح ).
volt[0] = DisplayVolt/1000 + 48;
· الحصول على العدد الصحيح للمئات : بقسمة محتويات سجل المتغير DisplayVolt على 100 ثم إيجاد باقى قسمة النتيجة على 10 . ثم يضاف العدد 48 للتحويل إلى كود أسكى وتخزين النتيجة بالخانة رقم 1 بسجل المتغير volt ( 0462/100 =4 كعدد صحيح وباقى قسمة النتيجة على 10 هى العدد 4 المطلوب ) .
volt[1] = (DisplayVolt/100)%10 + 48;
· نكرر بالنسبة للعدد الصحيح للعشرات ( 0462 /10 = 46 كعدد صحيح وباقى قسمة النتيجة على 10 هى العدد 6 المطلوب "القسمة تساوى أربعة صحيح والباقى 6 وهو المطلوب )
volt[3] = (DisplayVolt/10)%10 + 48;
· ثم كتابة محتويات السجل volt بدءا من الصف الثانى والعامود الخامس
Lcd_Out(2,5,volt);
· التأخير لفترة 500 ملى ثانية للسماح بمشاهدة العرض .
delay_ms(500); // Hold for 500 ms
· تكرار العملية بصفة مستمرة لتحديث قراءة المدخل التناظرى والعرض .
} while(1);
} // End main()











__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #14  
قديم 09-22-2011, 04:57 PM
 
كود:
/* Project: Digital Voltmeter based on PIC16F877  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 char Message1[] = "DVM Project"; unsigned int ADC_Value, DisplayVolt; char *volt = "00.0"; void main() { ADCON0 = 0 ; // Analog channel select @ AN0  ADCON1 = 0b00001110 ; // RA0/AN0 is analog input    TRISB = 0b00000000; // PORTB All Outputs  TRISA = 0b00000001; // PORTA All Outputs, Except RA0   Lcd_Init();        // Initialize LCD  Lcd_Cmd(_LCD_CLEAR);      // CLEAR display  Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off  Lcd_Out(1,1,Message1);  Lcd_Chr(2,10,'V'); do {   ADC_Value = ADC_Read(0);   DisplayVolt = ADC_Value * 2;   volt[0] = DisplayVolt/1000 + 48;   volt[1] = (DisplayVolt/100)%10 + 48;   volt[3] = (DisplayVolt/10)%10 + 48;   Lcd_Out(2,5,volt);   delay_ms(500);   // Hold for 500 ms  } while(1);} // End main()
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
  #15  
قديم 09-22-2011, 04:59 PM
 
الملفات الكاملة للتدريب على الرابط

http://www.4shared.com/file/w5zCa_KN/ADC-LCD-DVM-PROJECT.html
__________________
angel4angel4angel4angel4angel4
رد مع اقتباس
إضافة رد

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


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

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


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
دورات تدريبية في فن التفاوض الفعال و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتارية معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 12-04-2010 10:38 AM
دورات تدريبية فيالذكاء الفطري وتطبيقاتة و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:19 PM
دورات تدريبية في الشراء الالكتروني و تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:15 PM
دورات تدريبية في القيادة الادارية الشاملة تعقد في الاردن سوريا لبنان تركيا مصر المغرب تونس ماليزيا دبي و دورات تدريبية في ادارة الجوده الشامله دورات في اانظمة الجوده ودورات تدريبية في التخطيط الاستراتيجي و دورات تدريبية في العلاقات العامه و السكرتاري معهدالمجدللتدريب أرشيف المواضيع الغير مكتمله او المكرره او المنقوله و المخالفه 0 11-29-2010 03:12 PM


الساعة الآن 05:15 AM.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

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