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

   

hazemshoep
:: مهندس ::
تاريخ التسجيل: Jan 2007
الدولة: EGYPT
المشاركات: 13
نشاط [ hazemshoep ]
قوة السمعة:
قديم 07-09-2010, 02:45 AM المشاركة 209   
افتراضي



السلام عليكم
كل عام وانتم بخير
جزاكم الله كل خير بشمهندس احمد ولكل من يساهم في هذا العمل الرائع ولعل المانع الذي عطلك عن استكمال المسلسل خيرا وباذن الله نكمله بعد رمضان وعلي الاقل يكون تذكره لنا برمضان وفضائله

بالمناسبة وانا بادور في المنتديات وجدت دورة لشرح المايكروسي ايضا علي اللينك التالي
المستوي الاول
المستوي الثاني

وهذا لا يقلل ابدا من مجهود البشمهندس احمد وفضله علينا بعد الله في هذا المجال
واتمني منه ايضا عند عودته -إن اراد- ان يتواصل مع صاحب الموضوع ويتعاونو في اخراج محتوي اكثر اثراءا لتكتمل الفائدة

اعلانات

الصورة الرمزية tata2
tata2
:: عضو متميز ::
تاريخ التسجيل: Jan 2007
الدولة: https://t.me/pump_upp
المشاركات: 233
نشاط [ tata2 ]
قوة السمعة:
قديم 09-09-2010, 01:35 PM المشاركة 210   
افتراضي


ايه اللي حصل لماذا توقف نشاط الجميع
لي سؤال للاخ بندر
كيف اجعل متغير تكتب قيمته علي
LCD

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

ahmad abdullah
:: مهندس متميز ::
تاريخ التسجيل: Jun 2010
الدولة: لبنان-فلسطين
المشاركات: 584
نشاط [ ahmad abdullah ]
قوة السمعة:
قديم 09-09-2010, 02:26 PM المشاركة 211   
افتراضي


يا اخوان ... ارجو منكم الترتيب ... يعني ما تفوتوا بعدة مواضيع ... كنا بلشنا بالLCD و بعدين بالPWM لذلك ... ارجو منكم اختيار واحد من هذه الاختيارات .. و البدء بالمناقشة ... السلام عليكم ... و عيد مبارك


الصورة الرمزية tata2
tata2
:: عضو متميز ::
تاريخ التسجيل: Jan 2007
الدولة: https://t.me/pump_upp
المشاركات: 233
نشاط [ tata2 ]
قوة السمعة:
قديم 09-09-2010, 09:26 PM المشاركة 212   
افتراضي


في انتظار المهندس احمد يعيد علينا
وكل عام والجميع بخير


الصورة الرمزية Eng_Bandar
Eng_Bandar
:: عضو فضي ::
تاريخ التسجيل: Jul 2009
الدولة: المملكة العربية السعودية
المشاركات: 195
نشاط [ Eng_Bandar ]
قوة السمعة:
قديم 11-09-2010, 05:42 AM المشاركة 213   
افتراضي


ايه اللي حصل لماذا توقف نشاط الجميع
لي سؤال للاخ بندر
كيف اجعل متغير تكتب قيمته علي
LCD
ممكن توضح سؤالك أكثر


الصورة الرمزية Eng_Bandar
Eng_Bandar
:: عضو فضي ::
تاريخ التسجيل: Jul 2009
الدولة: المملكة العربية السعودية
المشاركات: 195
نشاط [ Eng_Bandar ]
قوة السمعة:
قديم 11-09-2010, 07:38 AM المشاركة 214   
افتراضي


PWM

اليوم سوف نتناول هذا الموضوع بشيء من التفصيل
هذا الإختصار للتالي

Pulse Width Modulation

ما هو ؟

نشاهد الصورة التالية


كما تشاهدون أن الـ PWM عبارة عن نبضة أو Puls لها بداية و لها نهاية هذه النبضة تتكون من التالي

Ton & Toff & Ttotal

قبل الدخول للقوانين ما هي الفائدة من PWM ؟
هو التحكم بقيم تماثلية عن طريق قيم رقمية يعني استطيع التحكم بالفولت عن Duty cycle .

قبل الشرح الفائدة يجب أن تعرف بعض الأشياء
ما هو الـ Duty Cycle ?

نشاهد القانون التالي


نسبة الـ Ton لـ Ttotal .

إلى الآن لم تفهم الفائدة ؟ نعم كلامك صحيح لكن استمر في القراءة .

نأخذ قانون آخر و هو علاقة خرج الفولت مع Ton

نشاهد القانون التالي


و نحن نعرف أن دخل البك يساوي 5 فولت و بالتالي خرج أطرافه حالتين إما صفر أو 5 فولت . و من خلال مبدأ الـ PWM استطيع أن اجعل الخرج يبدأ من صفر حتى 5 فولت . كيف ذلك ؟ نأخذ مثال لتوضيح ذلك

لو أردت أن اجعل خرج البك عن طريق الـ PWM يساوي 2.5 فولت كيف ذلك ؟ نشاهد التالي

من خلال القوانين السابقة نستطيع جعل الخرج 2.5 فولت عن طريق التحكم بالـ Duty Cycle و لا تنسى أن الـ Duty Cycle عبارة عن نسبة مئوية يعني لو كان الـ Duty Cycle يساوي 50 % فإن نصف الخمسة فولت سوف تصبح 2.5 فولت و كلما زاد الـ Duty Cycle زادت قيمة الخرج فالعلاقة بين Vout و الـ Duty Cycle علاقة طردية .

