اطلاعیه

Collapse
No announcement yet.

سروو موتور 9805mg

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

    سروو موتور 9805mg

    از دوستان واساتید عزیز راهنمایی می خواهم:
    برا کار روی یه پروژه نیاز به یک سروو موتور پیدا کردم (9805mg) ولی هر کاری که می کنم نمی تونم با بسکام اون پالس لازم را تهیه کنم که بر حسب درجه خاص(بین 0 تا 180) متوقف بشود اگه کسی در این باره اطلاعاتی داره لطفا کمک کنه :angry:
    این سروو 0.2sec/60degree و باند مرده 5میکرو ثانیه است

    #2
    پاسخ : سروو موتور 9805mg

    واقعا کسی نیست کمک کنه :surprised: :cry:
    من با دستور config servo.... هم کارکردم ولی در این حالت کلاک میکرو چند مگ باشه؟ reload رو چه مقدار باشه؟

    دیدگاه


      #3
      پاسخ : سروو موتور 9805mg

      سلام .
      راستش من با این موتور تاور پرویی که شما انتخاب کردید واسه کار، قبلا کار کردم منتها نه با avr من با pic کار کردم، با این حال کلیاتی رو که ممکنه مشترک باشه عرض میکنم خدمتتون امیدوارم به دردتون بخوره.

      دوست من همونطور که میدونید دیفالت سروو بر این اساس هست که شافت خروجی این موتور، سر اون زاویه ای که ما با کد براش تعیین میکنیم وایسته...

      حالا شما باید با سیگنال کنترل موقعیتی که بهش میدید اون رو سر زاویه نگه دارید، در واقع این سیگنال کنترل موقعیت یه سیگنالی با پهنای پالس متغیر هست، و این پهنای پالس معمولا بین 1 تا 2 میلی ثانیه تغییر میکنه، که پهنای پالس 1 میلی ثانیه ای شافت موتور رو در منتها الیه سمت چپ خودش قرار میده، 1.5 میلی ثانیه اون رو در موقعیت وسط، و 2 میلی ثانیه ای شافت رو در منتها الیه سمت راست خودش قرار میده...

      حالا شما برا زوایای ریز و دقیق، باید زوایای این بین رو با سعی و خطا بدست بیارید، یعنی اینکه بعد از 1 میلی ثانیه با عرض پالس 1.1 میلی ثانیه شروع کنید و زاویه ای که بازای اون شافت موتور تو اون قرار داره رو بخونید و بعد از اون 1.2 میلی ثانیه و زاویه ی متناظرشو بخونید و همینطور بیایید تا 2 میلی ثانیه، تا ریز ریز پهنای پالس متناظر با هر زاویه دستتون بیاد تا بتونید برای همیشه تو کارهاتون ازش استفاده کنید.

      به قول دوستمون جناب perfect و اونطور که اساس سرووها میگه برای کنترل سروو باید پالس با فرکانس 50 هرتز بطور پیوسته و مداوم به سروو اعمال بشه و فقط با تغییر DutyCycle موقعیت محور رو تغییر بدید. اگر این پالس قطع بشه یا DutyCycle بیش از حد کم یا زیاد باشه زاویه موتور در منتها الیه چپ یا راست قفل میشه.

      بنابراین برای اینکه سرووی شما پالس مورد نظر رو دریافت کنه و سر زاویه های دلخواه شما بایسته شما باید قطار پالسی با پریود 20ms و DutyCycle برابر 1، 1.5، 2 میلی ثانیه یا دیوتی متناسب با زاویه ی مورد نظرتون بسازید.
      برای ساخت این قطار پالس به نظر بنده بهترین ابزار استفاده از ماژول تایمر میکروکنترلر هست که بسیار دقیق عمل میکنه.

      اگر تمایل دارید بنده برنامه ی راه اندازی این موتور رو با کامپایلر Pic Basic Pro در اختیارتون قرار بدم...
      زندگی برگ بودن در مسیر باد نیست
      امتحان ریشه هاست
      ریشه هم هرگز اسیر باد نیست
      زندگی چون پیچک است
      انتهایش میرسد پیش خدا!

      دیدگاه


        #4
        پاسخ : سروو موتور 9805mg

        ممنون از لطفتون
        من به برنامه با بسکام نیاز دارم اگر اون هم بزارید لطف می کنید. بخاطر توضبحاتون ممنون

        دیدگاه


          #5
          پاسخ : سروو موتور 9805mg

          سلام دوست من.
          این برنامه میتونه 2 تا سروو رو تو پوزیشنهای مختلف قرار بده:

          کد:
           DEFINE OSC 8
          @ DEVICE pic16f877a,WDT_OFF ,PWRT_ON ,PROTECT_OFF ,LVP_OFF ,HS_OSC ,BOD_OFF
          
          servo1 var byte 
          servo2 var byte 
          
          
          flag var bit
          
          ON INTERRUPT GOTO _interrupt
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
          
            TRISD=$00
            PORTD=$00
            TRISB=0
            
           ;;;;;;;;;       
          
           
           PIR1.1=0 ; TMR2IF=0
           TMR2=0
           PR2=249
           PIE1.1=1
           T2CON=$4F
             ;;;;;;;;;
            INTCON.6=1  
            INTCON.7=1  
            
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
           
          again:
          if flag=1 then 
          
           servo1=50
           servo2=150
           
           
           endif
           
          flag=0 
           
          goto again
          
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
            DISABLE 
          _interrupt:            ; interrupt service
          
          if PIR1.1=1 then     ; if TMR2IF=1 then
           
          
               PORTD = $01
               PAUSEUS 990 
               INTCON.2=0
               TMR0 = 255-servo1
               OPTION_REG = OPTION_REG & $c0 
               OPTION_REG = OPTION_REG | $02 
               while INTCON.2=0
               wend   
               PORTD=$00
               ;;;;;;;;;;;;;;;;;;;;;;;;;;
                PORTD=$02;
                PAUSEUS 990 
                INTCON.2=0
                TMR0 = 255-servo2 
                OPTION_REG = OPTION_REG & $c0 
                OPTION_REG = OPTION_REG | $02 
                while INTCON.2=0
                wend
                 PORTD=$00    
               ;;;;;;;;;;;;;;;;;;;;;;;;;; 
                
             PIR1.1=0  ; clear TMR2IF
             endif
            
                
            RESUME     ;return from interrapt 
            ENABLE 
          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          
          end
          یه نگاهی بهش بندازید، هر جائیشو که متوجه نشدید بگید تا توضیح بدم، البته در اولین فرصت توضیح کل برنامه رو عرض میکنم خدمتتون.
          زندگی برگ بودن در مسیر باد نیست
          امتحان ریشه هاست
          ریشه هم هرگز اسیر باد نیست
          زندگی چون پیچک است
          انتهایش میرسد پیش خدا!

          دیدگاه

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