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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 12:08 PM المشاركة 1   
افتراضي التحويل من تناظرى لرقمى A / D converter ولغة Basic والمترجم Proton : Twitter FaceBook Google+



التحويل من تناظرى لرقمى A / D converter ولغة Basic والمترجم Proton :
مقدمة : الدالة (الروتين الفرعى) Adin :
الصيغة :
كود:
Variable = Adin channel number

الغرض :
قراءة القيمة من المحول من تناظرى إلى رقمى الموجود ضمن بناء الميكروكونترولر PIC .
العوامل :
Variable : هو متغير يتم تعريفه بمعرفة المستخدم .
Channel number : يمكن أن يكون ثابت أو متغير أو تعبيير .
مثال : قراءة القيمة من القناة "0" للمحول ADC ووضع النتيجة فى المتغير Var1 :

كود:
' Read the value from channel 0 of the ADC and place in variable Var1. 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 = %00000001 ' Configure AN0 (PortA.0) as an input ADCON1 = %10000000 ' Set analogue input on PortA.0 Var1 = Adin 0 ' Place the conversion into variable Var1





لعلك لاحظت وجود ثلاثة إعلانات قبل استخدام دالة قراءة الدخل التناظرى Adin .

إعلانات الأمر Adin :
يوجد ثلاثة إعلانات لتوجيهات من أجل الاستخدام مع الدالة Adin ، وهى :
الإعلان الأول : تحديد عدد بتات (دقة) نتيجة التحويل
الصيغة :

كود:
Declare Adin_Res 8, 10, or 12


الغرض :
تحديد عدد بتات النتيجة ، أو دقة التحويل .
إذا لم يتم استخدام هذا الإعلان ، عندئذ يكون الوضع الافتراضى للميكروكونترولر PIC هو المستخدم . على سبيل المثال ، سلسلة الميكروكونترولر 16F87X وضعها الافتراضى 10-bit .
الإعلان الثانى : تحديد مصدر ساعة المحول ADC
الصيغة :

كود:
Declare Adin_Tad 2_FOSC, 8_FOSC, 32_FOSC, 64_FOSC, or FRC.

الغرض :
تحديد مصدر ساعة المحول من تناظرى لرقمى . يوجد أربع خيارات لمصدر الساعة المستخدم بواسطة المحول من تناظرى لرقمى . الاختيار FRC يعنى استخدام المذبذب RC الداخلى وهو الوضع الافتراضى .

الإعلان الثالث : تحيد زمن أخذ العينات
الصيغة :
كود:
Declare Adin_Stime 0 to 65535 microseconds (us).

الغرض :
زمن أخذ العينة يسمح للمكثفات الداخلية للشحن بالكامل قبل أخذ العينة . هذا الزمن قد تكون قيمته من 0 إلى 65535 ميكروثانية . القيمة النموذجية تكون من 50 إلى 100 ميكروثانية . القيمة الافتراضية هى 50 ميكروثانية .


ملاحظات :
قبل استخدام الدالة Adin :
· يجب تحديد السجل TRIS لطرف الدخل المطلوب .
· أيضا ، يجب تحديد السجل ADCON1 تبعا للطرف المطلوب أن يكون دخل تناظرى ، وفى بعض الحالات يتم إعداد شكل نتيجة التحويل (المحازاة) .
· فى حالة تنفيذ تحويلات متعددة ، يجب استخدام تأخير زمنى صغير بعد الدالة Adin . وهذ يسمح بالمكثفات الداخلية للمحول من تناظرى لرقمى بالتفريغ الكامل كما يلى :


كود:
Again: Var1 = Adin 3 ' Place the conversion into variable Var1 DelayUs 1 ' Wait for 1us Goto Again ' Read the ADC forever

التحويل من تناظرى إلى رقمى مع الميكروكونترولر PIC16F87X :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 12:09 PM المشاركة 2   
افتراضي


