اطلاعیه

Collapse
No announcement yet.

سروو با AVR

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

    سروو با AVR

    سلام من یه سروو دارم که با میکرو ATmega16بهش برنامه میدم و یه بازو به سرووم وصل کردم و خود موتور رو هم به جایی فیکس کردم میخام وقتی موتور رو راه اندازی می کنم اهرم من در حالت عمودی باشه ولی موتورم صرف نظر از اینکه من چه زاویه اولیه بهش میدم میره در حالت افقی قرار میگیره!همه جور زاویه اولیه رو چک کردم
    من با تایمر کانتر یک در حالتph&fr pwm با زبان cکار میکنم .کسی میدونه مشکل کجاست؟من خیلی فوری نیاز به کمک دارم.

    #2
    پاسخ : سروو با AVR

    سلام
    خوب شما پیچ سر سروو رو باز کنید و سر سروو رو توی حالت عمودی قرار بدید و پیچ اونو ببندید!

    دیدگاه


      #3
      پاسخ : سروو با AVR

      نوشته اصلی توسط lostlord
      سلام
      خوب شما پیچ سر سروو رو باز کنید و سر سروو رو توی حالت عمودی قرار بدید و پیچ اونو ببندید!
      ممنون که جواب دادین
      ولی من منظور شما رو دقیق نفهمیدم اگر منظورتون این بود که به طور دستی یه کاری کنم که اهرمم در ابتدا در حالت اولیه عمودی باشه باید بگم من این کارو کردم ولی مشکل از وقتی شروع میشه که من برنامه رو میدم به سروو.اون موقع شروع میکنه سریع به چرخیدن تا آخرین زاویه ای که میتونه بره!بعدشم توجه کنید این بازوی یه روباته و من سروو با توجه به موقعیت بدن روباتم فیکس کردم یعنی من محدودیت دارم نمیتونم هر طرف که بخوام سرووم رو قرار بدم. شفت سرووم هم فیکس شده به بازوی روباتم و بازو هم حتما باید اول در حالت عمود باشه (و بعد از حالت عمود به اندازه 30درجه جلو و عقب بره ولی الان از حالت عمود میره تا آخرین زاویه ای که میتونه بعد 30 درجه حول اون میچرخه) بنابراین تنها راه کنترل سروو میمونه برنامه ی من!که با اونم هر زاویه ای میدم نمیشه1در کل فعلا چمزم! :question:

      دیدگاه


        #4
        پاسخ : سروو با AVR

        شما توی برنامتون پالس pwm با چه فرکانسی درست میکنید؟
        در شروع برنامه پهنای پالس رو روی چند میلی ثانیه قرار دادید؟
        اگر مدت زمان یک بودن پالستون روی 1.5ms باشه سروو در موقعیت وسط قرار میگیره. ( 1.5ms یک و 18.5ms صفر )
        اگه برنامتون رو هم قرار بدید بهتر میشه مشکل رو پیدا کرد.

        دیدگاه


          #5
          پاسخ : سروو با AVR

          نوشته اصلی توسط lostlord
          شما توی برنامتون پالس pwm با چه فرکانسی درست میکنید؟
          در شروع برنامه پهنای پالس رو روی چند میلی ثانیه قرار دادید؟
          اگر مدت زمان یک بودن پالستون روی 1.5ms باشه سروو در موقعیت وسط قرار میگیره. ( 1.5ms یک و 18.5ms صفر )
          اگه برنامتون رو هم قرار بدید بهتر میشه مشکل رو پیدا کرد.


          بازم ممنوم

          فرکانس pwm امم50هرتزه در شروع ocr ام رو 1500 قرار دادم ولی من خودم اعداد دیگه از 1000 تا 2670 هم دادم ولی درست نشد.در ضمن اینم بگم تو پرتـئوس با تغییر ocrزاویه اولیه موتور فرق میکنه ولی عملا نه!
          کریستال 16mMHZ هم گذاشتم

          این تنظیمات تایمر 1
          // Timer/Counter 1 initialization
          // Clock source: System Clock
          // Clock value: 2000.000 kHz
          // Mode: Ph. & fr. cor. PWM top=ICR1
          // OC1A output: Non-Inv.
          // OC1B output: Non-Inv.
          // Noise Canceler: Off
          // Input Capture on Falling Edge
          // Timer1 Overflow Interrupt: Off
          // Input Capture Interrupt: Off
          // Compare A Match Interrupt: Off
          // Compare B Match Interrupt: Off
          TCCR1A=0xA0;
          TCCR1B=0x12;
          TCNT1H=0x00;
          TCNT1L=0x00;
          ICR1H=0x4E;
          ICR1L=0x20;
          OCR1AH=0x00;
          OCR1AL=0x00;
          OCR1BH=0x05;
          OCR1BL=0xDC;




          اینم حلقه ی while

          به PINA.0وPINA.1 ویه کلید وصله

          while (1)
          {
          if(PINA.0==1)
          {
          OCR1A = OCR1A+1;
          delay_ms(1000);
          if(OCR1A>1670){OCR1A=1670;}
          }

          if(PINA.1==1)
          {
          OCR1A = OCR1A-1;
          delay_ms(1000);
          if(OCR1A<1334){OCR1A=1334;}
          }
          if(PINA.0!=1 && PINA.1!=1){
          OCR1A = 1500;
          }


          }

          دیدگاه


            #6
            پاسخ : سروو با AVR

            چرا جواب نمیدین؟؟؟؟؟؟؟؟؟؟

            دیدگاه


              #7
              پاسخ : سروو با AVR

              سلام ببخشید که دیر جواب میدم!
              من خودم یه برنامه نوشتم که درست جواب میده یعنی زمان روشن شدن مدار سروو روی 90 درجه قرار می گیره!
              دوتا کلید هم هست که برای چرخش به چپ و راست استفاده میشه!
              از لینک زیر میتونید کد رو دریافت کنید:
              http://www.4shared.com/rar/oDVFKD2d/servo_test.html

              دیدگاه


                #8
                پاسخ : سروو با AVR

                نوشته اصلی توسط lostlord
                سلام ببخشید که دیر جواب میدم!
                من خودم یه برنامه نوشتم که درست جواب میده یعنی زمان روشن شدن مدار سروو روی 90 درجه قرار می گیره!
                دوتا کلید هم هست که برای چرخش به چپ و راست استفاده میشه!
                از لینک زیر میتونید کد رو دریافت کنید:
                http://www.4shared.com/rar/oDVFKD2d/servo_test.html

                خیلی خیلی ممنون از لطفتون حتما برنامتون رو امتحان می کنم من چون تا 4شنبه نمی تونم برم دانشگاه تا اون موقع اسکوپ و منبع تغذیه و سرووام پیشم نیست که چک کنم . :redface:فقط شما که میگین روی 90درجه قرار میگیره تو پرتئوس امتحان کردین یا عملی؟
                چون همونجور که گفتم من همه جور زاویه اولیه رو تو پرتئوس چک کرده بودم ولی تو عمل سروم صرف نظر از اون زاویه ها تا آخر می چرخید.حالا تو برنامه جدیدم که 2شنبه نوشتم OCRرو از صفر دادم و در ابتدای حلقه ی WHILE ام DELAY گذاشتم خیلی کمتر چرخید ولی موضوع اینه تا قبل زدن کلیدا اصلا نباید میچرخید :surprised:
                بازم واقعا ممنون که وقت گذاشتین

                دیدگاه


                  #9
                  پاسخ : سروو با AVR

                  خواهش میکنم! :redface:
                  من به صورت عملی با سروو چک کردم درست بود!
                  برنامه شما رو که چک کردم پالس خروجی pwm درست نبود و زمان یک بودن 3ms بود درحالی که حداکثر چرخش سروو با 2ms هست!
                  یه عکس هست که میزارم اینجا، زمانبندی پالس ورودی به سروو رو نشون میده اگه پالس خروجی مثل این باشه سروو درست جواب میده!

                  دیدگاه


                    #10
                    پاسخ : سروو با AVR

                    نوشته اصلی توسط lostlord
                    خواهش میکنم! :redface:
                    من به صورت عملی با سروو چک کردم درست بود!
                    برنامه شما رو که چک کردم پالس خروجی pwm درست نبود و زمان یک بودن 3ms بود درحالی که حداکثر چرخش سروو با 2ms هست!
                    یه عکس هست که میزارم اینجا، زمانبندی پالس ورودی به سروو رو نشون میده اگه پالس خروجی مثل این باشه سروو درست جواب میده!
                    کسی هست همین الان به من کمک کنه؟

                    دیدگاه


                      #11
                      پاسخ : سروو با AVR

                      مگه با برنامه من مشکلتون حل نشد؟
                      oo:

                      دیدگاه


                        #12
                        پاسخ : سروو با AVR

                        [/img][/img]
                        نوشته اصلی توسط lostlord
                        مگه با برنامه من مشکلتون حل نشد؟
                        oo:
                        نه بابا!
                        تازه هردو سروو هام چرخدندش شکست ! :cry: :cry2:البته به خاطر برنامه شما نه ها! :redface:
                        حالا چی کار میشه کرد؟پروژم بین زمین و آسمون معلقه؟
                        تو بازار چرخدنده هست؟ :sad: :sad: :sad:
                        فقط یه دنده از هرکدوم شکست!!فکر کنم فرکانس بالا (100هرتز)باعثش شد ولی من شنیده بودم 100 هم میشه داد؟؟؟ یعنی میشه؟
                        http://www.engineersgarage.com/sites/default/files/imagecache/Original/wysiwyg_imageupload/1/Servo%20Gears.jpg


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

                        دیدگاه


                          #13
                          پاسخ : پاسخ : سروو با AVR

                          نوشته اصلی توسط e.r23
                          [/img][/img]نه بابا!
                          تازه هردو سروو هام چرخدندش شکست ! :cry: :cry2:البته به خاطر برنامه شما نه ها! :redface:
                          حالا چی کار میشه کرد؟پروژم بین زمین و آسمون معلقه؟
                          تو بازار چرخدنده هست؟ :sad: :sad: :sad:
                          فقط یه دنده از هرکدوم شکست!!فکر کنم فرکانس بالا (100هرتز)باعثش شد ولی من شنیده بودم 100 هم میشه داد؟؟؟ یعنی میشه؟
                          http://www.engineersgarage.com/sites/default/files/imagecache/Original/wysiwyg_imageupload/1/Servo%20Gears.jpg


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


                          راستی اینو یادم رفت بپرسم تو برنامه قبلی من از کجا فهمیدید duty cycle3msاست؟من تو اسکوپ میدیدم خیلی کوچیک بود در ضمن محاسبه هم می کردم کمتر از 2msبود!
                          وقتی برنامه ی شما رو اجرا کردم سرووی من اولش چرخید میخام بدونم چون ocrاول رو 600بود این سروو چرخش داشت؟من می خام سرووم اول اصلا نچرجه با زدن کلیدا بچرخه؟حالا اگر ocr از صفر بدم درست میشه؟من دادم نشد؟شاید همه ی سروو ها اینجورین ؟

                          دیدگاه


                            #14
                            پاسخ : سروو با AVR

                            بابت سروو ها متاسم! :sad:
                            نمیدونم چرخ دنده هاش هست یا نه! شاید باید به فکر یه نوش باشی! :cry:
                            برنامه شما رو تو پروتیوس چک کردم!
                            برنامه من سروو رو در شروع کار توی هر موقعیتی که بوده برمیگردونه روی زاویه 90 درجه ( به صورت عمودی ) از اونجا به بعد با کلید ها به چپ و راست میچرخه!
                            این زاویه اولیه رو هم با OCR1B=1500; تعیین می کنیم، اگه بخواید سروو موقع روشن شدن مدار چرخش نداشته باشه باید این خط رو حذف کنید. اینطوری سروو توی آخرین وضعیتی که داشته می مونه و با زدن کلید ها به چپ و راست می چرخه!
                            با OCR1B=0 شما یه پالس سوزنی درست می کنید که بدرد سروو نمی خوره (چون پایه OC1B توی حالت تطبیق صفر میشه و در سرریز تایمر یک میشه)
                            بازم اگه مشکلی بود در خدمتیم!

                            دیدگاه


                              #15
                              پاسخ : پاسخ : سروو با AVR

                              [quote author=e.r23 link=topic=62777.msg356487#msg356487 date=1337194053]

                              حالا بر گردیم سر برنامه! :read:فردا میرم ببینم تو بازار پیدا میکنم چرخدنده؟ :angry:
                              راستی اینو یادم رفت بپرسم تو برنامه قبلی من از کجا فهمیدید duty cycle3msاست؟من تو اسکوپ میدیدم خیلی کوچیک بود در ضمن محاسبه هم می کردم کمتر از 2msبود!
                              محاسبش=ocrتقسیم top-tcnt درسته؟
                              قتی برنامه ی شما رو اجرا کردم سرووی من اولش چرخید میخام بدونم چون ocrاول رو 600بود سرووتون در عمل یعنی تو حالت عملی) چرخش داشت؟من می خام سرووم اول اصلا نچرجه با زدن کلیدا بچرخه؟ اصلا شما هم اولش سرووتون چرخید؟من که نتونستم چک کنم دیگه بد شانسی آوردم و نمیدونم چرا چرخ دنده هام شکست!الان فهمیدم از فرکانسم نبوده؟به نظرتون چرا اینطوری میشن سروو ها؟مطمئنا به موتورم فشار اومده !چی کارش کردم نمیدونم oo:
                              حالا اگر ocr از صفر بدم درست میشه؟
                              ocrاگر صفر باشه duty cycle صفر میشه دیگه بعد کم کم اضافه می کنم اینجوری موتور شروع به راه رفتن میکنه!من برای اینکه روباتم راه بره میخام که موتورم خیلی آروم راه بیفته واسه !
                              اگر خط ocr=1500رو حذف کنیم کار نمیکنه!
                              من برنامه و فایل پرتئوسم رو میذارم من میخام دقیقا تو عمل هم همین اتفاقا واسه سرووم بیفته!ولی متاسفانه سرووم در ابتدا تا آخر می چرخه بعد به طور ناقص کار میکنه!
                              منظورم از اینکه میخواستم بازوی روباتم عمود باشه نسبت به بدنش بود نه اینکه سروو زاویه اولیش 90 باشه نمیدونم چه جوری باید بگم خیلی واسم توضیحش سخته در اصل من یک پره دوتایی سروو رو به اهرمم(فکر کنید اهرمم پای روباته) فیکس کردم بعد خود سروو رو به بدنه روبات بعد با دستم اهرم رو چرخوندم در نتیجه سرووم چرخید تا جاییکه روباتم در حالت ایستاده قرار گرفت (همون حالت عمود که گفتم) حالا از این جا به بعدش رو می خواستم برنامه بدم ولی به محض دادن برنامه سرووم اینقدر پا رو میچرخونه تا آخرین جایی که میتونه بعدش روباتم میفته و نمیتوته راه بره! :-?? ~x( :-/
                              اینم برناممhttp://www.4shared.com/rar/UQoeO35K/servo.html
                              duty cycle1.5

                              دیدگاه

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