چگونه یک ربات مسیریاب بسازیم :

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

1. مکانیک
2. الکترونیک
3. برنامه نویسی


مکانیک

در مکانیک یک ربات مسیر یاب چند بخش وجود دارد مکانیک ربات مسیر یاب جزء ساده ترین مکانیک ها محسوب می شود این مکانیک شامل بخش های زیر است.


1. شاسی (یا بدنه ) که تمام اجزاء روی آن قرار خواهند گرفت.
٢. موتور ها
٣. چرخ ها
۴. برد سنسور

1. شاسی یا بدنه :

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


2. موتور ها :

موتور های ربات یکی از مهمترین اجزاء ربات محسوب می شوند از سه نوع موتور می توان برای ربات استفاده کرد . موتور هایی که باید در این ربات ها استفاده شوند از نوع DC Motor می باشند و مستقیماً نمی توان آنها را به چرخ وصل کرد مگر اینکه توسط گیرباکس از سرعت آنها کم شود و به قدرت آنها اضافه شود.

1. موتور های اسباب بازی ها و گیرباکس آن ها در ساده ترین حالت شما می توانید گیرباکس اسباب بازی ها را باز کرده و از آن ها استفاده کنید فقط اگر از این روش استفاده می کنید دقت کنید گیرباکس ها کاملاً روان باشند و موتور ها نیز جریان کشی بالایی نداشته باشد . اگر موتور ها جریان کشی بالایی دارند بهتر است از یک موتور دیگر استفاده کرد .


٢. گویی وپولی : روش دیگری که می توان استفاده کرد استفاده از گویی وپولی ها است که از تسمه برای وصل کردن وتبدیل دور استفاده می شود این روش هم خالی از مشکل نیست این روش توصیه نمی شود .


٣. موتور های گیرباکس دار : در این موتور ها موتور و گیرباکس داخل یک مجموعه قراردارند و در دورهای مختلف با توان های مختلف عرضه شده اند بهترین گزینه استفاده از این نوع موتور ها می باشد . چرا که یک مجموعه مطمئن است . بی صدا و حجم کمی را اشغال می کنند و معمولا جریان کشی مناسبی دارند و تنها مشکل آن ها قیمت بالای آن ها است .


نکته 1 : دقت کنید موتور های معمولی را مستقیماً به چرخ وصل نکنید زیرا آن ها دارای سرعت بالا ( 2000 تا 3000 ) دور در دقیقه ولی قدرت لازم برای حرکت را ندارند .


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


3. چرخ ها : برای یک ربات موفق مسیر یاب چند نکته حائز اهمیت است :
1. اندازه قطر چرخ ها
2. اندازه عرض چرخ ها
3. میزان اصطحکاک چرخ با زمین


1. قطر چرخ ها : بهتر است اندازه چرخ ما طوری تعیین شود که با موتور ها هماهنگی کاملی داشته باشد چون هرچه قطر چرخ ها بیشتر باشد با یک دور چرخش موتور ربات به مقدار بیشتری حرکت کند و هرچه چرخ ها کوچکتر باشد حرکت ربات کمتر است . پس اندازه چرخ ها با سرعت ربات نسبت مستقیم دارد.


2. عرض چرخ ها بهتر است بین 1 تا 2 سانتی متر باشد چون هرچقدر عرض چرخ ها بیشتر باشد هم وزن چرخ بیشتر می شود و سطح اصطحکاک بیشتری با زمین پیدا می کند .


3. برای اینکه لاستیک ها سر نخورند بهتر است چرخی را انتخاب کنید که اصطحکاک بسیار بالایی بازمین داشته باشد .


نکته کنکوری : ساده ترین روش برای بالا بردن اصطحکاک چرخ با زمین استفاده از چسب برق از جهت چسبنده روی چرخ است که چرخ کاملاً برروی زمین بچسبد و اصطحکاک زیادی داشته باشد .


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


