امروزمهر ۱۰, ۱۴۰۲

ساخت یک ربات تعقیب خط با استفاده از میکروکنترلر ۸۰۵۱

ربات تعقیب خط یکی از قدیمی ترین رباتهای راهنمای اتوماتیک هستند. این ربات ها می توانند یک خط کشیده شده بر روی زمینه متضاد را دنبال کنند. معمولا از رباتهای تعقیب خط برای کار در یک الگوریتم بازگشتی حلقه بسته استفاده می شود که در آن فیدبکی از سنسور خطی توسط میکروکنترلر استفاده می شود تا بتواند مسیر صحیح ربات را تشخیص دهد. در ایت رباتها معمولا از جفت سنسورهای LED/LDR، LED/فوتو دیود یا LED/فوتو ترانزیستور استفاده می شود و کنترل کننده یک مدار الکترونیکی است که الگوریتم طراحی شده برای فیدبک را اجرا می کند. برای حرکت دادن چرخها نیز از موتوهای چرخ دنده ای استفاده می شود. در ساختنی می توانید طرز ساخت انواع ربات را ببینید.

ربات تعقیب خطی که در اینجا بیان شده طراحی شده تا بتواند یک خط مشکی را در پس زمینه سفید تشخیص دهد. در اینجا از جفت سنسور LED/LDR استفاده شده و از یک الگوریتم ساده برای نگه داشتن ربات در مرکز خط بهره می گیرد. در حقیقت برای ساختن چنین ربات ساده ای حتی نیاز به میکروکنترلر هم نیست. تعدادی مقایسه کننده و یک مدار درایور موتور نیز به راحتی می توانند این کار را انجام دهند. در اینجا تنها به دلیل نشان دادن تکنولوژی از یک میکروکنترلر استفاده شده است. همچنین این پروژه را می توان به عنوان یک پایه برای رباتهای تعقیب خط پیشرفته که با الگوریتمهای پیچیده تری کار می کنند، به شمار آورد. در اینجا از میکروکنترلر AT89S52 که از محصولات شرکت Atmel است استفاده شده است.

سنسور تعقیب خط

قسمت سنسور شامل تعدادی جفت LED/LDR برای سمت راست و سمت چپ ربات است. این جفت های LED/LDR می توانند خط مشکی را بر روی زمینه سفیدی که ربات قرار است روی آن قرار بگیرد تشخیص دهند. در LDR یک رابطه معکوس بین مقاومت و نوری که بر روی آن می افتد وجود دارد. زمانی که یک جفت LED/LDR مشخص در بالای یک سطح سفید قرار بگیرند، نور بازتاب شده از سطح بر روی LDR می افتد و مقاومت آن را کاهش می دهد، به صورت عکس اگر این جفت LED/LDR بر روی سطح سیاه رنگ قرار بگیرند مقاومت بالا می رود. از این تغییر مقاومت LED برای دست یافتن به مسیر درست در ربات تعقیب خط در نقشه X-Y استفاده می شود. در تصویر زیر مدار سنسور نشان داده شده است.

در مدار، مقاومت R1 و R2 جریان را در بین LEDهای نورانی D1 و D2محدود می کنند. مقاومت های R3/R5 و همچنین R6/R8 تشکیل تقسیم کننده های ولتاژی را می دهند که با هم و به صورت شبکه ای به LDR های متناظر متصل شده اند. خروجی مدار سنسورها از نقاطی که در دیاگرام مدار به نامهای A و B مشخص شده، گرفته می شود. در جدول زیر ولتاژ در گره های A و B برای جهت گیری های ممکن ماژول سنسور مشخص شده است.

جهت گیری ولتاژ گره A ولتاژ گره B ارتباط
هر دو سنسور در زمینه سفید باشند ۱٫۴ ولت ۱٫۴ ولت ربات به حرکت خود ادامه می دهد تا به خط مشکی برسد.
سنسور چپ در زمینه سفید و سنسور راست در زمینه مشکی ۱٫۴ ولت ۰٫۵ ولت ربات به سمت چپ میچرخد تا خط مشکی را بیابد.
سنسور چپ در زمینه مشکی و سنسور راست در زمینه سفید ۰٫۵ ولت ۱٫۴ ولت ربات به سمت راست میچرخد تا خط مشکی را بیابد

مدار مقایسه کننده

