# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > مباحث عمومی کار با سخت افزارها، سنسورها و لوازم جانبی >  ارتباط ميكرو و كامپيوتر و كنترل دست ربات سه محور

## saed2006

يك دست ربات دارم وصل كامپيوتر هست با سه تا موتور كه بايد بتونه توي يك ماتريس سه بعدي جابه جا بشه و يك جسم رو بلند كنه از يه جايي به جاي ديگه ببره و جسم رو رها كنه   خيلي سوال پيش اومده برام كه نميدونم چه جوري بايد بسازم:
1-براي يك كار حرفه اي به چه موتور هايي نياز ددارم؟ servo موتور كارم رو راه مياندازه؟
2-چه ميكرويي استفاده كنم؟
3-چه اطلاعاتي رو بايد از برنامه به ميكرو بفرستم كه حركت انجام بشه؟
4-از چه فرمولي توي برنامه بايد استفاده كنم و نتيجه رو به  چه پورتي بفرستم؟
5-براي اين كار بهتره از وايرلس استفاده كنم يا با سيم باشه؟
6-كجا ميتونم لوازمش رو بخرم؟
7-براي يه چيز ازمايشي ساده تقريبا چقدر بايد هزينه كنم؟
8-برنامه ميكرو رو به چه زباني بنويسسم بهتره و بعدا مشكلي پيش نمياره؟
9-زماني كه بايد صرف ساختش كنم چقدر هست چون من اصلا زمان ندارم توصيه اي كه سريعتر به نتيجه برسم دارين؟
10-در كل هر انچه فكر ميكنيد براي راه اندازيش نياز دارم ازم دريغ نكنيد
ممنون از لطفتون

----------


## faramarz_fireboy

سلام
این همه سوال؟ :متفکر: 
من اطلاعاتم کنه از اساتید دیگه هم کمک بگیر
این کاری که تو میخوای کنی کلی وقت میخواد و یه نفرا نمیشه انجامش داد
کلا کلی بحث وجود داره
به نظر من سروو ها برای این کار خوب نیستن.بهتره از استپر موتور یا موتور های معمولی و گیربوکسدار (من دقیقا نمیدونم اسمش چی میشه منظورم موتور های معمولی حست ولی عملکرد استپر رو داره)
اگه بخوای از پردازش تصویر استفاده کنی بهتره پردازش روی کامپیوتر باشه و از یه atmega32-64 استفاده کنی
این که ربات پطور باید حرکت کنه و هم باید قبلش base رو تعیین کنی
ربات دقیقا قراره چه کارایی رو انجام بده و.........
به نظر من اول یه مسیر یاب یا یه چی ساره راه بنداز بعد برو سراغ بازو و ....

----------


## Mehran.GH

نکته مهم قبل از پاسخ دادن به سوالات اینکه هدف از حضور در یک فروم تبادل اطلاعات و طرح پرسش و رفع اشکال است نه طرح کل یک پروژه !! 
یعنی در مورد کاری که* باید خودت انجام دهی* ابتدا مطالعه می کنی و با جستجو در اینترنت یا کتب مرجع یا شرکت در کلاسهای دانشگاه یا هر جا  مطالب مورد نیاز را پیدا می کنی و کار را شروع می کنی ,  هر جا مشکل داشتی می توانی از امکانات فروم هم در کنار سایر منابع استفاده کنی و سوال* در یک مورد خاص* مطرح کنی ولی این روش که کل پروژه را در غالب سوال انتظار داشته باشی دیگران برایت انجام دهند روش درستی نیست.

به هر حال 




> يك دست ربات دارم وصل كامپيوتر هست با سه تا موتور كه بايد بتونه توي يك ماتريس سه بعدي جابه جا بشه و يك جسم رو بلند كنه از يه جايي به جاي ديگه ببره و جسم رو رها كنه   خيلي سوال پيش اومده برام كه نميدونم چه جوري بايد بسازم:
> 1-براي يك كار حرفه اي به چه موتور هايي نياز دارم؟ servo موتور كارم رو راه مياندازه؟


