منتديات الالكترونيات العصريه  
yoursite.com page title .

استرجاع كلمة المرور طلب كود تفعيل العضوية تفعيل العضوية
العودة   منتديات الالكترونيات العصريه > منتدى الحاكمات الدقيقة Microcontroller > منتدى المتحكمات ميكرو بلغة السي MikroC

  #1  
قديم 07-24-2011, 05:05 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 8
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية


كثيرا ما نحتاج عمل PWM و نضطر لاستخدام انواع معينه من الميكرو كنترول بها طرف لاخراج ال PWM و فيما يلى
طريقة جديدة لعمل PWM لاى نوع من انواع الميكرو كنترول حتى اذا لم تحتوى على مكتبة داخلية لل PWM وذلك عن طريق استخدام التايمر زيرو

نحدد التردد المطلوب وتقوم بعمل حسابات معينة ليخرج لنا طرف الميكرو التردد المطلوب

ميزة استخدام التايمر زيرو هو ان الميكرو يمكنه ان ينفذ باقى الاوامر اثناء قيامه باخراج الPWM بدلا من استخدام اوامر التاخير الزمنى...


ارفق صورة للمشروع وانتظر تفاعلكم مع الموضوع كى اقوم بطرحة



رد مع اقتباس
  #2  
قديم 07-24-2011, 06:26 PM
الصورة الرمزية eng_a_sayed
eng_a_sayed eng_a_sayed غير متواجد حالياً
استاذ ومشرف اليكترونيات
 
تاريخ التسجيل: Jun 2008
الدولة: India in next Dec
المشاركات: 1,243
معدل تقييم المستوى: 22
eng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud of
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

رائع جداً هذا المجهود الطيب منك أخى أشرف

أتمنى أن ترفق فكرة البرنامج ولو بشرح بسيط فى أقرب وقت

تحياتى
__________________
رد مع اقتباس
  #3  
قديم 07-24-2011, 07:00 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 8
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

السلام عليكم مهندسنا الغالىeng_a_sayed . ..
احمد الله ان المشروع اعجبك فقد تعلمت كثيرا من مواضيع المايكرو فى دورتك فى هذا المنتدى...


المشروع:
استخدام ميكرو كنترول pic 16f628a لتوليد نبضات ترددها 50 هرتز

البرنامج:

كود PHP:
    [LEFT][LEFT]  //USING TMR0  AS PWM SOURCE
      // BY Eng : ASHRAF KAMAL ELHAMAHMY
             
  
char x;
  
void interrupt(){
   
x++;
   if(
x==5){
    
portb.f0=~portb.f0;
    
x=0;
    }
                        
    
tmr0=131;
    
INTCON.T0IF 0;         // timer will count 125 * prescale(=16)=2000 *5 (the x variable)=   10 ms   ==>
                              //PORTB  WILL change the bit state each 10 ms so the period will be
                              //Ton=10 ms && Toff=10 ms so T (total)=20 ms or 50 HZ

                
}

void main() {
          
trisb=0;
          
intcon=0b10100000;
          
option_reg=0x03;     // prescale  2 selected
          
tmr0=131;
          
portb=0;
          while(
1){

                
PORTB.F3=1;  // port b can do other thing while  doing the PWM 

          
}} 
[/LEFT][/LEFT]

بالطبع يمكن الحصول على عدد كبير من خرج ال PWM على عدة اطراف من المايكرو بعدد ارجل المايكرو المستخدم وليس كما هو الحال فى الميكرو ذو طرفى ال PWM

فى انتظار تفاعل الاعضاء للمشروع و مناقشتة و السلام عليكم و رحمة الله

التعديل الأخير تم بواسطة اشرف كمال ; 07-24-2011 الساعة 07:32 PM
رد مع اقتباس
  #4  
قديم 07-24-2011, 09:08 PM
الصورة الرمزية eng_a_sayed
eng_a_sayed eng_a_sayed غير متواجد حالياً
استاذ ومشرف اليكترونيات
 
