Parsi Coders

نسخه‌ی کامل: آموزش ساخت ربات مسیر یاب
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
روباط مسير ياب نقشه عملی با ميکرو کنترلر را در ادامه مطلب مشاهده نمائید.



[عکس: P4.jpg]
مداری رو که می بينيدبه نظر من ساده ترين روباط مسيريابی است که ميتوان
يافت و برگ برنده ان استفاده از L293D که بهترين درايور استپ
موتور موجود
در بازار ايران است اين درايور در ازائ دريافت کد باينری از ميکرو کنترلر با
دادن فرکانس به استپ موتور ان را داريو کرده مثلا با دادن کد 0010 استپ
۲ درجه به راست می چرخد .
جريان ورودی اين درايور خيلی کم بوده و جريان دهی خروجی ان تغريبا زياد
است و ميتوان با دو خط کنتری اين دارايور به راحتی دو استپ موتور را
حرکت داد .
ميکرو کنترلر استفاده شده 89 C2051 يک ميکرو کنترلر مشهور که
ايرانيان همگی انرا جوب می شناسند سنسور استفاده شده در مدار مادون
قرمز بوده و نسبط به فوتوسل مطمئن تر به نظر ميرسد برای اين مدار از
هر اپ امپی ميتوان استفاده کرد که من LM324 را ترجيح ميدهم
کريستال مدار حتما بايد 11.0592 باشد .

[عکس: Pbotcircuit.gif]
برای تنظيم دقت مدار در محل از يک ولوم 20K بايد استفاده شود بايد اين
نکته را ذکر کنم که اين مدار قبل از حرکت بايد تنظيم شود .

[عکس: IRcircuit.gif]
و اخر ان که سنسور های مدار بايد طبق شکل و با رعايت کامل در زير
مدار نسب شود اين رباط سبک بوده و ميتوان از هر استپ موتوری با زاويه
0.7 استفاده کرد.

[عکس: sensors.gif]
فايل هگز
برنامه ميکرو کنترلر به زبان
کد پی‌اچ‌پی:
       key P1;
 
       if((key 0x40)==0) exit=0;
 
     }
         

Run
()
{
 
  char sensors;
 
  sensors = (P3 &=0x0f);

 
      if((sensors 0x01)==0) {
 
       TurnRight();
 
       flag 1             }

 else 
 if((sensors 0x08)==0) {
 
        TurnLeft();
 
        flag 2            }
 else 
 if(sensors == 0x09   {
 
       Forward(high);
 
       flag 0             }

 else 
 if(((sensors==0x0b)||(sensors==0x0d))&&(flag==0))
 
         Forward(low);

}

Forward(char speed)
{
 
 P1=0x64;
 
 speedright speed+10;
 
 speedleft  speed;
 
 delay(time);
}

TurnRight()
{
 
 P1=0x68;
 
 speedright low+5;
 
 speedleft  low;
 
 delay(time);
}

TurnLeft()
{
 
 P1=0x54;
 
 speedright low+5;
 
 speedleft  low;
 
 delay(time);
}

Reverse(char speed)
{
 
 P1=0x58;
 
 speedright speed;
 
 speedleft  speed+5;
 
 delay(time);