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

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

TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 04-07-2013, 08:18 AM المشاركة 1   
افتراضي سؤال عن pwm والتردد Twitter FaceBook Google+



الان عندما اكتب بلغة السي هذا الامر
كود:
PWM1_Init(5000);


هل هذا يعني انني اطلب من الميكرو توليد تردد مقدارة
خمسة كيلو هرتز ؟!؟
-------------------------------------------------------
ماهو اعلى تردد يستطيع البك 877 توليده
-------------------------------------------
انا قرات سابقا في كاتالوج دائرة جاهزة تحكم في سرعة موتور
انه كلما زاد التردد كلما اصبح ترانزيستور( القدرة ) يسخن بسرعة ويحتاج مروحة تبريد للهيت سنك
هل هذا صحيح
-------------------------------------------------------------
كيف اعرف التردد المطلوب للموتور dc مع العلم ان المعلومات الي عندي على الموتور الفلوت 220dc التيار 6 امبير rpm 4800
-------------------------------------------------------------
وايضا بالنسبة للكرستاله المستخدمة مع البيك
كام يجب تكون قيمتها اذا كتب في الكود
PWM1_Init 5000
------------------------------------------------
ماهي العوامل التي اتجنبها حتى لا اؤذي الترانزيستور او الموتور
في اختيار التردد


التعديل الأخير تم بواسطة : TIME0 بتاريخ 04-07-2013 الساعة 08:33 AM
اعلانات

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


أخي، من الممكن إجراء حسابات تفصيلية عن التردد الأنسب، وأخذ عوامل كثيرة في الاعتبار مثل خواص المحرك وخواص الترانزيستور وخواص الدايود الملحق به وخواص الحمل الميكانيكي
ولكن الأفضل من هذا كله في رأيي هو التجربة
أظن أن تردد من 1كيلوهرتس وحتى 10 كيلوهرتس هو تردد مقبول، ولكن كما ترى المجال كبير (من 1 إلى عشرة)
أرى أن تختار تردد منخفض (1 كيلوهرتس مثلا) ثم تقوم بزيادته تدريجيا، وفي كل مرة تزيد فيها التردد تلاحظ أداء النظام من حيث السخونة، الاهتزاز في الحمل الميكانيكي، استهلاك الكهرباء عند سرعة وحمل محددين، والأفضل أن تجرب كل تردد عند سرعات مختلفة
أرى أن هذا هو أسهل طريق، حتى لو لم يكن أفضلهم أو أسرعهم أو أوفرهم


التعديل الأخير تم بواسطة : zamalkawi بتاريخ 04-07-2013 الساعة 12:22 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

TIME0
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
المشاركات: 277
نشاط [ TIME0 ]
قوة السمعة:0
قديم 04-07-2013, 12:37 PM المشاركة 3   
افتراضي


pic16f877A
كود:
 
unsigned int temp_res;
unsigned char temp_duty;
void main() {
  ADCON1 = 0x80;  // Configure analog inputs and Vref
  TRISA  = 0xFF;  // Set PORTA as an input
  TRISC = 0; // Set PORTC as an Output
  PORTC = 0;
  // Initialize and start the PWM unit
  PWM1_Init(5000);
  PWM1_Start();
  while(1){
    temp_res = Adc_Read(2); // Get results of AD conversion
                               // from channel 2 (RA2 pin)
    temp_duty = (temp_res/4); // Convert the 10 bit value
                               // to 8 bits
    PWM1_set_Duty(temp_duty); // Set the duty value
    Delay_ms(50); // Slow everything down a little
  }
}

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


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


أظن أن أفضل طريقة هي أن تقرأ القيمة من مدخل تناظري آخر، بنفس الطريقة التي أدخلت بها السرعة
ولكن في هذه الحالة عليك أن تعيد بدء تعديل عرض النبضة كل مرة، بوضع الأمر pwm_init بداخل الحلقة التكرارية while
هذا من الناحية البرمجية
أما من الناحية العملية، فأقترح هنا أن تختبر مقدار تغير الدخل الأنالوج مقارنة بالمرة السابقة، فلو كان التغير طفيفا (نتيجة ضوضاء في التوصيل مثلا) لا ينفذ أمر البدء pwm_init
والسبب في هذا أنني لا أعرف سلوك النظام إذا كان الpwm يعاد بدءه كل فترة قصيرة
وبوجه عام، تردد الpwm يوضع ليبقى، وليس ليتم تغييره كل فترة قصيرة! لذا أقترح أن تترك البرنامج كما هو، وتدخل قيمة التردد يدويا، ثم تحرق البرنامج على المايكروكنترولر مرة أخرى، وتجري التجارب التي تريد، وتسجل ملاحظاتك، وبعدها تغير القيمة يدويا مرة أخرى وتحرق البرنامج مرة أخرى، وهكذا إلى أن تصل إلى القيمة المثلى للتردد


ملك العلوم
:: عضو فضي ::
تاريخ التسجيل: May 2008
الدولة: Egypt
المشاركات: 192
نشاط [ ملك العلوم ]
قوة السمعة:74
قديم 06-07-2013, 09:21 PM المشاركة 5   
افتراضي


يمكنك عمل دالة تتضمن دالة التردد PWM
وتعمل متغير X
تدخل المتغير بواسطة كيباد عن طريق scanf("%s", &x);
أو تبدأ من الصفر او قيمة معينة وتزيد قيمة Y عن طريق عمل متغير لها X=X+Y;
ثم تبدأ الدالة for
أتمني ان أفيدك وهذا مثال :
int fr(int x)
scanf("%s", &x);
}
for (int i;i<x;i++)
{pmw_init(x);

إضافة رد

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

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

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


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

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