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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 20-03-2012, 02:54 AM المشاركة 65   
افتراضي



أخى الكريم الفاضل

شكرا حزيلا لك

بارك الله فيك

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

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 20-03-2012, 02:59 AM المشاركة 66   
افتراضي


الدرس الرابع عشر فى ملف بصيغة word على الرابط :

http://www.eeecb.com/vb/showthread.php?p=2809&posted=1#post2809

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

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


الدرس الخامس عشر :

المداخل التناظرية والتحويل من تناظرى لرقمى :

المحتويات :
أولا : معلومات هامة عند التعامل مع المداخل التناظرية للميكروكونترولر PIC16F876 و PIC16F877 :
ثانيا : إمكانيات المترجم mikroC PRO فى التعامل مع المحول من تناظرى لرقمى ADC


التفاصيل على الرابط :

http://www.eeecb.com/vb/showthread.php?p=2811&posted=1#post2811




الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 21-03-2012, 03:28 AM المشاركة 68   
افتراضي


الدرس الخامس عشر
الجزء الثالث

تقنية برمجة التحويل من تناظرى لرقمى A/Dبالميكروكونترولر PIC
مقدمة :
الميكروكونترولر PIC16F877A يوجد فى بناؤه الداخلى 8 قنوات تحويل من تناظرى لرقمى بدقة 10 بت لكل قناة .
عند استخدام المحول ADC بدقة 10 بت وبجهد مرجعى بقيمة 5V نحصل على الدقة بالصيغةالتالية :


5V/1023= 0.00489 V /div
المحول ADC متصل بالأطراف :

RA0 (AN0), RA1 (AN1), RA2 (AN2), RA3 (AN3), RA5 (AN4), RE0 (AN5), RE1 (AN6), RE7 (AN7).
أمثلة على اختيار المداخل التناظرية عن طريق اختيار بتات السجل ADCON1:


التفاصيل على الرابط :

http://www.eeecb.com/vb/showthread.php?p=2812#post2812


ali79
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2007
المشاركات: 117
نشاط [ ali79 ]
قوة السمعة:
قديم 21-03-2012, 07:38 AM المشاركة 69   
افتراضي


استاذنا الكريم شكرا لك وجزاك الله عنا كل خير
هل يستطيع الميكروكنترولر قرائة الجهد اذا كان أقل من 0 فولت
اعني اذا كان -1 أو -2 000 الخ


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 22-03-2012, 01:32 AM المشاركة 70   
افتراضي


استاذنا الكريم شكرا لك وجزاك الله عنا كل خير
هل يستطيع الميكروكنترولر قرائة الجهد اذا كان أقل من 0 فولت
اعني اذا كان -1 أو -2 000 الخ
أخى الكريم شكرا جزيلا لك

الدالة :
ADC_Read

صيغتها :


كود:
unsigned ADC_Read(unsigned short channel);


كما ترى عائدها بيانات من النوع unsigned "بدون إشارة "

فهى غير قادرة على التعامل مع البيانات "بإشارة" signed .

كل ما تفعله قراءة جهد تناظرى فى الحدود من الصفر إلى خمسة فولت وتحوله إلى عدد يقع بين الصفر و 1023

يوجد العديد من تقنيات الإلكترونيات والبرمجة للتعامل مع الجهود السالبة .
إحدى هذه التقنيات متبع فى المشروع على الرابط التالى :

http://www.qariya.com/vb/showthread.php?t=105456


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 23-03-2012, 12:44 AM المشاركة 71   
افتراضي


الدرس السادس عشر
الجزء الأول
التعديل فى عرض النبضات PWM
أولا : مقدمة :







الكثير من دوائر التحكم فى القدرة الكهربائية تستخدم تقنية "التعديل فى عرض النبضات" PWM كأساس لعملها .
لفهم كيف تقوم هذه التقنية بالتحكم فى القدرة الكهربائية , تخيل جزء من دائرة على شكل مفتاح "سريع الفعل" والحمل المراد التحكم فيه (مصباح على سبيل المثال) كما فى الشكل التالى :





عندما يكون المفتاح مفتوح open لا يمر تيار فى المصباح وتكون القدرة المغذاة بصفر . فى لحظة غلق closeالمفتاح يستقبل الحمل الجهد الكامل للمصدر ويتم الإمداد بأقصى قدرة .
كيف نمد الحمل بقدرة متوسطة ؟ ولتكن 50% على سبيل المثال . أحد الأفكار هى جعل المفتاح يفتح ويغلق بسرعة للحصول على زمن فتح 50% وزمن غلق 50% . هذا يعنى أن , فى المتوسط , نصف الزمن يوجد به تيار (قدرة) ونصف الزمن لا يوجد به تيار (قدرة) .
يمكن القول أن القدرة المتوسطة كما لو كنا طبقنا جهد متوسط بقيمة 50% من جهد الدخل .



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




هذا المبدأ يستخدم للتحكم الدقيق باستخدام PWMعن طريق تعديل (تغيير) عرض النبضة للتحكم فى دورة الخدمة للإشارة المطبقة على الحمل وبالتالى القدرة المغذاة إليه .
التعديل فى عرض النبضات PWM من أحد التقنيات القوية المستخدمة فى أنظمة التحكم حاليا . فهى تستخدم فى التحكم فى سرعة المحركات وفى القياسات وفى الاتصالات وفى التحكم فى القدرة .
يتم إنجاز التعديل فى عرض النبضات بمساعدة "موجة مربعة" والتى يتم تغيير "دورة خدمتها" ( زمن دوام أو فعالية النبضة ON time وزمن تلاشى أو عدم فعالية النبضة) بغرض الحصول على "جهد خرج متغير" كنتيجة "للقيمة المتوسطة " للشكل الموجى كما فى الشكل العلوى , حيث Ton هو الزمن الذى يكون فيه الخرج مرتفعا و Toff هو الزمن الذى يكون فيه الخرج منخفضا . الزمن الإجمالى هو الزمن الدورى period للموجة حيث Ttotal = Ton +Toff .
يعرف دورة الخدمة Duty cycle للموجة المربعة بالصيغة التالية :
D = Ton / (Ton+Toff)= Ton/Ttotal


جهد الخرج يتغيرمع دورة الخدمة بالصيغة التالية :
Vout = D x Vin

Vout = (Ton/Ttotal) x VIN


من هذه العلاقة يتضح أن جهد الخرج يمكن أن يتغير مباشرة عن طريق تغيير قيمة Ton . فإذا كانت Ton فإن Vout يكون بصفر أيضا .
أمثلة :



بالرجوع إلى الشكل العلوى : إذا كان المنطق صفر logic (0) يدل (يشير) على حالة الفصل switch-off وأن المنطق واحد logic (1) يدل على حالة التوصيل switch-on فإن القدرة التى يستهلكها الحمل سوف تتناسب مباشرة مع فترة دوام (بقاء – وجود ) النبضة pulse duration.
مثال آخر شائع الاستخدام عمليا هو استخدام الإشارات ذات التعديل فى عرض النبضات PWM فى دوائر لتوليد إشارات بأشكال موجية محددة مثل الشكل الموجى الجيبى كما هو مبين بالشكل .




الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 23-03-2012, 01:07 AM المشاركة 72   
افتراضي



الدرس السادس عشر الجزء الثانى
ثانيا : التعامل مع تعديل عرض النبضات PWM بالمترجم ميكروسى برو والميكروكونترولر PIC :
الميكركونترولر PIC16F877A, على سبيل المثال , فى بناءه الداخلى 2 موديول CCP "إلتقاط – مقارنة - تعديل بعرض النبضة" هما CCP1 و CCP2 .
يمكننا التعامل بسهولة مع التعليمات الخاصة بتوليد أشارة ذات تعديل عرض النبضة PWM بالميكروسى برو.
ملحوظات هامة :
  • بعض الميكروكونترولر بها وحدات CCP متعددة . لكى تستخدم دوال مكتبة وحدة CCP محددة , ببياطة غير الرقم واحد بنموذج الدالة برقم الوحدة التى ترغب فى استخدامها , مثل PWM2_Start(); .
  • جميع وحدات PWM تستخدم المؤقت Timer2 فى عملها , لذلك لن تستطيع تعيين ترددات مختلفة لوحدات PWM مختلفة .

