ما هو الميكروكونترولر Microcontroller ؟

صفحة 5 من اصل 5 الصفحة السابقة  1, 2, 3, 4, 5

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الأحد يوليو 30, 2017 2:27 pm

تدريب : تعديل عرض النبضات PWM باستخدام موديول المقارنة CCP بالميكروكونترولر PIC16F628A
الدائرة الكهربية :
يتم توصيل 2 مفتاح ضاغط إلى الأطراف RB0 , RB1 كمداخل . ويتم تشغيل ليد بواسطة الخرج المعدل PWM من الطرف RB3/CCP1 خلال مقاومة لتحديد التيار330R.يتم تزايد أو تناقص دورة الخدمة لإشارة الخرج PWM باستخدام المفاتيح الموجودة كمداخل وهذا يؤدى إلى التغيير فى شدة إضاءة الليد .



البرنامج :
البرنامج يعطى عشر مستويات مختلفة للتحكم فى شدة إضاءة الليد بتغيير دورة الخدمة من 0 إلى 250 بخطوة 25 فى كل مستوى . يتم تغيير دورة الخدمة عن طريق الضغط على المفاتيح الضاغطة UP , DOWN .

الكود:

/*
Description: CCP module generating PWM
 MCU: PIC16F628A
 Oscillator: XT, 4.0 MHz
*/
 sbit UP at RB0_bit;
 sbit DOWN at RB1_bit;
 unsigned short new_DC, current_DC;

 void debounce(){
  Delay_ms(300);
 }

 void main() {
 CMCON = 0x07; // Disable comparators
 PORTB = 0x00;
 TRISB = 0b00000011; // RB0, RB1 input, RB3 (PWM1) output
 PWM1_Init(5000);    // PWM module initialization (5KHz)
 new_DC = 0;        // Initial value of variable Duty Cycle
 current_DC = 0;
 PWM1_Start();      // Start PWM1 module with Zero DC
 PWM1_Set_Duty(current_DC);
 do {
  if (!UP){      // If the button connected to RB0 is pressed
  debounce();
  if (new_DC < 250)      // Don't go above 250
  new_DC = new_DC + 25 ; // increment Duty Cycle by 25
  }
  if (!DOWN) {  // If the button connected to RB1 is pressed
  debounce();
  if (new_DC !=0)        // Don't go below 0
  new_DC= new_DC - 25 ; // Decrement Duty Cycle by 25
  }
  if (current_DC != new_DC) {
  current_DC = new_DC ;
  PWM1_Set_Duty(current_DC); // Change the current DC to new value
  }
 } while(1);
}  // END main()

النتائج :
عند توصيل القدرة للدائرة تبدأ الإضاءة بمستوى الصفر (الدورة كلها OFF مستمر ) أى دورة الخدمة بصفر . بالضغط على المفتاح الضاغط UP تتزايد دورة الخدمة (يتزايد الجزء الموجب من الدورة ON) وتتزايد شدة إضاءة الليد حتى تصل دورة الخدمة إلى الواحد الصحيح (الدورة كلها ON مستمر) .

Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الأحد يوليو 30, 2017 2:33 pm

تدريب : التحكم فى سرعة محرك بنظام PWM بالتعديل فى دورة الخدمة عن طريق مقاومة متغيرة متصلة بمدخل تناظرى
سوف نقوم بإنشاء برنامج بلغة السى الغرض منه تحميل دالة دورة الخدمة Pwm_set_duty() بقيمة ناتجة عن قراءة جهد تناظرى على المدخل AN0 أى أن دورة الخدمة تتغير من 0% إلى 100% ( من 0 إلى 255 ) تبعا لتغير جهد الدخل التناظرى والمناظر للقيمة من0 إلى 1023 وبالتالى يقوم الخرج PWM بالتحكم فى سرعة محرك المروحة .

الدائرة الكهربية :



البرنامج :

الكود:

/*
************************************************
البرنامج : دخل تناظرى و تعديل فى عرض النبضة
الغرض : التحكم فى محرك مروحة عن طريق تعديل عرض النبضات من خلال دخل تناظرى
*/

void main () {

unsigned int a = 0; // تعريف متغير نوع عدد صحيح لحفظ نتيجة التحويل من تناظرى لرقمى 

ADCON1 = 0b00001001; // تهيئة طرف الدخل التناظرى 
TRISA = 255; // تهيئة أطراف المنفذ كمداخل

Pwm_Init (5000); // تهيئة موديول تعديل عرض النبضة بتردد 5 كيلوهرتز
Pwm_Start (); //بدء عمل موديول تعديل عرض النبضة 

do // حلقة غير منتهية
 {
 a=Adc_Read(0); // قراءة القناة التناظرية صفر وحفظ قيمة نتيجة التحويل فى سجل مؤقت 
 a = (a / 4); // تحويل القيمة السابقة إلى نسبة مئوية لدورة الخدمة 
 Pwm_Set_Duty (a); //إرسال دورة الخدمة إلى موديول التحكم فى عرض النبضات لتظهر على طرف الخرج الخاص به  Delay_10us; // الانتظار لمدة 10 ميكروثانية
}
  while (1); // التكرار بصفة مستمرة

}

الشكل الموجى الناتج كما فى الشكل التالى :






Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الأحد يوليو 30, 2017 5:46 pm

التحويل من رقمى لتناظرى DAC وتوليد موجة جيبية باستخدام الميكروكونترولر PIC :
يمكن أن يتم هذا التحويل بطريقتين، الأولى استخدام موديول PWM بالميكروكونترولر ، والثانية استخدام عناصر خارجية للحصول على فرق الجهد .
التحويل باستخدام PWM :
التحويل من رقمى لتناظرى بموديول PWM يتم عن طريق أخذ الإشارة ذات التعديل بعرض النبضات وإجراء عملية إستخلاص demodulation عن طريق مرشح تمرير منخفض low-pass filter. هذا المرشح يجب أن يكون له تردد قطع cutoff frequency أقل بكثير من تردد أخذ العينة بما يقارب 10 مرات ، حيث أن الهدف منه إزالة (التخلص من) تردد أخذ العينة . حساب تردد القطع للمرشح يخضع للعلاقة التالية :



الشكل التالى يوضح دائرة مرشح تمرير منخفض من الدرجة الأولى first order:



الشكل التالى يوضح دائرة مرشح تمرير منخفض من الدرجة الثانية second order :



معادلة حساب هذا المرشح :



التردد المخصص لحامل PWM يجب أن يكون أكبر بكثير من تردد أخذ العينة للإشارة المعدلة . لاستعراض عملية التحويل يتم التصميم بأخذ 20 عينة تناظر دورة واحدة لإشارة جيبية sine signal . الشكل التالى يبين العينات والشكل الموجى :






لفهم طريقة التنفيذ راقب وحلل وحاكى البرنامج التالى :

الكود:
 
// Declaring Constants for sine wave.
 const unsigned short Sine_Wave [20] =
 {
    127, 146, 163, 177, 185, 189, 185,
    177, 163, 146, 127, 107, 90, 76,
    68, 65, 68, 76, 90, 107
 };

 void main (void)
 {
    // Declaration of variables.
    unsigned short n = 0;
    // Set the PWM module to Fpwm = 15.625K Hz
    PWM1_Init (15625);
    // Start of PWM signal.
    PWM1_Start ();
    while (1)    // infinite loop.
    {
       // Loop for the 20 samples of a sine wave cycle.
       for (n = 0; n <20; n ++)
       {
          // Changing the duty cycle of the PWM.
          PWM1_Set_Duty (Sine_Wave [n]);
          // Delay 50u sec.
          delay_us (50);
       }
    }
 }

لتنفيذ المحاكاة تحتاح للأجهزة التالية :
16F877A, RES, CAP, OP1P و الأوسليسكوب OSCILLOSCOPE . وهذ الأخير هو أوسليسكوب تخيلى لعرض الأشارات التناظرية والرقمية بأربع قنوات فى نفس الوقت .
دائرة تنفيذ مرشح التمرير المنخفض للتخلص من التردد الحامل Fpwm وهو فى هذه الحالة 15.6KHz ، تردد القطع للمرشح تقريبا 1.5KHz .
مستقبلا ، فى تطبيقات المرشحات يوصى ، بتحديد قيمة للمكثف C بين 100pF و 100nF ويتم حساب المقاومة R من المعادلات المذكورة أعلاه .
بهذه العناصر يتم تكوين الدائرة التالية :