4. برد سنسور : این برد در جلوی رباب نصب می شود و باید فاصله استاندارد از سطح زمین را داشته باشد تا بهترین بازده از لحاظ وضعیت خط زیر ربات را به ما ارائه دهد .
نکات مهم درباره مکانیک و نوع بستن آن


1. حتماً مکانیک کاملا محکم بسته شود
2. چنانچه از چسب استفاده می کنید سعی کنید از چسب به همراه بست استفاده کنید
3. برای اتصال برد ها به بدنه اصلی حتماً از پیچ و مهره و یا Spacer و مهره استفاده کنید
4. برای محکم شدن اتصالات و جلوگیری از بازشدن آنها از واشر فنری استفاده کنید
5. در جاهایی که ممکن است مهره یا Spacer باعث اتصالات در مدار شما شوند از واشر فیبری استفاده کنید

الکترونیک


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

به درستی کار نمی کند .
• به این نکته توجه داشته باشید مدار الکترونیکی شما حتما در مقابل نویز مقاوم باشد چون مدار درایور موتور و DC موتور ها نویز شدیدی در مدار ایجاد می کنند
• چنانچه در طراحی و ساختار مدار و IC تجربه ندارید بهتر است از برد های آماده یا برد های آموزشی استفاده کنید

الکترونیک مدار ربات مسیر یاب از بخش های زیر تشکیل شده است
1. مدار تغذیه
2. مدار درایور موتور
3. بخش خروجی ها
4. میکروکنترلر
5. مقایسه گر های آنالوگ
6. مدار برد سنسور

مدار تغذیه :


این بخش از مدار وظیفه تبدیل ولتاژ ورودی مدار به برق 5 ولت را برعهده دارد برق مدار شما باید 5 ولت باشد. به این دلیل که میکرو کنترلر شما و اکثر المان های برد با برق 5 ولت کار می کنند . برای این تبدیل ولتاژ بهتر است از رگولاتور 7805 استفاده و برای گرفتن نویز مدار یک خازن با ظرفیت بالا (با این بخش موازی کنیم LED 2000 ) و یک خازن با ظرفیت بسیار پایین با مدار موازی کنیم ، بهتر است یک uf تا وضیعت روشن یا خاموش بودن مدار کاملا مشخص باشد در این مدار فقط خازن با ظرفیت پایین با مدار موازی شده که بهتر است یک خازن با ظرفیت بالا بعد از رگولاتور با مدار موازی شود.




1. مدار درایور موتور


یکی دیگر از مهمترین بخش های یک ربات بخش درایور موتور است . وظیفه این بخش تأمین ولتاژ و جریان مورد نیاز های موتور است و توسط میکروکنترلر کنترل می شود
میکروکنترلر مستقیما نمی تواند برق موتور ها را تأمین کند برای راه اندازی موتور ها از 2 روش استفاده می شود


• رله


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

• ترانزیستور ها یا IC های درایور موتور

با ترانزیستور ها یا IC های درایور موتور می توان موتور ها را کنترل کرد بهترین گزینه برای کنترل این موتور ها آی سی L293 و آی سی l298 می باشد که می توان موتور های را به صورت 2 جهته کنترل کرد . چرا باید از موتور ها به صورت 2 جهته استفاده کینم ؟ چنانچه بخواهیم ربات ما مستقیما به جلو حرکت کند کافی است 2 موتور را روشن کنیم چنانچه بخواهیم ربات به سمت راست بچرخد می توانیم موتور سمت راست را خاموش کنیم و موتور سمت چپ روشن باشد تا ربات به سمت راست گردش داشته باشد چنانچه بخواهیم ربات به سمت چپ بچرخد می توانیم موتور چپ را خاموش کنیم و موتور سمت راست روشن باشد تا ربات به سمت چپ گردش داشته باشد پس چرا موتور ها باید به صورت 2 جهته کنترل شود ؟ دلیل آن کاملا واضح است چنانچه بخواهیم ربات را با سرعت بالایی کنترل کنیم باید در پیچ های 90 درجه یا بیشتر از معکوس استفاده کنیم یعنی مثلا می خواهیم ربات به سمت راست بچرخد به جای خاموش کردن موتور سمت راست آن را به صورت معکوس روشن می کنیم یعنی موتور سمت راست به سمت عقب می چرخد و موتور سمت چپ به سمت جلو پس ما گردش با سرعت بالاتر و حول محور مرکز ربات را خواهیم داشت و همین مسئله در گردش به سمت چپ صدق می کند .

