مشروع: محرك سيرفو مع متحكم 8051

 في هذا المشروع سنعرف كيفية  ربط محرك سيرفو مع متحكم 8051. سوف تتعلم كيفية التعامل مع هذا المحرك والتحكم فيه باستخدام متحكم 8051. تُستخدم المحركات المؤازرة في الروبوتات والأنظمة والصناعات المدمجة لأنها دقيقة للغاية وموثوقة. يتم استخدامها لتشغيل سيارات ألعاب التحكم عن بعد أو الطائرات أو الروبوتات. يمكن التحكم في حركتها عن طريق تدويرها بزاوية معينة. يمكن التحكم في محرك سيرفو بإشارة PWM. في هذه المقالة سوف نتعامل مع محرك سيرفو مع متحكم 8051 ونتحكم في سرعته. أوصيك بقراءة مقال عن كيفية استخدام مترجم keil وكيفية استخدام منافذ الإدخال / الإخراج في متحكم 8051 قبل التعرف على ربط محرك سيرفو مع 8051. 

محاكاة لمحرك سيرفو مع 8051 


عندما نبدأ المحاكاة ، لن يدور المحرك حتى يتم الضغط على أي زر. عند الضغط على زر الضغط الأول ، سوف يدور محرك سيرفو حتى 90 درجة. عندما أضغط على زر الضغط الثاني ، يمكن أن يدور حتى 180 درجة ويتوقف. وعند الضغط على زر الدفع الثالث ، فإنه يدور حتى 270 درجة.

كود المشروع 

#include <REGX51.H>

void Delay_servo(unsigned int);

sbit control_pin=P2^0;

sbit B1=P0^0;

sbit B2=P0^1;

sbit B3=P0^2;




void main()

{

P0=0x07;                                            // input port

control_pin=0;                                                 // output pin




do

{

if(B1==1)

             {                                              //Turn to 90 degree

            control_pin=1;

             Delay_servo(1218);

             control_pin=0;

            }




else if(B2==1)

            {                                               //Turn to 180 degree

            control_pin=1;

            Delay_servo(1470);

            control_pin=0;

            }




else if(B3==1)

            {                                               //Turn to 270 degree

            control_pin=1;

             Delay_servo(1720);

             control_pin=0;

            }

}while(1);

}

void Delay_servo(unsigned int d)

  {

  TMOD &=0xF0;                    // Clear 4bit field for Timer0

  TMOD|=0x01;                                   // Set timer0 in mode1, 16bit




  TH0=0xFF - (d>>8)&0xFF;              // Load delay vales Timer 0 + Bitwise right shift[c][d]a >> b

  TL0=0xFF- d&0xFF;              




  ET0=1;                                              //Enable timer0 interrupts

  EA=0;                                                // Global Interrupt




  TR0=1;                                              // Start timer 0




  while(TF0==0);                                 // Wait for overflow




  TR0=0;                                  //Stop timer0

 

  TF0=0;                                              // Clear Flag

  } 



إرسال تعليق

أحدث أقدم