عند إحراز تقدم فى المحاكاة فإن ذلك يرجع ، بكل التقدير، للأوسلوسكوب التخيلى الذى يظهر الإشارة التناظرية الناتجة بالمتحكم الرقمى PIC من خلال وحدة PWM و مرشح التمرير المنخفض ، المظهر المرئى للأوسليسكوب كما فى الشكل التالى :






Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الأحد يوليو 30, 2017 5:54 pm

التحويل من رقمى لتناظرى باستخدام ترتيب المقاومات R-2R :
ترتيب المقاومات فى شكل R-2R يسمح بتحويل العدد الرقمى إلى قيمة جهد متناسية معه . هذا الترتيب يسمح بالتنفيذ بأى عدد من البتات ، على خلاف التحويل بوحدة PWM والمحدد بثمانى بتات . هذا يعنى أنه وفقا للترتيب R-2R ، يمكن أن يتم تحويل 8, 16, 32, 64 أو عدد من البتات وفقا لعدد الأطراف المتاح بالميكروكونترولر . تنفيذ الترتيب R-2R يتم بسهولة فى شكل مصفوفة مكونة من توصيلات لمقاومات ، حيث تكون إحداها ضعف الأخرى ، ومن هنا أشتق الاسم ، كلما زاد عدد البتات ، كلما زادت دقة التحويل وبالتالى كفاءة إعادة بناء الإشارة .
مساوىء هذا الترتيب لافتة للنظر ، زيادة الأجهزة hardware واستخدام كمية كبيرة من أطراف المنافذ .
الشكل التالى يبين إعداد المقاومات للتحويل بثمانى بتات 8-bit conversion .




يمكن توسعة هذا الترتيب بنفس البناء للحصول على محول بدقة أكبر ، بزيادة عدد المداخل D بنفس عدد البتات . سمة أخرى لهذا النوع من التحويل هى أنه يتطلب مكتبات متخصصة ، بما يكفى لتحديد القيمة الرقمية بالمنفذ للتحويل ، القيمة التناظرية سوف تكون موجودة على المخرج . بنفس طريقة ما تم فعله عن طريق التحويل PWM ، فمن المهم إخماد مكونات إشارة تردد العينة لتجنب عدم النظافة .
الشكل التالى يبين المحول الكامل مع معاوقة الربط ومرشح التمرير المنخفص 1.5K Hz :



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

الكود:

// Declaring Constants for sine.
 const unsigned short Sine [20] =
 {
    127, 146, 163, 177, 185, 189, 185,
    177, 163, 146, 127, 107, 90, 76,
    68, 65, 68, 76, 90, 107
 };
 void main (void)
 {
    // Declaration of variables.
    unsigned short n = 0;
    // Configure ports.
    TRISB = 0;
    PORTB = 127;
    while (1) // infinite loop.
    {
       // Loop for 20 samples of a sine wave cycle.
       for (n = 0; n <20; n ++)
       {
          // Change port B.
          PORTB  = Sine [n];
          // Delay 50u sec.
          delay_us (50);
       }
    }
 }
 

الدائرة الكهربية :




النتيجة المتوقعة من المحاكاة تعادل المحاكاة للتحويل باستخدام PWM , خرج الأوسليسكوب يجب أن يعطى نفس الشكل الموجى .




Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الإثنين يوليو 31, 2017 6:07 pm

المنفذات Actuators والقدرة الكهربية Power
المنفذات Actuators هى أجهزة كهربائية أو الكترونية والتى تقوم بإحداث تغير فى الكميات الطبيعية . هذه الكميات يمكن أن تكون درجة الحرارة temperature أو السرعة speed أو الضغط pressure أو الإضاءة light أو الرطوبة humidity أو الموضع الزاوى angularأو الخطى linear وغيرها . يمكن تشغيل المنفذات بواسطة التيار المتردد AC أو التيار المستمر DC . منفذات التيار المستمر تتضمن محركات التيار المستمر DC motors ومحركات السرفو servo motors والمصابيح المتوهجة والسلونويدات solenoids والريلايات relays وغيرها . منفذات التيار المتردد تتضمن محركات التيار المتردد AC motors والمصابيح المتوهجة والسخانات الكهربائية وغيرها .
القدرة هى كمية القدرة الكهربائية المطلوبة لمهمة معينة . وتعرف القدرة الكهربية كما يلى :



حيث Pe هى القدرة الكهربائية بالوات watts و V هو فرق الجهد عبر مقاومة الحمل الكهربائى R ، ومن ثم يمكن حساب التيار I . فى حالة استخدام الميكروكونترولر فى التحكم فى القدرة فغالبا ما يحتاج المنفذ لجهد وتيار أكبر من الذى توفره أطراف الميكروكونترولر . جهد خرج الميكروكونترولر هو 5 volts دائما والتيار يمكن أن يكون فى حدود قليل من الملى أمبير .

منفذات التيار المستمر DC Actuators :
منفذات التيار المستمر تتطلب تيار يمر دائما فى نفس الاتجاه . استخدام هذه المنفذات يستلزم نوعين من الأجهزة ، ترانزستورات القدرة power transistors أو الريلايات relays . الترانزستورات يمكن أن تكون "ترانزستورات ثنائية القطبية" BJT أو ترانزستورات موسفيت MOSFET . يتميز ترانزستورBJT بالتحكم فى التيار من خلال تيار آخر . فى ترانزستورات الموسفيت MOSFET يتم التحكم فى مرور التيار من خلال التحكم فى فرق الجهد . يعمل الترانزستور فى ثلاثة مناطق تعرف بمنطقة القطع cutoff ومنطقة التشبع saturation والمنطقة الفعالة active . المنطقة الفعالة هى الشائعة الاستخدام فى أنظمة تكبير الإشارات amplification . لكن فى حالة المنفذات يكون المطلوب فى معظم الحالات أن تكون إما فى حالة تفعيل activated أو فى حالة عدم تفعيل deactivated ، بمعنى أن يكون لها سلوك التحويل ON, OFF . وبعبارة أخرى تستخدم الترانزستورات فى الوصل والفصل . تحت هذه الشروط تعمل الترانزستورات كمفاتيح للتيار فى منطقة القطع وفى منطقة التشبع . الشكل التالى يبين رمز الترانزستور فى برنامج إيزيس :



فى الترانزستور MOSFET يتم التحكم فى مرور التيار بين المنبعsource S والمصب drain D عن طريق فرق الجهد الكهربائى للبوابة gate G .
فى الترانزستور BJT يتم التحكم فى مرور التيار بين المجمع collector C والمشع emitter E عن طريق التيار المار خلال القاعدة base B .
استخدام الأحمال الحثية inductive loads مثل المحركات والريلايات والسلونويدات له خاصية تخزين الطاقة فى شكل مجال كهرومغناطيسى ، وهذا يعنى أنه عند فصل الأحمال الحثية ، فإن طاقتها المخزنة يتم إعادتها عن طريق تيار عكسى ، هذه الظاهرة يمكن تسبب تلف ترانزستورات أنظمة التحكم ، لتجنب هذه المشكلة يتم استخدام ثنائى منحاز عكسيا لتفريغ الأحمال الحثية ، هذا الترتيب مبين فى الشكل التالى :



الريلايات Relays
الريلايات الكهروميكانيكية هى أجهزة بها مغناطيس كهربائى electromagnet والذى عن طريقه يتم غلق أو فتح الدائرة الكهربية عن طريق تلامس أو أكثر . الريلايات نموذجية لعزل دوائر القدرة عن مرحلة التحكم الالكترونى . فى نفس الوقت ، هى أجهزة ذات أداء منخفض ، حيث لا يمكنها إجراء تغيرات سريعة فى حالتها ومع استمرار الاستخدام تتآكل التلامسات الكهربائية مع الزمن . الشكل التالى يبين المظهر الخارجى ورمز برنامج إيزيس لهذه الأجهزة :



أخيرا يجب أن يتم استخدام هذه الأجهزة فى شكلها النهائى كما هو مبين بالدائرة الكهربية التالية والتى بها حمل يعمل على الجهد 120V AC :


Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الإثنين يوليو 31, 2017 6:11 pm

