یاد او آرام بخش قلبهاست
ربات تعقیب مسیر خورشیدی
استاد مربوطه:سرکار خانم مهندس لنگری
نام دانشجو:منیژه برزگران
Robot-line-follower
تعریف ربات:
ربات یک سیستم الکترومکانیکی است که حداقل یکی از رفتاهای انسان را تقلید نماید.بر اساس این رباتهای مختلفی طراحی و ساخته می شوند. مانند رباتهی فوتبالیست – جنگجو – مین یاب و….
و رباتهای تعقیب خط نیز بر این اساس قابل تعریف هستند.
انواع ربات:
رباته با توجه به نوع پردازنده بکاررفته در آنها به دو نوع هوشمند وریموت کنترل تقسیم می شوند که نوع ریموت کنترل توسط نیروی انسانی کنترل می شود و در نوع هوشمند کلیه فرآیندهای تصمیم گیری بر عهده پردازنده ربات می باشد.پردازنده با توجه به عملکرد ربات می تواند کامپیوتر – میکرو کنترلر – میکرو پروسسور یا ریز رایانه باشد.
ربات تعقیب خط
ربات تعقیب مسیر چیست؟
ربات تعقیب مسیر[1] ماشینی است که می تواند یک مسیر را دنبال کند. مسیر می تواند مرئی باشد مانند یک خط مشکی بر یک سطح سفید ( تعقیب خط) و یا نامرئی مانند یک میدان مغناطیسی در فضای آزاد. هدف طی مسیر با بیشترین سرعت و کمترین خطا نسبت به مسیر تعیین شده است. کاربردهای علمی یک چنین رباتی شامل اتومبیل های خودکار که جاده را از طریق یک مسیر راهنمای مغناطیسی دنبال می کند، رباتهای کارگر که در کارخانه ها مسیر مشخصی را از طریق خطوط رنگی حک شده بر کف آن طی می کنند و غیره می شود.
[1] Line follower
ربات تعقیب خط، ربات ایده الی برای ربات سازان آماتور می باشد. حس کردن خط و واداشتن ربات به حرکت بر روی آن، به همراه اصلاح دائمی حرکتهای نادرست از طریق یک مکانیزم فیدبک، یک سیستم حلقه بسته ساده را ایجاد می کند.
یک ربات از قسمتهای زیر تشکیل شده است:
-واحد ورودی-خروجی برای ارتباط با محیط پیرامون
-واحد حسگرها برای جمع آوری سیگنالها و داده های مختلف از محیط
-واحد ادراک حسگری برای استخراج اطلاعات مفید و تفسیر و بیان آنها
-واحد هوش ماشینی برای بیان دانش، استدلال، برنامه ریزی، تصمیم گیری و پیش بینی
-واحد کنترل برای کنترل زیر سامانه های مختلف ماشین هوشمند
-واحد محرکها برای اعمال فرامین صادر شده به ربات و محیط
-واسط ارتباطی برای ارتباط واحد های مختلف ربات با یکدیگر و ارتباط آن با محیط پیرامون
پیشرفت و توسعه چنین رباتهای هوشمندی نیازمند همراهی فناوری و بکارگیری درست و کارآمد مفاهیم هوش مصنوعی در آنها می باشد.
آناتومی ربات
اجزای اصلی یک ربات به شرح زیر است:
-قسمت مکانیکی مفصل بندی شده[1]
-عملگر[2]ها
-سیستم اتقال نیرو[3]
-حسگر[4]ها
-کنترلر[5]
-منبع تغذیه[6]
سیستم مکانیکی مفصل بندی شده
این بخش بدنه و ساختار اصلی ربات را تشکیل می دهد و ربات از طریق آن بر محیط اطرافش تاثیر فیزیکی می گذارد
عملگرها
عملگرها اجزای محرک ربات هستند و انرژی مکانیکی و حرکتی ربات را تامین می کنند. عملگرها براساس نوع حرکت عموما به دو دسته خطی و دورانی تقسیم می شوند. از منظر دیگر می توان آنها را به انواع الکترکی، هیدرولیکی، و پنیوماتیکی تقسیم بندی نمود.
سیستم انتقال نیرو
سیستم انتقال نیرو واسطی میان عملگرها و قسمتهای مکانیکی هستند و نقش انتقال انرژی از عملگر به قسمت مکانیکی را بر عهده دارند.
حسگرها
حسگرها رابطهای دریافتی میان ربات و محیط هستند. یک حسگر هر کمیت فیزیکی معینی که باید اندازه گیری شود را به یک کمیت الکتریکی تبدیل می کند که می تواند پردازش شود یا به صورت الکتریکی انتقال داده شود. حسگرها به دو دسته فعال و غیرفعال طبقه بندی می شوند. حسگرهای غیرفعال سیگنالهایی که توسط مدار موجود در محیط تولید می شود را آشکار می کنند. در حالی که انواع فعال سیگنالهایی به محیط ارسال می کنند و سپس بازتاب امواج ارسالی را دریافت می کنند.
کنترلر
بخش کنترلر هوش ربات را تامین می کند. کنترلر داده هایی که توسط حسگرها تولید می شوند را دریافت می کند و پس از انجام پردازش و تصمصم گیری، فرامین لازم را به عملگرها ارسال می کند.
منبع تغذیه
منبع تغذیه نقش تامین انرژی ربات را بر عهده دارد. منبع تغذیه ربات می تواند در خود ربات قرار داشته باشد و یا اینکه ربات از تغذیه خارجی استفاده کند. در رباتهای متحرک منبع اغلب یک باتری الکتریکی است که در ربات نصب شده است. بر اساس نوع فعالیت ربات و شرایط محیطی، منبع تغذیه می تواند شکلهای متفاوتی به خود بگیرد مانند باتری های خورشیدی به کار گرفته شده در رباتهای مریخ پیما و باتری های بیولوژیکی موجود در برخی از میکرو رباتهای بیولوژیکی.
پتانسیومترها
پتانسیومترها همانند انکدرها برای فیدبک گیری از قسمتهای محرک ربات به کار می روند. پتانسیومتر در واقع یک مقاومت متغییر است که با چرخش محور آن ( در انواع دورانی) و یا با حرکت خطی بازوی آن ( در انواع کشویی) مقاومت میان 2 پایانه اش تغییر می کند.
حسگر تعیین رنگ ( سیاه و سفید)
اصول عملکرد تمامی حسگرهای رنگ سیاه و سفید بر پایه ارسال و بازتاب نور مادون قرمز استوار است. یک فرستنده مادون قرمز امواج مادون قرمز را به سطح مقابل می تاباند و امواج بازگشتی توسط گیرنده مادون قرمز دریافت می شود. با توجه به آنکه رنگ سفید بیشترین بازتاب و رنگ سیاه کمتررین بازتاب نور را دارد می توان با توجه به شدت نور دریافت شده توسط گیرنده، رنگ سطح مقابل حسگر را تعیین نمود.
فاصله یاب مادون قرمز
فاصله یابهای مادون قرمز[1] از یک فرستنده و گیرنده مادون قرمز تشکیل شده اند. نحوه عملکرد سنسور مذکور این گونه است که ابتدا فرستنده پالس های مادون قرمز را به محیط ارسال می کند. این پالس ها پس از برخورد با مانع به سمت حسگر بازتاب می شوند. سپس قسمت گیرنده امواج برگشتی را دریافت کرده و زاویه بازگشت نور را اندازه گیری می کند. در نهایت گیرنده یک سیگنال خروجی متناسب با زاویه بازگشت نور تولید می کند.
بعضی از رباتهای تعقیب کننده هدف از فاصله یابهای مادون قرمز برای تعقیب هدف و حفظ فاصله مورد نیاز تا هدف بهره می گیرند.
[1] IR range finder
سنسورها در ربات تعقیب خط
در ربات تعقیب خط تنها متغییر فیزیکی قابل اندازه گیری نور است. سنسورهای نوری برای شناسایی رنگ پیست و خط بکار می روند و کلیه رباتهای تعقیب خط به آنها نیاز دارند.
سنسور مادون قرمز
بر خلاف فتوسل ها، فتوترانزیستور ها را می توان هم با نور مرئی و هم مادون قرمز بکار برد. سنسورهای مادون قرمز در مقایسه با سنسورهای نور مرئی حساسیت کمتری به نور محیط دارند.
از آنجایی که پرتوهای مادون قرمز دیده نمی شوند، خاموش یا روشن بودن مدار بصورت مستقیم قابل تشخیص نیست. برای دیدن امواج مادون قرمز به انواعی از آشکارسازها نیاز دارید. برخی از انواع دوربین های دیجیتال نسبت به نور مادون قرمز حساسند.و LED های مادون قرمز فقط با ترانزیستورهای مادون قرمز بکار میروند.
موتور DC
موتورهای DC دارای مدارات درایو گوناگون و الگوریتم های مختلفی برای کنترل می باشد. از مزایای این موتورها، ارزان بودن و ساده بودن مدارات درایو (راه انداز) آنهاست. این موتورها به همراه گیربکس نیز بکار می روند.( جهت کم کردن سرعت و بالا بردن قدرت آنها)
موتورهای DC دو ویژگی بسیار مهم دارند:
1-سرعت موتور تابعی از ولتاژ اعمال شده به دو سر آن اس.
2-گشتاور خروجی موتور تابعی از مقدار جریانی است که موتور از باتری ها می کشد.
به عبارت دیگر اگر ولتاژ بیشتری به موتور اعمال شود سرعت چرخش موتور افزایش می یابد و اگر جریانی که از موتور می گذرد بیشتر باشد گشتاور بیشتری تولید خواهد شد.
تعریف باتری
هر وسیله ای که انرژی را ذخیره کرده تا در استفاده های بعدی بکار رود باتری نامیده می شود. استفاده معمول از کلمه باتری به یک وسیله شیمیایی – الکتریکی محدود می شود که انرژی شیمیایی را به الکتریکی تبدیل می کند و باتری این کار را با سلول های گالوانیک انجام می دهد.
محل نصب باتری
از آنجائیکه باتری ها سنگین ترین جزء تشکیل دهنده یک ربات هستند باید در پایین ترین نقطه ممکن نصب شوند تا گرانیگاه ربات در پایین ترین وضعیت ممکن قرار گیرد. عدم توجه به این نکته باعث واژگونی ربات در پیچ های تند خواهد شد.
میکروکنترلر:
به تراشه هایی اطلاق می شود که داخل خود واحدهایی نظیر CPU , حافظه ها, وقفه ها ، مبدل ها و . . . را دارند و برای مقاصدی که عموما کنترل سیستمهاست کاربرد دارند. مثلا در AVR ها که مورد بحث ما هستند سری MEGA برای کارهای کنترلی پیچیده مناسب هستندو در این ربات از این نوع میکرو کنترلراستفاده شده
بلوک های داخلی میکرو کنترلر:
آی سی 1298:
شکل ظاهری:
شماتیک:
چیدمان سنسورها و نحوه وصل شده به پورت میکرو:
نحوه ی تعریف پایه های سنسور:
#define S_1 PINA.0 // Sensor_1: #define S_2 PINA.1 // Sensor_2: #define S_3 PINA.2 // Sensor_3: #define S_4 PINA.3 // Sensor_4: #define S_5 PINA.4 // Sensor_5:
#define S_6 PINA.5 // Sensor_6:
#define S_7 PINA.6 //Sensor_7:
هر کدام از سنسورها که در محیط سفید قرار می گیرندیک منطقی و هر کدام که روی خط مشکی قرار می گیرند صفر منطقی به ورودی پورت aمیکرو می فرستند به عنوان مثال اگر سنسور 1 یا 2 روی خط مشکی بود و بقیه روی خط سفید بودند در این حالت خط مشکی سمت چپ ربات قرار دارد و بایستی به سمت چپ بچرخد. در زیر دستور شرطی لازم آورده شده است.
if ((~S_1)|(~S_2)&(S_3)&(S_4)&(S_5)&(S_6)&(S_7)) {
//turn left
PORTC=0b00000011;
delay_ms(100);
}
کل برنامه میکرو:
#include <mega16.h>
#include <delay.h>
// Declare your global variables here #define S_1 PINA.0 // Sensor_1:
#define S_2 PINA.1 // Sensor_2:
#define S_3 PINA.2 // Sensor_3:
#define S_4 PINA.3 // Sensor_4:
#define S_5 PINA.4 // Sensor_5:
#define S_6 PINA.5 // Sensor_6:
#define S_7 PINA.6 //Sensor_7:
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0xff;
DDRA=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
while (1)
{
if((~S_3|~S_4|~S_5)&(S_1)&(S_2)&(S_7)&(S_7))
{
//forward
PORTC=0b011011;
delay_ms(100);
}
if ((~S_1)&(~S_2)&(S_3)&(S_4)&(S_5)&(S_6)&(S_7))
{
//turn left
PORTC=0b000011;
delay_ms(100);
}
if ((~S_6)|(~S_7)&(S_3)&(S_4)&(S_5)&(S_1)&(S_2))
{
//turn right
PORTC=0b011000;
delay_ms(100);
}
}
از توجه شما متشکرم
با تجدید احترام برزگران