شاهد العلاقة التالية


Vout = 0.5*5 = 2.5V

و بالطريقة هذه استطيع التحكم بالخرج .
الآن نرجع للسؤال ما هي الفائدة من الـ PWM ؟ باختصار لو كان هناك DC motor مشبوك بطرف البك الذي يولد لي الـ PWM لاستطعت التحكم بسرعته من خلال تغيير Duty Cycle الذي بدوره يغير الخرج و كلما زاد الخرج زادت سرعة الـ DC motor . ارجو أنك عرفت ما هي الفائدة من هذا النوع و للمعلومية هناك فوائد أخرى تستطيع أن توظف هذه الميزة من خلال ما تريد عمله من مشاريع .




الأكثر إثارة في التالي
هناك أنواع كثيرة من البك تدعم هذه الخاصية نأخذ مثال و هو البك رقم 16f877 و لاحظ أن هذا البك يحتوي على رجلين تولد لي هذه الخاصية نشاهد التالي


لاحظ كلمة CCP أي هذه الرجل هي التي سوف تولد لي الـ PWM و هذا البك يمتلك رجلين لتوليد الـ PWM فهي تعتبر ميزة إذاً في البك 16f877 الرجل 16 و 17 هي المسؤولة عن هذا .

الآن نأتي لأهم نقطة في هذا الموضوع و هي لغة البرمجة الميكروسي و هي التي من خلالها نتحكم بالـ duty cycle و كيف نفعل خاصية الـ PWM في الرجلين 16 و 17 .

اللغة المستخدمة
MikroC Pro 3.8

الأوامر الضرورية


هذا الأمر هو المسؤول عن تهيئة أمر توليد الـ PWM فإذا لم تضع هذا الأمر البك سوف يعتبر الـرجلين 16 و 17 كمنفذ فقط يدخل أو يخرج فولت .

صيغة الأمر


5000 تردد الموجة و تستطيع تغييره على حسب ما تريد
و اللون الأخضر هي الصيغة التي يجب أن تكتبها في الكود و رقم واحد PWM1 أي فعل الـ CCP1 في البك أي استخدم الرجل 16 . في البك 16f877 هناك رجلين لخاصية الـ PWM فإذا أردت الرجل 16 استخدم PWM1 و إذا أردت الرجل 17 استتخدم PWM2 و هكذا.

PWM1_Set_Duty

و هو المسؤول عن تغيير الـ Duty Cycle

و صيغته كالتالي


الصيغة باللون الأخضر و الرقم 192 لجعل الـ Duty Cycle
75 % هذا الرقم (192) من 0 إلى 255 حيث 0 يمثل 0 % و 255 تمثل 100%

و من خلال العلاقة التالية نعرف كيف نحسب هذا الرقم


PWM1_Start

و هو لعملية بدأ توليد الـ PWM
صيغة الأمر



PWM1_Stop

و هو لعملية وقف توليد الـ PWM
صيغة الأمر


أخيرا مشاهدة المحاكاة ببرنامج البروتيس



النتيجة




و أخيرا هذا هو الكود




ملاحظة
Proteus 7.6 PS0 يوجد فيه مشكلة في الـ PWM فلا تستغرب أن لا يشتغل معك الكود استخدم Proteus 7.7

ارجو أنكم استفدتم من هذا الدرس و ارجو أنه حاز على الرضى .



و قبل الختام
هذه مفاهيم أساسية يجب أن تعرفها

Duty Cycle

و هي نسبة الـ Ton لـ Ttotal


The PWM resolution

أقصى عدد نبضات في الفترة



The PWM period


شاهد الصورة التالية




frequency of PWM

f = 1/T


حيث الـ T هي الفترة أو period



حقوق النسخ محفوظ لكل مسلم
يجوز نشره و توزيعه و طباعته بأي وسيلة و لا يحق نشره بطريقة تجارية أو نسب هذا العمل لغير كاتبه

تحياتي للجميع

Eng_Bandar


التعديل الأخير تم بواسطة : Eng_Bandar بتاريخ 11-09-2010 الساعة 07:59 AM

الصورة الرمزية tata2
tata2
:: عضو متميز ::
تاريخ التسجيل: Jan 2007
الدولة: https://t.me/pump_upp
المشاركات: 233
نشاط [ tata2 ]
قوة السمعة:
قديم 11-09-2010, 11:43 AM المشاركة 215   
افتراضي


انا الان اعرف كيف اكتب كلمة او حرف علي
LCD
وممكن اكتب رقم علي انه حرف
طيب كيف اكتب مثلا
for(x=0,x>9,x++)
{ lcd_out(1,1,x)}

او شيء من هذا القبيل
طبعا اللي انا كاتبه فيه اخطاء لكن انا عايزك تعرفني هذه النقطة


الصورة الرمزية mhmd.sh89
mhmd.sh89
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2009
الدولة: لبنان-ضاحية العزة والكرامة
المشاركات: 184
نشاط [ mhmd.sh89 ]
قوة السمعة:
قديم 11-09-2010, 03:38 PM المشاركة 216   
افتراضي


كود:
char x;


...
...


for(x=0;x<9;x++)
     
    Lcd_out(1,1,x);// or  Lcd_chr_cp(x);



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