محركات التيار المستمر DC Motors :
محركات التيار المستمر ذات طبيعة حثية وبالتالى تستحق أن تعامل بنفس طريقة الريلاى .
فى المثال التالى يمكن للميكروكونترولر أن يتحكم فى تغيير سرعة محرك التيار المستمر ، لهذا الغرض يتم التنفيذ بوحدة (موديول) PWM والميكروكونترولر 16F628A بمذبذب 4MHz . كود البرنامج كما يلى :

الكود:
void main( void )
{
   unsigned short CD=0;
   OPTION_REG = 0;       //Activate the pull-up resistors.
   PWM1_Init( 500 );     //PWM module starts at 500 Hz
   PWM1_Set_Duty(CD);
   PWM1_Start();
   while(1)             //Infinite Loop.
   {
      //loop to increment PWM  when Bttton RB1 pressed.
      while( Button( &PORTB, 1, 10, 0 ) )
      {
         CD++; if( CD==0 )CD=255;
         PWM1_Set_Duty(CD);
         delay_ms(10);
      }
      //loop decrement PWM  when Bttton  RB0 pressed
      while( Button( &PORTB, 0, 10, 0 ) )
      {
         CD--; if( CD==255 )CD=0;
         PWM1_Set_Duty(CD);
         delay_ms(10);
      }
   }
}

لمحاكاة هذا البرنامج ببرنامج إيزيس يلزم جلب الأجهزة الآتية :
16F628A, BUTTON, RES, 2N3904, 1N4001, MOTOR ACTIVE لبناء الدائرة الكهربية التالية :




تبعا لشدة التيار المطلوب يمكن تغيير الترانزستور لتحسين أداء النظام . الترانزستور 2N3904 يمكنه التحكم فى تيار حتى 200m Amps والترانزستور TIP31 يمكنه التحكم فى تيار حتى 3 amps تبعا لنظام العمل ومنحنى الخواص .

Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الإثنين يوليو 31, 2017 8:25 pm

القنطرة(الجسر) إتش H Bridge
القنطرة H هى ترتيب (تنظيم) من الترانزستورات والذى يسمح بعكس قطبية الحمل الكهربائى عند توفير مصدر جهد مفرد (أحادى القطبية) single source . يمكن بناء القنطرة H باستخدام ترانزستورات منفصلة discrete أو باستخدام موديولات متكاملة والمتاحة تجاريا . هذا الترتيب يتضمن إشارتين تحكم للتمكين من اختيار القطبية الموجبة والقطبية السالبة . الشكل التالى يبين الدائرة الكهربائية للترتيب المنفصل :




لتفعيل القطبية الموجبة يتم تفعيل خط التحكم الأول control 1 ، بينما يتم فصل خط التحكم الثانى control 2 ، ولتفعيل القطبية السالبة يتم عكس حالة أطراف التحكم . مع الوضع فى الاعتبار أن خطى التحكم لن يتم أبد التحكم فيهما فى نفس الوقت ، حيث أن هذا الفعل ينتج عنه دائرة قصر short بين الجهد الموجب Vcc والأرضى ، مما يتسبب فى أضرار جسيمة بالترانزستورات .
المثال التالى يبين التحكم فى دوران محرك تيار مستمر DC motor عن طريق الميكروكونترولر 16F628A


الكود:

void main( void )
{
    OPTION_REG = 0; //Activate the pull-up resistors.
    TRISB = 0x0F; //Configuring port B  as output and input .
    PORTB = 0;
   
    while(1) //Infinite Loop.
    {
              //Loop for detecting the rotation to the left button .
              while( Button( &PORTB, 0, 10, 0 ) )
              {
                    PORTB = 0;    //Turn off the control pins.
                    PORTB.F7 = 1;    //Activates the control pin 1.
              }
             
              //Loop for detecting the stop button.
              while( Button( &PORTB, 1, 10, 0 ) )
              {
                    PORTB = 0;    //Turn off the control pins.
              }
             
              //Loop for detecting the rotation  to the right button.
              while( Button( &PORTB, 2, 10, 0 ) )
              {
                    PORTB = 0;    //Turn off the control pins.
                    PORTB.F6 = 1;    //Activates the control pin 2.
              }
    }
}

يتم تنفيذ المحاكاة ببرنامج إيزيس بعد بناء الدائرة الكهربية المبينة بالشكل الآتى :




Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الثلاثاء أغسطس 01, 2017 6:08 pm

تشغيل محرك التيار المستمر باستخدام القنطرة H Bridge :
القنطرة H Bridge هى دائرة الكترونية بسيطة والتى تمكننا من تطبيق الجهد إلى الحمل فى أى من الاتجاهين ، وهى شائعة الاستخدام فى تطبيقات الربوتات للتحكم فى محركات التيار المستمر . باستخدام هذه القنطرة يمكننا تشغيل محرك التيار المستمر للدوران مع عقارب الساعة أو الدوران عكس عقارب الساعة . كما تستخدم هذه الدائرة أيضا فى إنتاج الأشكال الموجية المترددة فى العواكس (الإنفرترات) inverters .
مبدأ عمل دائرة القنطرة H Bridge :
الشكل التالى يمثل دائرة القنطرة H Bridge :



• عندما يتم توصيل ON المفتاح S1 والمفتاح S4 ، فإن المحرك سوف يدور فى اتجاه عقارب الساعة .
• عندما يتم توصيل ON المفتاح S2 والمفتاح S3 ، فإن المحرك سوف يدور عكس عقارب الساعة .
فى الواقع العملى يتم استبدال هذه المفاتيح بترانزستورات ، والآن تتوفر هذه القنطرة فى شكل دوائر متكاملة ، مثل الدائرة المتكاملة L293 .
دائرة H Bridge المكونة من ترانزستورات :




فى هذه الدائرة يتم توصيل جميع الترانزستورات للعمل كمفاتيح .
• عندما يكون الدخل A مرتفع High والدخل B منخفض Low ، يتم توصيل الترانستوران Q2,Q3 ، ومن ثم يدور المحرك قى اتجاه عكس عقارب الساعة .
• عندما يكون الدخل B مرتفع والدخل A منخفض ، يتم توصيل الترانزستورين Q1,Q4 ، ومن ثم يدور المحرك فى اتجاه عقارب الساعة .
• الدايودات 1N4148 من النوع سريع التحويل وتسمى freewheeling diode ، وتستخدم لتجنب المشاكل الناتجة عن الجهد السالب الناتج القوة الدافعة العكسية لمحرك التيار المستمر .
• تستخدم المقاومات R1-R4 لتحديد تيار دخل الترانزستورات ويتم تصميمها بحيث يعمل الترانزستور كمفتاح .
• يتم اختيار الترانزستور تبعا للتيار المطلوب لمحرك التيار المستمر .
حسابات مقاومة الدخل :

الكود:
IL = Max. Motor Current
Ib = IL/β, Minimum input current required to flow current IL through the load (active region).
Ib’ = 10xIb, To make sure that transistor works in saturation region.
Rin = (Vin – Vbe)/Ib’
Take Vbe = 0.7V

تستخدم هذه الدائرة أيضا فى الأنفرترات Inverters من أجل إنتاج تيار متردد عبر الحمل . فى إنفرترات الموجة المربعة ، يتم تطبيق الموجة المربعة إلى المداخل A,B ، وفى إنفرترات الموجة الجيبية يتم تطبيق الشكل الموجى المربع والمعدل بنظام تعديل عرض النبضة PWM إلى المداخل A,B .
يمكن الاستغناء عن الدايودات فى حالة الأحمال الأومية (مقاومة) .

