اطلاعیه

Collapse
No announcement yet.

تعیین سرعت موتور

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

    تعیین سرعت موتور

    سلام دوستای عزیزم
    من یک موتور انکودر دار دارم که تعدلد پالسش تو هر دور 360 هست
    حالا میخوام تو بیسکام یک برنامه بنویسم که سرعت موتور رو بهش بدی و تو بارهای مختلف سرعت رو ثابت نگه داره؟ کسی برنامه ای برای این کار نوشته؟ یا برای این که سرعت متور رو تعیین کنم چه برنامه ای باید بنویسم؟ باید با یک تایمر تعداد پالس ها رو بشمارم با یک تایمر هم 1 ثانیه رو ایجاد کنم؟

    #2
    پاسخ : تعیین سرعت موتور

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

    سیم های قرمز و آبی مال موتور . دو تا سیم زرد مال انکدر باید باشه. ولی نمیدونم چجوری باید استفاده کنم. لطفا راهنمایی کنید

    دیدگاه


      #3
      پاسخ : تعیین سرعت موتور

      خروجی انکودر موتورت رو بده به پایه وقفه خارجی، با هر بار وقفه به متغیرت یکی اضافه کن!
      حالا هر چند ثانیه 1بار ،مثلاً 5ثانیه یک بار از سرریزی تایمر استفاده کن و وقتی تایمر ظرف 5ثانیه سرریز شد یه دور بر 5ثانیه برای خودت بدست بیار! حالا می تونی تو متن برنامه از این دور بر مثلاً 5ثانیه استفاده کنی و PWMات رو با اون تنظیم کنی!

      «پشتکار» «پشتکار» «پشتکار»

      دیدگاه


        #4
        پاسخ : تعیین سرعت موتور

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

        دیدگاه


          #5
          پاسخ : تعیین سرعت موتور

          ببخشید من دسترسیم به اینترنت کمه، الان نمیتونم، فردا برات میذارم برنامه رو...
          ولی واسه خالی نبودن عریضه:


          وقفه ها رو فعال کن، مثلاً اگه دو موتور داری می تونی از اینتراپت خارجی 0 و 1 استفاده کنی به این صورت:

          کد:
          Enable Interrupts
          Enable Ovf0
          Enable Int0
          Enable Int1
          
          On Ovf0 Cal
          On Int0 End1
          On Int1 Enc1
          خب همونطور که میبینی از وقفه سرریزی تایمر استفاده شده و وقفه های خارجی 0 و 1، حالا باس زیربرنامه هایی که موقع وقفه اجرا میشن رو بنویسیم:

          از وقفه سرریزی تایمر برای محاسبه زمان استفاده می کنیم تا دور بر زمان مورد نظر رو بدست بیارم، من مثلاً 5ثانیه رو در نظر گرفتم:

          کد:
          Enc1:
            Incr V1
          Return
          
          Enc2:
            Incr V2
          Return
          
          Cal:
            Incr T
            If T > 20 Then
             Rpm1 = V1 / 5
             Rpm2 = V2 / 5
             V1 = 0
             V2 = 0
             T = 0
            End If
          
          Return
          خب توی زیر برنامه های وقفه های خارجی یه متغیر یکی اضافه میشه، بعدهم وقتی بعد از 5 ثانیه تایمر سرریز شد محاسبه می کنه که چند دور در 5ثانیه زده شده و در متغیرهای rpm1 و rpm2 ذخیره می کنه!
          حالا میتونی ازش استفاده کنی!!!

          موفق باشی


          «پشتکار» «پشتکار» «پشتکار»

          دیدگاه


            #6
            پاسخ : تعیین سرعت موتور

            مجدداً سلام...
            مشکل حل شد ان شاءالله؟
            البته من فقط یه ایده دادم به شما و مسلماً شما خودت اگه راهی بهتر به ذهنتون میرسه خوشحال میشم با بنده و دیگر دوستان هم به اشتراک بذارین!
            این روشی بود که فعلاً من ازش جواب گرفتم...
            البته مسلماً دور موتور و سرعت انکودر خروجی که میده تأثیر داره ولی اگر به اینتراپت خارجی بدی به راحتی با روشی که گفتم قابل حله!
            من خودم چون فقط دوتا اینتراپت خارجی بیکار داشتم و سه موتور مجبور شدم دوتاشو باهم OR کنم و بدم به یه اینتراپت...

            «پشتکار» «پشتکار» «پشتکار»

            دیدگاه

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