2. بخش های ورودی و خروجی

این بخش ها می تواند شامل LED و LCD ها باشد که بتوانیم خروجی های یک ربات و وضعیت های آن را مشاهده کنیم تا بتوانیم راحت تر مشکلات ربات را بررسی و برطرف کنیم البته این بخش یک بخش اختیاری در ربات است ولی بودن آن بسیار مفید است و کمک می کند .

3. میکروکنترلر :

میکرو کنترلر در حقیقت مغز ربات ما می باشد و طبق برنامه که ما به آن می دهیم ربات را کنترل می کند یعنی شامل فرایند دریافت ورودی از سنسور ها ، پردازش توسط برنامه ای که ما برای آن مشخص کرده ایم و خروجی دادن به موتور ها می شود میکرو هایی که معمولا در ربات های مسیریاب استفاده می شود از 2 خانواده هستند

1. میکروکنتر های 8051
2. میکرو کنترهای خانواده AVR


البته ما میکرو کنترلر AVR را به چند دلیل پیشنهاد می کنیم


1. مدار ساده تر نسبت به خانواده 8051
2. داشتن مبدل آنالوگ به دیحیتال
3. داشتن PWM سخت افزاری
4. داشتن مدار پروگرامر ساده
5. تکنولوژی بالاتر در طراحی میکرو و مقاوت بیشتر در مقابل Noise


از IC های رایج در خانواده 8051 می توان به 89s51 و 89c51 اشاره کرد و از IC های رایج در خانواده AVR به Mega16 Mega32 اشاره کرد
نکته مهم در استفاده از میکرو ها این است که باید مدار آن طوری بسته شود که کمترین میزان Noise را داشته باشد چون این ها نسبت به نویز یا تغیرات ولتاژ بسیار حساس هستند و می تواند باعث Reset شدن یا هنگ کردن میکرو شوند




مدار مقایسه گر آنالوگ Opamp ها


این مدار در صورتی مورد نیاز است که از میکرو های خانواده 8051 استفاده کنیم در این مدار خروجی سنسور ها با یک ولتاژ متغیر که توسط یک مقاومت متغیر ساخته شده مقایسه می شود و خروجی آنالوگ ولتاژ سنور ها به صفر یا یک تبدیل شده که برای میکرو قابل فهم است از Opamp های رایج می توان به Lm324 اشاره کرد
در میکرو های در میکرو های به دلیل داشتن مبدل آنالوگ به دیجیتال ما ولتاژ را در میکرو به صورت یک عدد بین 0 تا 1023 دریافت می کنم که 0 به عنوان 0 ولت و 1023 به عنوان ولتاژ مرجع ( 5 ولت ) است .

مدار سنسور

این مدار به عنوان یکی از بخش های مهم در ربات شناخته می شود و وظیفه این بخش مشخص کردن وضعیت حالت زیر سنسور است که آیا سفید است یا مشکی ؟ برای مشخص کردن این وضعیت از 2 نوع سنسور می توان استفاده کرد .

Photocell .1

فوتوسل یک مقاومت متغیر است که نسبت به تغیرات شدت نور حساس است مقدار مقاومت آن تغییر می کند اگر بخواهیم از این سنسور استفاده کنیم باید از یک فرستنده که نور مرئی به زمین می تابند استفاده کنیم و اندازه بازتاب نور را توسط فتوسل اندازه گیری کینم که این کار دقت بالایی ندارد و نور مرئی مستقیما نباید با گیرنده در ارتباط باشد و یکی دیگر از مشکلات این روش این است که خروجی سنسور های ربات در شرایط مختلف نوری تغییر می کند و نور محیط بر آن تاثیر مستقیم دارد .