الربط بين الميكروكونترولر PIC ومحرك التيار المستمر باستخدام الدائرة المتكاملة L293D :
لا يمكننا تشغيل محرك التيار المستمر مباشرة بالميكروكونترولر ، لأن محركات التيار المستمر تتطلب تيار مرتفع وجده مرتفع عن التى يتعامل معها الميكروكونترولر . الميكروكونترولر عادة يعمل على منبع +5V أو 3.3V ، وأطراف الدخل / الخرج يمكن أن توفر تيار حتى 25Ma . محركات النيار المستمر الشائعة تتطلب منبع 12V وتيار 300Ma ، علاوة على ذلك فإن ربط محركات التيار المستمر مباشرة مع الميكروكونترولر قد تؤثر على عمل الميكروكونترولر نتيجة القوة الدافعة الكهربية العكسية لمحرك التيار المستمر . لذلك من الواضح أنه ليس من الجيد ربط محرك التيار المستمر مباشرة مع الميكروكونترولر . حل هذه المشكلة هو استخدام دائرة القنطرة H-bridge المشروحة أعلاه .
الدائرة المتكاملة L293 ، تحتوى على 2 دائرة مشغل محرك على شكل قنطرة H-bridge ، وهذا يعنى أنه عن طريق استخدام دائرة متكاملة واحدة يمكننا التحكم فى محركين تيار مستمر فى كل من الاتجاهين ، اتجاه عقارب الساعة واتجاه عكس عقارب الساعة . الدائرة المتكاملة L293D يمكن أن توفر تيار تشغيل فى الاتجاهين حتى 600-mA عند جهد من 4.5V إلى 36V ، فى حين أن الدائرة المتكاملة L293 يمكن أن توفر حتى 1A عند نفس الجهود . كلا الدائرتين المتكاملتين مصمم لتشغيل أحمال حثية مثل محركات التيار المستمر ، محركات الخطوة ثنائية القطبية ، الريلايات ، والسلونويدات .
جميع مداخل هذه الدوائر المتكاملة متوافقة مع دوائر TTL ، ويتوفر داخليا فى الخرج دايودات الحماية .



مخطط أطراف الدائرة المتكاملة L293 :
يتم تمكين المشغلات فى أزواج ، مع المشغلات 1,2 يتم التمكين من الطرف Enable 1,2 بجعلة فى الحالة المرتفعة high ، ويتم تمكين المشغلات 3,4 من الطرف Enable 3,4 بجعله فى الحالة المرتفعة .
عندما يتم تمكين المشغلات فإن مخارجها سوف تكون فعالة وفى نفس طور مداخلها . عندما تكون المشغلات غير ممكنة ، فإن مخارجها تكون مفصولة OFF وسوف تكون فى حالة معاوقة مرتفعة .
جدول الوظيقة :



الربط مع الميكروكونترولر PIC :
الدائرة الكهربية :



يمكنننا تشغيل محركين تيار مسامر باستخدام دائرة متكاملة واحدة ، فى هذا المثال سوف نساخدم فقط أو زوج من المشغلات لتشغيل محرك مستمر واحد . زوج المشغلات الأول يتم تمكينها بجعل الطرف EN1 فى الحالة المنطقية المرتفعة . يتم توصيل المداخل IN1 , IN2 إلى أطراف الميكروكونترولر RB0 , RB1 على الترتيب والتى تستخدم لتوفير إشارة تحكم لمحرك التيار المستمر . يتم توصيل محرك النيار المستمر بالأطراف OUT1 , OUT2 للدائرة المتكاملة .
إشارات التحكم وحالات المحرك :



البرنامج :

الكود:
void main()
{
 TRISB = 0; // PORT B as output port
 PORTB = 1; // Set RB0 to high
 do
 {
  //To turn motor clockwise
  PORTB.F0 = 1;
  Delay_ms(2000);//2 seconds delay

  //To Stop motor
  PORTB = 0; // or PORTB = 3
  Delay_ms(2000);//2 seconds delay

  //To turn motor anticlockwise direction
  PORTB.F1 = 1;
  Delay_ms(2000);//2 seconds delay

  //To Stop motor
  PORTB = 0; // or PORTB = 3 (3 = 0b00000011)
  Delay_ms(2000); // 2 seconds delay

 }while(1);
}

التحكم فى سرعة محرك التيار المستمر باستخدام تعديل عرض النبضات PWM مع الميكروكونترولر PIC :
باستخدام تعديل عرض النبضات PWM يمكننا بسهولة التحكم فى القدرة المتوسطة التى تصل إلى الحمل ومن ثم يمكننا بسهولة التحكم فى سرعة محرك النيار المستمر .
قد يكون هناك تساؤل ، لماذا لا نستخدم مقاومة متغيرة على التوالى مع المحرك للتحكم فى سرعته ؟
هناك ثلاثة أسباب تجعل من خيار استخدام المقاومة خيار غير جيد للتحكم فى سرعة محرك التيار المستمر :
• المشكلة الرئيسية هى أن المحرك هو حمل كهربائى متغير ، لذلك فالمقاومة لا يمكنها القيام بهذه المهمة . فالمحرك يحتاج لقدرة أكثر خلال حالة البدء عنها قى حالة الدوران . المحرك يسحب تيار أكثر أيضا عن تطبيق حمل ميكانيكى على عامود المحرك .
• المقاومة تستهلك مزيد من الطاقة على شكل حرارة ، ومن ثم تكون غير مناسبة للأجهزة التى تعمل بالبطاريات .
• كلنا نعلم أم المحرك يتطلب تيار كبير ، لذلك سوف تكون المقاومة ذات مقنن قدرة مرتفع وتحتاج لمزيد من الطاقة المفقودة .
فى هذا المثال يتم ربط محرك تيار مستمر مع الميكروكونترولر PIC باستخدام الدائرة المتكاملة L293 (مشغل محرك) . يتم توفير 2 مفتاح ضاغط للتحكم فى سرعة المحرك . هنا سوف نستخدم محرك تيار مستمر 12V ويمكن تغيير قيمة متوسط الجهد المستمر الواصل إلى المحرك عن طريق تغيير نسبة دورة الخدمة لإشارة تعديل عرض النبضات . متوسط جهد التيار المستمر لدورة خدمة 0% يكون 0V ، ولدورة خدمة 25% يكون 3V ، ولدورة خدمة 50% يكون 6V ، ولدورة خدمة 75% يكون 9V ولدورة خدمة 100% يكون 12V .

الدائرة الكهربية :



يتم توصيل المفاتيح الضاغطة إلى الأطراف RD0 , RD1 والتى تستخدم للتحكم فى دورة الخدمة لإشارة PWM . الضغط على المفتاح UP يؤدى إلى زيادة دورة الخدمة ، مما يؤدة إلى زيادة سرعة المحرك ، فى حين أن الضغط على المفتاح DOWN يؤدى إلى تناقص دورة الخدمة ، مما يؤدى إلى تناقص سرعة المحرك . هنا سوف نستخدم الموديول CCP1 للميكروكونترولر PIC16F877A لتوليد PWM ويتم توصيلها طرف التمكين للدائرة المتكاملة L293 . يمكن التحكم فى اتجاه دوران المحرك باستخدام الأطراف RB0 , RB1 .

البرنامج :

الكود:
void main()
{
  short duty  = 0; //initial value for duty

  TRISD = 0xFF; //PORTD as input
  TRISC = 0x00; //PORTC as output
  TRISB = 0x00; //PORTB as output
  PORTB = 0x02; //Run motor in anticlock wise

  PWM1_Init(1000);  //Initialize PWM1
  PWM1_Start();  //start PWM1
  PWM1_Set_Duty(duty); //Set current duty for PWM1

  while (1)        // endless loop
  {
    if (!RD0_bit && duty<250) //if button on RD0 pressed     
    {     
        Delay_ms(40);     
        duty = duty + 10;  //increment current_duty   
        PWM1_Set_Duty(duty);  //Change the duty cycle     
    }   
    if (!RD1_bit && duty >0) //button on RD1 pressed
    {
      Delay_ms(40);
      duty = duty - 10;  //decrement duty
      PWM1_Set_Duty(duty);
    }
    Delay_ms(10);      // slow down change pace a little
  }
}

Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الثلاثاء أغسطس 01, 2017 7:24 pm

محركات الخطوة Step Motors
محركات الخطوة هى أجهزة كهروميكانيكية تقوم بالدوران المتقطع (المجزء) فى شكل خطوات وكل خطوة بقيمة معينة من الدرجات . يوجد نوعان من محركات الخطوة هما الأحادى القطبية unipolar والثنائى القطبية bipolar .
المحرك أحادى القطبية له أربع ملفات حيث يتم تنشيط ملف أو اثنين فى نفس الوقت ، ودائما تكون بنفس القطبية ( أحادى القطبية) .
محركات الخطوة ثنائية القطبية لها ملفان فقط حيث يتم تنشيطها فى نفس الوقت بقطبية متناوبة (ثنائى القطبية) .
هذا التأثير يولد تسلسل قطبية بالملفات . بالتحكم فى سرعة التتابع يتم التحكم فى سرعة دوران المحرك بينما ترتيب التسلسل يتحكم فى اتجاه دوران المحرك .
الشكل الآتى يبين المظهر الطبيعى ورموز برنامج إيزيس لهذه المحركات :



