منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح :

اذهب الى الأسفل

مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح : Empty مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح :

مُساهمة من طرف Admin في الأحد مايو 03, 2015 12:36 am

مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح :
الأدوات المطلوبة فى برنامج المحاكاة ISIS : PIC16F877A , KEYPAD-PHONE , RES , 2SK1058 , CELL , MOTOR .
الدائرة الكهربية :

مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح : 612


مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح : 711


البرنامج :
مبدأ العمل:
تتكون النبضات المربعة من جزء مرتفع (موجب) يسمى PWMH وجزء منخفص (سالب) يسمى PWML . التحكم فى عرض النبضة PWM يعنى التحكم فى عرض هذه الأجزاء ، فزيادة الجزء المرتفع يؤدى إلى زيادة متوسط جهد النبضة والعكس بالعكس وبالتالى التحكم فى محرك التيار المستمر عن طريق الجهد المطبق على طرفيه .


مشروع التحكم فى محرك تيار مستمر باستخدام التعديل فى عرض النبضات ولوحة المفاتيح : 810

أقصى قيمة لعرض النبضة ككل يمكن اعتبارها “255” قسم ( بايت ) ، الجزء المرتفع يمكن أن يكون من الصفر وحتى “255” . فى هذا المثال ، عند الضغط على مفتاح لوحة التحكم يتم توليد نبضات بعرض متغير تبعا لهذا المفتاح وصولا إلى المفتاح “9” حيث يتم جعل الجزء الموجب عند أقصى قيمة له ، وبالتالى يتم التحكم فى سرعة دوران المحرك حتى نصل إلى أقصى سرعة . بناء على ذلك يمكن التعبير عن عرض جزء النبضة المرتفع بالمعادلة :
PWMH = (255/9) * Key =~ 28 * Key
فعند الضغط على المفتاح “0” يكون الجزء الموجب بصفر والسرعة بصفر ، حتى نصل إلى المفتاح “9” فيكون الجزء الموجب بالقيمة “255” وهى تناظر القيمة القصوى ويكون المحرك عند أقصى سرعة له .
للحصول على جزء النبضة المنخفص نطرح قيمة جزء النبضة الموجب من القيمة “255” .


الكود:


#include <16f877A.h>
#USE DELAY (CLOCK=4000000)
#define use_portb_kbd TRUE
#INCLUDE <kbd.c>
//#USE STANDARD_IO (a)

VOID MAIN()
{
  CHAR k,kant='0';    //Keyboard k value, previous value k keyboard
  char PWMH=0,PWML=0;  //High and low half period
 
  kbd_init();
  PORT_B_PULLUPS(TRUE);

WHILE (1) {                    //Infinite loop
      k=kbd_getc();            //Reads ASCII value of the pressed key
      if (k=='\0') k=kant;    //If key (\ 0) is pressed the former value is used
      if ((k=='*') || (k=='#')) k='0';  //Pressing * or # is assigned a zero value.
      kant=k;                          //Pressed key is saved
      k=k-48;                        //It becomes a numerical value ASCII
      PWMH=k*28;                    //Key ratio value and half period Alto.
      PWML=255-PWMH;                //Under half period
      for(PWMH;PWMH>0;PWMH--){        //Getting high-level output
      OUTPUT_HIGH(PIN_A0);}
      for(PWML;PWML>0;PWML--){      //Getting output at low level
      OUTPUT_LOW(PIN_A0);}
  }
}


Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى