سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...
آره ديگه ما رو دست كم گرفتين )
منظورتون از pwm هميني هست كه اول برنامه مينويسيم ؟
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 64 يا ... ؟؟
خب حالا بريم سراغ چي ؟ چي رو بنويسم
الان سنسور هاي 0 1 5 6 موندن فقط . اقا مرتضي شما هم نظر بده . فك نيكني فراموشت كرديم ))
خدائیش جای این پست اینجاست؟ اینو می تونستی توی پیغام خصوصی بپرسی یا از مدیران سایت! منم که نمی دونم میشه یا نه؟ باید از مدیران سایت بپرسی.
خب حالا چیدمان سنسورهات رو با اسم گذاری اونا بذار لطفا! بعدش میریم سراغ برنامه حرکت مستقیم و چپ و راست. بعدشم همین حالات رو با pwm اجرا می کنیم.
البته جناب JUST-ARM باید یه نظری راجع به فاصله ی سنسورها با هم بدن حتما!
ویرایش توسط morteza_rk : 24-03-2010 در ساعت 00:20
.
اي بابا شما مثل اينكه عقب هستين از موضوع مرتضي جان . يه نيگاهيي به پست 32 و 49 بندازيد !
چينش و برنامه چپ راست تموم شد . الان در مورد pwm توضيح بديد
ببخشید ، تازه فایلهای جدید رو دانلود کردم و فهمیدم قضیه چیه!
خب حالا اگه بخوایم از PWM استفاده کنیم در حالت انحراف به چپ یا راست (وقتیکه مسیر مستقیمه اما سنسور 3 خط رو گم کرده) میشه به دو طریق عمل کرد :
1. با تشخیص خط اصلی توسط سنسورهای 2 یا 4 یکی از موتورها توان DC کمتری (منظورم همون دیوتی سایکل کمتر هست) دریافت کنه تا سنسور 3 دوباره خط رو ببینه.
2. بلافاصله بعداز ندیدن خط توسط سنسور 3 یکی از موتورها توان DC کمتری دریافت کنه تا سنسور 3 دوباره خط رو ببینه! یعنی در این حالت نیازی نیست که سنسورهای 2 یا 4 خط رو ببینن و بعد به موتورها دستور بدن!
مزایا و معایب این دو روش :
در حالت اول میزان انحراف ربات زیاد میشه و این میزان کاملا وابسته به فاصله ی دو سنسور 2 و 4 از سنسور وسط هست. در عوض با توجه به همین فاصله ربات مسیر بیشتری رو بصورت یکراست طی می کنه و کمتر زیکزاک میزنه!
در حالت دوم میزان انحراف کمه اما ربات در فواصل زمانی کوتاه سرعتش کم و زیاد میشه. یعنی حرکتش تقریبا زیکزاکی میشه. چون اگه بخش مکانیک شما ضعیف باشه ربات دائما منحرف میشه و بمحض اینکه خط رو گم کنه سرعت یکی از موترها کم میشه تا دوباره خط رو پیدا کنه ، اما در این حالت ممکنه ربات باز هم در مسیر مستقیم خودش قرار نگرفته باشه و چند ثانیه بعد دوباره خط رو گم کنه و این روند دائما تکرار میشه که نتیجش میشه حرکت زیکزاک مانند.
البته میشه این مشکل رو با یه دیوتی سایکل مناسب تا حدود زیادی بهبود داد.
حالا شما مایلید از کدوم روش استفاده کنید؟
بعد از انتخاب روش کافیه که همون پیکره بندی pwm رو وارد برنامه کنید و بجای reset portb.3 یا reset portb.4 از pwm1a = 0 یا pwm1b = 0 استفاده کنید. و بجای set portb.4 یا set portb.3 از دستور pwm1a = 1023 یا pwm1b = 1023 استفاده کنید.
برای حالاتی که لازمه سرعت موتور کم بشه می تونید عددی بین 0 تا 1023 وارد کنید.
خب جناب JUST-ARM نظر شما چیه؟
.
ببخشید ، تازه فایلهای جدید رو دانلود کردم و فهمیدم قضیه چیه!
خب حالا اگه بخوایم از PWM استفاده کنیم در حالت انحراف به چپ یا راست (وقتیکه مسیر مستقیمه اما سنسور 3 خط رو گم کرده) میشه به دو طریق عمل کرد :
1. با تشخیص خط اصلی توسط سنسورهای 2 یا 4 یکی از موتورها توان DC کمتری (منظورم همون دیوتی سایکل کمتر هست) دریافت کنه تا سنسور 3 دوباره خط رو ببینه.
2. بلافاصله بعداز ندیدن خط توسط سنسور 3 یکی از موتورها توان DC کمتری دریافت کنه تا سنسور 3 دوباره خط رو ببینه! یعنی در این حالت نیازی نیست که سنسورهای 2 یا 4 خط رو ببینن و بعد به موتورها دستور بدن!
مزایا و معایب این دو روش :
در حالت اول میزان انحراف ربات زیاد میشه و این میزان کاملا وابسته به فاصله ی دو سنسور 2 و 4 از سنسور وسط هست. در عوض با توجه به همین فاصله ربات مسیر بیشتری رو بصورت یکراست طی می کنه و کمتر زیکزاک میزنه!
در حالت دوم میزان انحراف کمه اما ربات در فواصل زمانی کوتاه سرعتش کم و زیاد میشه. یعنی حرکتش تقریبا زیکزاکی میشه. چون اگه بخش مکانیک شما ضعیف باشه ربات دائما منحرف میشه و بمحض اینکه خط رو گم کنه سرعت یکی از موترها کم میشه تا دوباره خط رو پیدا کنه ، اما در این حالت ممکنه ربات باز هم در مسیر مستقیم خودش قرار نگرفته باشه و چند ثانیه بعد دوباره خط رو گم کنه و این روند دائما تکرار میشه که نتیجش میشه حرکت زیکزاک مانند.
البته میشه این مشکل رو با یه دیوتی سایکل مناسب تا حدود زیادی بهبود داد.
حالا شما مایلید از کدوم روش استفاده کنید؟
بعد از انتخاب روش کافیه که همون پیکره بندی pwm رو وارد برنامه کنید و بجای reset portb.1 یا reset portb.2 از pwm1a = 0 یا pwm1b = 0 استفاده کنید. و بجای set portb.1 یا set portb.2 از دستور pwm1a = 1023 یا pwm1b = 1023 استفاده کنید.
برای حالاتی که لازمه سرعت موتور کم بشه می تونید عددی بین 0 تا 1023 وارد کنید.
خب جناب JUST-ARM نظر شما چیه؟
ویرایش توسط morteza_rk : 24-03-2010 در ساعت 13:49
.
rast:
reset portb.0
set portb.3
set portb.4
reset port b.5
hاول كه اقاي جاست اين دستور فقط دور ميزنه و ميچرخه. بايد يه شرطي چيزي گذاشت خب ؟
اقاي مرتضي اين reset و set جهت موتور رو عوض ميكنين اون pw1a كه ميگين به پايه انيبل وصلن . نميشه به جاشون گذاشت
if sen3=1
pw1b=10
if sen 3 =0
pw1b=255
نميدونم همي جوري اين برنامه رو نوشتم واسه اينكه سنسور وسط خط رو گم نكنه.pw1b به موتوري وصله كه داره معكوس ميگرده
خلاصه جاست جون يه توضيحي بده چكار كنيم sen3 گم نكنه خط رو موقع چرخش با ذكر مثال باشه آقا معلم
ببخشید من سرم خیلی شلوغه شاید نتونم مرتب مباحث رو چک کنم
اما در مورد سوال آقا مرتضی به نظر من روش دوم بهتره من هر دوتا روش رو تست کردم تو روش اول روبات خیلی کند عمل می کنه و یا بهتر بگ تلو تلو را میره ولی تو روش دوم روبات خیلی تیز عکس العمل نشون میده منتها باید به روش تجربی بهترین مقدار PWM رو برا موتورا بدست بیارین .
تو حالت دوم میشه با انتخاب بهترین PWM حرکت زیگزاگی رو حذفش کرد . (اگه درست عمل کنین روبات تو مسیر مستقیم عین ماشین مسابقه ای سرعت می گیره)
اما یه چیزی خیلی مهمه اونم اینکه طراحی سنسور ها و اسمبل کردنشون همراه موتورا رو شاسی باید کاملاً متقارن باشه و گرنه حرکت زیگزاگی گریبان گیر روبات میشه و روبات خیلی سریع اصلاح مسیر انجام میده و در نتیجه سرعت روبات بشدت کم میشه .
سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...
ایندفه به زور جلوی مو گرفتم (اینو گفتم که حو صله تون سر نره و بچسبید به کار)
ببینید شما باید برا هر تیپ دستوراتون که به موتورهاتون میدین یه تابع تعریف کنین این طوری برنامه تون جمع و جورتره البته من از زبان بسیک زیاد سر در نمی یارم
یعنی هر وقت شرط شما برقرار شد به تابع مربوطه می پرید و دوباره برمی گردید و شروط رو بررسی می کنید و اگه بازم شرط قبلی برقرار بود بازم می پرید و تابع قبلی رو اجرا می کنید و ... و این جوری میشه که روبات دم به دم حواسش به سنسورهاش هست .
سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...
جناب JUST-ARM منظور مهناز جان همون تابع هست که تعریف کردن ، البته برنامه نویسیشون یکم مورد داره که من راهنمایی لازم رو بهشون می کنم.
خب نقش پایه ی Enable چیه؟ با صفر و یک شدن این پایه میشه خاموش یا روشن بودن موتور رو کنترل کرد دیگه! مگه اینطور نیست؟ البته منظور من پایه های port b.1 و port b.2 بود که در پست قبلی هم اصلاح کردم.اقاي مرتضي اين reset و set جهت موتور رو عوض ميكنين اون pw1a كه ميگين به پايه انيبل وصلن . نميشه به جاشون گذاشت
ما هم دقیقا به همین نکته نیاز داریم. چون در pwm موتور در لحضاتی خاموش و در پاره ای از لحضات روشنه!
با عرض شرمندگی گروه اول مهمونای من از تهران رسیدن! من درگیر شدم ، اما همچنان در این بحث حضور خواهم داشت. فقط کمتر به اینجا سر می زنم. فقط شما ترتیب پیست رو بده و حتما حتما چیدمان سنسورها رو روی مقوا در بیار.
راستی در اولین فرصت یه برنامه ی خوشگل واسه همین حرکت مستقیم می نویسم و میذارم اینجا.
ویرایش توسط morteza_rk : 24-03-2010 در ساعت 13:51
.
فقط براي پيست مسابقه از چه مواد ديگه اي ميتونم استفاده كنم كه در دسترس باشه ؟ روزنامه خوبه ؟
2- اندازه ي سنسور tcrt 5000 رو نميدونم . ميخام اندازشو رو مقوا در بيارم .
3-فاصله ي سنسور ها از همديگه رو با خط كش خود پروتوس بدست بيارم ؟
ببين مهناز خانوم ( يا آقا ) اين جوري ايشالا شما تا سه ماه ديگه به زور ميتوني يه روبات جمع كني من يه راه حل دارم اونم اينكه اگه موافقي به من بگو كه من همه چيزش رو برات آماده كنم (برنامه نويسي به زبا C ، شماتيك ، PCB و .. ) و 72 ساعت بم وقت بده (با توجه به اينكه سرم خيلي شلوغه) از اون طرفم آقا مرتضي سرش شلوغ شده .
نظرتون چيه
سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...
یعنی می خوای چیکار کنی مهندس؟ یه ربات آماده تحویل بدی؟ من دقیقا متوجه نشدم.اگه موافقي به من بگو كه من همه چيزش رو برات آماده كنم (برنامه نويسي به زبا c ، شماتيك ، pcb و .. ) و 72 ساعت بم وقت بده
برای شروع کار فعلا لازم نیست موقع دور زدن یکی از موتورها معکوس بچرخه! ضمن اینکه وقتی ربات خط رو گم کنه اصلا اصلا به این مورد نیاز نداری! بلکه یکی از موتورها با تمام توان به راه خودش ادامه میده اما اون یکی توانش کمتر میشه تا ربات بتونه به مسیر صحیح برگرده.خب اگه يكي از متور ها سرعتش كمتر بشه اون يكي موتوري كه داره معكوس ميچرخه تكليفش چيه ؟
در رباتهای حرفه ای برای افزایش سرعت ربات در هنگام دور زدن یکی از چرخ ها معکوس می چرخه.
اندازه ی دقیق لازم نیست ، اگه تقریبی هم باشه خوبه ، حالا یه سوراخ با قطر 2 - 3 میلیمتر در نظر بگیر.اندازه ي سنسور tcrt 5000 رو نميدونم . ميخام اندازشو رو مقوا در بيارم .
در این مورد تجربه just-arm بیشتره ، ممنون میشم اگه ایشون جواب بدن.فاصله ي سنسور ها از همديگه رو با خط كش خود پروتوس بدست بيارم ؟
در آخر اینکه برای ساخت پیست هرچی به ذهنت برسه خوبه. اما اگه بخوای رباتت رو تست کنی کاغذ روزنامه دیواری بهتر و ارزون تره (همونی که بچه ها باهاش زورنامه دیواری درست می کنن و میزن به دیوارای مدرسه)
.
سلام
به اين قسمت هم سر بزنيد
http://iranmicro.ir/forum/showthread.php?t=896
بچه ها ميخاين روي برنامه هاي روبو من كار كنيم . يعني يكيش رو انتخاب كنيم و با هم تحليل كنيم ؟
براي اينكه كه پي سي بي بردم و متور هام رو روي چيزي سوار كنم بهتره از چه فيبري استفاده كنم و اسمش چيه ؟
چرا زود ناراحت میشی؟ بابا همین که دو نفر دارن به دادت میرسن کلی هنره! چون انجمن خیلی خلوته ، ما هم که نگفتیم دیگه باهات نیستیم! گفتیم؟ :Dنمي دونم چرا همه زود سرشون شلوغ ميشه
به نظر من چون شما می خوای خودت یاد بگیری باید قدم به قدم پیش بری ، بخاطر همین گفتم فعلا روی مسیر مستقیم کار کن و در موقع دور زدن هم احتیاجی به معکوس کردن یه موتور نیست.
تا اینجای کار که من یه برنامه خودم برات می نویسم با توضیح کامل!
شما برای اینکه بیکار نمونی ، پیست رو بساز ، الگوی سنسورهارو در بیار و برای انواع موانع موجود کد لازم برای سنسورهارو در بیار ، سخت افزارتو طراحی کن ، PCB رو طراحی کن ، مکانیکت رو آماده کن ، سنسورهاتو آماده کن و روی فیبر مونتاژ کن ، فیبر سنسورهارو روی مکانیکت مستقر کن ...
می بینی که کلی کار داری که باید انجام بدی. روبوتیک اصولا روی برد-برد به نتیجه نمی رسه ، حتما حتما باید بری توی دل کار واقعی ، پس یه همت بکن و این کارها رو کامل انجام بده. برای طراحی PCB از هر نوع فیبری می تونی استفاده کنی و جنسش اصلا مهم نیست.
من خودم روی هزار سوراخ ربات ساختم!؟ (از زور بی پولی!)
از جناب ROBOMAN هم تشکر می کنم و خواهش می کنم که به جمع ما بپیوندن و تجربیاتشون رو در اختیار ما بذارن.
ضمنا برای کسب مهارت در زمینه ی ساخت ربات بهتره خودت کاراشو انجام بدی و برنامشو بنویسی! پس کمی صبور باش. تا شما به اون کارا برسی من یه برنامه برات میذارم و JUST-ARM هم میاد کمکمون.
.
مگه شما هفت سنسور ندارين ؟؟؟
خوب هممون مي دونيم 2 به توان 7 ميشه 128 پس شما بايد تو برنامتون 128 تا if داشته باشي و به تعداد 7 تا تابع صدور فرمان حركت به موتورها رو احتياج دارين :
1- حركت به جلو
2- حركت به عقب
3- گردش به چپ
4- گردش به راست
5- اصلاح مسير به چپ
6- اصلاح مسير به راست
7- ايست !!!
وسلام
شما قشنگ ميشيني و حالت ها رو برا سنسور ها در مياري و بعدش تصميم ميگيري كه كدوم حالت يعني اجراي كدوم يك از توابع بالا به طور مثال من بعضي از حالت ها رو مي نويسم :
1- 0000000
2- 0000001
3- 0000010
4- 0000011
5- 0000100
6- 0000101
7- 0000110
8- 0000111
از بابت اينكه گفتي مي خواي خودت طراحي كني و ياد بگيري خيلي خوشم اومد پس من و دوستم آقا مرتضي تا آخرش كمكت مي كنيم .
ویرایش توسط Division : 24-03-2010 در ساعت 21:36
سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...
اوكي شما برنامتون رو بزاريد منم رو برنامه و حالت ها كار ميكنم
اقاي مرتضي من ميخام برنامم رو تموم كنم بعد برم سراغ پيسيبي و...چون شايد خواستم تغيير اتي در سنسور يا اصلا مدار ابعاد موتور و... بدم . پس شما هم صبور باشيد
فكر كنم كارا داره درست پيش ميره
يه توصيه : به جاي ATMEGA8 از ATMEGA16 يا ATMEGA32 استفاده كنين
و يه چيزه ديگه ابعاد سنسور 5*10 هستش(به ميلي متر)، من خودم از اين سنسور دارم و عكسشم براتون ميفرستم قيمتشم تو سايت ROBOEQ دونه اي 570تومنه
بابا اي ول از اين به بعد من و آقا مرتضي هم از شما درس ياد مي گيريم ( بچه صدا نكنيد خانوم معلم اومد )
ویرایش توسط Division : 24-03-2010 در ساعت 22:15
سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...
من يه نقشه براتون فرستادم(تو پست 32) كه شماره سنسورها رو توش نوشته بودم بريد اون نقشه رو نگاه كنين و بگيد كدوم سنسورها رو متوجه نمي شين كه كارشون چيه ؟
در ضمن برا از كوره در رفتن هنوز خيلي زوده
اصلاً شما 100 سنسور بزار اون موقع خيلي با كلاس تر ميشه ( تازه مي رسي به اول كار تحقيقاتي كه من دارم انجامش ميدم)
سادگی نهایت کمال است
یه مدتی میشه که نیستم... ولی به زودی بر می گردم...