المحركات أحادية القطبية unipolar :
المحركات أحادية القطبية unipolar ، عموما لها خمسة أو ستة أطراف والتى تناظر أربع أطراف للملفات ، وطرف أو اثنين مشتركة .
الشكل التالى يبين دائرة ملفات المحرك أحادى القطبية :




تسلسل التنشيط للمحركات أحادية القطبية يمكن أن يكون فى أحد شكلين :
• تنشيط دخل واحد فقط .
• تنشيط دخلين فى نفس الوقت .
عندما يتم تنشيط دخلين فى نفس الوقت يتم زيادة عزم الدوران torque للمحرك ولكن فى نفس الوقت يكون التيار أكبر .
الجدول التالى يبين طريقة تسلسل التفعيل فى الحالتين :



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

الكود:
//Constants with sequence of steps.
const unsigned short STEPS[4] =
{
      0b00000001,
      0b00000010,
      0b00000100,
      0b00001000
};

void main( void )
{
    //Declaration of variables.
    unsigned short STEP=0;
    //Port  initiation
    TRISB = 0xF0;
    PORTB = 0;
    OPTION_REG = 0; //Activation of the pull-up resistors.
    while(1)//Infinite Loop.
    {
          //While loop to rotate in clockwise
          //through pin  RB6
          while( Button( &PORTB, 6, 100, 0) )
          {
              PORTB = STEPS[STEP];
              STEP++;
              if( STEP==4 )STEP=0;
          }
          //While loop to rotate in a counterclockwise
          //through pin RB7
          while( Button( &PORTB, 7, 100, 0) )
          {
              PORTB = STEPS[STEP];
              STEP--;
              if( STEP==255 )STEP=3;
          }
    }
}


لمحاكاة هذا التدريب ببرنامج إيزيس تحتاج للأجهزة الآتية :
MOTOR-STEPPER, BUTTON, ULN2003A وبناء الدائرة الآتية :



لإجراء التمرين مع التسلسل الثنائى ببساطة يتم تغيير ترتيب التسلسل فى نفس البرنامج ونستخدم نفس دائرة المحاكاة . الترتيب الجديد يكون كما يلى :

الكود:
//Constants with the sequence of steps.
const unsigned short STEPS[4] =
{
    0b00000011,
    0b00000110,
    0b00001100,
    0b00001001
};
 

المحركات ثنائية القطبية Bipolar motors :
التنفيذ بمحركات الخطوة ثنائية القطبية يتم من خلال قنطرة إتش H-bridge مزدوجة ، بحيث تسمح بتسلسل ثنائى القطبية . الشكل التالى يبين توزيع القدرة لهذه المحركات :



التحكم فى هذه المحركات يتطلب تسلسل قطبية بالشكل المبين بالجدول التالى :



إجراء التدريب بهذا المحرك يتم بنفس المتبع فى برنامج المحرك أحادى القطبية مع تغيير ترتيب التتابع ، فى الترتيب الجديد يفترض أن المنطق logic 1 هو + V والمنطق logic 0 هو –V . بهذه الطريقة نحصل على الترتيب التالى :

الكود:
//Constants with sequence of steps.
const unsigned short STEPS[4] =
{
   0b00000101,
   0b00001001,
   0b00001010,
   0b00000110
};
 

البرنامج :

الكود:
 //Constants with the sequence of steps.
const unsigned short STEPS[4] =
{
0b00000101,
0b00001001,
0b00001010,
0b00000110
};

void main( void )
{
    //Declaration of variables.
    unsigned short STEP=0;
    //Port  initiation
    TRISB = 0xF0;
    PORTB = 0;
    OPTION_REG = 0; //Activation of the pull-up resistors.
    while(1)//Infinite Loop.
    {
          //While loop to rotate in clockwise
          //through pin  RB6
          while( Button( &PORTB, 6, 100, 0) )
          {
              PORTB = STEPS[STEP];
              STEP++;
              if( STEP==4 )STEP=0;
          }
          //While loop to rotate in a counterclockwise
          //through pin RB7
          while( Button( &PORTB, 7, 100, 0) )
          {
              PORTB = STEPS[STEP];
              STEP--;
              if( STEP==255 )STEP=3;
          }
    }
}

للمحاكاة بواسطة برنامج إيزبس نحتاج لدائرة بها محرك ثنائى القطبية ومشغل H-bridge فى شكل دائرة متكاملة . هذه الدائرة المتكاملة هى L293D والتى تتضمن بداخلها 2 قنطرة إتش فى نفس الغلاف ، وميزتها أنها نموذجية لهذا النوع من المحركات .
المحاكاة ببرنامج إيزيس يحتاج للأجهزة الآتية :
16F628A, BUTTON, MOTOR-BISTEPPER, L293D وبناء الدائرة الكهربية التالية :





Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الخميس أغسطس 03, 2017 7:47 pm

محرك السرفو Servo Motor :



ما هو محرك السرفو ؟
محرك السرفو هو فى الأساس محرك تيار مستمر عالى الجودة مزود بتروس ودائرة إلكترونية للتحكم فى اتجاه الدوران وموضع عامود محرك التيار المستمر .
يستخدم محرك السرفو إشارة تعديل عرض النبضات PWM للتحكم فى محرك التيار المستمر ، على خلاف PWM الذى يستخدم عادة فى محرك التيار المستمر العادى ، فإن إشارة PWM هذه لا تستخدم فى التحكم فى سرعة الدوران ، فبدلا من ذلك قإنها تستخدم فى التحكم فى اتجاه أو موضع المحرك . مغظم محركات السرفو تعمل على تردد 50 Hz لإشارة PWM ، هذا يعنى أن أشارة PWM يجب أن يكون زمنها الدورى 20ms . الدائرة الإلكترونية الموجودة داخل محرك السرفو سوف تستجيب لعرض نبضة إشارة PWM ، عرض نبضة PWM بالقيمة من 0.7ms إلى 1ms سوف يجعل محرك السرفو يدور مع عقارب الساعة CW ، وعرض نبضة PWM بالقيمة من 1.7ms إلى 2ms سوف يجعل محرك السرفو يدور عكس عقارب الساعة CCW . فى محرك السرفو القياسى عرض إشارة PWM بقيمة 1.5ms سوف يجعل محرك السرفو يدور لوضع المنتصف Center .
ميزة محرك السرفو تكمن فى حركته الزاوية الدقيقة . بعبارة أخرى ، يمكنك تحريك المحرك لأى زاوية تريدها ، على سبيل المثال إذا أردت تحريك المحرك 30 درجة ، يمكنك القيام بذلك بغاية السهولة ، وهذا مستحيل مع محرك التيار المستمر أو محرك الخطوة .
علاوة على ذلك ، محرك السرفو له ثلاثة أسلاك فقط ، الأول هو الأرضى GND ، والثانى للجهد الموجب Vcc والثالث ، وهو الأوسط فى الغالب ، لغرض إشارة التحكم . بمجرد تطبيق إشارة التحكم على الطرف الأوسط يبدأ المحرك فى الحركة . كمية الحركة سوف تعتمد على طول هذه الإشارة .

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

كيف يعمل محرك السرفو؟
يتم التحكم في محركات السرفو عن طريق إرسال إشارة رقمية إلى سلك التحكم في المحرك. الفكرة العامة هي إرسال إشارة موجة مربعة إلى المحرك ، حيث يحدد طول الموجة الزاوية التي سوف يتحركها المحرك.
على سبيل المثال ، عند إرسال شكل موجى مربع بنبضة عرضها 1ms إلى المحرك، فإنه سوف يتحرك إلى زاوية الحد الأدنى ، وهى صفر درجة 0 degrees ، وعند إرسال شكل موجى مربع بنبضة عرضها 1.5ms إلى المحرك ، فإنه سوف يتحرك الزاوية المتوسطة وهى 90 درجة 90 degrees . وعند إرسال شكل موجى مربع بنضة عرضها 2ms إلى المحرك ، فإنه سوف يتحرك إلى أكبر زاوية وهى 180 درجة 180 degrees .






التعامل مع برمجة محرك السرفو :