2. سنسور های مادون قرمز

این سنسور ها در مقایسه با سنسور های فتوسل موفق تر هستند و از کیفیت بالاتری برخوار هستند چون از نور مرئی استفاده نمی کنند و نور محیط تاثیر بسیار کمی در آن دارد بهترین نوع این سنسور ها ، سنسور های فرستنده و گیرنده در یک پک می باشند که به راحتی وضعیت زمین را مشخص می کنند از این نوع سنسور ها هم می توان به سنسور GP2S06 اشاره کرد که توضیحات این سنسور در اینجا آمده است دقت داشته باشید طرز چیدن سنسور ها به الگوریتم برنامه مربوط می شود ولی سعی کنید حداقل از 5 سنسور در مدار خود استفاده کنید



نقشه مدار برد سنسور که خروجی آن توسط یک مقایسه گر آنالوگ به 0 و 1 تبدیل می شود


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

برنامه نویسی :

برنامه یک ربات مسیریاب می تواند شامل چند بخش باشد که آنها را توضیح می دهیم


1. خواندن وضعیت از سنسور ها
2. تصمیم گیری ( پردازش اطلاعات )
3. فرمان دادن به موتور ها

یک مثال برای کنترل ربات با 3 سنسور در ساده ترین حالت

sr سنسور سمت راست ما و به Porta.0 وصل است
وصل است sl سنسور سمت چپ ما و به Porta.1
sc سنسور وسط ما و به Porta.2 وصل است
موتور های ما نیز به Portd.4 , Portd.5 , Portd.6 , Portd.7 وصل است



Void main()

{

While (1)

{

SR = PORTA.0;

SL = PORTA.1;

SC = PORTA.2;



if (SR==1) center();

if (SL==1) moveright();

if (SC==1) moveleft();

} }

function center()

{

PORTD.4=1;

PORTD.5=0;

PORTD.6=1;

PORTD.7=0;

Return 0;

}

function moveright()

{

PORTD.4=1;

PORTD.5=0;

PORTD.6=0;

PORTD.7=0;

Return 0;

}

function moveleft()

{

PORTD.4=0;

PORTD.5=0;

PORTD.6=1;

PORTD.7=0;

Return ;

}



یک مثال برای کنترل ربات با 5 سنسور در ساده ترین حالت
SR1 Porta.4 سنسور سمت راست ما و به وصل است
SR2 Porta.3 سنسور سمت راست ما و به وصل است
SL1 Porta.2 سنسور سمت چپ ما و به وصل است
SL2 Porta.1 سنسور سمت چپ ما و به وصل است
SC Porta.0 سنسور وسط ما و به وصل است
موتور های ما نیز به Portd.4 , Portd.5 , Portd.6 , Portd.7 وصل است



Void main()

{

While (1)

{

SR1 = PORTA.4;

SR2 = PORTA.3;

SL1 = PORTA.2;

SL2 = PORTA.1;

SC = PORTA.0;

if (SC==1) center();

if (SL1==1) moveleft();

if (SR1==1) moveright();

if (SL2==1) moveleftfast ();

if (SR2==1) moverightfast ();

}

}

function center()

{

PORTD.4=1;

PORTD.5=0;

PORTD.6=1;

PORTD.7=0;

Return 0;

}

function moveright()

{

PORTD.4=1;

PORTD.5=0;

PORTD.6=0;

PORTD.7=0;

Return 0;

}

function moveleft()

{

PORTD.4=0;

PORTD.5=0;

PORTD.6=1;

PORTD.7=0;

Return ;

}

function moverightfast()

{

PORTD.4=1;

PORTD.5=0;

PORTD.6=0;

PORTD.7=1;

Return 0;

}

function moveleftfast()

{

PORTD.4=0;

PORTD.5=1;

PORTD.6=1;

PORTD.7=0;

Return ;