امتیاز موضوع:
  • 3 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
PCB ربات مسیر یاب
#41
نه منظورم قبل این هستش که بره توی پیست!
من توی مسابقات این رو دیدم !
PWM برای پیچ های 90درجه و لوپ ها و چپگرد راستگرد کردن خیلی خوبه !
پاسخ
 سپاس شده توسط artd179
#42
ببینید سرعت رو پردازنده باید تشخیص بده چقدر باشه نه شما
اگر مسیر صاف بود با سرعت ماکزیمم و برای زمانیکه به پیچ برسد حتی سرعت رو منفی کنید . حتی گاهی وقتها دنده عقب
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط artd179
#43
آقا سهیل این قضیه بیشتر یه کار تجربی هست یعنی بعد از اتمام ساخت روبات باید توی مسیر واقعی امتحانش کنی و اگر سر پیچ ها مشکل داشت اونوقت باید تنظیمات PWM رو تغییر بدی و سرعت رو کم و زیاد یا حتی منفی(چرخش معکوس)بکنی تا مشکل دور زدن سر پیچ حل بشه.
پاسخ
 سپاس شده توسط artd179
#44
3تا سوال دارم:
اول اینکه امیرحسین جان در صفحه ی قبل که در مورد Case و سوییچ توضیح داد گفت:IN=PINA
این دستور باید قبل از WHILE بیاد یا بعدش؟
در بین هر CASE و SWITCH چند حالت سنسور رو ذکر کنیم؟محدودیتی داره؟
وقتی دستور PWM رو میدیم مثلا OCR1B=50،یعنی موتور 50 دور در دقیقه بچرخه؟
پاسخ
 سپاس شده توسط artd179
#45
نقل قول: اول اینکه امیرحسین جان در صفحه ی قبل که در مورد Case و سوییچ توضیح داد گفت:IN=PINA
این دستور باید قبل از WHILE بیاد یا بعدش؟
بعد از while و قبل از دستور switch
نقل قول: در بین هر CASE و SWITCH چند حالت سنسور رو ذکر کنیم؟محدودیتی داره؟

در هر سوئچ بی نهایت کیس می تونید تعریف کنید .
نقل قول: وقتی دستور PWM رو میدیم مثلا OCR1B=50،یعنی موتور 50 دور در دقیقه بچرخه؟


حداکثر سرعت موتور بستگی به RPM موتوری که می خرید دارد . برای مثال موتور 800 rpm ، دارای سرعت ماکزیمم 800 دور در دقیقه است .
این pwm نسبتی از سرعت ماکزیمم را مشخص می کند . برای یک موتور ممکن است OCR1B=50 دارای 90 دور در دقیقه باشد و در موتور دیگر 500 دور در دقیقه .
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط nano ، artd179
#46
یعنی با نوشتن یه سوییچ در اول میشه تمام کیس ها یا حالت های سنسور رو تعریف کرد؟
از چه کریستالی برای pwm باید استفاده کرد؟8مگاهرتز خوبه؟
پاسخ
 سپاس شده توسط artd179
#47
بله فقط یک بار بیشتر سوییچ نوشته نمی شود .
وقت خوبیه کمی در مورد الگوریتم بحث کنیم .
همانطور که می دونید باید ربات در هر پیچی با یک سرعت خاص حرکت کند . برای مثال در پیچ 90 درجه یک چرخ ربات می ایستد و دیگری حرکت می کند . ولی در پیچ 30 مجبوریم هر دو چرخ را خلاف جهت همدیگر حرکت دهیم .
این ها حالات ساده ای به نظر می رسند . ولی همیشه اینطور نیست که خط زیر سنسور های ما باشد . حتی ممکن است زیر یکی از سنسور ها باشد ولی نفهمیم حالا ربات باید به کدام سمت برود . گاهی هم ممکن است ربات از خط خارج شود . در این حالت ربات باید چه تصمیمی بگیرد ؟

در این مواقع باید تشخیص دهد که به راه راست ادامه دهد ... یا بایستد .... یا دور خودش بچرخد تا خط را بیابد ....