إذا أردت التحكم فى محرك السرفو من خلال الميكروكونترولر ، ينبغى اتباع ما يلى :
1- تطبيق حالة منطق مرتفع على طرف التحكم .
2- الانتظار مابين 1 إلى 2 ملى ثانية 1-2ms .
3- تطبيق حالة منطق منخفض على طرف التحكم .
4- كرر العملية بضع عشرات من المرات كل ثانية .
تذكر :



• التردد المطلوب لعمل محرك السرفو هو 50Hz وأن الزمن الدورى هو 0.02 second أو 20ms . الدالة PWM1_Init() فى مترجم الميكروسى سوف لا تتهىء بالتردد 50Hz . فعليا نحن سوف لا تكون فى حاجة لدوال الميكروسى فى عمل محرك السرفو . يمكننا عمل ذلك يدويا .
• إذا استخدمنا نبضة بعرض "أقل من أو تساوى واحد ملى ثانية 1ms " ، فإن المحرك يدور إلى "وضع الصفر 0 degree " .
• إذا استخدمنا نبضة بعرض " يساوى 1.5ms أو 1500 us " ، فإن المحرك يدور إلى "وضع 90 degree " .
• إذا استخدمنا نبضة بعرض " يساوى 2 ms أو 2000us " ، فإن المحرك يدور إلى "وضع 180 degree " .
• هذا يعنى أن الموضع الزاوى لعامود محرك السرفو يتحدد بإشارة PWM ، إشارة بعرض 1500us تضع الغامود فى وضع التعادل (المنتصف) ، وإشارة بعرض أقل 1500us تجعل العامود يعود إلى زاوية معينة ، عكس عقارب الساعة ، وإشارة بعرض أكبر من 1500us تجعل العامود يتحرك مع عقارب الساعة إلى زاوية معينة بناء على قيمة غرض الإشارة .

على سبيل المثال ، إذا أردنا دوران المحرك إلى وضع 90 degree ، فإن الشكل الموجى يجب أن يكون 1500us ON و 18500us OFF .
تدريب 1 :


الكود:
void main() { 
int i=0; 
TRISB=0x00; 
delay_ms(1000);
 
while(1){ 
/////// rotate to 0 degree 
for(i=0;i<50;i++){ 
PORTB.F0=1;
delay_us(900);  //ON Time
PORTB.F0=0; 
delay_us(19100); //OFF Time
}
 
delay_ms(4000);  //delay for 4 sec
 
/////// rotate to 45 degree 
for(i=0;i<50;i++) 
PORTB.F0=1; 
delay_us(1250); 
PORTB.F0=0; 
delay_us(18750); 
}
 
delay_ms(4000);
 
/////// rotate to 90 degree 
for(i=0;i<50;i++){ 
PORTB.F0=1; 
delay_us(1500); 
PORTB.F0=0; 
delay_us(18500); 
}
 
delay_ms(4000);  //delay for 4 sec
 
/////// rotate to 1350 degree 
for(i=0;i<50;i++) 

PORTB.F0=1; 
delay_us(1750); 
PORTB.F0=0; 
delay_us(18250); 
}
 
delay_ms(4000);  //delay for 4 sec 

/////// rotate to 180 degree 
for(i=0;i<50;i++) 

PORTB.F0=1; 
delay_us(2000); 
PORTB.F0=0; 
delay_us(18000); 
}
 
delay_ms(4000);  //delay for 4 sec
 

}


تدريب 2 :

الدائرة الكهربية :



البرنامج :
سوف نستخدم الميكروكونترولر PIC16F628A والمترجم ميكروسى برو ، وسوف نستخدم موديول المؤقت Timer0 مع قاسم تردد prescaler بنسبة 1:256 لتوليد فجوة حوالى 20ms بين نبضات PWM المتتابعة . استخدام كريستال بتردد 4.0 MHz ينتج عنه زمن دورة التعليمات بواحد ميكروثانية ، ومن ثم يتم تبسيط حسابات التأخير باستخدام المؤقت Timer0 .
مترجم الميكروسى يوفر الدالة Delay_Cyc() ، والتى تولد تأخير متغير بدورات الساعة . هذه الدالة تستخدم لتغيير غرض نبضة التحكم من 0.7ms إلى 2.3ms .
عند بداية توصيل القدرة إلى الدائرة أو عند إعادة التشغيل reset ، يتم توليد إشارة PWM بتردد 50 Hz بعرض نبضة 0.7ms بشكل مستمر على الطرف RB1 . إشارة التحكم هذه تحرك عامود محرك السرفو فى اتجاه عقارب الساعة حتى النهاية ، وهو ما يعتبر الموضع الزاوى صفر (0) .
عند الضغط على المفتاح الضاغط المتصل بالطرف RB0 ، يتم زيادة عرض النبضة بقيمة 0.2ms ، وهو ما يؤدى إلى دوران عامود المحرك عكس عقارب الساعة CCW ما يقارب 22.5° . ومن ثم فى كل مرة يتم فيها الضغط على المفتاح يتم زيادة عرض النبضة بالقيمة 0.2ms ويدور العامود أكثر فى اتجاه عكس عقارب الساعة . بعد 8 ضغطات متتابعة تصبح عرض النبضة 2.3ms ويصل الغامود إلى النهاية الأخرى ، الوضع الزاوى 180° . عند الضغطة التاسعة يعود reset عرض النبضة إلى قيمته الابتدائية وهى 0.7ms ويدور علمود المحرك فى اتجاه عقارب الساغة حتى الوضع الزاوى صفر درجة مرة أخرى .
فى البرنامج المتغير “i" يحفظ معلومات عرض النبضة (pulse width = i*10*10 microseconds) ويتغير من 7 إلى 23 بخطوة 2 . عندما يكونi=7 ، يكون عرض النبضة 7*10*10 = 700 microseconds (0.7 ms) ، وعندما يكون i=23 يكون عرض النبضة 2.3ms .

الكود:
 
/*
 Pic Micro Servo Motor Control
 PIC16F628A @ Ext 4.00 MHz Crystal Osc.
*/
sbit SW1 at RB0_bit;
sbit Control at RB1_bit;

unsigned short i=7, delay;

void interrupt() {
  delay = i*10;  // min 7*10*10 = 700us
  Control = 1;
  Delay_Cyc(delay);  // Generates delay equal to 10*delay clock cycles
  Control = 0;
  TMR0 = 180;        // TMR0 returns to its initial value
  INTCON.T0IF = 0;  // Bit T0IF is cleared so that the interrupt could reoccur
}

void main() {
 CMCON = 0x07;    // Disable Comparators
 TRISB = 0b00000001;
 PORTB = 0;
 OPTION_REG = 0x07; // Prescaler (1:256) is assigned to the timer TMR0
 TMR0 = 180;        // Timer T0 counts from 180 to 255 to create ~20 ms period
 INTCON = 0xA0;    // Enable interrupt TMR0 and Global Interrupts

 do{
  if(!SW1){        // Change pulse width when Switch is pressed
  Delay_ms(300);
  i = i+2;
  if(i>24) i=7; // max 24 *10 *10 = 2400us
  }
 }  while(1);
}
 

Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في الإثنين أغسطس 07, 2017 1:03 pm

منفذات التيار المتردد AC Actuators



منفذات التيار المتردد فى الأساس قد تستخدم اثنين من التقنيات ، التقنية الأول تتم باستخدام الريلاى وهى محدودة حيث أنها تقوم فقط بالتحويل بين حالة التوصيل والفصل ON-OFF . التقنية الثانية باستخدام أجهزة الحالة الجامدة solid state devices مثل الترياك TRIAC ، هذه الأجهزة تسمح بالعمل مع أحمال التيار المتردد حيث يمكن أن تنظم قدرتها عن طريق التحكم(بالقطع cutting) فى طور (وجه) phase إشارة التيار المتردد ، وغالبا ما يكون 60Hz أو 50Hz . التنفيذ بالترياك سهل ويتم عزل دوائر القدرة عن طريق الروابط الضوئية optocouplers مثل MOC3011, 3010, 3021 وغيرها . الترياك يمكن أن يعمل عند أقصى سعة تيار يمكن أن يتحمله . الترياك له ثلاثة أطراف هى A1, A2, gate يتم عمل دائرة قصر بين A1 و A2عندما يمر تيار بين gate و A1 ويتم الفصل فقط عندما يكون التيار المار من A2 بصفر أى عند عبور إشارة التيار المتردد بالصفر zero crossing .
الشكل التالى يبين المظهر الطبيعى والرموز ببرنامج إيزيس لهذه الأجهزة :



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




