اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام به همه اساتید .
    من یه سروو مدل SG5010 رو بدون هیچ مشکلی راه اندازی کردم . اما بر خلاف اون چیزی که توی همه ی سایت ها در باره ی سروو خونده بودم ، با عرض پالس500us به صفر درجه میره و با عرض پالس 2280us به 180 درجه . مشکل اصلی این نیست . تعجب من از اینه که چرا با 1390us در نود درجه قرار نمی گیره و برای این که در وسط قرار بگیره باید عرض پالس رو 1360us قرار بدیم ؟ مگر میانگین 500 و 2280 نمیشه 1390 ؟ آخه من میخوام یه کار خیلی دقیق انجام بدم . واسه همین از سروو استفاده میکنم . اگه این جور باشه نمیشه پیش بینی کرد که برای مثلا 20 درجه چه عرض پالسی باید بدیم . خواهش میکنم کمک کینید . کارم خیلی گیره . اینم برنامه . :angry:
    $regfile = "m16def.dat"
    $crystal = 8000000

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

    Dim Motor_time As Integer , A As Byte , B As Byte

    Motor_time = 1390

    A = 0

    Motor1 Alias Portb.0
    Stop Timer1

    Enable Ovf0
    Enable Interrupts

    Enable Timer0
    On Ovf0 Make_pwm

    Timer0 = 100

    Do

    Loop

    End

    Make_pwm:

    Timer0 = 100
    Timer1 = 0
    Start Timer1

    Set Motor1
    Do
    Loop Until Timer1 >= Motor_time
    Reset Motor1

    Return
    [glow=blue,2,300]آنقدر به تاریکی لعنت نفرستید ، یک شمع روشن کنید. [/glow]

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

    نوشته اصلی توسط imijoon
    [b]سلام به همه اساتید .
    من یه سروو مدل SG5010 رو بدون هیچ مشکلی راه اندازی کردم . اما بر خلاف اون چیزی که توی همه ی سایت ها در باره ی سروو خونده بودم ، با عرض پالس500us به صفر درجه میره و با عرض پالس 2280us به 180 درجه . مشکل اصلی این نیست . تعجب من از اینه که چرا با 1390us در نود درجه قرار نمی گیره و برای این که در وسط قرار بگیره باید عرض پالس رو 1360us قرار بدیم ؟ مگر میانگین 500 و 2280 نمیشه 1390 ؟ آخه من میخوام یه کار خیلی دقیق انجام بدم . واسه همین از سروو استفاده میکنم . اگه این جور باشه نمیشه پیش بینی کرد که برای مثلا 20 درجه چه عرض پالسی باید بدیم . خواهش میکنم کمک کینید . کارم خیلی گیره . اینم برنامه . :angry:
    ..........................
    بنام خدا
    با سلام
    شاید ، این مورد ، مربوط به پتانسیومتر داخل سروو موتور باشه.
    ( فرض میکنیم که مقدار مقاومت این پتانسیومتر ، 1000 اهم باشد ). در حالت 0 و 180 درجه ، بازوی وسط این پتانسیومتر ،که نقش ورودی فیدبک مدار داخلی سروو را بعهده دارد ، در موقعیت حد اقل ( تقریبا 0 اهم ) و حد اکثر مقدار مقاومت( تقریبا 1000 اهم ) پتانسیومتر قرار میگیرد ، ولی بدلیل تلرانس در گرافیت این پتانسیومتر ، ممکن است که مقدار این مقاومت در ( 500 اهم ) دقیقا در وسط پتانسیومتر قرار نگرفته و مقداری با زاویه مورد نظر شما اختلاف داشته باشد . ( در حد همان 30 میکروثانیه )

    بنابراین ، برای رسیدن به دقتهای زیاد زاویه ، باید یک جدول LOOKUP TABLE در برنامه طراحی و بر طبق اون ، محور موتور را به زاویه دلخواه هدایت نمایید . ( البته با آزمایش دقیق )

    دیدگاه


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

      امیرجان ممنون که زود جواب دادی . اما من میگم توی سرووی نو هم این مشکل هست ؟ یه کمی بیشتر در مورد برنامه راهنمایی کن . در ضمن برنامه درسته ؟ من میگم شاید برنامه مشکل داره ؟
      [glow=blue,2,300]آنقدر به تاریکی لعنت نفرستید ، یک شمع روشن کنید. [/glow]

      دیدگاه


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

        یعنی کسی جوابی نداره ؟
        [glow=blue,2,300]آنقدر به تاریکی لعنت نفرستید ، یک شمع روشن کنید. [/glow]

        دیدگاه


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

          بزارین ببینم درست فهمیدم؟!:
          پالسی با دامنه 3-5 ولت، فرکانس 50هرتزی یا زمان تناوب 20 میلی ثانیه. که ازاین20 تا، فقط 1 الی 2 میلی ثانیه پالس بالا هست (یک منطقی) و 18 الی 19 میلی ثانیه بقیه، صفر میشه. این از duty cycle
          تو اکثر جاها گفتن:
          1یا 0.5 میلی ثانیه = 90- درجه
          5/1 میلی ثانیه = 0 درجه
          2یا 2.5 میلی ثانیه = 90+ درجه
          مادامی که این پالس اعمال میشه، سرو در زاویه متناسب با پالس می ایسته.

          1-در صورتی که پالس ما با این مشخصات فرق کنه (مثلا دامنه یا فرکانس، یا duty cycle )، چه اتفاقی میافته؟

          2-در صورتی که روی چهار شاخ (شفت) سرو بار وارد بشه، طوری که بخواد منجر به تغییر زاویه شفت بشه، نباید در پالس تغییری ایجاد کنیم؟

          3-این متن رو خوندم، در pdf یی راجع به سرو بود، ولی نفهمیدم منظورش رو:
          The servo's control logic needs to see at least a one millisecond pulse before the actual pulse width modulated (PWM) signal.

          The control part of the signal is broken down into the 1ms minimum time, the 1ms PWM signal, and a roughly 40ms delay. This delay is not as critical as the other parts of the timing signal. It is essentially the dead time between control signals. If you repeat the control signals too quickly (i.e. 10ms delay) the servo will buzz and jitter. If you repeat the control signals too slow (i.e. 70ms delay) the servo will shut off between signals and its position will not remain constant.

          قضیه این 40 میلی ثانیه تاخیر که گفته رو نگرفتم! چون با هیچ کدوم از مشخصات پالس کنترلی سرو جور در نمیاد!

          4- تو این صفحه (http://www.servocity.com/html/hs-625mg_ultra_speed.html) اون پایین نوشته:
          dead band width = 8usec . این باند مرده دیگه چیه؟؟

          5-دوستان چه مدلهایی امتحان کردند، تا منم همونو بگیرم تا واسه کنترل عملیش تو دردسر نیافتم! مدلهای MG995 , 5010 , SG50 و... تو جمهوری گیر میاد.


          عیدتونم مبارک! :nice:
          دلی دارم که از تنگی در او جز غم نمی گنجد........ غمی دارم ز دلتنگی که در عالم نمیگنجد

          دیدگاه


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

            گفتم نکنه دوستان رفتم عید دیدنی و فرصت نکردن یه کمکی، جوابی ... به ما بدن.
            دیدم نه! اون پایین شلوغه!... ولی نچ! هیشکی مارو دوس نداره! عزیزان نبودجواب؟؟؟
            دلی دارم که از تنگی در او جز غم نمی گنجد........ غمی دارم ز دلتنگی که در عالم نمیگنجد

            دیدگاه


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

              نوشته اصلی توسط Ma3oud
              گفتم نکنه دوستان رفتم عید دیدنی و فرصت نکردن یه کمکی، جوابی ... به ما بدن.
              دیدم نه! اون پایین شلوغه!... ولی نچ! هیشکی مارو دوس نداره! عزیزان نبودجواب؟؟؟
              جداً شرمندم کردین با این همه راهنمایی!! یعنی دوستان عزیز، تا حالا با سروو ور نرفتن یا اینکه هیچ وقت سوال واسشون پیش نیومده؟؟! :eek:
              هیشکس بلد نیس جواب بده؟؟ oo:
              خوبه iman-d اولش نوشته کمک فوری! وگرنه چی کار میکردین؟! :angry:
              دلی دارم که از تنگی در او جز غم نمی گنجد........ غمی دارم ز دلتنگی که در عالم نمیگنجد

              دیدگاه


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

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

                دیدگاه


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

                  سلام، من یه سرو MG995 رو با میکرو PIC راه اندازی کردم. زاویه سرو رو هم با یه پتانسیومتر به میکرو دادم. این هم برنامش با نرم افزار microc :
                  [left] signed int steer_angle,angle; unsigned int Vin,oftime,time; unsigned long mV;
                  void interrupt(){ PORTC.F2 = 0; delay_ms(25);
                  Vin = Adc_Read(0); // Get results of AD conversion
                  mV = (unsigned long)Vin*5000/1024 ; angle = mV/10; steer_angle = (signed int)(((angle-250)*10)/27) ; Usart_Write(steer_angle); oftime = steer_angle*50/9+1500; time = 256-oftime/(4*0.125*32); Usart_Write(time);
                  PORTC.F2 = 1; TMR0 = time; // Timer0 initial value
                  INTCON = 0x20; // Enable TMRO interrupt
                  }

                  void main(){ TRISA = 0xFF; // PORTA is input
                  TRISC = 0x00; // PORTC is output
                  PORTC = 0x00; // Set PORTC to $00

                  //
                  // Configure A/D converter
                  //
                  ADCON1 = 0x80; // Configure analog inputs and Vref

                  //
                  // USART init
                  //
                  Usart_Init(9600);
                  OPTION_REG = 0x84; // Assign prescaler to TMR0
                  TMR0 = 193; // Timer0 initial value 1ms
                  INTCON = 0xA0; // Enable TMRO interrupt

                  for(; {


                  }
                  }

                  دیدگاه


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

                    نوشته اصلی توسط Ma3oud
                    بزارین ببینم درست فهمیدم؟!:
                    پالسی با دامنه 3-5 ولت، فرکانس 50هرتزی یا زمان تناوب 20 میلی ثانیه. که ازاین20 تا، فقط 1 الی 2 میلی ثانیه پالس بالا هست (یک منطقی) و 18 الی 19 میلی ثانیه بقیه، صفر میشه. این از duty cycle
                    تو اکثر جاها گفتن:
                    1یا 0.5 میلی ثانیه = 90- درجه
                    5/1 میلی ثانیه = 0 درجه
                    2یا 2.5 میلی ثانیه = 90+ درجه
                    مادامی که این پالس اعمال میشه، سرو در زاویه متناسب با پالس می ایسته.

                    1-در صورتی که پالس ما با این مشخصات فرق کنه (مثلا دامنه یا فرکانس، یا duty cycle )، چه اتفاقی میافته؟

                    2-در صورتی که روی چهار شاخ (شفت) سرو بار وارد بشه، طوری که بخواد منجر به تغییر زاویه شفت بشه، نباید در پالس تغییری ایجاد کنیم؟

                    3-این متن رو خوندم، در pdf یی راجع به سرو بود، ولی نفهمیدم منظورش رو:
                    The servo's control logic needs to see at least a one millisecond pulse before the actual pulse width modulated (PWM) signal.

                    The control part of the signal is broken down into the 1ms minimum time, the 1ms PWM signal, and a roughly 40ms delay. This delay is not as critical as the other parts of the timing signal. It is essentially the dead time between control signals. If you repeat the control signals too quickly (i.e. 10ms delay) the servo will buzz and jitter. If you repeat the control signals too slow (i.e. 70ms delay) the servo will shut off between signals and its position will not remain constant.

                    قضیه این 40 میلی ثانیه تاخیر که گفته رو نگرفتم! چون با هیچ کدوم از مشخصات پالس کنترلی سرو جور در نمیاد!

                    4- تو این صفحه (http://www.servocity.com/html/hs-625mg_ultra_speed.html) اون پایین نوشته:
                    dead band width = 8usec . این باند مرده دیگه چیه؟؟

                    5-دوستان چه مدلهایی امتحان کردند، تا منم همونو بگیرم تا واسه کنترل عملیش تو دردسر نیافتم! مدلهای MG995 , 5010 , SG50 و... تو جمهوری گیر میاد.


                    عیدتونم مبارک! :nice:
                    1- در مورد دامنه یه محدوده مشخصی داره ولی اشکالی نداره. در مورد فرکانس باعث میشه موتور شما در حد اکثر زمان ممکن پاسخ نده و یا بد پاسخ بده مثلا overshoot بالا بده. اما در مورد duty cycle باعث میشه که موتور شما در موقعیت دیگه ای قرار بگیره (خطا در زاویه )

                    2- خیر تا زمانی که موتور شما تحمل کنه (مقدار گشتاور) موتور سعی میکنه حالت قبلیه خودش رو که duty cycle تعیین میکنه حفظ کنه.

                    3- این برمیگرده به همون سوال اول میگه اگه شما فرکانس PWM رو بالا بگیری باعث میشه تغییرات پهنای duty cycle بره تو محدوده باند مرده اگر هم فرکانس رو هم کم بگیری موتور دیر پاسخ میده. پهنای باند مرده جز مشخصات فیزیکی موتور هست و تو دیتاشیت میده. نکته ای که باید به اون دقت کنی اینه که تغییرات pwm نباید در کمتر از زمان dead band width اتفاق بیفته وگرنه موتور اون تغییرات رو احساس (sense) نمیکنه.

                    4-تو شماره 3 توضیح دادم!! البته اگر متوجه نشدی زیاد جدی نگیرش زیاد مهم نیست. بعید میدنم به مشکل DBW بر بخوری.

                    5- بسته به گشتاور مورد نیازت انتخاب کن. نکته دیگه اینه که اگر پروژه شما حساس نیست (مثلا پروژه لیسانس) سعی کن دنبال جنس خوب نری همین مدلای چینی با گیربکس پلاستیکی کارتو راه میندازه

                    اگر بازم سوالی بود یا توضیح بیشتر میخواستی بگو

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

                    دیدگاه


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

                      تشکر از پاسخ جامع و کاملتون :applause:

                      از اون قضیه کنترل سروو خیلی وقته میگذره. هدایتش کردیم رفت! نتیجهآ‌ی عملی که در کنترل سروو گرفتم این بود که اول یک رنج مشخص از یک سیگنال رو به سروو اعمال کنیم تا محدوده عملکرد صحیحش نمایان بشه.
                      بهتره سیگنال ساخته شده برای اعمال به سروو رو در اسکوپ ببینید. به من که خیلی کمک کرد تا از صحت عملکرد موتور مطمئن بشم.
                      من یک سیگنال با دامنه 5 ولت، فرکانس 50 هرتز، ولی با pwm متغیر بهش دادم. و سطح high سیگنال رو از 0.5 میلی تا 2.5 میلی ثانیه تغییر دادم. که از 90- تا 90+ چرخید. در 1.5 میلی ثانیه هم در وسط میآ‌ایستاد.
                      همین! :redface:
                      دلی دارم که از تنگی در او جز غم نمی گنجد........ غمی دارم ز دلتنگی که در عالم نمیگنجد

                      دیدگاه

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