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

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

الصورة الرمزية haidar ayad
haidar ayad
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2011
الدولة: العراق
المشاركات: 178
نشاط [ haidar ayad ]
قوة السمعة:0
قديم 16-05-2013, 03:55 PM المشاركة 1   
ha لماذا الكود هذا لا يخرج موجة pwm نقية ؟ Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاته
اخوتي انا اريد اخراج موجة pwm من هذا المايكرو وهو 12f683 وتكون على الشكل التالي للموجة السفلية (باللون الوردي) في الصورة :



فقمت بكتابة الكود هذا :

كود:
int i; 
 void main()
 {   ANSEL  = 9;
     trisio.f2=0;  
    loop:  
    PWM1_Init(5000);   
   PWM1_Start();  
  for( i=11;i<=245;i++) 
    {  PWM1_Set_Duty(i); }  
    for( i=244;i>=12;i--) 
    {PWM1_Set_Duty(i); } 
     goto loop; 
   }

لكن المشكلة انه عندما رايت الخرج للبيك في برنامج بروتوس على الـgpio.f2 فكانت الموجة مرة تكون منتظمة (نقية) ومرة تخرج غير منتظمة وليست pwm او قد تتخرج صفر وتتكرر هذه الحالة ....
فمالسبب في الكود لكي يخرج موجة نقية pwm ?



اعلانات

Daniel
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2011
المشاركات: 82
نشاط [ Daniel ]
قوة السمعة:0
قديم 17-05-2013, 07:23 AM المشاركة 2   
افتراضي


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

ملاحضة:- بالنسبة للكود ليس لدي أي تجربة عملية على لغة السي لذالك غذرا على التقصير من هذا الجانب.

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

zamalkawi
:: مهندس جيد ::
تاريخ التسجيل: May 2013
المشاركات: 270
نشاط [ zamalkawi ]
قوة السمعة:0
قديم 17-05-2013, 07:39 AM المشاركة 3   
افتراضي


هل يمكنك أن تضع الصورة التي تخرج لك من البروتوس؟


zamalkawi
:: مهندس جيد ::
تاريخ التسجيل: May 2013
المشاركات: 270
نشاط [ zamalkawi ]
قوة السمعة:0
قديم 17-05-2013, 08:45 AM المشاركة 4   
افتراضي


للأسف ليس لدي خبرة بهذا الأمر
ولكن هل من الممكن أن يكون السبب هو السرعة؟
بمعنى أن التردد عندك هو 5كيلوهرتس، أي أن الفترة هي 200 مايكروثانية
ولكنك ليس لديك أي فترات انتظار في البرنامج
ووفقا للكود تظبط دورة الأداء، ثم بدون أي انتظار تضبط دورة الأداء مرة أخرى، وهكذا، ثم بعد انتهاء دورتي ال for loop تبدأ مرة أخرى، وربما هذا يؤدي لنتائج غير متوقعة
للتنبؤ بالنتائج في هذا الحالة، عليك ربما بقراءة أكبر عن كيفية تنفيذ هذا المتحكم لوظيفة تعديل عرض النبضة وما هو سلوكه عند تغيير عرض النبضة في أثناء الدورة، هل ينهي الدورة أولا أم يبدأ دورة جديدة، وهل توجد فترة انتظار بعد أمر init، وربما كذلك عليك أن تعرف كم دورة تعليمات يحتاجها المتحكم لتنفيذ كل سطر من الكود، كي تعرف متى تتوقع ماذا بالضبط فربما يكون برنامج بروتس ليس به هذه الاعتبارات العملية
وأظن أنك لست بحاجة لكل هذا، ربما عليك أن تكتب على الورق بصورة أفضل تحديدا ما الذي تريد تنفيذه، ثم تكتب الكود على هذا الأساس

أما النقطة الأخرى التي لم أفهمها، كيف تريد تنفيذ ما في الصورة بهذا الكود؟ فما نراه في الصورة هو موجة جيبية يراد إخراجها بتكنيك تعديل عرض النبضة
فأين هو مولد الموجة الجيبية في الكود؟ أين الأمر التي تحسب به قيمة الدالة الجيبية؟
وكذلك، بما أنك تريد أن تحول هذه الدالة الجيبية إلى تعديل عرض النبضة في الزمن الحقيقي، فعليك أولا تمثيلها، فما هو معدل التمثيل لديك؟ هل تعمل بمعدل تمثيل ثابت أم تحسب الدالة من خلال loop أم ماذا بالضبط؟


التعديل الأخير تم بواسطة : zamalkawi بتاريخ 17-05-2013 الساعة 11:43 AM

zamalkawi
:: مهندس جيد ::
تاريخ التسجيل: May 2013
المشاركات: 270
نشاط [ zamalkawi ]
قوة السمعة:0
قديم 17-05-2013, 08:50 AM المشاركة 5   
افتراضي


الجانب الآخر لست متأكد لكن لا أضن ان للبيك المذكور خاصية تعديل عرض الموجة
السلام عليكم أخي
وفقا للداتا شيت على موقع مايكروشيب، هذه الشريحة بها خاصية تعديل عرض النبضة
http://ww1.microchip.com/downloads/e...oc/41211d_.pdf


الصورة الرمزية haidar ayad
haidar ayad
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2011
الدولة: العراق
المشاركات: 178
نشاط [ haidar ayad ]
قوة السمعة:0
قديم 17-05-2013, 11:53 AM المشاركة 6   
افتراضي


السلام عليكم وشكرا لكم للمرور

اخوتي ان البيك يخرج موجة pwm ولكنه لا اراها نقية في برنامج البروتوس يعني في البداية نقية وبعد ثواني تكون غير محكومة بقانون وفيها يخرج صفر بعرض نبضة طويل ...!
بينما جربت الكود في برنامج Real pic فخرجت الموجة نقية ولكن لا اعلم هل في النهاية تكون غير نقية بمرور الزمن او لا ؟!


الشيء الثاني بالنسبة للتردد فانا اردت تردد 5 كيلوا هيرتز وكتبت :


كود:
PWM1_Init(5000);   


ولم اكتب دالة تاخير اخرى او ماشابه ...

واتمنى واحد يخبرني كم قيمة التردد الخارج من البيك الان

وانا في الحقيقة اريد اخرج موجة شبيهة بالموجة الخارجة هنا :



وهذا ملف الهيكس :
http://www.instructables.com/files/o...M6HAQ35NKG.hex

ارجو المساعدة رجاءا


zamalkawi
:: مهندس جيد ::
تاريخ التسجيل: May 2013
المشاركات: 270
نشاط [ zamalkawi ]
قوة السمعة:0
قديم 17-05-2013, 12:43 PM المشاركة 7   
افتراضي


وانا في الحقيقة اريد اخرج موجة شبيهة بالموجة الخارجة هنا :

الصورة ليس بها رابط الموجة، وإنما بها صورة المايكروكنترولر


الصورة الرمزية haidar ayad
haidar ayad
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2011
الدولة: العراق
المشاركات: 178
نشاط [ haidar ayad ]
قوة السمعة:0
قديم 17-05-2013, 12:51 PM المشاركة 8   
افتراضي


الصورة ليس بها رابط الموجة، وإنما بها صورة المايكروكنترولر
نعم اخي افتح برنامج بروتوس واضف الكريستالة والمتسعة وملف الهيكس للمايكرو وانظر الموجة براسم الاشارة ....فستراها بوضوح .

إضافة رد

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

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

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


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

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