تاريخ التسجيل: Jun 2008
الدولة: India in next Dec
المشاركات: 1,243
معدل تقييم المستوى: 22
eng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud of
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

ما شاء الله عليك

البرمجة ممتازة وقابلة للتطوير

وبالطبع يمكن الاستفادة من البرنامج ومن فكرته

تحياتى لك ولأفكارك النيرة

منتظرين فكرة رائعة أخرى

تحياتى
__________________

التعديل الأخير تم بواسطة eng_a_sayed ; 08-15-2011 الساعة 06:36 PM
رد مع اقتباس
  #5  
قديم 07-24-2011, 09:28 PM
الصورة الرمزية احمدابوالمعاطى
احمدابوالمعاطى احمدابوالمعاطى غير متواجد حالياً
أستاذ
PIC Microcontroller
 
تاريخ التسجيل: May 2009
المشاركات: 293
معدل تقييم المستوى: 12
احمدابوالمعاطى is a jewel in the roughاحمدابوالمعاطى is a jewel in the roughاحمدابوالمعاطى is a jewel in the roughاحمدابوالمعاطى is a jewel in the rough
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

بارك الله لك اخى اشرف بالفعل فكرة البرنامج جيده
رد مع اقتباس
  #6  
قديم 07-24-2011, 09:36 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 8
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

بارك الله فيكم جميعا و الموضوع تشرف بكم
رد مع اقتباس
  #7  
قديم 07-24-2011, 09:37 PM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 8
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

اقتباس:
المشاركة الأصلية كتبت بواسطة احمدابوالمعاطى مشاهدة المشاركة
بارك الله لك اخى اشرف بالفعل فكرة البرنامج جيده
اقتباس:
المشاركة الأصلية كتبت بواسطة eng_a_sayed مشاهدة المشاركة
ما شاء الله عليك

البرمجة ممتازة وقابلة للتطوير

وبالطبع يمكن الاستفادة من البرنامج ومن فكرته

تحياتى لك ولأفكارك النيرة

منتظرين فكرة رائعة أخرى

تحياتى
اقتباس:
المشاركة الأصلية كتبت بواسطة اشرف كمال مشاهدة المشاركة
بارك الله فيكم جميعا و تشرف الموضوع بكم



رد مع اقتباس
  #8  
قديم 07-28-2011, 11:22 PM
سعيد قادر سعيد قادر غير متواجد حالياً
مشرف
اليكترونيات
 
تاريخ التسجيل: Nov 2009
الدولة: العراق /كوردستان
المشاركات: 3,384
معدل تقييم المستوى: 22
سعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud of
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

شكرا لك ولاكن بصراحةلم افهم الكثير ارجو شرح الخطواط لكى نستوعب الفكرة
رد مع اقتباس
  #9  
قديم 07-29-2011, 02:22 AM
الصورة الرمزية اشرف كمال
اشرف كمال اشرف كمال غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة -مصر
المشاركات: 89
معدل تقييم المستوى: 8
اشرف كمال will become famous soon enoughاشرف كمال will become famous soon enough
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

اقتباس:
المشاركة الأصلية كتبت بواسطة سعيد قادر مشاهدة المشاركة
شكرا لك ولاكن بصراحةلم افهم الكثير ارجو شرح الخطواط لكى نستوعب الفكرة
السلام عليكم

الفكرة هى توليد تردد 50 هرتز او اى تردد ..
ولتحقيق ذلك نقوم بحساب الزمن الدورى للتردد المطلوب و فى حالتنا الزمن الدورى للتردد 50 كما نعلم هو
كود PHP:
1/5020 ms 
نريد الان ان يكون زمن Ton للنبضة هو
كود PHP:
10 ms 
وزمن ال Toff هو
كود PHP:
10 ms 
مهمتنا الان استخدام التايمر زيرو الموجود فى الميكرو كنترول ليعد زمن
كود PHP:
10 ms 
وتغيير حالة النبضه فى كل مرة من 1 الى 0 و العكس.

