اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    من قصد دارم با PIC18F26K22 یک پروژه SPWM 3فاز برای کنترل موتور انجام بدم. با اقتباس از برنامه جناب طراح که در بخش AVR گذاشتن یک کدی نوشتم که در مرحله اول جواب داد. اما وقتی میخوام فرکانس موج سینوسی رو با تایمر تعیین کنم به مشکل خوردم.
    طبق محاسبات من برای فرکانس 50 هرتز :
    فرکانس کریستال 16مگ. سیکل ماشین= us 0.25
    کد:
    65535-312 = 65223
    312 x 0.25us = 78us
    78us x 256 = 19.968 ms
    که تقریباً برابر 20 میلی ثانیه میشه و درنتیجه فرکانس سینوسی باید 50 هرتز باشه ولی در عمل نتیجه 44 هرتز هست که به عبارتی زمان سرریز تایمر بجای 78 میکروثانیه 88 میکروثانیه هست.
    حالا سوالم اینه که چرا اینطوری میشه و باید چکار کرد؟
    فایلهای پروژه

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

    شما میخاین چطوری موج 50 هرتزی ایجاد کنید که سینوسی باشه؟ این زمانی که شما دنبالشی فکر نکنم موج سینوسی تولید کنی!

    دیدگاه


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

      دوست عزیز اروین در این پروژه از SPWM برای تولید سینوسی استفاده شده.و اگر فایل ضمیمه شده رو باز کنید خواهید دید که سینوسی تولید میشه فقط فعلا مشکلم همونه که در پست قبل گفتم.
      ضمنا دوستان ورژن ccs هم 4.130 هست.
      با تشکر

      دیدگاه


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

        با سلام

        من با کامپایلر شما کار نکردم همچنین تا به حال از میکرو PIC18F26K22 استفاده نکردم , اما آیا شما از تنظیم صحیح فیوز بیت های سیستم کلاک مطمئن هستید ؟

        بیشتر میکرو های PIC سیستم کلاک متفاوت و پیچیده ای دارن , آیا شما از اسیلاتور خارجی استفاده میکنید ؟

        برخی از میکرو ها فیوز بیتی دارن که در صورت فعال بودن ممکن است میکرو در شرایط خاصی به صورت خودکار منبع کلاک خود را از کلاک خارجی به کلاک داخلی تغییر دهد , این فیوز بیت ها معمولا به صورت پیش فرض فعال هستن !...

        در کل به این نکته هم توجه کنید که در پیکر بندی صحیح سیستم کلاک فقط فیوز بیت ها نقش ندارن و شما باید به برخی از رجیستر های این قسمت از میکرو نیز دقت کنید .
        نا اميدي يه دروغ بزرگه که آدما به خودشون ميگن
        تلاش يه حقيقت بزرگه که با صبر به ثمر ميرسه

        دیدگاه


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

          نوشته اصلی توسط B2

          که تقریباً برابر 20 میلی ثانیه میشه و درنتیجه فرکانس سینوسی باید 50 هرتز باشه ولی در عمل نتیجه 44 هرتز هست که به عبارتی زمان سرریز تایمر بجای 78 میکروثانیه 88 میکروثانیه هست.
          حالا سوالم اینه که چرا اینطوری میشه و باید چکار کرد؟
          سلام دوست عزیز. شما خودتون تقریبا جوابتونو دادین. اینطور که بیان کردید ظاهرا زمان سریز 78US نیست و بیشتره که بخشی از این اختلاف با توجه به اینکه تایمر به صورت اتوماتیک بارگذاری نمیشه طبیعی هست. برای بهتر شدن زمان دو راه دارید : یکی اینکه عددی که به صورت دستی در تایمر قرار میدید رو بیشتر کنید تا زودتر سرریز بشه و روش بعدی که مفید تر هست اینه که از ماژول CCP2 در مد Compare استفاده کنید. در این مد یک مقدار ثابت رو در واحد CCP2 قرار میدید و تایمر 1 یا 3 (بسته به اینکه کدام تایمر رو انتخاب کنید) پس از رسیدن به این مقدار ریست شده و همزمان این عمل یک وقفه تولید شده و تایمر دوباره از 0 شروع به شمارش میکنه.

          دیدگاه


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

            نوشته اصلی توسط Perfect
            سلام دوست عزیز. شما خودتون تقریبا جوابتونو دادین. اینطور که بیان کردید ظاهرا زمان سریز 78US نیست و بیشتره که بخشی از این اختلاف با توجه به اینکه تایمر به صورت اتوماتیک بارگذاری نمیشه طبیعی هست. برای بهتر شدن زمان دو راه دارید : یکی اینکه عددی که به صورت دستی در تایمر قرار میدید رو بیشتر کنید تا زودتر سرریز بشه و روش بعدی که مفید تر هست اینه که از ماژول CCP2 در مد Compare استفاده کنید. در این مد یک مقدار ثابت رو در واحد CCP2 قرار میدید و تایمر 1 یا 3 (بسته به اینکه کدام تایمر رو انتخاب کنید) پس از رسیدن به این مقدار ریست شده و همزمان این عمل یک وقفه تولید شده و تایمر دوباره از 0 شروع به شمارش میکنه.
            خیلی ممنون جناب Perfect
            من اون قسمت رو مطالعه میکنم و سعی میکنم با CCS پیاده کنم. به سوال برخوردم بازم مزاحم میشم.

            دیدگاه

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