برای بازوی روبوت کوچک DC servo  کفایت می کند اما در روبوتهای صنعتی با توجه به تکنولوژیهای جدید کنترل موتور و با توجه به اینکه توان بالا لازم است از Servo  های  جریان متناوب هم استفاده می شود. انتخاب موتور بسته به این دارد که چه وزنی باید بازو بلند کند  و طول بازو چند سانتیمتر است و با توجه با این پارامتر نوع موتور را انتخاب می کنی چون وزن بیشتر یعنی موتور جریان بیشتری می کشد و در نتیجه نوع موتور و درایور موتور هم مدار متفاوتی دارد.
 البته در سوالت نوشتی یک روبوت داری با سه موتور که اگر روبوت موجود است متوجه نشدم چرا راجع به نوع موتور سوال کردی.




> 2-چه ميكرويي استفاده كنم؟


برای هر موتور نیاز به یک سیگنال PWM  داری بنابراین با فرض اینکه همان 3 موتور باشد یک میکرو 8 بیتی که 3 خروجی PWM دارد کافی است هر چند روبوت که سه محور دارد باید حداقل 5 موتور داشته باشد (یک موتورگردش کل بازو و 3 موتور برای 3 محور و یک موتور هم  برای بخشی که جسم را نگه می دارد) اگر با هیچ میکرویی قبلا کار نکردی و تازه می خواهی شروع کنی میکروهای Arm Cortex -M3    را توصیه می کنم که بسیار مدرن با امکانات زیاد و قیمت مناسب برای اغلب پروژه  ها جواب می دهد.

اگر هم بازو روبوت مستقیما به کامپوتر باید وصل شود شاید نیازی به میکرو نداشته باشی چون مادولهای PWM که با USB  به کامپوتر متصل می شوند در بازار موجود هست و سیگنال PWM را با برنامه نویسی در کامپوتر می توانی انجام دهی




> 3-چه اطلاعاتي رو بايد از برنامه به ميكرو بفرستم كه حركت انجام بشه؟


-از برنامه  کامپیوتر به میکرو (از طریق پورت سریال یا USB)  مختصات هدف را 
- از میکرو به بازو سیگنال Pwm برای هر موتور




> 4-از چه فرمولي توي برنامه بايد استفاده كنم و نتيجه رو به  چه پورتي بفرستم؟


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

در حالت دو بعدی 




ابتدا نقطه x1 , y1 را که نقطه پایه است حساب می کنی 
x1= L1cos(theta1) + x0
y1 =L1sin(theta1) + y0 


بعد نقطه دوم یعنی x2,y2

x2 =x1 + L2cos(180-theta1-theta2)
y2= y2 + L2sin(180-theta1- theta2)

و بعد نقطه سر بازو   که 270 درجه  منهای  theta1-theta2 

حالت بازوی 3 بعدی پیچیده است و در صورت نیاز می توانم کتاب معرفی کنم




> 5-براي اين كار بهتره از وايرلس استفاده كنم يا با سيم باشه؟


چرا وایرلس؟!     اگر بازو قرار است در محدوده ای حرکت کند وایرلس معنی پیدا می کند 




> 8-برنامه ميكرو رو به چه زباني بنويسسم بهتره و بعدا مشكلي پيش نمياره؟


همان زبانی که بلدی .  
معمولا c  , اگر از Arm Cortex M3  خواستی استفاده کنی اگر از میکرو دیگر که هر کامپایلری که همان میکرو داشت



> 9-در كل هر انچه فكر ميكنيد براي راه اندازيش نياز دارم ازم دريغ نكنيد


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

موفق باشی

----------


## farzadsw