ليتم ذلك نقوم بحساب تردد الكرستاله المستخدمة و منها معهرفة زمن تنفيذ التعليمة فى كل دورة
كود PHP:
instruction cycle time 
فى حالة استخدام كريسالة 4MHZ يكون زمن التعليمة فى كل دورة هو 1 ميكرو ثانية لكل دورة.

اى ان التايمر زيرو سيستغرق 256 ميكرو ثانية فقط ليعد من صفر الى 256
وفى حالة استخدام مجزىء PRESCALER للتايمر بقيمة 256 يكون الزمن الكلى المحسوب هو
كود بلغة HTML:
256 * 256=65.536 ms
من هذا bالمنطق يمكننا ان نجعل التايمر زيرو يحسب زمن
كود بلغة HTML:
10 ms
نجعل التايمر يعد 125 عدة count بقيمة 125ميكرو ثانية
كود بلغة HTML:
(عن طريق تخزين قيمة 256-125=131)
ثم استخدام مجزىء بقيمة 16 بالتالى اصبح الزمن الكلى المحسوب حتى الان هو 125*16=2000 ميكرو ثانية او 2 ميللى ثانية



وهذا هو البرنامج كاملا


استخدمنا متغير اسمه x عندما يحدث طفحان للتايمر يزداد قيمتة حتى يصل الى القيمة 5 و فى هذة الحالة يكون الزمن الكلى المستغرق هو
كود بلغة HTML:
125*16*5=10 ms
كود PHP:
[LEFT][LEFT][LEFT// BY Eng : ASHRAF KAMAL ELHAMAHMY
             
  
char x;
  
void interrupt(){
   
x++;
   if(
x==5){
    
portb.f0=~portb.f0;
    
x=0;
    }
                        
    
tmr0=131;
    
INTCON.T0IF 0;         // timer will count 125 * prescale(=16)=2000 *5 (the x variable)=   10 ms   ==>
                              //PORTB  WILL change the bit state each 10 ms so the period will be
                              //Ton=10 ms && Toff=10 ms so T (total)=20 ms or 50 HZ

                
}

void main() {
          
trisb=0;
          
intcon=0b10100000;
          
option_reg=0x03;     // prescale  16 selected
          
tmr0=131;
          
portb=0;
          while(
1){

                
PORTB.F3=1;  // port b can do other thing while  doing the PWM 

          
}} 


ادعو الله ان يكون الامور اتضحت الان و لاى استفسار انا فى الانتظار

والسلام عليكم
رد مع اقتباس
  #10  
قديم 07-29-2011, 11:24 PM
سعيد قادر سعيد قادر غير متواجد حالياً
مشرف
اليكترونيات
 
تاريخ التسجيل: Nov 2009
الدولة: العراق /كوردستان
المشاركات: 3,384
معدل تقييم المستوى: 22
سعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud of
افتراضي رد: شرح طريقة جديدة لعمل pwm لانواع ميكرو لا يتوافر بها هذة الخاصية

شكرا لك استاذ اشرف اوضحت الكثير وباقى بعض الاستفسارات لدى :

فى حالة استخدام كريسالة 4MHZ يكون زمن التعليمة فى كل دورة هو 1 ميكرو ثانية لكل دورة.

طب لو كان الكريستالة المستخدمة 20MHZ هل زمن الدورة بيكون 5 ؟؟


وفى حالة استخدام مجزىء PRESCALER للتايمر بقيمة 256 يكون الزمن الكلى المحسوب هو


لماذا نستخدم مجزء ؟؟


نجعل التايمر يعد 125 عدة count بقيمة 125ميكرو ثانية


ولماذا 125 ؟؟


(عن طريق تخزين قيمة 256-125=131)


لم افهمها ماذا نفعل بالناتج ولماذا نحتاج لتخزين قيمته ؟؟


ثم استخدام مجزىء بقيمة 16

ممكن توضح اكثر لماذا تستخدم هنا مجزء ايضا ولماذا 16 ؟؟

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

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

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

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

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



الساعة الآن 09:50 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصريه

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77