اطلاعیه

Collapse
No announcement yet.

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

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

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

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

    کد:
    include <mega32.h>
    #include <delay.h>
    #include <stdio.h>
    
    void forward();
    void right();
    void left();
    void backward();
    
    void main()
    {
    
    DDRB=0xFF;
    DDRA=0x00;
    PINA=0x00;
    PORTB=0x00;
    
     while(1)
     {
     
     if(PINA.2==0)
      forward();
     if (PINA.2==1 && PINA.1==0)
      right();
     if (PINA.2==1 && PINA.1==1 && PINA.0==0)
      left();
     if (PINA.2==1 && PINA.1==1 && PINA.0==0)
      backward();
     } 
    }
     
    void forward()
    {
    PORTB=0xA0;
    }
    
    void right()
    {
    delay_ms(300);
    }
    
    void left()
    {
    PORTB=0x60;
    delay_ms(300);
    }
    
    void backward()
    {
    PORTB=0x50;
    }
    سنسور جلو به پین 2 پورت A ، سنسور راستی به پین 1 این پورت و سنسور چپی به پین 0 پورت A وصل شده. موتورها هم که از طریق L298 با پورت B کنترل میشن.
    ولی برنامه اصلا درست کار نمیکنه، مشخص نیست چطوری تصمیم میگیره، مانع جلوش میگیرم ربات گیج میشه. مشکل از کجاست دوستان؟
    ممنون میشم راهنماییم کنین

    #2
    پاسخ : برنامه ربات و مشکل در تشخیص مانع

    خب بزار ببینم :eek:
    شما منظورت رو از مانع درست نگفتی دوست عزیز
    از چه سنسوری استفاده می کنی
    و بعد این که مدارت رو رو پروتئوس بستی

    دیدگاه


      #3
      پاسخ : برنامه ربات و مشکل در تشخیص مانع

      نوشته اصلی توسط mmh1
      خب بزار ببینم :eek:
      شما منظورت رو از مانع درست نگفتی دوست عزیز
      از چه سنسوری استفاده می کنی
      و بعد این که مدارت رو رو پروتئوس بستی
      از سنسور مادون قرمز استفاده میکنم، یعنی فرستنده و گیرنده. فرستنده و گیرنده رو کنار هم گذاشتم وقتی که به مانع میرسه، خروجی گیرنده به خاطر دریافت نور فرستاده شده از فرستنده تغییر میکنه ، که خروجی رو دادم به Lm324 تا خروجی بصورت صفر و پنج ولت دربیاد. بعد دادمش به میکرو. مانع هم هر چیزی میتونه باشه، هم اینه که خیلی تیره نباشه که نور رو منعس نکنه.
      تو پروتئوس تست نکردم. آخه به نظرم خیلی سادس. یعنی سنسورها که درست کار میکنند. پس نباید مشکلی وجود داشته باشه. از اساتید خواهش میکنم کمکم کنید.

      دیدگاه


        #4
        پاسخ : برنامه ربات و مشکل در تشخیص مانع

        شما مطمئنی که به طور کامل همه اصول رو رعایت کردی :agree:
        یعنی حالا که می گی سنسورات صفر و یک رو به میکرو می دن یه مقاومت با زمین موازی کردی (مقاومت پول پ) oo:
        برای موتورات خازن یا دیود برا ایزوله سازی گذاشتی oo:
        من هم اول که ربات می ساختم فک می کردم اینا اصلا مهم نیس ولی بعدا معلوم شد که خیلی هم مهم هست :agree:
        راستی موتورات نباید خیلی به میکرو نزدیک باشند مگر نه میکرو هنگ می کنه (به علت وجود میدان) :eek:
        یه عکس از کارت بزاری بد نیست :rolleyes:

        دیدگاه


          #5
          پاسخ : برنامه ربات و مشکل در تشخیص مانع

          در مورد مقاومت پول پ، پول پ داخلی رو فعال کردم (البته اگه درست فعال کرده باشم). اگه پول پ خارجی بخوام بذارم چیکار باید بکنم؟ یعنی مقاومت رو چطوری باید بذارم و چند اهم؟
          خازن هم دوسر موتورها گذاشتم.
          عکس ربات هم در زیر گذاشتم. نمیدونم دلیلیش چیه ولی ظاهرا میکرو خیلی هنگ میکنه.



          یه چیزی هم که من متوجه شدم اینه که وقتی میکرو تو مدار نیست ولتاژ خروجی رگولاتور 5 ولت ، نزدیک 5 ولت هست ولی وقتی میکرو رو میذارم، ولتاژ خروجی رگولاتور افت میکنه و نزدیکای 3.6 میشه. به نطرتون ممکنه این موضوع مشکل ایجاد کنه؟ منبع ولتاژی که دارم استفاده میکنم یه آداپتوره که روش نوشته حداکثر تا 1000 میلی آمپر یعنی 1 آمپر میتونه جریان بده. حالا نمیدونم واقعا این یک آمپر رو میتونه بده یا اینکه الکی نوشته

          دیدگاه


            #6
            پاسخ : برنامه ربات و مشکل در تشخیص مانع

            نوشته اصلی توسط mhm_004
            در مورد مقاومت پول پ، پول پ داخلی رو فعال کردم (البته اگه درست فعال کرده باشم). اگه پول پ خارجی بخوام بذارم چیکار باید بکنم؟ یعنی مقاومت رو چطوری باید بذارم و چند اهم؟.
            سلام

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

            موفق باشی
            به رویاهات فکر کن!!

            دیدگاه


              #7
              پاسخ : برنامه ربات و مشکل در تشخیص مانع

              از اساتید کسی نیست کمک کنه؟ مشکل از چیه که میکرو درست کار نمیکنه؟

              دیدگاه


                #8
                پاسخ : برنامه ربات و مشکل در تشخیص مانع

                اساتید لطفا کمکم کنین. چرا کسی جواب منو نمیده؟

                دیدگاه


                  #9
                  پاسخ : برنامه ربات و مشکل در تشخیص مانع

                  در مورد تغذیه :
                  ولتاژ تغذیه باید بیشتر از 7.5 ولت باشه .یعنی باید 2.5 ولت بیشتر باشه.7805 مشکل داره.

                  در ضمن در برنامه

                  DDRB=0xFF;
                  DDRA=0x00;
                  PINA=0x00;
                  PORTB=0x00;

                  مقدار دهی ریجیستر پین کاره اشتباهیه یعنی نمی دونم چرا این کار را گردید.

                  توی مقدار دهی به موتور ها هم اشتباه کردید برنامه را باز بینی کنید مثلا در راست مقدار قرار ندادید.



                  دیدگاه


                    #10
                    پاسخ : برنامه ربات و مشکل در تشخیص مانع

                    نوشته اصلی توسط ali-j
                    در مورد تغذیه :
                    ولتاژ تغذیه باید بیشتر از 7.5 ولت باشه .یعنی باید 2.5 ولت بیشتر باشه.7805 مشکل داره.

                    در ضمن در برنامه

                    DDRB=0xFF;
                    DDRA=0x00;
                    PINA=0x00;
                    PORTB=0x00;

                    مقدار دهی ریجیستر پین کاره اشتباهیه یعنی نمی دونم چرا این کار را گردید.

                    توی مقدار دهی به موتور ها هم اشتباه کردید برنامه را باز بینی کنید مثلا در راست مقدار قرار ندادید.
                    دوست عزیز برنامه رو بصورت زیر تصحیح کردم.
                    کد:
                    #include <mega32.h>
                    #include <delay.h>
                    #include <stdio.h>
                    
                    void forward();
                    void right();
                    void left();
                    void backward();
                    
                    void main()
                    {
                    
                    DDRB=0xFF;
                    DDRA=0x00;
                    PORTA=0xFF;
                    PORTB=0x00;
                    
                    SFIOR=0x00;
                    
                     while(1)
                     {
                     while (PINA.2==0)
                      forward();
                     while (PINA.2==1)
                     {
                      if (PINA.1==0)
                      left();
                      else if (PINA.0==0)
                      right();
                      else if (PINA.1==1 && PINA.0==1)
                      backward();
                     }
                     } 
                    }
                     
                    void forward()
                    {
                    PORTB=0xA0;
                    }
                    
                    void right()
                    {
                    while(PINA.2==1)
                     {
                     PORTB=0x90;
                     }
                    }
                    
                    void left()
                    {
                    while(PINA.2==1)
                     {
                     PORTB=0x60;
                     }
                    }
                    
                    void backward()
                    {
                    PORTB=0x50;
                    }
                    ولی باز هم گیر میکنه. احساس میکنم میکرو داره هنگ میکنه. چون وقتی ربات راه میفته یه کم درست حرکت میکنه ولی بعد از چند ثانیه قاطی میکنه. معلوم نیست چرا یه دفعه ای گیر میکنه. مشکل ولتاژ هم برطرف شد، ولی خروجی سنسورها رو دادم به Lm324 که وقتی تست میکنم میبینم وقتی سنسور فعال هست، خروجی LM324 ، پنج ولت نمیشه بلکه 3.2 ولت هست. اصولا باید 5 ولت باشه چون V+ رو 5v دادم و V- رو صفر ولت دادم.
                    به نظرتون مشکل از کجاست؟ ممکنه مشکل ناشی از موتورها باشه، یعنی همین چیزی که دوستمون گفتن. میدان ناشی از موتورها

                    دیدگاه


                      #11
                      پاسخ : برنامه ربات و مشکل در تشخیص مانع

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

                      دیدگاه


                        #12
                        پاسخ : برنامه ربات و مشکل در تشخیص مانع

                        سلام من نمیتونم برنامه شمارو چک کنم
                        ولی یه نکته شاید کمک باشه
                        برای کار با سنسور مادون قرمز باید یک سیگنال ایجاد کنیذ مثلا 1 کیلوهرتز بعد اونو ارسال بعد دریافت کنید در غیر اینصورت علاوه برجریان کشیدن اطلاعاتی رد وبدل نمیشه
                        بعدا یه جمله قشنگ مینویسم

                        دیدگاه


                          #13
                          پاسخ : برنامه ربات و مشکل در تشخیص مانع

                          برای کار با سنسور مادون قرمز باید یک سیگنال ایجاد کنیذ مثلا 1 کیلوهرتز بعد اونو ارسال بعد دریافت کنید در غیر اینصورت علاوه برجریان کشیدن اطلاعاتی رد وبدل نمیشه
                          سلام دوست عزیز
                          نگران نباش به هر حال این مشکل هم حل می شه
                          نگا کن شما که مدارت رو روی برد برد بستی حالا بیا برد برد رو از موتور ها درو کن و با یه مانع سنسور ها رو امتحان کن تا نگرانی از مشکل میدان حل بشه در ضمن اگه شکی داری می تونی امتحان کنی !!! مجانی داداش !!! فقط اول یه آیسی میکرو بردار و بعد مثلا یه چشمک زن 8 تایی باهاش درست کن بعد زمانی که داره چشمک می زنه یه میدان مثل میدانی که یه رله ایجاد می کنه (یا موتور ) بهش نزدیک کن نتیجه فوق الاده خواهد بود !!!! میکرو قاطی می کنه
                          در مرحله دوم بیا این پول پ رو باهم چک کنیم
                          ببین اساسا میکرو دو منطق بیشتر نداره یا صفر یا یک
                          نکته اینجاست که وقتی شما می آی مثلا میکرو رو یک میکنی و بعد از چند ثانیه ولتاژ رو قطع می کنی اگه اون پایه میکرو با یه مقاومت به زمین متصل نباشه میکرو تو همون حالت پیش فرض یک می مونه
                          متوجه هستی چی میگم ؟ یعنی اگه پول پ رو نزاری وقتی سنسور یک داد و بعد از چند ثانیه دیگه یک نداد میکرو چون بهش صفر نرسیده به طور پیش فرض حالت پایه مورد نظر رو یک می گیره (که چند لحظه ای بهش رسیده)
                          پول پ داخلی رو هم بی خیال شو و فقط فکر خارجی باش به نقشه برات می زارم فقط با آی سی lm358 هست و سنسور cny70 که شما می تونی با همون سنسور خودت و آی سی خودت کار کنی مشکلی نیست

                          اینم عکس پول پ

                          راستی یه فیلم هم برام بزار انشا ا... موفق بشی

                          دیدگاه


                            #14
                            پاسخ : برنامه ربات و مشکل در تشخیص مانع

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

                            دیدگاه


                              #15
                              پاسخ : برنامه ربات و مشکل در تشخیص مانع

                              نوشته اصلی توسط mmh1
                              سلام دوست عزیز
                              نگران نباش به هر حال این مشکل هم حل می شه
                              نگا کن شما که مدارت رو روی برد برد بستی حالا بیا برد برد رو از موتور ها درو کن و با یه مانع سنسور ها رو امتحان کن تا نگرانی از مشکل میدان حل بشه در ضمن اگه شکی داری می تونی امتحان کنی !!! مجانی داداش !!! فقط اول یه آیسی میکرو بردار و بعد مثلا یه چشمک زن 8 تایی باهاش درست کن بعد زمانی که داره چشمک می زنه یه میدان مثل میدانی که یه رله ایجاد می کنه (یا موتور ) بهش نزدیک کن نتیجه فوق الاده خواهد بود !!!! میکرو قاطی می کنه
                              در مرحله دوم بیا این پول پ رو باهم چک کنیم
                              ببین اساسا میکرو دو منطق بیشتر نداره یا صفر یا یک
                              نکته اینجاست که وقتی شما می آی مثلا میکرو رو یک میکنی و بعد از چند ثانیه ولتاژ رو قطع می کنی اگه اون پایه میکرو با یه مقاومت به زمین متصل نباشه میکرو تو همون حالت پیش فرض یک می مونه
                              متوجه هستی چی میگم ؟ یعنی اگه پول پ رو نزاری وقتی سنسور یک داد و بعد از چند ثانیه دیگه یک نداد میکرو چون بهش صفر نرسیده به طور پیش فرض حالت پایه مورد نظر رو یک می گیره (که چند لحظه ای بهش رسیده)
                              پول پ داخلی رو هم بی خیال شو و فقط فکر خارجی باش به نقشه برات می زارم فقط با آی سی lm358 هست و سنسور cny70 که شما می تونی با همون سنسور خودت و آی سی خودت کار کنی مشکلی نیست
                              قبل از هر چیزی از اینکه بهم روحیه دادی ممنونم.
                              تاثیر موتورها رو همونطوری که گفتی چک میکنم ببینم میکرو درست کار میکنه یا نه.
                              در مورد مقاومت پول پ یکی ار بچه ها تو چند پست قبل بهم فت مفاومت 10k قرار بدم بین Vcc و اون پایه ای که میخوام! جالبه کلا برعکس گفته یعنی؟
                              سنسورها رو هم دقیقا مطابق همین عکسی که گذاشتی وصل کردم. فقط تو گیرنده به جای مقاومت 10k مقاومت 50k گذاشتم. یعنی تو همین سایت پرسیدم گفتن 50k بهتر جواب میده.
                              باز هم ممنونم.

                              برنامه که قرار دادید شاید مشکل نداشته باشد.شاید برنامه نسبت به سخت افزار هماهنگ نباشه.شما فقط چند حالت را تعریف کردید. در صورتی که کل حالت های ایجاد شده 8 حالت است.غیر از هشت حالت بعضی وقت ترتیب هم مهمه مثلا سنسور ها مقدار 111 را اول می دهند بعد 110 را می دهند و شما برای حالت سوم شرط قرار می دید.یعنی توی برنامه نویسی روبات باید کل حالتی که ممکن پیش بیاد را در نظر بگرید.بهتر موقع کار از روبات فیلم بگرید و با دور آروم نگاه کنید ببینید کجا سه سنسوری عمل کرد و موتور ها چکار کردند.
                              ممنونم دوست عزیز. میشه یه کم راهنماییم کنین که چطور میتونم همه حالت ها رو در نظر بگیرم؟ ترتیب یک شدن سنسورها به نظر میاد نباید مهم باشه چون میکرو به سرعت پین ها رو چک میکنه که ببینه صفر هستن یا یک. این مشکل زمانی به وجود میاد که سرعت میکرو اونقدر پایین باشه که فاصله بین دوبار خوندن متوالی پین ها زیاد باشه، درست نمیگم؟ اگه اینطور نیست چطور میتونم همه حالت ها رو در نظر بگیرم طوری که مشکل پیش نیاد؟

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

                              از همه دوستان که لطف کردن و راهنماییم کردن صمیمانه تشکر میکنم

                              دیدگاه

                              لطفا صبر کنید...
                              X