وظیفه مدار مقایسه کننده تبدیل ولتاژ آنالوگ خروجی از سنسورها به فرمت دیجیتال است تا میکروکنترلر بتواند آن را بخواند. مدار مقایسه کننده بر اساس آی سی آپ امپ LM324 (IC1) ساخته شده است.  LM324 یکآپ امپ چهارتایی است که می تواند توسط یک منبع تغذیه تکی راه اندازی شود. از بین ۴ مقایسه کننده ای که در این آی سی وجود دارد تنها دو عدد از آنها استفاده می شوند. یکی از آنها برای سمت راست و دیگری برای سمت چپ. دیاگرام مدار مربوط به بخش مقایسه کننده در تصویر زیر نشان داده شده است.

مقاومتهای R10 و R11 به ترتیب برای تنظیم ولتاژ ۱ ولتی مرجع برای مقایسه کننده سمت چپ و راست تعیین شده اند. خروجی دریافتی از سنسورهای سمت چپ و راست ( گره A و B ) به ورودی غیرمعکوس در مقایسه کننده سمت چپ و راست متصل شده اند. خروجی مقایسه کننده سمت چپ به پین P1.0 در میکروکنترلر متصل است و خروجی مقایسه کننده سمت راست نیز به پین P1.1 وصل شده است. هر دو مقایسه کننده در حالت غیر معکوس قرار دارند و جدولی که در ادامه قرار گرفته خروجی آنها را به همراه ولتازهای ترکیبی ممکن ورودی نشان می دهد.

جهت گیری سنسور A

ورود به مقایسه کننده چپ

B

ورود به مقایسه کننده راست

مقایسه کننده چپ O/P به پین P1.0 میکروکنترلر مقایسه کننده راست O/P به پین P1.1 میکروکنترلر
هردو سنسور در زمنیه سفید ۱٫۴ V ۱٫۴ V ۵V ۵V
سنسور چپ در زمینه سفید و سنسور راست در زمینه مشکی ۱٫۴ V ۰٫۵ V ۵V ۰V
سنسور چپ در زمینه مشکی و سنسور راست در زمینه سفید ۰٫۵ V ۱٫۴ V ۰V ۵V

میکروکنترلر AT89S52

در اینجا وظیفه میکروکنترلر، کنترل کردن مورتوهای سمت راست و چپ بر طبق سیگنالهای فیدبک دریافتی از مقایسه کننده های سمت راست و چپ است تا ربات تعقیب خط بتواند بر روی مسیر صحیح (خط مشکی) باقی بماند. منطق اجرا شده توسط میکروکنترلر برای نگه داشتن ربات در مسیر در جدول زیر نشان داده شده است.

جهت گیری سنسور A

ورود به مقایسه کننده چپ

B

ورود به مقایسه کننده راست

نتیجه گیری فعالیت انجام شده توسط میکروکنترلر
هردو سنسور در زمنیه سفید ۱٫۴ V ۱٫۴ V ربات در مسیر مستقیم به حرکت ادامه میدهد راه اندازی هردو موتور
سنسور چپ در زمینه سفید و سنسور راست در زمینه مشکی ۱٫۴ V ۰٫۵ V ربات به چپ میچرخد توقف موتور راست و حرکت موتور چپ
سنسور چپ در زمینه مشکی و سنسور راست در زمینه سفید ۰٫۵ V ۱٫۴ V بات به راست میچرخد توقف موتور چپ و حرکت موتور راست

مدار راه اندازی موتور

وظیفه مدار راه اندازی موتور این است که موتورها را بر طبق سیگنالهای خروجی دریافتی از میکروکنترلر به کار بیاندازد. مدار راه اندازی موتور بر اساس آی سی ULN2003A طراحی شده است. این آی سی دارای جریان بالای (۵۰۰ میلی آمپر)، ولتاژ بالا (۵۰ ولت) رشته ای از آرایه ها شامل ۷ جفت دارلینگتون با امیتر مشترک و کلکتور باز است. با وجود داشتن ۷ کانال در این آی سی، در این مدار تنها از ۲ عدد استفاده شده است که یکی برای کانال سمت چپ و دیگری برای کانال سمت راست است. شماتیک مدار درایور موتور در تصویر زیر نشان داده شده است. عملکرد ULN2003 به سادگی شرح داده شده است. زمانی که یک  خط ورودی مشخص ( پین ۱) در حالت high قرار می گیرد، خط خروجی متناظر (پین ۱۶) در حالت low قرار می گیرد و برعکس.