با توجه به تجربیات خودم میگم:
9- برای ساخت یه بازو با دقت کم ، با توجه به اینکه به نظر میاد تو این زمینه تجربه زیادی هم ندارید ، حداقل 2 یا 3 ماه زمان میبره (full time )
8- برنامه رو با C بنویسید
7- برای اینکه یه چیز ساده داشته باشید که کار کنه (حالا بادقت کم) حدود 400 هزار تومان هزینه خواهید داشت.
6- موتور و قطعات الکترونیکی رو (اگر تهران هستید) از پاساژهای عباسیان و امجد می تونید تهیه کنید . برای ساخت سازه بازو هم بسته به نوع جنسش فرق داره .
5- چون نیازی به وایرلس ندارید از سیم استفاده کنید هم راحت تره و هم ارزونتر
4- فرمول شسته رفته ای برای این کار وجود نداره چون محاسبه مسیر کار بسیار پیچیده ای هست . اگر با کنترل خطی و جبر خطی اشنایی دارید میتونید یک کتاب رباتیک پیشرفته تهیه کنید و با خوندن  اون کتاب روشهای انجام این کار رو متوجه بشید.
3- اطلاعاتی که به میکرو میفرستید اینه که الان هر موتور چقدر باید بچرخه . 
2- میکروش خیلی اهمیتی نداره ، برای اینکه راحتتر باشید بهتره از میکرویی استفاده کنید که تایمر 16 بیتی بیشتری داشته باشه (مثل atmega 128 ) ولی با مگا 8 هم میشه (با سختی بیشتر) این کار رو انجام داد.
1- برای یک کار حرفه رو من اطلاع ندارم ! ولی برای کارهایی در حد آزمایشگاهی بهتره موتور با کیفیت بالا تهیه کنید . سروو باشه کارتون راحت تر میشه چون دیگه فقط مقدار زاویه رو بهش باید بدید و خودش اون مقدار میچرخه (موتور سروو چینی مثل towerpro تهیه نکنید چون دقت نداره) . اگر از استپر موتور استفاده کنید کارتون دقتش *میتونه* بیشتر بشه ولی قدرت و گشتاور موتور استپر  محدوده و ممکنه جواب نده . موتور dc  اگه استفاده کنید می تونید (نه الزاما) دقت و قدت مناسبتون رو ایجاد کنید ولی هم هزینه اش زیاد میشه و هم درایو هر کدوم از اون موتور ها خودش یه پروژه هست (موتور سروو داخلش یه موتور dc کوچیک داره که به وسیله انکودر و مدارات کنترلیش تبدیل میشه به موتور سروو)

در ضمن برای یک ربات جابه جا کننده با 3 درجه آزادی حداقل به 4 تا موتور نیاز دارید.

----------


## saed2006

ممنون از لطف سه عزيزي كه پاسخ دادين
براي ساخت نمونه اي كه قراره بعدا داخل صنعت استفاده بشه از مواد بهتر و گرون تر استفاده كنم يا با موتور هايي با دقت كمتر هم ميتونم كارمم رو راه بندازم  و در صورت صنعتي شدن مجبور نيستم كل پروژه رو از نو تعريف كنم
اخه هدف نهايي كار صنعتي شدن ان هست هرچند هزينه كمتر رو ترجيح ميدم اما نميخوام كيفيت كارم فداي هزينه بشه بنابر اين با اين پيش ذهن كه كار قراره صنعتي بشه 
نميدونم از چه اجزاي سخت افزاري توش استفاده كنم جسم در حالت ازمايشي پروژه 3 كيلو و در نهايت حد اكثر 50 كيلو وزن خواهد داشت
اگه ميشه مارك سروو و استپ موتور و .. كه نياز دارم رو بيان كنيد
ممنون از لطف شما

----------


## farzadsw

اگر از وسایل ارزون قیمت استفاده کنید و بعدا تجهیزات رو عوض کنید (همون تجهیزات باشه و فقط نوع بهتری استفاده کنید) باز هم باید یه تغییراتی تو پروژه بدید (مثلا در حد 20-30 درصد تغییر ممکنه بکنه).
آقا مهران در مورد رباتهای صنعتی تجربه بیشتری دارند و من فقط اینو میدونم که یه بازو صنعتی با سه درجه آزادی که بتونه یه جسم 5 کیلویی رو جابه جا کنه حدود 200 ملیون تومن قیمتشه ، حالا اینکه هزینه قطعاتش چقدر میشه رو دیگه نمی دونم. (فکر میکنم رباتی برای جابه جایی 50 کیلو قیمتش خیلی بالاتر بشه)

