اطلاعیه

Collapse
No announcement yet.

راه اندازی پنج سروو موتور با Atmega16

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

    راه اندازی پنج سروو موتور با Atmega16

    با عرض سلام و خسته نباشید. من یه سوال از خدمت ذوستان و اساتید محترم داشتم.
    چطوری می تونم پنج سروو موتور رو با یک Atmega16 کنترل کنم؟
    البته لازم به ذکر که من 10 تا کلید دارم که هر دوتاییش واسه یه موتوره و موتور رو به چپ یا راست حرکت می ده. موتورها هم به PORTA.0 تا PORTA.4 متصل اند.
    من هر چی که تلاش کردم موفق نشدم این کارو انجام بدم. البته تونستم یک سروو موتور رو با PWM تایمر 1 کنترل کنم ولی نمی دونم چطور می تونم 5 موتور رو با 10 تا کلید چپ و راست به چپ یا راست حرکت بدم.
    ممنون می شم کمکم کنید.

    #2
    پاسخ : راه اندازی پنج سروو موتور با Atmega16

    یا سوالم خیلی سطح پائینه که دوستان سلیقشون نمی گیره جواب بدن یا خیلی سطح بالا. تو تاپیک های قبلی هم که در این مورد سوال شد، به جواب درستی نرسید و دوستان یه کلیاتی در مورد سروو موتور رو بیان کردند. مثل این که اگه عرض پالس 1 میلی ثانیه باشه .... ولی جواب درست و عملی داده نشد. حتی یه کد هم توش نبود. اگه کسی اینو نوشته ممنون می شم کدش رو اینجا بزاره.

    دیدگاه


      #3
      پاسخ : راه اندازی پنج سروو موتور با Atmega16

      اگه با C می خوای رضا سپاسیار تو این مقاله نوشتن:

      http://dlc.eca.ir/index.php?act=view&id=104

      فصل 10 در مورد همین هست

      دیدگاه


        #4
        پاسخ : راه اندازی پنج سروو موتور با Atmega16

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

        دیدگاه


          #5
          پاسخ : راه اندازی پنج سروو موتور با Atmega16

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

          $regfile = "m32def.dat"
          $crystal = 8000000

          Config Portb = Output
          Config Timer0 = Timer , Prescale = 1024
          Config Timer1 = Timer , Prescale = 8

          Dim Motor_time(8) As Word , A As Byte , B As Byte

          Motor_time(1) = 500
          Motor_time(2) = 1385
          Motor_time(3) = 2270

          A = 0

          Motor1 Alias Portb.0
          Motor2 Alias Portb.1
          Motor3 Alias Portb.2

          Stop Timer1

          Enable Ovf0
          Enable Interrupts

          Enable Timer0
          On Ovf0 Make_pwm

          Timer0 = 178

          Do

          Waitms 5
          Incr Motor_time(1)
          If Motor_time(1) >= 2270 Then
          Motor_time(1) = 500
          End If

          Loop

          End


          Make_pwm:

          Timer0 = 178
          Timer1 = 0
          Start Timer1

          Set Motor1
          Do
          Loop Until Timer1 >= Motor_time(1)
          Reset Motor1

          Timer1 = 0
          Set Motor2
          Do
          Loop Until Timer1 >= Motor_time(2(
          Reset Motor2

          Timer1 = 0
          Set Motor3
          Do
          Loop Until Timer1 >= Motor_time(3)
          Reset Motor3

          Return

          فقط باید Motor time ها رو تغییر بدی . اگه سئوالی بود در خدمتم .
          [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

          دیدگاه

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