لتحقيق تنظيم القدرة على حمل تيار متردد ، يصبح من الضرورى إجراء خفض (قطع) فى طور (وجه) إشارة القدرة الجيبية sine signal . شبكة القدرة التجارية يكون جهدها AC 120V وترددها 60Hz( على سبيل المثال). وهذا يشير إلى أن زمن الدورة الواحدة يساوى 1/60 أى 16.666 m-seconds . مهمة قطع الطور يجب أن يتم عملها فى كل نصف دورة أى كل 8.333 m seconds . وهذا يشير إلى أن قطع الطور يقع بين صفر و 180 درجة ويتكرر بين 180 و 360 درجة .
لفهم هذا المفهوم بشكل واضح يمكنك النظر إلى الرسم البيانى التالى :



لإداء قص الطور ، من الضرورى كشف عبور للصفر zero crossing للإشارة الجيبية للتزامن معها . لكشف عبور الصفر تتوفر عدة طرق ، فى المثال القادم سوف نوضح واحدة تشمل التنفيذ بالروابط الضوئية optocouplers. استخدام الروابط الضوئية نموذجى بالنسبة للعزل الكهربائى لمرحلة القدرة عن مرحلة التحكم الالكترونى .
تدريب تمهيدى :
فى هذا التدريب سوف نستخدم الميكروكونترولر PIC16F877A ، يمكنك استخدام أى نوع آخر . يتم القيام بكشف "عبور الصفر" zero-crossing باستخدام طريقة البريدج والعازل الضوئى .
الدائرة الكهربية :



البرنامج :

الكود:
unsigned char FlagReg;
sbit ZC at FlagReg.B0;

void interrupt(){
    if (INTCON.INTF){          //INTF flag raised, so external interrupt occured
        ZC = 1;
        INTCON.INTF = 0;
    }
}

void main() {
    PORTB = 0;
    TRISB = 0x01;              //RB0 input for interrupt
    PORTD = 0;
    TRISD = 0;                //PORTD all output
    OPTION_REG.INTEDG = 0;      //interrupt on falling edge
    INTCON.INTF = 0;          //clear interrupt flag
    INTCON.INTE = 1;          //enable external interrupt
    INTCON.GIE = 1;            //enable global interrupt

    while (1){
          if (ZC){ //zero crossing occurred
              delay_ms(2);
              PORTD.B0 = 1; //Send a pulse
              delay_us(250);
              PORTD.B0 = 0;
              ZC = 0;
          }
    }
}


فى البداية يتم اختبار "عبور الصفر" ، بعد حدوث عبور الصفر يتم تأخير صغير قبل أن يتم إشعال الترياك . التأخير المستخدم هنا هو 2ms ، ولذلك فإن الترياك يتم إشعاله بعد 2ms بعد حدوث عبور الصفر . يتم إإزالة إشارة الإشعال بعد 250us ، هذا الزمن كافى للتأكد من أن الرياك تحول إلى حالة التوصيل on ، وهذا يعنى أنه حتى لو تم إزالة الإشعال من على البوابة فإن الترياك سوف يظل موصلا حتى عبور الصفر التالى .
النتيجة :




تدريب تطبيقى :
البرنامج التالى يستخدم الميكروكونترولر PIC 16F628A بساعة بتردد 20MHz :

الكود:

// global variables.
unsigned short PWM=41, COUNT=0;
// Interrupt function.
void interrupt()
{
// External interruption by RB0.at each zero crossing
if( INTCON.F1 )
{
// The trigger pin is turned off.
PORTB.F7=0;
// The counter is reset.
COUNT = 0;
// The external interrupt flag goes out.
INTCON.F1=0;
}
// Interruption by Timer 0 each 102.4u sec .
if( INTCON.F2 )
{
// The counter is incremented.
COUNT ++;
// The counter is compared with PWM ,
// if counter is higher ,  the trigger is turned on .
if( COUNT > PWM )PORTB.F7=1;
// The Timer 0  interrupt flag is switched off .
INTCON.F2 =0;
}
}
void main( void )
{
// Port configuration.
TRISB = 0b01111111;
PORTB = 0;
// Activation of Timer0, and external interrupt bits.
OPTION_REG = 0b01000000;
INTCON = 0b10110000;
while( 1 )// Infinite loop.
{
// Lower power push button.
while( Button( &PORTB, 1, 10, 0 ) )
{
// Increment of the phase cut.
PWM ++; if( PWM > 84 )PWM=84;
delay_ms(10); // Delay of change.
}
// higher power  push button.
while( Button( &PORTB, 2, 10, 0 ) )
{
// Decrement of the phase cut.
PWM --; if( PWM == 255 )PWM=0;
delay_ms(10); // Delay of change.
}
}
}


لمحاكاة هذا التدريب ببرنامج إيزيس يتم جلب الأجهزة الآنية :
16F628A, RES, BUTTON, MOC3023, Q4006L4, B80C1000, OPTOCOUPLER-NPN, VSINE, OSCILLOSCOPE.
وبناء الدائرة الكهربية التالية :



بعد تشغيل المحاكاة يمكنك أن تشاهد الأوسليسكوب التخيلى كما فى الشكل التالى :



القناة A تمثل الإشارة على الحمل ويمكن ملاحظة قطع الطور .
القناة B تبين القمة عند عبور الإشارة الجيبية بالصفر , هذه القمة تستخدم لتزامن الميكروكونترولر مع الشبكة من خلال المقاطعة الخارجية .
القناة C تبين إشارة التحكم التى تشعل الترياك .

Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في السبت أغسطس 12, 2017 6:06 pm

الوحدات (الموديولات) اللاسلكية التى تعمل بالأشعة تحت الحمراء Infrared Wireless Modules
الاتصال بالأشعة تحت الحمراء هو استراتيجية عملية للأنظمة التى لا تتطلب سرعة إرسال عالية , والتى تدعم الخط المباشر للرؤية . نطاق الربط بالأشعة تحت الحمراء يعتمد على قدرة power الإرسال . مع ذلك , يتم استخدام هذا المعيار فى التحكم فى إتصالات الأجهزة المنزلية التقليدية مثل التليفزيون وأجهزة التسجيل والفديو ومكيفات الهواء وغيرها الكثير , حيث أن مداه المتوسط حوالى 10 أمتار .
يتم تنفيذ عملية نقل البيانات عن طريق ثنائيات مشعة لضوء الأشعة تحت الحمراء بنظام التعديل الرقمى فى السعة digital amplitude modulation , بنظام يعرف باسم ASK .
معايير الاتصال لتنفيذ التحكم بالأشعة تحت الحمراء تلزم بأن تكون الترددات الحاملة 36 أو 38 أو 40 كيلو هرتز 36, 38 , 40 K Hz وغيرها .
يتم استقبال البيانات عن طريق " المستخلص" demodulator بنظام ASK , والذى يمكنه استقبال بيانات بسرعة حتى 2.4 K bits per second .
مستخلصات ASK demodulators , هى أجهزة أشعة تحت الحمراء شائعة الاستخدام متوفرة فى شكل تجارى مدمج . تلك الأجهزة لها ثلاثة أطراف , إثنان للتغذية هما Vcc والأرضى , والطرف الثالث للخرج الذى يتم استخلاصه output , هذا الطرف من نوع المجمع المفتوح open collector وهذا يعنى أنه يتطلب استخدام مقاومة رفع إلى الجهد Vcc . بعض الشركات المصنعة تدمج مقاومة بالجهاز .
لأغراض التصميم من المهم أن نلاحظ أن خرج demodulator معكوس (مقلوب) , أى عندما يكشف الجهاز الإشارة الحاملة يكون خرج demodulator فى الحالة المنخفضة ويكون فى الحالة المرتفعة عند غياب الكشف .
الشكل التالى يبين المظهر الطبيعى لهذه الأجهزة :