----------


## saed2006

منظور شما ربات خارجی هست؟
اگه اینزوری باشه که باید کلا بی خیال شم

----------


## Mehran.GH

> پروژه ساخت يك ربات انبار دار هست كه جنس ها رو بايد از يه جا برداره و بچيه تو قفسات 
> نميدونم از چه اجزاي سخت افزاري توش استفاده كنم جسم در حالت ازمايشي پروژه 3 كيلو و در نهايت حد اكثر 50 كيلو وزن خواهد داشت


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

- اولین نکته اینکه این ربات چگونه باید این اجناس را پیدا کند؟باید با دوربین اسکن کند؟ باید دنبال کد خاصی بگردد؟ باید از روی بزرگی یا وزن تشخیص دهد ؟  چه سنسورهایی برای این کار پیشبینی شده؟  آیا سیستم را طوری تعریف کرده ای که همه اجناس  را درست پیدا کند؟

- آیا باید در یک محوطه به دنبال جنس خاصی بگردد؟

- چگونه باید ربات حرکت کند؟ ربات تعقیب خط؟ ریل گذاری؟ چه روشی در محوطه انبار قابل پیاده سازی است؟

-اجناسی که باید حمل کند از نظر ظاهری در بسته بندی هستند یا مثل قعطات خودرو مثلا دارای ابعاد مختلف هستند و در نتیجه ربات گیره های متفاوت برای نگهداری این اجسام لازم دارد؟

-جاهایی که قرار است اجناس قرار گیرد احتمالا به صورت قفسه بندی است ; ارتفاع قفسه بندی که ربات باید دسترسی داشته باشد چند متر است؟ 
.......

برای اینکه با کلیت کاری که معمولا در این نوع پروژه ها انجام می شود آشنا شوی این چند  تصویر را توجه کن:



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



روش دوم  ربات جای خودش را به یک چرثقیل مانندی داده این روش هم در نگهداری و قرار دادن اجناس در انبار استفاده می شود البته بیشتر برای اجسام خیلی سنگین و مواردی که قفسه بندی نیست.

 اما روشی که من پیشنهاد می کنم:


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

نمونه های دیگر 



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

اون وسیله ای که در ریل خود حرکت می کند (ممکن است برای شروع بتوان بدون ریل هم یک وسیله متحرکی درست کرد اما روش معمول همه جا همین ریل است) و کالای ورودی هم بر حسب یک کد مشخص باید تعریف شود تا سریع قابل شناسایی باشد.

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

به هر حال منظور این بود که یکبار دیگر با توجه به نمونه هایی که جاهای دیگر استفده می شود  از دید بالا پروژه را ببینی و بهترین روش را انتخاب کنی و بعد به سراغ اجزاء بروی.

----------


## firststep

در کل اسکن کردن برای تشخیص کاره مناسب نیست

چ.ن اگه بخوا مشخصات ظاهری تغییر کنه باید برامه اسکن رو هم تغییر داد
ولی اگه بتونه با سیتم های دیگه از جمله سیتم های حمل ونقل مثل ریل ارتباط برقرار کنه بایک سنسوره ساده می تونه وجود جسم رو حدس بزنه
ببینید اگه مثلاً طرح بسته بندی یا مثلاٌ جعبه جسم عوض بشه نشانه هایی که میزاره روی چسم مثل مربع هاب سیاه کنار جعبه ها تغییر رنگ یا چا نمیده و از این نشونه ها می تونین استفاده کنین

----------


## firststep

می تونید از سایت یوتیوب برای دریافت نحوه کارشون استفاده کنین

----------


## renoos

سلام دوستان
من یک سری اطلاعات در مورد نحوه ی کنترل بازوی scara میخوام
کسی هست بتونه چند تا منبع خوب به من معرفی کنه یا کسی رو معرفی کنه که دراین زمینه کار کرده باشه؟

----------

