اطلاعیه

Collapse
No announcement yet.

راه اندازی و کنترل سرو موتور با AVR

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

    #16
    پاسخ : راه اندازی و کنترل سرو موتور با AVR

    شما مثل اینکه لینک زیر رو که توی پست قبلی فرستادم اصلا نگاه نکردین . اونجا کاملا با مثال بحث شده .
    http://www.eca.ir/forum2/index.php?topic=40708.0
    [glow=blue,2,300]آنقدر به تاریکی لعنت نفرستید ، یک شمع روشن کنید. [/glow]

    دیدگاه


      #17
      پاسخ : راه اندازی و کنترل سرو موتور با AVR

      با سلام و تشکر از پاسخ هایتان

      من در راه اندازی سرو موتور به نتیجه رسیدم و توانسم که سرو موتور رو با میکرو راه اندازی کنم و توضیحات رو هم بعدا میزارم فقط یک مشکل این که سرو موتور وقتی میکرو ریست می شوم به حالت اولیه باز نمی گردد و تنها چند درجه به عقب باز می گردد سرو موتور من از نوع SG-5010 است

      با تشکر
      http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

      دیدگاه


        #18
        پاسخ : راه اندازی و کنترل سرو موتور با AVR

        نباید هم بیاد . وقتی میکرو خاموش میشه دیگه pwm به دیتاش نمیرسه . اگه میخواین باید قبل از خاموش شدن یه pwm با pw برابر 1ms بهش بدین .
        [glow=blue,2,300]آنقدر به تاریکی لعنت نفرستید ، یک شمع روشن کنید. [/glow]

        دیدگاه


          #19
          پاسخ : راه اندازی و کنترل سرو موتور با AVR

          [move]************************************************** ********************************************
          ************************************************** **
          ********************************
          ***************
          ********
          ****
          **
          * اگر لطف کنید پاسخ سوال های من رو در پست زیر بدهید خیلی خیلی ممنون می شوم
          **
          ****
          *******
          ***************
          ********************************
          ************************************************** **
          ************************************************** ********************************************[/move]
          http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

          دیدگاه


            #20
            پاسخ : راه اندازی و کنترل سرو موتور با AVR

            با سلام و تشکر از پاسخ هاتون

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

            برنامه :
            $regfile = "m32def.dat"
            $crystal = 12000000
            Config Servos = 1 , Servo1 = Portd.1 , Reload = 20
            Config Portd = Output
            Enable Interrupts
            Dim Z As Integer
            Z = 400
            Do
            Servo(1) = Z
            Waitms 1000
            Loop
            End
            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

            دیدگاه


              #21
              پاسخ : راه اندازی و کنترل سرو موتور با AVR

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

              برای مثال شما اگر duty cycle 10% داشته باشی حالا تغییرش بدی به 11 یا 9 به ترتیب به چپ و راست میچرخه.

              هنگامی که سرو موتور به آخرین درجه چرخش می رسد هنوز هم میکرو PWM میفرستد و سرو موتور صدا می دهد
              موتور میزان 180 درجه بیشتر نمیچرخه شما باید ابتدا و انتها ی این آزادی چرخش رو بدست بیاری. حالت مکانیکیش اینجوریه که شما شفت رو میچرخونی هر جا گیر کرد همونجا ابتدا (یا انتهای) آزادی شفت هست در برنامه نویسی هم شما اینطور عمل میکنی:
              یه پالس PWM با فرکانس 50 هرتز تولید میکنی حالا duty cycle اونو از یه عدد پایین مثلا 500 میکرو ثانیه تا 2000 با استفاده از یه پتاسیومتر تغییر میدی. با استفاده از lcd یا هر نوع خروجی دیگه مقدار دقیق زمان رو در ابتدا و انتهای محور چرحش یادداشت میکنی مثلا میشه 700 و 1600 حالا تو برنامه اصلیت از اعداد بدست اومده استفاده میکنی. حالا ممکنه این سوال بوجود بیاد که این رنج پالس رو تو برگه اطلاعات موتور زده چه لزومی داره این کار رو بکنیم؟؟ باید بگم که این اطلاعات (حداقل برای من) اشتباه بوده که فکر میکنم به خاطر نا مرغوب بودن موتورها باشه.

              البته اگر دوستان از روشهای دیگه ای اسفاده میکنن لطفا مطرح کنند تا ما هم استفاده کنیم.
              با تشکر
              Work with what you have .Never limit yourself by things you could have had

              دیدگاه


                #22
                پاسخ : راه اندازی و کنترل سرو موتور با AVR

                با سلام و تشکر از پاسختون

                من سرو موتور رو طبق برنامه زیر به جلو حرکت دادم ، ولی برای حرکت سرو موتور در سمت مخالف چه برنامه ای باید به میکرو انتقال بدم ، سرو موتور من از نوع SG-5010 است و پهنای باند مرده آن 20us است چگونه می توانم برنامه زیر رو به گونه ای تغییر دهم که موتور تا آخرین درجه یعنی 180 درجه بچرخد و سپس یس از تاخیری دوباره سرو موتور به حالت اولیه یعنی 0 درجه باز گردد ، و یک سوال دیگر این که چگونه می توانم سرو موتور رو در درجه خاصی متوقف کنم یعنی 90 درجه ( نصف چرخش ) یا .... ( اگر ممکن است یک توضیح روی برنامه ای که من در زیر آورده ام بدهید که هر جمله برای چه منظوری است چون من این برنامه رو خودم ننوشتم و با الگوریتم برنامه آشنا نیستم )

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

                http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                دیدگاه


                  #23
                  پاسخ : راه اندازی و کنترل سرو موتور با AVR

                  من با بیسیک کار نکردم !! اون تشکر هم اشتباهی بود ولی نوش جونت :mrgreen:

                  من 5010 رو را انداختم. پالس 550 us زاویه صفر و پالس 2510 us هم زاویه 180 میده. یعنی تقریبا همون .5 میلی ثانیه و 2.5 میلی ثانیه که البته ممکنه برای موتور شما کمی متفاوت باشه.

                  برای اینکه موتور بین 0 تا 180 درجه بچرخه شما باید پالس هایی بین این رتج رو تولید کنید. برای مثال 1.75 ms زاویه 90 به شما میده حالا مادامی که شما این پالس رو تولید میکنید موتور تو همون زاویه میمونه و اگر باری به موتور وصل بشه و زاویه اون تغییر کنه موتور این اختلاف درجه رو جبران میکنه.

                  پهنای باند مرده یعنی اینکه اگر اختلاف duty cycle بین دو سیکل PWM (همون 20ms یا 50 Hz ) کمتر از 20us باشه موتور اونو حس نمیکنه و در نتیجه موتور شما حرکتی نمیکنه.

                  حالا با این تفاسیر شما باید برنامه خودتون رو به این صورت بنویسید:
                  ایجاد PWM با duty cycle ا 2510us
                  تاخیر
                  ایجاد PWM با duty cycle ا 550us

                  برای مثال فرض کنید فرکانس شما 4Mhz باشه با prescaler=8 شما تنظیمات زیر رو برای تایمر 16 بیتی 1 انجام بدید
                  mode= fast PWM top on OCR1A
                  OCR1A=0x2710 برای تولید PWM با فرکانس 50Hz
                  out put on OCR1B

                  حالا مقدار قرار داده شده در OCR1B پالسی با duty cycle دوبرابر ایجاد میکنه. یعنی شما برای ایجاد زمان 550us برای زاویه صفر باید مقدار اونو 275 قرار بدید.

                  راستش تنظیماتی که گفتم رو نمیدونم تو بیسیک چطوری میشه اعمال کرد وگر نه بیشتر کمکت میکردم

                  موفق باشید
                  Work with what you have .Never limit yourself by things you could have had

                  دیدگاه


                    #24
                    پاسخ : راه اندازی و کنترل سرو موتور با AVR

                    ************************************************** ***************************
                    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                    دیدگاه


                      #25
                      پاسخ : راه اندازی و کنترل سرو موتور با AVR

                      *********************************** لطفا دوستانی که Bascom-AVR کار کرده اند کمک کنند *************************************

                      با سلام دوست من آقای jh_topgraph لطف کردن و به زبان C توضیح دادن ولی من نیاز به زبان بیسیک و Bascom-AVR دارم ، لطفا دوستان راهنمایی کنند

                      من سرو موتور رو طبق برنامه زیر به جلو حرکت دادم ، ولی برای حرکت سرو موتور در سمت مخالف چه برنامه ای باید به میکرو انتقال بدم ، سرو موتور من از نوع SG-5010 است و پهنای باند مرده آن 20us است چگونه می توانم برنامه زیر رو به گونه ای تغییر دهم که موتور تا آخرین درجه یعنی 180 درجه بچرخد و سپس یس از تاخیری دوباره سرو موتور به حالت اولیه یعنی 0 درجه باز گردد ، و یک سوال دیگر این که چگونه می توانم سرو موتور رو در درجه خاصی متوقف کنم یعنی 90 درجه ( نصف چرخش ) یا .... ( اگر ممکن است یک توضیح روی برنامه ای که من در زیر آورده ام بدهید که هر جمله برای چه منظوری است چون من این برنامه رو خودم ننوشتم و با الگوریتم برنامه آشنا نیستم )

                      برنامه :
                      $regfile = "m32def.dat"
                      $crystal = 12000000
                      Config Servos = 1 , Servo1 = Portd.1 , Reload = 20
                      Config Portd = Output
                      Enable Interrupts
                      Dim Z As Integer
                      Z = 400
                      Do
                      Servo(1) = Z
                      Waitms 1000
                      Loop
                      End

                      با تشکر بسیار بسیار فراوان از همه دوستان
                      http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                      دیدگاه


                        #26
                        پاسخ : راه اندازی و کنترل سرو موتور با AVR

                        سلام
                        دوست من هنوز این مشکل رو حل نکردی :redface:
                        ببین تابع servo() رو فراموش کن. سعی کن سیگنال های لازم رو خودت بسازی. نیازی هم به استفاده از تایمر نیست. با waitms و waitus کار کن اعداد ابتدا و انتها رو هم با سعی و خطا بدست بیار. مثلا کد زیر رو نگاه کن:

                        do
                        portb.0=1
                        waitus 500
                        portb.0=0
                        waitms 19.5
                        loop

                        الان قطعه کد بالا یه PWM با فرکانس ۵۰ هرتز (۲۰ میلی ثانیه) و یهنای duty cycle ۵۰۰ us میسازه.
                        حالا شما میبینی که سرو تو زاویه ۵ درجه ایستاده یکم از عدد ۵۰۰ us کم کن. نکته ای که باید در نظر بگیری اینه که کل تاخیر حلقه باید 20 میلی ثانیه باشه.
                        این روش رو انقدر اصلاح کن تا به ابتدا و انتهای سرو برسی.
                        بعد از اینکه عدد ابتدا و انتها رو بدست آوردی اونوقت برنامه کلی رو با اعداد بدست اومده دوباره بنویس.

                        Work with what you have .Never limit yourself by things you could have had

                        دیدگاه


                          #27
                          سوال : راه اندازی و کنترل سرو موتور با AVR

                          سلام من یه سروو موتور 9805mg دارم می خوام به میزان دلخواهم ( مثلا:90 درجه) حرکت کنه و بعد از یه تایمی (مثلا: 2 ثانیه) همون راه رفته رو بر گرده :rolleyes: میشه راهنمایی کنید. ممنون میشم. :nice:
                          البه من هیچ دوره ای در باره برنامه نویسی نگذروندم ولی یه خرده کار کردم و یه چیزایی میدونم. لطفا اگه کسی کار کرده تا جایی که میشه ساده توضیح بده، چون من از تایپیک های این سایت و چند تا سایت دیگه استفاده کردم ولی سروو ی منو راه ننداخت "لطفا شماتیک مدار رو هم بذارید" :nice: :nice: :nice:

                          دیدگاه


                            #28
                            پاسخ : راه اندازی و کنترل سرو موتور با AVR

                            *********************************** لطفا دوستانی که Bascom-AVR کار کرده اند کمک کنند *************************************

                            با سلام دوست من آقای jh_topgraph لطف کردن و به زبان C توضیح دادن ولی من نیاز به زبان بیسیک و Bascom-AVR دارم ، لطفا دوستان راهنمایی کنند

                            من سرو موتور رو طبق برنامه زیر به جلو حرکت دادم ، ولی برای حرکت سرو موتور در سمت مخالف چه برنامه ای باید به میکرو انتقال بدم ، سرو موتور من از نوع SG-5010 است و پهنای باند مرده آن 20us است چگونه می توانم برنامه زیر رو به گونه ای تغییر دهم که موتور تا آخرین درجه یعنی 180 درجه بچرخد و سپس یس از تاخیری دوباره سرو موتور به حالت اولیه یعنی 0 درجه باز گردد ، و یک سوال دیگر این که چگونه می توانم سرو موتور رو در درجه خاصی متوقف کنم یعنی 90 درجه ( نصف چرخش ) یا ....

                            برنامه :
                            $regfile = "m32def.dat"
                            $crystal = 12000000
                            Config Servos = 1 , Servo1 = Portd.1 , Reload = 20
                            Config Portd = Output
                            Enable Interrupts
                            Dim Z As Integer
                            Z = 400
                            Do
                            Servo(1) = Z
                            Waitms 1000
                            Loop
                            End

                            با تشکر بسیار بسیار فراوان از همه دوستان
                            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                            دیدگاه


                              #29
                              پاسخ : راه اندازی و کنترل سرو موتور با AVR

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

                              دیدگاه


                                #30
                                پاسخ : راه اندازی و کنترل سرو موتور با AVR

                                سلام دوستان یه سوال داشتم اگه جواب بدین ممنون میشم.
                                من برای پروژم به یک سروو موتور که بتونه 360 درجه بچرخه نیاز دارم.
                                مثلا بش دستور بدم روی 265 درجه بمونه.
                                یه سروو پیدا کردم به اسم gws s35 که 360 درجه مثه یه موتور dc میچرخه که به کاره من نمیاد.
                                یه سروو که به درده من میخوره gws s125 1turn است که به ازای 1 میلی ثانیه روی 0 درجه و 1.5 ثانیه روی 180 درجه و 2 میلی ثانیه روی 360 وای میسته که دقیقا همون چیزیه که من میخوام ولی متاسفانه این مدل سروو توی ایران نیست.
                                حالا دوستان اگه سایتی میشناسن که این مدل رو داره یا یه مدل سروو دیگه که مثه gws s125 1turn کار میکنه رو میشناسن لطفا بم معرفی کنن. مرسی.

                                دیدگاه

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