خازنهای C4 و C5 بخش های دیگر مدار را از تداخل الکتریکی (EMI) ایجاد شده توسط موتور ایزوله می کنند. ولتاژ بازگشتی محرکه الکتریکی (EMF) در زمانی که موتور سوییچ می شود، بوجود می آید و پرش های ولتاژ به دلیل قوس براشها ایجاد میشود که دلیل عمده تداخلات الکتریکی به شمار می رود. وجود این خازنها بسیار ضروری است و بدون آنها باید انتظار آسیب ناگهانی از طرف میکروکنترلر را داشت.

دیاگرام کامل مدار

مدار شماتیک ربات تعقیب خط با استفاده از میکرو کنترلر 8051

مدار شماتیک ربات تعقیب خط با استفاده از میکرو کنترلر ۸۰۵۱

کلید S1، خازن C3 و مقاومت R9 تشکیل یک مدار ریست قدرتمند برای میکروکنترلر را می دهند. خازنهای C1,C2 و کریستال ۱۲ مگاهرتزی  X1 با مدار کلاک میکروکنترلر ارتباط دارند. مقاومتهای R12 و R13 مقاومتهای مربوط به pull up هستند. بقیه قسمت های مدار نیز در قبل توضیح داده شده اند.

کد برنامه ربات تعقیب خط

ORG 000H                 // origin
 MOV P1,#00000011B        // sets port 1 as input port
 MOV P0,#00000000B        // sets port 0 as output port
 BACK: MOV P0,#00000011B  // starts both motors
       JB P1.0, LABEL1    // branches to LABEL1 if left sensor is ON
       CLR P0.0           // stops left motor
       SETB P0.1          // runs right motor
       ACALL WAIT1        // calls WAIT1 subroutine
       SJMP BACK          // jumps back to the BACK loop
LABEL1: JB P1.1, LABEL2   // branches to LABEL2 if right sensor is ON
        SETB P0.0         // runs left motor
        CLR P0.1          // stops right motor
        ACALL WAIT2       // calls WAIT2 subroutine
        SJMP BACK         // jumps back to the BACK loop
LABEL2: SJMP BACK         // jumps back to the BACK loop
WAIT1:JNB P1.0,WAIT1      // waits until robot is back from rightward deviation
      RET                 // returns from WAIT1 subroutine
WAIT2:JNB P1.1,WAIT2      // waits until robot is back from leftward deviation
      RET                 // returns from WAIT2 subroutine
END                       // end statement

کمی درباره برنامه

در ابتدای برنامه چورت ۱ به عنوان پورت ورودی و پورت ۰ به عنوان پورت خروجی تعریف شده اند. پس از آن، هر دو موتور شروع به کار کرده تا زمانی که ربات به خط مستقیم حرکت کند. سپس برنامه بررسی می کند که آیا انحرافی به سمت راست وجود دارد یا خیر. در صورت وجود انحراف به راست، برنامه موتور سمت چپ را متوفق می کند و موتور سمت راست روشن می ماند و منتظر می شود تا زمانی که انحراف ربات از بین برود. زمانی که ربات دوباره بر روی خط قرار گرفت، هر دو موتور فعال می شوند.

اگر انحرافی به سمت راست وجود نداشته باشد، برنامه وجود انحراف به چپ را بررسی می کند. مشابه حالت قبل در صورت وجود انحراف به چپ، موتور سمت راست خاموش شده و موتور سمت چپ تا زمانی که ربات به مسیر مستقیم و صحیح بازگردد روشن می شود.زمانی که ربات به مسیر بازگشت دوباره هردو موتور فعال می شوند. در نهایت اگر هیچ انحرافی وجود نداشته باشد، هر دو موتور در حالت روشن باقی می مانند.

نکات عملی استفاده از مدار:

  • برای تغذیه این مدار ربات تعقیب خط می توان از یک باطری ۶ ولتی سایز A استفاده کرد که باید به محلی که در دیاگرام مدار به نام ۵V DC مشخص شده متصل شود.
  • برای تنظیم کردن ربات، باید آن را بر روی خط قرار داده تا هر دو جفت سنسور در زمینه سفید قرار بگیرند و خط سیاه در وسط آنها باشد. سپس مقاومت های قابل تغییر R10 و R11 را انقدر تغییر داده تا LED های D3 و D4 روشن شوند.
  • سنسورهای LED D1 و D2 از نوع سبز پر نور هستند.
  • آپ امپ خروجی LED های D3 و D4 از نوع معمولی و مینیاتوری و برای LED های زرد رنگ هستند.

منبع

اشتراک‌گذاری

دیدگاهتان را بنویسید