التحويل من تناظرى إلى رقمى مع الميكروكونترولر PIC16F87X :
السجل ADCON0 :
السجل ADCON0 يختار شيئين . الشىء الأول : يختار القناة أو الطرف المستخدم فى أخذ عينة الإشارة التناظرية . والشىء الثانى : يختار سرعة التحويل وتسمى TAD وهى تعتمد على مصدر إشارة الساعة .




عن طريق البتات الثلاثة لاختيار القناة CHS0 - CHS2 يتم اختيار طرف الدخل / الخرج الذى يؤخذ منه العينة .
البتات ADCS0 و ADCS1 تحدد سرعة التحويل TAD .
البت ADON تقوم بتوصيل القدرة لوحدة المحول A/D .
البت GO/DONE عند تحديدها بواحد يبدأ التحويل ، وتبقى بواحد طالما أن التحويل جارى ، عند اكتمال التحويل ونقل البيانات إلى سجلات النتيجة ADRES فإن هذه البت يتم مسحها (تصفيرها) تلقائيا لبيان اكتمال التحويل .
لتجنب تلف الدوائر الرقمية ، يجب تحديد إعدادات الأطراف التناظرية قبل الحصول على بيانات تناظرية .









الأطراف المطلوب استخدامها كمداخل تناظرية يتم تحديدها عن طريق البتات الأربعة PCFG0 - PCFG3 حسب الميكروكونترولر المستخدم .
البت ADFM تحدد شكل نتيجة التحويل ، الوضع الافتراضى بصفر تكون المحازاة جهة اليسار .






جدول إعدادات السجل ADCON1 للميكروكونترولر PIC16F877A ، لاحظ أن ADCON1 = 7 تجعل جميع أطراف المنفذ PORTA والمنفذ PORTE مداخل / مخارج رقمية digital . الوضع الافتراضى هو ADCON1=0 أى أن جميع الأطراف تكون تناظرية .
أمثلة :
لاستخدام الطرف AN0 كدخل تناظرى وباقى الأطراف دخل / خرج رقمى يكون : ADCON1=%1110 مع المحازاة جهة اليسار ، وهو الوضع1/0 .
فى الوضع 3/0 يتم استخدام ثلاثة مداخل تناظرية AN0 , AN1 , AN3 والباقى رقمى ويكون ADCON1=%0100 مع المحازاة جهة اليسار .

التدريب الأول :

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 12:11 PM المشاركة 3   
افتراضي


التدريب الأول :
واحدة من أبسط طرق التجريب ، هى توصيل مقاومة متغيرة إلى المدخل التناظرى . ويتم توصيل نهايتى المقاومة المتغيرة بالجهد 5V والأرضى GND وتوصيل الطرف الأوسط ( المنزلق - المتحرك) بطرف الدخل التناظرى. تحريك المنزلق سوف يغير من جهد الدخل ، حيث يستخدم نظام التحويل من تناظرى لرقمى فى أخذ عينات هذا الدخل ثم عرض البيانات على شاشة LCD .
الدائرة الكهربية :





البرنامج :