شما اگر خود را جای ربات بگذارید چه می کنید ؟ بهترین کاری که به نظر می رسد این است که چک کنیم آخرین بار کدام سنسور دیده است؟ سنسور سمت راست ؟ اگر سمت راستی آخرین بار دیده باشد پس خط به سمت راست پیچیده و ربات ما وقت نکرده به سمت راست بپیچد و از خط خارج گشته است .
اگر سنسور چپی آخرین بار دیده است . پس خط به سمت چپ رفته و ربات از خط خارج شده است .
برای نوشتن چنین چیزی نیاز به نوشتن الگوریتمی دارد . که بسته به نوع چیدمان سنسور ها دارد . و در واقع بخش اصلی برنامه ربات مسیریاب همین بخش است .
من برای ربات خودم برنامه ای نوشتم که حتی اگر ربات را به زور از خط پرت کنید بیرون دوباره بر میگردد سرجای خود . قسمتی از برنامه الگوریتم رو قرار می دهم . ولی مطمئنا چیزه زیادی از آن متوجه نمی شوید چون چیدمان سنسور های من را دقیقا مطلع نیستید .
فقط توضیح کوتاهی در مورد آن می دهم .
تابعی به نام تشخیص آخرین وضعیت نوشته ام void last_act()
در حالاتیکه خط زیر هیچ کدام از سنسورها نیست این تابع را صدا می زنم .
در هر قسمت از شرط ها (کیس ها) دستوری به شکل var=in; قرار دادم . که مقدار پورت سنسور ها را درون متغیر var قرار می دهد .
سپس با دستور and & تشخیص می دهم که آخرین بار سنسور خط کدام سمت پیچیده است .
کد php:
void last_act()
{
chap= var&0b00110000;
rast= var&0b11000000;
vasat_1=var&0b01110000;
vasat_2=var&0b11100000;
  if(
vasat_1==0b01110000
 {
   
OCR1A=50;
   
OCR1B=50;
    
left_h();
 }
  if(
vasat_2==0b11100000
 {
   
OCR1A=50;
   
OCR1B=50;
    
right_h();
 }
 if(
vasat_1!=0b01110000 && vasat_2!=0b11100000 ){
 if(
chap!=0b00000000)
 {
OCR1A=50;
OCR1B=50;
left_h();
 }
 if(
rast!=0b00000000
 {
   
OCR1A=50;
   
OCR1B=50;
right_h();
 }

 }

اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط nano ، artd179
#48
از دوستان کسی میدونه توی بسکام چطوری میشه فهمید آخرین سنسوری که از خط خارج شده کدوم بوده؟یعنی آخرین بار کدوم سنسور خط رو تشخیص داده؟
پاسخ
 سپاس شده توسط artd179
#49
من که الگوریتمش رو گفتم به زبان فارسی کافیه شما به زبان بسکام تبدیلش کنید .
بیشتر توضیح می دهم که خودتون توی پست بعدی بنویسید
در هر بار که یک پورت سنسور ها را چک می کنید کل مقدار باینری پورت را در یک متغیر با نام x بریزید
حال زیر برنامه ای به نام (آخرین حالت ) بسازید .
هر بار چنین شرطی پیش آمد که هیچکدام از سنسور ها نمی دیدند و مقدار پورت 00000000 بود باید زیربرنامه (آخرین حالت ) صدا زده شود .
در زیر برنامه
فکر کنید به ترتیب سنسور ها از سمت راست به چپ بر روی ربات نصب شده اند و از بیت کم ارزش به بیت پر ارزش میکرو متصل هستند .
در واقع : 87654321
زیر برنامه آخرین حالت برنامه را به شکل زیر بنویسید :
همان متغیر X را که آخرین بار مقدار را درونش قرار دادیم را فراخوانی کنید
ابتدا با دستور AND چک کنید بیت های سمت راست بیشتر یک بوده اند یا بیت های سمت چپ
برای مثال اگر به شکل زیر بود :
00001111 یعنی آخرین خط به سمت راست بوده است .
و اگر 11110000 بود یعنی سمت چپ
و اگر 00011000 بود یعنی به انتهای خط مسابقه رسیده است زیر خط آخرین بار زیر سنسور وسط بوده .
امیدوارم واضح توضیح داده باشم .
اگر همان کاری را انجام دهید که همیشه انجام می دادید، همان نتیجه ای را می گیرید که همیشه می گرفتید .
افراد موفق کارهای متفاوت انجام نمی دهند، بلکه کارها را بگونه ای متفاوت انجام می دهند.
پاسخ
 سپاس شده توسط Arash90 ، nano ، artd179
#50
امیرحسین جان وقتی من IN=PINA رو میزنم،ارور میده!
ارورش هم اینه:undefined symbol 'in'
چطور حلش کنم!
پاسخ
 سپاس شده توسط artd179


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  کمک برای ساخت ربات مسیریاب با قابلیت تشخیص فلز ehsan922 0 544 22-9-1394، 12:52 صبح
آخرین ارسال: ehsan922
  كمك در مورد ساخت يك ربات مسير ياب soheyl111 16 4,022 4-4-1392، 06:56 عصر
آخرین ارسال: morteza90
  ساده ترین ربات نوریاب ali zade 4 1,836 21-1-1392، 07:33 عصر
آخرین ارسال: ali zade
Smile ربات مسیر یاب se2010 22 8,898 20-12-1391، 04:12 صبح
آخرین ارسال: گلینی
  کمک در برنامه نویسی مسیر یاب maykel 0 997 8-11-1391، 02:58 صبح
آخرین ارسال: maykel
  دزخواست کمک در مورد ربات مسیر یاب amateur92 14 4,641 8-9-1391، 02:00 عصر
آخرین ارسال: karaneha
  نیاز فوری به شماتیک یک رباط مسیر یاب maykel 6 2,204 8-8-1391، 07:47 عصر
آخرین ارسال: maykel
  عکس از ربات مسیریاب fanta 2 2,017 30-7-1391، 12:39 صبح
آخرین ارسال: fanta
  احتیاج به یک ربات مسیر یاب با مشخصات زیر maykel 2 1,180 28-7-1391، 11:21 عصر
آخرین ارسال: maykel
  سوال : اضافه کردن سنسور به ربات مسیریاب AzhidahakA 23 7,790 13-7-1391، 02:40 عصر
آخرین ارسال: navidtion

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان