اطلاعیه

Collapse
No announcement yet.

کمک در مورد سروو موتور

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

    کمک در مورد سروو موتور

    سلام
    دوستان بنده تازه برنامه نویسی با Picرو شروع کردم و میخوام سروو موتور راه بندازم، سوالات اساسی زیر واسم پیش اومده که از دوستان یک دنیا ممنون میشم اگه منو راهنمایی کنن :cry: (بنده با pic basic pro کار میکنم)
    1. چون من باید تو کارم 7 تا سروو رو راه اندازی کنم میخواستم بپرسم که آیا تنها یک میکروی pic قابلیت کنترل کردن این 7 تا سروو رو داره یا اینکه باید از چند تا میکرو و ارتباط بین میکرویی استفاده کنم؟ اگه یکی کافیه میتونم با میکروهای سری 16 مثل16f84 یا 16f873 کار کنم؟ :sad:
    2. اگه درست فهمیده باشم برای کنترل موتور باید از پالسهای pwm استفاده کرد و اینکه باید به سروو قطار پالس بدیم که طول هر تناوب20ms است و قسمت مثبت پالس از 1 تا 2 ms تغییر میکنه که اگه 1 باشه موتور به راست و اگه 2 باشه به چپ میچرخه و اگه 1.5 باشه سروو وسط وامیسته،درست میگم؟! حالا نمیدونم اگه یه زاویه ای این بین بخوایم مثلا بخوایم سروو رو 80 یا مثلا 25 درجه وایسته باید چه جوری محاسبات زمان پالس رو انجام بدهیم؟ اصلا گیر اصلیم سر اینه که نمیدونم چه جوری باید پالس pwm ساخت و ربطش با تایمرها چیه؟! در ضمن اینو میدونم با دستور Pulsout pin, period میشه زاویه خروجی سروو رو تعیین کرد اما بازم نمیدونم چه جوری باید محاسبات رو انجام بدیم تا بدونیم مثلا واسه زاویه 25 درجه به جای period چه عددی بگذاریم؟ (متاسفانه من خیلی مبتدی ام و خیلی هم اطلاعات لازم :redface
    3. چه نوع موتور سرووهایی وجود دارن که خروجیشون تا 360 درجه یا حداقل 270 بچرخه؟
    4. من تو یه کتابی برنامه کنترل سروو با کلید تک پل دو طرفه(spdt ) رو دیدم که اگه کلید بالا بود موتور به راست اگه پایین بود به چپ میچرخید و اگه کلید وسط بود سروو وامیستاد،اگه میشه لطفا راهنماییم کنید چه جوری میشه برنامه ای رو نوشت که بدون کلید بشه موتور رو کنترل کرد؟

    راستی من چند تا کتاب گیر آوردم واسه pic که به زبان basic هستند اسامیشون رو میذارم بلکه روزی به کار آیند :biggrin:
    1.اصول و راهنمای ساخت روبات با استفاده از میکروکنترلرهای pic ترجمه محمد مشاقی طبری انتشارات کانون نشر علوم(pic basic pro)
    2.چگونه روبات بسازیم، علیرضا زارع پور نشر نص(pic basic pro)
    3.آموزش مباحث میکروکنترلرهای pic به کمک سیستم آموزشی mk1 plus با کامپایلر microbasic ،جهاد دانشگاهی امیر کبیر، مهرداد کمالی
    قبلا از لطف همه دوستان که از کمک کردن و دادن اطلاعاتی که میدونم اصلا به راحتی بدست نیاوردن،دریغ نمیکنن واقعا ممنونم. :rolleyes:
    زندگی برگ بودن در مسیر باد نیست
    امتحان ریشه هاست
    ریشه هم هرگز اسیر باد نیست
    زندگی چون پیچک است
    انتهایش میرسد پیش خدا!

    #2
    پاسخ : کمک در مورد سروو موتور

    سلام.

    اساتید محترم اگه جایی کم گفتم یا غلط گفتم،لطفا مرا ببخشید و آن را اصلاح کنید: :agree:

    توضیح کلی در باره ی PWM و ربط آن به تایمر:
    pwm یا مدولاسیون عرض پالس نوعی پالس است که در آن زمان روشن بودن به زمان خاموش بودن (duty cycle)را کنترل می کنیم.در ضمن
    دیوتی سایکل رو بر حسب درصد بیان میکنند و اغلب پالس های مربعی دیوتی سایکلشون 50 درصد هست.
    مثال: ما یه پالس داریم که فرکانسش 50 هرتز هست.دیوتی سایکلشم 50 درصده.در این حالت زمان کل پالس 20میلی ثانیه میشه.از اون
    جایی که دیوتی سایکل 50 درصده،(1/2) پس 10 میلی ثانیه روشنه ( یعنی 1) و 10 میلی ثانیه خاموشه(یعنی 0).حالا اگه دیوتی سایکلو
    20 درصد بکنیم،4میلی ثانیه روشن و 16 میلی ثانیه خاموشه.
    ربطشم به تایمر به سیم رابطشه!
    شوخی کردم بابا.ربطش اینه که در اکثر میکرو ها تو تایمراشون یه ماژولی هست که توسط اون،شما می تونید کلاک cpu را زوی کلاک تایمر هم
    بندازی و یه پالس تو خروجی اون تایمر داشته باشی که دیوتی سایکلشو خودت تنظیم کنی. در ضمن این کار ها هم سخت افزاری انجام میشه و
    در برنامه فقط دیوتی سایکلو مقدتر دهی میکنی.

    و اما سوالاتتون:
    1.با یه میکرو هم میشه این کارو کرد.با 7 تا میکرو هم میشه. بستگی داره چه جوری برنامه می نویسی یعنی اگه بخوای سخت افزاری کار کنی
    با هر میکرو یکی دوتا سروو رو بیشتر نیمشه کنترل کرد اما اگه pwm رو خودت نرم افزاری بنویسی میتونی 7 تا یا هر چند تا که می خوای(البته تا جایی که پین های میکرو اجازه می ده) pwm بسازی و باهاش سروو رو کنترل کنی.

    2.من خیلی وقته دیگه با pic basic pro کار نمی کنم و خودم هم نمی دونم محاسباتش چجوریه ولی یه پیشنهاد دارم:
    اول یه پالس به سروو بده با یه دیوتی مشخص. بعد زاویه شو اندازه بگیر. بعدش دوباره یه پالس با دیوتی بیشتر به و زاویه رو اندازه بگیر.با این کار می تونی به صورت تجربی محاسبات رو خودت به دست بیاری.

    3.من منظورتو نفهمیدم ولی سروو هایی وجود دارند که 360 رو بچرخن.

    4.احتمال زیاد در برنامه ای که شما فرمودید مدام کلید رو چک می کرده و برای سروو مقدار تعیین میکرده.

    خب امیدوارم غلط نگفته باشم :mrgreen:
    آدم های سخت می مانند و روز های سخت می روند!

    دیدگاه


      #3
      پاسخ : کمک در مورد سروو موتور

      سلام بنده رو هم پذیرا باشید بسیار ممنونم جناب 5 از پاسختون :smile:
      ولی منظورتون از اینکه pwm نرم افزاری بنویسم رو نفهمیدم :sad:
      من خیلی تو چرخوندن سرووها و اینکه چجوری دستورات رو تو pic واسه اینکار پشت سر هم بیارم آماتورم اگه امکانش هست لطفا یه کم بیشتر راهنماییم کنید :redface:
      بله منظورم ماکزیمم زاویه ای بود که یه سروو میتونه بچرخه، میشه لطفا بگید اسم همچین سروویی که 360 درجه میچرخه چیه؟
      باز هم از لطفتون ممنونم :biggrin:

      اضافه شده در تاریخ :
      سلام
      دوستان میخواستم یه اصلاحیه رو سوالم بذارم بلکه اینجوری شفاف تر بشه و دوستان بتوننن کمک کنن میدونم ایراد از سوالم بوده که تا حالا بی جواب مونده!
      اونم اینکه من نمیخوام همه سرووهامو در آن واحد و همزمان کنترل کنم بلکه میخوام برنامه ای بنویسم که قابلیت اینو داشته باشه که بتونه همه 7،8 تا سروو رو تو یه برنامه کنترل کنه،یا به عبارتی با تحقق یه سری شرط سرووی اول با یه زاویه خاص حرکت کنه، با تحقق شرط شماره 2 سرووی دوم و به همین ترتیب تا سرووی آخر، این سوالم یه سوال کلی بود :redface:
      سوالم اولم قبل از این سوال اینه که اصلا چجوری میشه با pic basic pro برنامه ای نوشت که یه سروو رو تو وضعیتهای وسط و چپ و راست نگه داشت؟
      من واقعا گیر جواب این سوالام از همه دوستان ممنون میشم منو یاری کنن.

      اضافه شده در تاریخ :
      با سلام دوباره خدمت دوستان و اساتید محترم :smile:
      دوستان لطف شما میتونه کمک شایان توجهی به بنده بکنه و گره ای رو که بنده مدتهاست نمیتونم باز بکنم رو باز کنه باز هم ازتون خواهشمندم نظر لطفتون رو از بنده دریغ نفرمایید
      1.بدون مقدمه چجوری میتونم تو یه برنامه با pic basic pro چند تا سروو رو کنترل کنم که هر کدوم قراره تو یه موقعیت زاویه ای خاص باشن و روال کار به این صورت باشه که با احقاق شرط1 سرووی اول بچرخه و با تحقق شرط دوم سرووی دوم و به همین ترتیب تا الا آخر، نمیدونم فرم کلی برنامه باید چجوری باشه؟
      2. واسه تعیین یک زاویه خاص واسه سروو جناب 5 فرمودند که:( اول یه پالس به سروو بده با یه دیوتی مشخص. بعد زاویه شو اندازه بگیر. بعدش دوباره یه پالس با دیوتی بیشتر به و زاویه رو اندازه بگیر.با این کار می تونی به صورت تجربی محاسبات رو خودت به دست بیاری.) اما بنده منظورشون رو نفهمیدم
      ممنونم از لطف همه دوستان :agree:
      زندگی برگ بودن در مسیر باد نیست
      امتحان ریشه هاست
      ریشه هم هرگز اسیر باد نیست
      زندگی چون پیچک است
      انتهایش میرسد پیش خدا!

      دیدگاه


        #4
        پاسخ : کمک در مورد سروو موتور

        سلام.
        شما برای کنترل سروو نیاز به تولید پالس PWM با فرکانس 50Hz دارید. متاسفانه ماژول CCP میکروکنترلر های 8 بیتی PIC توانایی زیادی در تولید هر فرکانس دلخواه ندارد. به عنوان مثال برای اینکه بتوانید با یک PIC16F877 یک فرکانس 50 هرتز تولید کنید باید کلاک کریستال را تا 819.2Khz پائین بیاورید.
        در ضمن این سری از میکروکنترلر های PIC فقط شامل دو ماژول CCP هستند. بنابراین شما فقط دو موج PWM را به صورت سخت افزاری میتوانید با این میکروکنترلر تولید کنید که برای کنترل مثلاً 6 سروو کافی نیست.
        برای راحت تر شدن کار میتوانید از میکروکنترلر های دیگر از جمله AVR استفاده کنید که هم تولید فرکانس مورد نظر هم در آن به راحتی امکانپذیر است و هم موج تولیدی دارای رزولوشن بیشتری نسبت به PIC است.

        دیدگاه


          #5
          پاسخ : کمک در مورد سروو موتور

          از بنده هم سلام و ممنونم جناب perfect از پاسختون
          و اما بعد چند تا نکته و سوال اول اینکه ما به دلیل نویز پذیر بودن avr ها مجبوریم از pic استفاده کنیم یعنی یه جورایی دیگه pic بودن میکرومون صد در صد و تثبیت شده است از طرفی با توجه به آماتور بودن بنده و تخصصی جواب دادن شما باعث شده که من ازتون خواهش کنم که یه کم روشنتربرای بنده منظورتون رو توضیح بدید :redface:
          اصلا بنده فرق pwm سخت افزاری و نرم افزاری رو نمیفهمم! مگه نمیشه با دستور pulsout pin period هر چند تا سروو رو کنترل کرد؟ یعنی برای مثال برای کار من که میخوام 7 تا سروو رو کنترل کنم که هر کدوم قراره با تحقق یه سری شرط خاص بچرخن، بنده نمیتونم از این دستور تو برنامم استفاده کنم؟
          و سوال کلی و اصلی بنده اینه که چه جوری میتونم برنامه کنترل این 7 تا سروو رو با pic basic pro و این دستور بنویسم؟
          میدونم سوالم خیلی اساسیه اما ممنون میشم گره از کارم باز کنید :rolleyes:
          زندگی برگ بودن در مسیر باد نیست
          امتحان ریشه هاست
          ریشه هم هرگز اسیر باد نیست
          زندگی چون پیچک است
          انتهایش میرسد پیش خدا!

          دیدگاه


            #6
            پاسخ : کمک در مورد سروو موتور

            نوشته اصلی توسط pama
            از بنده هم سلام و ممنونم جناب perfect از پاسختون
            و اما بعد چند تا نکته و سوال اول اینکه ما به دلیل نویز پذیر بودن avr ها مجبوریم از pic استفاده کنیم ...
            سلام. چه کسی به شما گفته AVR در مقابل PIC نویز پذیر تره؟ دلایل وشواهد شما چیه؟

            نوشته اصلی توسط pama
            یه کم روشنتربرای بنده منظورتون رو توضیح بدید :redface:
            اصلا بنده فرق pwm سخت افزاری و نرم افزاری رو نمیفهمم! مگه نمیشه با دستور pulsout pin period هر چند تا سروو رو کنترل کرد؟ یعنی برای مثال برای کار من که میخوام 7 تا سروو رو کنترل کنم که هر کدوم قراره با تحقق یه سری شرط خاص بچرخن، بنده نمیتونم از این دستور تو برنامم استفاده کنم؟
            و سوال کلی و اصلی بنده اینه که چه جوری میتونم برنامه کنترل این 7 تا سروو رو با pic basic pro و این دستور بنویسم؟
            متاسفانه بنده هیچ آشنایی با PIC Basic ندارم و به دستوراتش آشنا نیستم. در مورد دستوری هم که فرمودید به نظر میرسه که فقط یک پالس با Duty Cycle ثابت تولید میکنه. همچنین بنده تا حالا تجربه تولید PWM به صورت نرم افزاری به طوری که دوستان اشاره کردند رو نداشتم. و فکر هم نمیکنم حتی اگر به صورت نرم افزاری بتوان یک موج PWM تولید کرد دقت لازم رو داشته باشه.
            ولی در مورد تولید موج PWM با تایمر در PIC:
            برای اینکه بتوانید با تایمر در PIC موج PWM بسازید باید از ماژول CCP استفاده کنید. این ماژول دارای مد های کاری Capture برای اندازه گیری زمان یک واقعه، مد Compare برای تولید پالس با Duty Cycle ثابت و مد PWM است. هر کدام از این مدها با تایمرهای خاصی کار میکنند که در این بین برای استفاده از مد PWM فقط تایمر 8 بیتی 2 به کار میره. حد اکثر رزولوشن ممکن موج PWM در PIC های هشت بیتی برابر 10 بیت است.
            همچنین پریود موج PWM وابسته به مقدار رجیستر 8 بیتی PR2 است. تایمر2 دارای یک Prescaler و یک Postscaler است . کلاک سیستم به نسبت Prescaler تقسیم شده و به تحریک تایمر 2 اعمال میشه و تایمر با این کلاک خروجی از Prescaler شروع به شمارش میکنه. Postscaler در مد PWM کاربردی نداره و قابل استفاده نیست. مقدار های ممکن برای Prescaler به ترتیب 1 ، 4 و 16 است.
            Duty Cycle موج تولیدی هم وابسته به رجیستر CCPRxL ( حرف x شماره ماژول CCP است) و همچنین بیت های شماره 4و5 از رجیستر CCPXCON است. که با هم 10 بیت رزولوشن رو تشکیل میدهند.
            گرچه توضیح در مورد نحوه تولید PWM در PIC پیچیده است ولی به طور خلاصه طبق رابطه زیر میشه بیان کرد:



            این رابطه نحوه محاسبه پریود موج رو بیان کرده و برای محاسبه فرکانس باید معکوس بشه. در ضمن یک نکته ای که وجود داره اینه که Duty Cycle (مقدار رجیستر CCPRxL که 8 بیت پر ارزش DutyCycle و دوبیت 4و5 رجیستر CCPXCON که دو بیت کم ارزش اون رو تشکیل میدهند وبا هم 10 بیت رو میسازند) نباید از مقدار پریود یعنی رجیستر PR2 بیشتر باشه وگرنه موج PWM ساخته نمیشه.

            با توجه به این رابطه و با دانستن اینکه حداکثر مقدار PR2 برابر 255 و حد اکثر Prescaler برابر 16 است با فرض استفاده از کریستال 4Mhz و معکوس کردن رابطه بالا حد اقل فرکانس ممکن برابر است با :
            256*4*16 / 4000000
            یعنی حد اقل فرکانس PWM ممکن با کریستال 4Mhz برابر 244 هرتز بدست میاد. حالا برای اینکه فرکانس 50 هرتز رو تولید کنید طبق این رابطه میتونید متوجه بشید که باید کلاک کریستال حدود 800Khz باشه.

            دیدگاه


              #7
              پاسخ : کمک در مورد سروو موتور

              سلام
              خیلی متشکرم جناب perfect از پاسختون :smile:
              اینکه avr از pic نویز پذیرتر هست دلیلش تجربه تعداد زیادی از دوستان تو کار با میکروها و گفتشون مبنی بر هنگ کردن میکروهای avr در حین انجام کار مخصوصا تو محیطهایی که امواج الکترمغناطیسی موجودند(مثل محیط کاری ما)،هستش که بعد از حدود تقریبا یک ماه تحقیق ما(بنده و بقیه اعضای مکانیکی گروه) رو به این نتیجه رسوند که از pic استفاده کنیم.
              و بعد اینکه متاسفانه بنده هم برای اولین بار هست که با pic کار میکنم اون هم تو پروژه ای کاملا جدی، و تقریبا آشناییم با pwm و نحوه بکارگیری اون تو چرخوندن سرووها خیلی کمه و همین هم،موضوع رو خیلی واسم گنگ کرده
              و بسیار ممنونم از لطف شما تو راهنمایی کردن بنده امیدوارم بتونم راهمو پیدا کنم.
              مشکل دیگه ای که دارم اینه که حالا فرض کنیم سرووی ما به چپ و راست و وسط حرکت کرد ما چجوری میتونیم راویه خاص واسش تعیین کنیم مثلا بهش فرمان بدیم رو 20 درجه یا مثلا 70 درجه وایستا؟
              باز هم از لطف شما مهندس perfect و همه دوستانی که لطفشون رو شامل حال بنده میکنند بسیار ممنونم.
              زندگی برگ بودن در مسیر باد نیست
              امتحان ریشه هاست
              ریشه هم هرگز اسیر باد نیست
              زندگی چون پیچک است
              انتهایش میرسد پیش خدا!

              دیدگاه


                #8
                پاسخ : کمک در مورد سروو موتور

                سلام دوست عزیز
                یه کتاب برات می فرستم امیدوارم بتونه مشکلاتو حل کنه متن کتاب انگلیسی و خیلی روان هستش
                http://ifile.it/yz2nwp4
                اما اسم کتاب Robots, Androids, and Animatrons.pdf
                کل پروژهاش با همون زبون برنامه نویسی مورد نظر شما انجام شده و یه فصل در مورد دستوراتش توضیحاتی داده و به نظر میاد که ساده باشه
                صفحه 71 در مورد سرو موتور ها توضیح داده و یه مدار با 556 براش گذاشته
                صفحه 147 یه برنامه برای سرو نوشته توضیح داده
                (منظورم از شماره های گفته شده شماره روی کاغذهای کتاب نیست)
                البته تو پروژه های دیگش هم از سرو استفاده کرده توضیح داده
                من خودم از PIC استفاده نمیکنم وگرنه بیشتر توضیح می دادم
                تو سایت roboeq یه سرو 360 گذاشته
                http://roboeq.com/modules.php?op=mod...ink&cid=17

                موفق باشید

                دیدگاه


                  #9
                  پاسخ : کمک در مورد سروو موتور

                  از بنده هم سلام و بسیار ممنونم از توجهتون ali.reza خان
                  راستیت ماجرا اینکه من امروز یه برنامه نوشتم واسه سروو که محور سروومون رو به منتها الیه راست و چپ میچرخونه اما وای نمیسته!یعنی همین طور ممتد به حرکت ساعتگرد و پاد ساعتگرد خودش ادامه میده منظورم اینه که اگه بخوایم مثلا 3 بار حرکت به چپ و راست رو داشته باشه و بعد بایسته چه تغییری باید تو برنامه بدیم؟
                  گذشته از اینکه سوال اصلیم مبنی بر این که چه جوری میتونم برنامه کنترل 7 تا سروو رو با pic basic pro و دستور pulsout pin perid یا هر دستور دیگه ای بنویسم، به قوت خودش باقیه :sad:
                  بازم ممنون جناب ali.reza از لطفتون و سپاس گذار میشم از دوستانی که تو این زمینه کار کردنتا لطف کنن م تجربیاتشون رو در اختیار بنده هم قرار بدند :job:
                  زندگی برگ بودن در مسیر باد نیست
                  امتحان ریشه هاست
                  ریشه هم هرگز اسیر باد نیست
                  زندگی چون پیچک است
                  انتهایش میرسد پیش خدا!

                  دیدگاه


                    #10
                    پاسخ : کمک در مورد سروو موتور

                    برای کنترل سروو باید پالس با فرکانس 50 هرتز بطور پیوسته و مداوم به سروو اعمال بشه و فقط با تغییر DutyCycle موقعیت محور رو تغییر بدبد. اگر این پالس قطع بشه یا DutyCycle بیش از حد کم یا زیاد باشه زاویه موتور در منتها الیه چپ یا راست قفل میشه.
                    همچنین دستور pulsout ظاهراً فقط یک پالس تولید میکنه و برای تولید قطار پالس باید اونو در یک حلقه قرار بدید تا به طور مداوم تولید پالس کنه. البته فکر میکنم این دستور تنها یک پالس با DutyCycle ثابت 50 درصد تولید میکنه. بنابر این برای اینکه بتونید قطار پالس با پریود 20ms و DutyCycle برابر 1ms بسازید مطابق برنامه صفحه 127 کتاب فوق باید ابتدا با دستور pulsout یک پالس با پریود 2ms تولید کنید و بعد از اون یک تاخیر 18ms قرار بدید که مجموع پریود برابر 20ms میشه. برای تولید مداوم هم اونو در یک حلقه قرار بدید.

                    دیدگاه


                      #11
                      پاسخ : کمک در مورد سروو موتور

                      سلام
                      ممنونم جناب perfect از توجهتون و معذرت میخوام از تاخیر پاسخم، یکی دو روزی سر گرم مدار بستن و ور رفتن با برنامه های کارم بودم.
                      بنده برنامه زیر رو نوشتم و باهاش بازای پریودهای مختلف زاویه خروجیهای مختلف از سروو گرفتم اما چون تجربه اولم هست تو درستی کارم شک دارم و ممنون میشم اگه راهنماییم کنید :smile:
                      start:
                      pulsout portb.0, period
                      pause 18
                      goto start
                      و همینطور برنامه بعدی رو که از هر دو تا جواب یکسان گرفتم
                      start:
                      for i = 1 to 40
                      pulsout portb.0, period
                      pause 20
                      next i
                      که تو هر دو تا دستور بازای راستگرد چرخیدن سروو به جای پریود 200، بازای منتها الیه چپ قرار گرفتنش 100 و برای وسط بودن سروو 150 قرار دادم ولی سرووی من دقیقا بر عکس عمل کرد و با 200 به چپ،با 100 هم به منتها البه راست اومد! با 145 هم وسط وایستاد.
                      سرووی من mg995 هستش و قراره از این به بعد با mg9805 کار کنیم ولی من این پالسهایی که عرض کردم رو به mg995 دادم و نمیدونم چرا اینجوری شد و اصلا ایرادی داره یا نه؟
                      در ضمن میخواستم بدونم max رنج زاویه خروجی واسه هر دو سروویی که گفتم چقدره؟ من واسه پریودهای بین 80 تا 215 با همین دستور امتحان کردم و بازای هرکدوم یه زاویه ای رو بدست آوردم که max خروجی رو بهم از -60 تا +60 داد، نمیدونم این کارم درسته یا نه و زوایای بدست اومدم آیا درستن؟
                      و در آخر باز هم اینکه واسه اینکه بخوام 7 تا سروو رو با این دستور کنترل کنم فرمت کلی برنامم باید چجوری باشه؟
                      شرمنده ام از این همه سوالم :redface: و ممنونم از دوستانی که لطفشون رو شامل حال بنده میکنن :agree:


                      اضافه شده در تاریخ :
                      سلام و وقت بخیر
                      دوستان در ادامه سوالات قبلیم جسارتا چند تا سوال دیگه هم داشتم :redface: اولیش اینکه با همون دستوراتی که قبلا خدمتتون عرض کردم چجوری میشه تغییراتی رو بهش اعمال کرد به نفع اینکه سرعت حرکت خروجی سروومون زیاد بشه؟
                      و دوم هم اینکه من تو کار کردن با 16f877a دچار این مشکل شدم که برنامه ای که واسه 16f84a نوشتم و با اون سروو چرخیده با این میکرو و همون برنامه سروو حرکت غیر طبیعی و بر خلاف برنامه رو داره،به نظر شما مشکل از چی میتونه باشه؟
                      باز هم متشکرم از لطف و توجهتون به این تایپیک :smile:

                      اضافه شده در تاریخ :
                      با سلام دوباره خدمت همه دوستان
                      مشکلم واسه زیاد کردن سرعت سروو با ایجاد یک روال تاخیر حل شد.
                      در حال حاضر مشکلم راه انداختن pic16f877a است که نمیدونم آیا تنظیمات خاصی چه نرم افزاری چه سخت افزاری واسه راه اندازی میخواد؟ آخه همون برنامه ای که واسه سروو و برای 16f84 نوشتم و جواب گرفتم واسه این یکی جواب نمیده!
                      و بعد از اون اینکه روال کلی کار واسه برنامه نویسی چند تا سروو با pic basic pro و برای میکرو pic16f877a چیه؟ باز هم بسیار ممنونم از دوستان و اساتیدی که محبت کرده پاسخ سوال ما رو میدن :smile:
                      زندگی برگ بودن در مسیر باد نیست
                      امتحان ریشه هاست
                      ریشه هم هرگز اسیر باد نیست
                      زندگی چون پیچک است
                      انتهایش میرسد پیش خدا!

                      دیدگاه


                        #12
                        پاسخ : کمک در مورد سروو موتور

                        نوشته اصلی توسط pama
                        با سلام دوباره خدمت همه دوستان
                        مشکلم واسه زیاد کردن سرعت سروو با ایجاد یک روال تاخیر حل شد.
                        در حال حاضر مشکلم راه انداختن pic16f877a است که نمیدونم آیا تنظیمات خاصی چه نرم افزاری چه سخت افزاری واسه راه اندازی میخواد؟ آخه همون برنامه ای که واسه سروو و برای 16f84 نوشتم و جواب گرفتم واسه این یکی جواب نمیده!
                        و بعد از اون اینکه روال کلی کار واسه برنامه نویسی چند تا سروو با pic basic pro و برای میکرو pic16f877a چیه؟ باز هم بسیار ممنونم از دوستان و اساتیدی که محبت کرده پاسخ سوال ما رو میدن :smile:
                        سلام.
                        دوست عزیز اگه امکان داره برنامه رو اینجا بزار تا بهتر بتونیم نظر بدیم. تفاوت بین این دو تا میکرو کم نیست.
                        در ضمن بعید میدونم با دستورات تاخیر و Pulse و کلاً نرم افزاری بتونی بیشتر از یک سروو رو کنترل کنی. اگر هم بشه باید کلی محاسبه انجام بدی تا مبادا تاخیری که برای یک خروجی پالس ایجاد کردی در Duty cycle پالس خروجی دیگه تاثیر نذاره. منظورم اینه که چون باید به طور پیوسته به هر سروو پالس برسونی ، اگه بخوای یک سروو دیگه رو هم کنترل کنی برنامه ای که برای تولید پالس دومی مینویسی در فرکانس و duty cycle پالس مربوط به سروو اول اثر میزاره.

                        دیدگاه


                          #13
                          پاسخ : کمک در مورد سروو موتور

                          از بنده هم سلام
                          و بسیار ممنون از توجهتون جناب Intersil
                          برنامه ساده زیر رو واسه حرکت کردن به سمت منتها الیه راست، وسط و بعد منتها الیه چپ سروو mg995 نوشتم:
                          a var byte
                          b var byte
                          c var byte
                          i var byte
                          a = 80
                          b = 215
                          c = 145
                          portb = %00000000
                          start:
                          for i = 1 to 40
                          pulsout portb.0, a
                          pause 20
                          next i
                          for i = 1 to 40
                          pulsout portb.0, c
                          pause 20
                          next i
                          for i = 1 to 40
                          pulsout portb.0, b
                          pause 20
                          next i
                          for i = 1 to 40
                          pulsout portb.0, c
                          pause 20
                          next i
                          goto start
                          end
                          البته واسه f84 و جواب هم داد اما نمیدونم این تفاوتهای اساسی که بین این میکرو و f877a وجود داره و شما میفرمایید چه چیزایی هستن، و بعد از اون اینکه گفته شما راجع به اینکه نمیتونم به این راحتی با یه میکرو چند تا سروو رو بچرخونم خیلی نگرانم کرد اگه میشه لطفا بیشتر توضیح بدید واسه رسیدن به این هدف چه باید کرد؟ :sad:
                          زندگی برگ بودن در مسیر باد نیست
                          امتحان ریشه هاست
                          ریشه هم هرگز اسیر باد نیست
                          زندگی چون پیچک است
                          انتهایش میرسد پیش خدا!

                          دیدگاه


                            #14
                            پاسخ : کمک در مورد سروو موتور

                            نوشته اصلی توسط pama
                            از بنده هم سلام
                            و بسیار ممنون از توجهتون جناب Intersil
                            برنامه ساده زیر رو واسه حرکت کردن به سمت منتها الیه راست، وسط و بعد منتها الیه چپ سروو mg995 نوشتم:
                            a var byte
                            b var byte
                            c var byte
                            i var byte
                            a = 80
                            b = 215
                            c = 145
                            portb = %00000000
                            start:
                            for i = 1 to 40
                            pulsout portb.0, a
                            pause 20
                            next i
                            for i = 1 to 40
                            pulsout portb.0, c
                            pause 20
                            next i
                            for i = 1 to 40
                            pulsout portb.0, b
                            pause 20
                            next i
                            for i = 1 to 40
                            pulsout portb.0, c
                            pause 20
                            next i
                            goto start
                            end
                            البته واسه f84 و جواب هم داد اما نمیدونم این تفاوتهای اساسی که بین این میکرو و f877a وجود داره و شما میفرمایید چه چیزایی هستن، و بعد از اون اینکه گفته شما راجع به اینکه نمیتونم به این راحتی با یه میکرو چند تا سروو رو بچرخونم خیلی نگرانم کرد اگه میشه لطفا بیشتر توضیح بدید واسه رسیدن به این هدف چه باید کرد؟ :sad:
                            تو برنامتون چند تا مورد وجود داره. شما پورت B رو به صورت خروجی پیکره بندی نکردید. نمیدونم چطور تو PIC16F84 کار کرده؟ ضمناً شما در زمان پروگرم کردن گزینه برنامه ریزی ولتاژ پائین (LVP) رو غیر فعال کردید یا نه؟ در غیر این صورت موقعی که مدار PIC16F877 رو بستید پایه RB3 رو به زمین وصل کردید یا نه؟
                            مورد دیگه اینکه فکر نمیکنید تاخیر 20ms در دستور pause 20 کمی زیاده؟ اگه 19 میلی ثانیه قرار بدید بهتر نیست؟
                            در مورد کنترل چند تا سروو باید بگم بعیده بتونید با دستورات تاخیر و پالس اونا رو کنترل کنید. اگه یک سروو داشته باشیم زیاد پیچیده نیست. علتش هم اینه که به هرحال شما دستوراتی رو که مینویسید به صورت سریال اجرا میشن. وقتی یک مجموعه دستور شامل تاخیر برای یک سروو انجام میشه و سپس دستورات دیگه ای برای سروو دیگه در هر صورت تاخیر ناشی از هر یک از این مجموعه دستورات با تاخیر های بعدی سری میشه و باعث میشه فرکانس 50 هرتز سروو به هم بخوره و فرکانس پائین بیاد و سروو کنترل نشه.
                            چاره کار اینه که فرکانس مربوط به هر سروو رو هر طوری که ممکنه به صورت موازی با سروو های دیگه تولید کنید. برای اینکار میتونید از میکروکنترلر هایی استفاده کنید که به تعداد سروو های مورد نیاز شما خروجی PWM داشته باشند. و یا اینکه به تعداد سروو ها از میکروهای کوچک استفاده کنید و هر کدوم از این میکروها برای یک سروو پالس تولید کنند.

                            دیدگاه


                              #15
                              پاسخ : کمک در مورد سروو موتور

                              نوشته اصلی توسط pama
                              سلام
                              خیلی متشکرم جناب perfect از پاسختون :smile:
                              اینکه avr از pic نویز پذیرتر هست دلیلش تجربه تعداد زیادی از دوستان تو کار با میکروها و گفتشون مبنی بر هنگ کردن میکروهای avr در حین انجام کار مخصوصا تو محیطهایی که امواج الکترمغناطیسی موجودند(مثل محیط کاری ما)،هستش که بعد از حدود تقریبا یک ماه تحقیق ما(بنده و بقیه اعضای مکانیکی گروه) رو به این نتیجه رسوند که از pic استفاده کنیم.
                              و بعد اینکه متاسفانه بنده هم برای اولین بار هست که با pic کار میکنم اون هم تو پروژه ای کاملا جدی، و تقریبا آشناییم با pwm و نحوه بکارگیری اون تو چرخوندن سرووها خیلی کمه و همین هم،موضوع رو خیلی واسم گنگ کرده
                              و بسیار ممنونم از لطف شما تو راهنمایی کردن بنده امیدوارم بتونم راهمو پیدا کنم.
                              مشکل دیگه ای که دارم اینه که حالا فرض کنیم سرووی ما به چپ و راست و وسط حرکت کرد ما چجوری میتونیم راویه خاص واسش تعیین کنیم مثلا بهش فرمان بدیم
                              رو 20 درجه یا مثلا 70 درجه وایستا؟
                              باز هم از لطف شما مهندس perfect و همه دوستانی که لطفشون رو شامل حال بنده میکنند بسیار ممنونم.
                              من با PIC کار نکردم ولی به واسطه شغلم خیلی زیاد دیدم که از AVR کنار الکترو موتورهای سه فازی استفاده کردند که در 400 ولت نزدیک 300 آمپر از هر فازش میکشه!(حالا خودتون توان اون رو حساب کنید!) و میکرو آخ نگفته و سالهاست که کار میکنه
                              در هر صورت بحث این نیست
                              زاویه سروو رو میتونین به وسیله دیوتی سایکل تنظیم کنید
                              که در پست سوم کامل درموردش توضیح داده شده

                              اصلاحیه
                              آقا شرمنده من صفحه دوم رو ندیده بودم این پس رو زدم
                              میخواستم پاکش کنم گفتم باشه حالا ضرری نداره! :mrgreen:

                              پروردگارا: به من زيستني عطا کن که در لحظه مرگ بر بي ثمري لحظه اي که براي زيستن گذشته است حسرت نخورم، و مردني عطا کن که بر بيهودگيش سوگوار نباشم. بگذار تا آن را خود انتخاب کنم، اما آنچنان که تو دوست ميداري

                              دیدگاه

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