كود:
; ADC test 10 bit Device = 16F877A Xtal=20
LCD_DTPin PORTB.4 LCD_RSPin PORTB.2 LCD_ENPin PORTB.3
Adin_Res 10 ; Set the resolution to 10 Adin_Tad FRC ; Choose the RC osc for ADC samples Adin_Stime 100 ; Allow 100us for charge time
ADCON1 = %10000010 ; Set PORTA analog and right justify result Input PORTA.0 Dim raw As Word Dim v As Float
Print Cls Loop: raw=ADIn 0 Print At 1,1,"Raw:", Dec4 raw v=(5/1023)* raw Print At 2,1, Dec3 v DelayMS 2000 GoTo Loop End
فى هذا البرنامج يتم قراءة حالة المقاومة المتغيرة المتصلة بالقناة التناظرية AN0 .
يتم استخدام ثلاثة إعلانات لإعداد الدخل التناظرى :
· ADIN_RES 10 : يشير إلى استخدام الدقة 10-bit .
· ADIN_TAD FRC : يشير إلى أنه سوف يتم استخدام المذبذب RC الداخلى .
· ADIN_STIME 100 يشير إلى أن زمن أخذ العينة هو 100 ملى ثانية .
يتم إعداد السجل ADCON1 بحيث تكون النتيجة محازاة جهة اليمين ، مع إعداد الطرف PORTA.0 كمدخل تناظرى .
لاحظ أنه لم يتم ذكر العبارة ALL_Digital True فى هذا البرنامج .
بعد ذلك يتم جعل الطرف PORTA.0 كطرف دخل .
الأمر ADIn يقرأ القناة "0" للوحدة التناظرية ، وهى هنا PORTA.0 . نتيجة التحويل العائدة تكون قيمة عددية بحجم 10-bit يتم حفظها فى المتغير raw .
المتغير raw سوف يحتوى على قيمة من "0" إلى "1023" . القيمة 1023 تعنى 5V بالكامل .
بعد ذلك يتم تحويل القيمة العائدة إلى "فولت" volts عن طريق ضرب قيمة المتغير raw فى النسبة (5/1023) وحفظ النتيجة فى متغير من نوع العدد ذو العلامة العشرية float ثم عرض كل من القيمتين على شاشة LCD .
تغيير المقاومة المتغيرة سوف يغير من قيمة المتغير raw ، بالإضافة إلى الجهد المقاس فعليا ، على وحدة العرض LCD .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 12:12 PM المشاركة 4   
افتراضي


التدريب الثانى :
فى هذا التدريب سوف نستخدم ثلاثة قنوات للتحويل من تناظرى إلى رقمى من الثمانى قنوات المتوفرة فى الميكروكونترولر PIC16F877A ، هذا الميكروكونترولر له 40 طرف ، منها 33 طرف كمداخل / مخارج ، ويمتلك ذاكرة برنامج (فلاش) حجمها 8192 كلمة برمجة ، وذاكرة RAM حجمها 368 بايت ، ذاكرة EEPROM حجمها 256 بايت ، وبالتالى فإن هذا الميكروكونترولر مصمم للمشاريع الكبيرة . هذا التدريب يساعد على التعرف على الميكروكونترولر ذات القدرة الكبيرة ، ولكن من الضرورى هنا استخدام مذبذب خارجى ، حيث أنه لا يمتلك مذبذب داخلى ، كما يلزم استخدام مقاومة رفع على طرف الإعادة MCLR ، حيث لا يوجد طريقة لتعطيل الإعادة كما فى الميكروكونترولر PIC16F628A ، على سبيل المثال .

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


البرنامج :

كود:
Device = 16F877A Xtal = 20
LCD_DTPin PORTB.4 LCD_RSPin PORTB.2 LCD_ENPin PORTB.3
Adin_Res 8 ; Set the resolution to 8 Adin_Tad FRC ; Choose the RC osc for ADC samples Adin_Stime 100 ; Allow 100us for charge time
Input PORTA.0 Input PORTA.1 Input PORTA.3
Dim p1 As Byte ; variable to store potentiometer 1 Dim p2 As Byte ; variable to store potentiometer 2 Dim p3 As Byte ; variable to store potentiometer 3
ADCON1 =%100 ; configure PORTA.0 , PORTA.1,PORTA.3 as analog channels in A / D converters
start: DelayMS 300 p1=ADIn 0 ;Read and store channel 0 p2=ADIn 1 ; Read and store channel 1 p3=ADIn 3 ; Read and store channel 3
Cls ;LCD clean Print At 1,1 ,"Pot1 Pot2 Pot3" ; send text at line 1 box 1 Print At 2,1,Dec p1 ;print at line 2 box 1 the decimal value of p1 Print At 2,7,Dec p2 ;print at line 2 box 1 the decimal value of p1 Print At 2,12,Dec p3 ;print at line 2 box 1 the decimal value of p1
GoTo start
End
التدريب الثالث : حساس درجة الحرارة LM35 :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 12:13 PM المشاركة 5   
افتراضي


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









البرنامج :