يمكن للأطراف أن تختلف من صانع لآخر , ولكن سوف يكون هناك دائما ثلاثة أطراف Vcc والأرضى والخرج , للأغرض العملية لابد من مراجعة صفحة البيانات data sheet للجهاز المذمع استخدامه .
لمحاكاة هذه الأجهزة يمكن أن نستخدم الوحدة (الموديول) التخيلى IrLink ببرنامج إيزيس , الشكل التالى يبين هذا الموديول :



هذا الجهاز التخيلى يحاكى الربط اللاسلكى عن طريق ليد الأشعة تحت الحمراء وجهاز المستخلص demodulator وكذلك تحرير تردد الإشارة الحاملة لنظام ASK .



لتوثيق إداء هذه الروابط يجب مراقبة وتحليل مصدر الكود للبرنانج التالى , والذى يستخدم موديول PWM كمصدر للتردد الحامل والموديول USART لتعديل الإشارة modulating , بالمعلومات المرسلة فى شكل بيانات كود أسكى ASCII بنصوص ثابتة والتى يمكن مشاهدتها بالوحدة الطرفية التخيلية :


الكود:

void main( void )
{
   //Configuring the USART module at 2400 bps.
   UART1_Init(2400);
   //Configuring PWM carrier frequency to create a 38K Hz
   PWM1_Init(38000);
   PWM1_Start();
   //sets the PWM duty cycle at 50%.
   PWM1_Set_Duty(127);
   while(1) //Infinite Loop.
   {
      //Transmits information in a fixed text.
      UART1_Write_Text("Infrared data transmission.");
      //sends the characters enter and carriage return.
      UART1_Write(13);
      UART1_Write(10);
      //Transmits information in a fixed text.
      UART1_Write_Text("This emission is modulated at 38KHz.");
      UART1_Write(13);
      UART1_Write(10);
      //Transmits information in a fixed text.
      UART1_Write_Text("With a transmission rate of 2400 bps.");
      //sends the characters enter and carriage return.
      UART1_Write(13);
      UART1_Write(10);
      //sends the characters enter and carriage return.
      UART1_Write(13);
      UART1_Write(10);
      // pauses for  200m seconds.
      delay_ms(200);
   }
}

 


لمحاكاة هذا البرنامج ببرنامج إيزيس يلزم جلب الأجهزة الآتية :
16F628A, RES, 1N4148, IrLink, 74LS04, Virtual Terminal وبناء الدائرة الكهربية كما فى الشكل التالى :




يتم عمل التعديل بضرب الأشارة المعدلة مع إشارة الحامل , لذلك يتم تنفيذ البوابة AND , وتصمم بثنائيات سريعة التحويل .

عند تشغيل المحاكاة يجب أن يعرض على الوحدة الطرفية التخيلية البيانات النصية كما يلى :





Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

رد: ما هو الميكروكونترولر Microcontroller ؟

مُساهمة من طرف Admin في السبت أغسطس 12, 2017 7:28 pm

بروتوكول الاتصال RS485 والاتصال بين ميكروكونترولر PIC وآخر

البروتوكول RS485 هو شكل من أشكال الاتصال التسلسلى والذى يستخدم تقنية نقل الفرق فى الجهد بين طرفين يسميان A و B . عندما يكون فرق الجهد موجب فإن البرتوكول يمثل المنطق "1" وعندما يكون فرق الجهد سالب فإنه يمثل المنطق 0"" .
من السمات البارزة لتنفيذ النقل بالبروتوكول RS485 هو استخدام زوج من الأسلاك النحاسية الملفوفة حول بعضها twisted والتى تشكل ناقل الاتصال بمدى أقصاه حوالى 1000 متر دون الحاجة لاستخدام أجهزة تكرار النقل . كما أنه يمكنك توصيل ناقل بيانات حتى 32 عقدة nodes بطريقة النصف مزدوج half duplex ، هذا يعنى أن الاتصال ثنائى الاتجاه ولكن ليس فى نفس الوقت . يستخدم البروتوكول RS485 فى الاتصال بسرعة حتى 2.5 M bits per second .
لتنفيذ هذا النوع من الاتصالات تستخدم دوائر متكاملة كمحولات تسمح بربط الأجهزة ذات المستويات TTL مع RS485 ، الدائرة المتكاملة الأكثر انتشارا لهذه التطبيقات هى MAX485 وهى فى غلاف ذات 8 أطراف ، الشكل التالى يبين الأطراف الطبيعية لهذه الأجهزة :



الأطراف A و B هى ناقل البيانات ثنائى الاتجاه ، الأطراف RE وDE هى أطرف تمكين المخزن المؤقت buffer لكل من الإرسال والاستقبال على الترتيب . الأطراف DI و RO هى أطراف الإرسال والاستقبال على الترتيب . كخطوة إضاقية ، يتطلب وجود زوج من المقاومات 120Ω على التوازى لكل من الطرف A والطرف B فى نهايتى الناقل RS485 .




لاستعراض هذا النوع من شبكات الاتصال سوف نقوم فى هذا الدرس بعمل اتصال نصف مزدوج بين اثنين من الميكروكونترولر ، وسوف نستخدم لهذا الغرض الموديولات USART مع مزيد من التحكم لطرف التمكين .
لإدراك استخدام RS485 يمكنك مراقبة وتحليل كود المصدر للبرنامج التالى الذى يقوم بإرسال حالة مقاومة متغيرة للتحكم فى شدة الإضاءة لمصباح بالجهة المقابلة :


الكود:
void main( void )
{
   //Declaration of variables.
       unsigned short DATA;
       //Port settings.
       TRISB = 0b11111110;
   PORTB = 0;    //MAX485 is configured as a receiver.
   //Activated pull-up resistors.
   OPTION_REG = 0;
   //USART module is configured to 250000 bps.
   UART1_Init(250000);
   //PWM module is configured with a frequency of 1K Hz
   PWM1_Init(1000);
   //PWM module starts with 0%.
   PWM1_Start();
   PWM1_Set_Duty(0);

   while(1) //Infinite Loop.
   {
      //Evaluates if a data has arrived.
      if( UART1_Data_Ready() )
      {
         DATA = UART1_Read();
         //Evaluates whether the data arrival equals the flag 170.
         if( DATA==170 )
         {
         //waits for the next data.
         while( !UART1_Data_Ready() );
         DATA = UART1_Read();
         //Updates the duty cycle of the PWM.
         PWM1_Set_Duty(DATA);
         }
      }

      //Evaluates whether the button was pressed.
      if( Button(&PORTB, 1, 50, 0) )
      {
         PORTB = 1; //MAX485 is configured as a transmitter.
         //Reads the analog channel with voltage
         //potentiometer, and saved the 8 most significant bits
         // in the variable DATA.
         DATA = (ADC_Read(0)>>2)&0xFF;
         //Transmits the flag 170, to synchronize communication.
         UART1_Write(170);
         //Pauses for 1 m seconds between data.
         delay_ms(1);
         //Transmitting the value of the variable DATA.
         UART1_Write(DATA);
         //Wait until the button is released.
         while( Button(&PORTB, 1, 50, 0) );
         PORTB = 0; //Set MAX485 as receiver .
      }
   }
}


البرنامج السابق متناظر ، أى يتم تحميل كل ميكروكونترولر بنفس البرنامج . الدائرة الإلكترونية تستخدم مصباح متوهج من أجل إظهار التحكم فى شدة الأضاءة الذى نحصل علية من موديول PWM وذلك بعد تحويل نتيجة فرق الجهد التناظرى من على المقاومة المتغيرة إلى عدد يستخدم كدورة خدمة لنظام PWM .
لأغراض المحاكاة يتم تغيير مقاومة المصباح المتوهج من القيم الافتراضية وهى 24Ω إلى 100KΩ وجهدها المقنن من 12V إلى 5V .



لإجراء المحاكاة يلزم جلب الأجهزة الآتية :
16F877A, RES, MAX487, LAMP, BUTTON, CAP, POT-HG
وتكوين الدائرة الكهربية التالية :



عند تشغيل المحاكاة يتم إعداد موديولات MAX كمستقبلات ، وعندما تقوم بالضغط على المفتاح الضاغط يقوم الميكروكونترولر بالتحويل من تناظرى لرقمى ، ويرسل هذه المعلومات الخاصة بتحديد شدة إضاءة المصباح إلى الجهة المقابلة .







Admin
Admin

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

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

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

صفحة 5 من اصل 5 الصفحة السابقة  1, 2, 3, 4, 5

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة

- مواضيع مماثلة

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