الدوال التى تتناول الموديول CCP1, على سبيل المثال , هى :
• Pwm1_Init
• Pwm1_
Set _Duty
• Pwm1_Start
• Pwm1_Stop

1- دالة تهيئة تردد إشارة PWM :
فى الميكروسى تستخدم الدالة Pwm_Init() فى تحديد تردد إشارة PWM بالهرتز (دورة لكل ثانية) :

الصيغة :
كود:
void PWM1_Init(const long freq);


هذه الدالة تقوم بتهيئة وحدة PWM للبدء "بنسبة دورة خدمة تساوى الصفر " . البارامتر freq هوالتردد بالهرتز Hz المطلوب من وحدة PWM العمل به ( يجب الرجوع للداتا شيت الخاصة بالميكروكونترولر لمعرفة القيم الصحيحة الصالحة مع التردد Fosc ) . هذه الدالة "ليس لها عائد" ويجب إستدعاؤها قبل استخدام إى دالة أخرى من مكتبة PWM .
ملحوظة :
حساب قيمة تردد PWM تم عن طريق المترجم ولذلك يحتاج المترجم لمعرفة البارامتر عند الترجمة وهذا هو السبب فى أن البارامتر freq يجب أن يكون "ثابت" const longوليس متغير .
مثال:
تهيئة وحدة PWM1 للعمل عند تردد 5KHz :


كود:
PWM1_Init(5000);


2- دالة "تحديد دورة الخدمة" Duty Cycle


الصيغة :


كود:

كود:
void PWM1_Set_Duty(unsigned short duty_ratio);

هذه الدالة بدون عائد void ويجب استدعاء الدالة Pwm1_Init قبل استخدام هذه الدالة .
عن طريق هذه الدالة يمكن تحديد دورة خدمة إشارة PWM . البارامتر duty_ratio يحدد النسبة المئوية لدرة الخدمة ويأخد القيمة من 0 إلى 255 (متغير من النوع unsigned short ) حيث أن القيمة 0 تمثل دورة خدمة بنسبة 0% و القيمة 127 تمثل دورة خدمة بنسبة 50% و القيمة 255 تمثل دورة خدمة بنسبة 100%.
يمكن حساب قيمة معينة لنسبة دورة الخدمة عن طريق العلاقة الخطية : (Percent*255)/100 .
  • لحساب القيمة المناظرة لدورة خدمة 10 % :
(10% * 255) / 100 = 25.5
ولأن القيمة يجب أن تكون من النوع unsigned short فيجب أن تكون عدد صحيح بين الصفر و 255 , بالتالى نأخد القيمة 25 ونكتب ما يلى :


كود:
PWM1_Set_Duty(25);

مثال :

كود:
PWM1_Set_ Duty (191); // تحديد دورة الخدمة بالقيمة 75 بالمئة







3- دالة البدء ودالة الإنتهاء :
من خلال دالة البدء PWM1_Start(); نقوم ببدء توليد إشارة PWM بالميكروكونترولر PIC ومن خلال دالة النهاية PWM1_Stop(); يتم إنهاء توليد إشارة PWM .

الصيغة :

كود:
void PWM1_Start(void); // initial signal generation module CCP1 PWM PIC void PWM1_Stop(void); stops the PWM signal generation module CCP1 PIC

هذه الدوال ليس لها عائد فهى من النوع void كما أن ليس لها بارامترات ويجب استدعاء الدالة Pwm1_Init قبل استخدام هذه الدالة .

مثال بسيط :

كود:
void main () { Pwm1_init (5000); // step 1: Initialize PWM1 module at 5KHz
Pwm1_Start (); //step2:start PWM1 Pwm1_Set_Duty (127); // step 3: Set duty for PWM1 : 50% while (1); }


فى البرنامج السابق تم تهيئة الموديول CCP1 بالميكروكونترولر PIC ليعمل بنظام PWM بتردد 5KHz ودورة خدمة 50% كما هو مبين فى الشكل التالى :


مثال آخر :
استخدام الموديول CCP2 بالميكروكونترولر PIC16F877A :



كود:
void main () { Pwm2_init (5000); // step 1: Initialize PWM2 module at 5KHz
Pwm2_Start (); //step2:start PWM2 Pwm2_Set_Duty (127); // step 3: Set duty for PWM2 : 50%
while (1); }




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