كود:
' LM35 temperature Device = 16F877A Xtal=20
LCD_DTPin PORTB.4 LCD_RSPin PORTB.2 LCD_ENPin PORTB.3
Adin_Res 10 ' Set the resolution to 10 Adin_Tad FRC ' Choose the RC osc for ADC samples Adin_Stime 100 ' Allow 100us for charge time
ADCON1 = %10000010 ' Set PORTA analog and right justify result Input PORTA.0 Dim raw As Word Dim v As Float Print Cls Loop: raw=ADIn 0 Print At 1,1,"Raw:", Dec4 raw v=(5/1023)* raw v=v*1000 Print At 2,1, Dec1 v ,"mv" v=v/10 '1 degree centigrade for every 10mV Print At 2,9,"T:", Dec1 v ,"C" DelayMS 2000 GoTo Loop End


الصورة الرمزية Omar Mekkawy
Omar Mekkawy
:: مهندس متميز ::
تاريخ التسجيل: Aug 2011
الدولة: مصر
المشاركات: 1,523
نشاط [ Omar Mekkawy ]
قوة السمعة:0
قديم 22-07-2013, 12:20 PM المشاركة 6   
افتراضي


والله شرحك رائع فعلاً ولكنني لم أفهم حتى الآن كيف أستخدم ADCON1 فالمعلومات هنا صعبة على
فبصراحة انا هاوي ولست خريج إلكترونيات
فهل توجد طريقة سهلة وبسيطة في إستخدام ADCON1 للمبتدئين أمثالي وياريت يكون الشرح أبسط من ذلك

وإن شاء الله راح اعمل برنامج بنفسي بسيط بالفيجوال بيسك دوت نت يساعد المبرمجين لما أفهم الشرح


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 22-07-2013, 12:44 PM المشاركة 7   
افتراضي


والله شرحك رائع فعلاً ولكنني لم أفهم حتى الآن كيف أستخدم ADCON1 فالمعلومات هنا صعبة على

فبصراحة انا هاوي ولست خريج إلكترونيات
فهل توجد طريقة سهلة وبسيطة في إستخدام ADCON1 للمبتدئين أمثالي وياريت يكون الشرح أبسط من ذلك


وإن شاء الله راح اعمل برنامج بنفسي بسيط بالفيجوال بيسك دوت نت يساعد المبرمجين لما أفهم الشرح
أخى الكريم شكرا جزيلا لك

ببساطة شديدة عند استخدام الميكروكونترولر PIC16F877A يمكنك :
1-عدم كتابة السجل ADCON1 على الأطلاق عندئذ يمكنك استخدام جميع أطراف المنفذ PORTA والمنفذ PORTE كمداخل تناظرية (8 مداخل تناظرية) لأن هذا الوضع هو الوضع الافتراضى لهذا السجل ، وتحصل على نفس النتيجة أن كتبت ADSCON1=0 .
2- إذا أردت استخدام طرف محدد أو عدة أطراف محددة كمداخل تناظرية وباقى الأطراف تعمل لوظائف أخرى يجب الرجوع إلى الجدول المرفق لتحديد خياراتك التى تتمثل فى أحد السطور . وهنا يمكنك ذكر خياراتك لتحديدها وشرحها على الجدول .

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


الصورة الرمزية Omar Mekkawy
Omar Mekkawy
:: مهندس متميز ::
تاريخ التسجيل: Aug 2011
الدولة: مصر
المشاركات: 1,523
نشاط [ Omar Mekkawy ]
قوة السمعة:0
قديم 24-07-2013, 03:54 PM المشاركة 8   
افتراضي


يعطيك العافية استاذي

ولكنني أواجه مشكلة في الجدول التالي :



مامعنى +Vref و -Vref فأنا لم افهمها ؟

ثانياً :- انا اريد ان استخدم porta.0 و porta.3 كدخل تناظري و porta.1 و porta.2 كمخارج رقمية للشاشة ولكنها لاتوجد بالجدول

إضافة رد

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

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

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


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

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