اطلاعیه

Collapse
No announcement yet.

تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

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

    #61
    پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

    ممنون از جوابتون اشتباهمو متوجه شدم :wow:
    دِد تایمی که IR2130 ایجاد میکنه 2500 نانو ثانیه هست که در مقابل 10 نانوی گیت نات و 45 نانوی اپتو ناچیزه
    فکر میکنم قبلا مداری معرفی کردید که برای ایجاد زمان مرده ی قابل تنظیم بود اگه درست متوجه شده باشم
    این جوری باید باشه :
    http://alinili68.persiangig.com/image/IMAG1237.jpg
    با تغییر مقاومت میشه زمان های تاخیر را به دلخواه با توجه به ثابت زمانی t=R.C و آستانه ی سطح بالا و پایین در گیت اشمیت تریگر به طور دقیق محاسبه کرد.
    حال سوالم اینجاست که حداقل این دِد تایم باید چقدر باشد ؟ و چگونه باید محاسبه شود ؟ و برای چیست ؟
    در برگه ی مشخصات ماسفت 20NM60FD که برسی کردم ازش این رو تونستم بفهمم که بعد از آمدن فرمان وصل به گیت 37 نانو ثانیه طول میکشد تا خروجی ماسفت وصل شود و برای خاموش کردن ماسفت این زمان 30 نانو ثانیه است.اگر دِد تایم هم در نظر نگیریم اگر در یک بازو ماسفت بالایی فرمان قطع بگیرد و همزمان پایینی فرمان وصل آنگاه بالایی 30 نانوثانیه طول میکشد تا خاموش شود و پایینی 37 نانو ثانیه طول میکشد تا روشن شود لذا 7 نانو ثانیه هم دِد تایم ذاتی وجود دارد ,چه لزومی دارد که دِد تایم را به صورت خارجی اعمال کنیم ؟ ممنون میشم راهنمایی کنید. :redface:
    http://alinili68.persiangig.com/image/delay.png
    خودم سعی میکنم بیشتر مطالعه کنم اگه متوجه شدم به اشتراک میذارم.


    ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

    دیدگاه


      #62
      پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

      :nice:
      سلام به همگی
      من قبلا اینورتر تمام پل با IR2110 ساخته بودم البته صد هزار تومن قطعه سوزوندم تا جواب گرفتم :
      http://alinili68.persiangig.com/image/IMAG1101.jpg
      حالا تولید موج سینوسی سه فاز 50 هرتز ثابت رو به زبان بیسیک جواب گرفتم
      این هم خروجی با لاجیک آنالایزر :
      http://alinili68.persiangig.com/image/3Q_25KHz_50Hz_HalfBridge.png
      این هم برنامش خدمت دوستان
      نظری در مورد برنامه داشتید بفرمایید:
      http://alinili68.persiangig.com/document/3Q_SPWM_25KHz_HalfBridge.bas
      ولی هنوز به باری وصلش نکرده ام !
      و هنوز نتونستم که روش v/f ثابت رو پیاده سازی کنم در الگوریتمش کمی ابهام دارم.
      ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

      دیدگاه


        #63
        پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

        نوشته اصلی توسط alinili68
        حال سوالم اینجاست که حداقل این دِد تایم باید چقدر باشد ؟
        حداقل Dead time از حدود 600 نانوثانیه در نظر گرفته می شود که اگر لینک مناسبی در این مورد دیدم برای شما قرار خواهم داد.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #64
          پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

          با سلام خدمت آقای مهندس کی نژاد و تشکر بابت زحمات و وقتی که میگذارید
          چند تا سوال و نکته داشتم :
          من آخرین ورژن برنامه ی شما رو با صرف وقت بسیار برسی کردم چندتا ابهام هست که اگه راهنمایی بفرمایید بسیار ممنون میشم:

          1-جدول لوکاپِ Timer_value که برای ایجاد فرکانس مرجع مختلف است باید از 0.5 تا 100 هرتز با پله های 0.1 باشد که ظاهرا در این برنامه فقط تا
          داده ی 196 ام یعنی فرکانس 19.9 درست است و بعد از آن داده ها اشتباه است ,البته شاید من اشتباه محاسبه میکنم یا اینکه در جریان کپی
          اشتباه تایپی شده.

          2-آیا این حرف درست است که به ازای فرکانس خروجی 61.27451 هرتز , از هر داده ی جدول لوکاپ سینوس فقط یک بار استفاده میشود و موج
          ایجاد شده کمترین هارمونیک خروجی را دارد ... و به ازای فرکانس های بالاتر از این مقدار تعداد 256 نمونه زیاد است و مجبوریم از بعضی از آنها
          استفاده کنیم ..؟! ... و به ازای فرکانس های پایین تر از این مقدار از هر دادهی جدول حاوی مقادیر سینوس بیش از یک بار اتفاده میشود ... درست
          متوجه شده ام ؟؟
          اگر مطالب گفته شده درست باشد آیا بهتر نیست که تعداد نمونه ها برای فرکانس 50.000 هرتز بدست آیند ؟؟! که دیگر 256 نمونه نخواهد بود.

          3-در جدول لوکاپ سینوس که داده های سینوسی در آن گنجانده شده است فکر میکنم که در طی محاسبه , مقادیر به سمت پایین رند (floor)
          شده اند ,و در واقع از آنها براکت گرفته شده است که اگر بجای اینکار بطور صحیح رند شوند (از نیم به بالا را به بالا رند کنیم و از نیم به پایین را به
          پایین) موج سینوسی حاصله دارای شکل بهتر و هارمونیک کمتر خواهد بود.

          4-مجددا در رابطه با جدول سینوسی, حقیر در مقاله ای خواندم که مقدار ma یا همان اندیس مدولاسیون نباید 1 باشد به عبارتی دیگر THD خروجی
          تابعی است از ma که برای ma=0.6=Ar/Ac مقدار THD خروجی بهینه اعلام شده بود. درست است که در اینجا ما دامنه ی خروجی را ابتدا کم
          میکنیم (v/f) ولی طبق این گفته بهتر است که برای فرکانس مرجع 50 مقدار دامنه ماکسیم مقدار خود را نداشته باشد!:
          MICROCONTROLLER IMPLEMENTATION OF SINGLE PHASE INVERTER SWITCHING STRATEGIES
          CIM'07

          با تشکر



          ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

          دیدگاه


            #65
            پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

            1 و 2- در این برنامه با افزایش فرکانس، تعداد نقاط خوانده شده از جدول کاهش می یابد و متناسب با این تغییر، مقدار تایمر هم اصلاح می شود. بنابراین برداشت شما درست نیست و اعداد جدول از این نظر صحیح هستند. در این رابطه به نظر می رسد لازم است یک بررسی مجدد در مورد نحوه عملکرد کد برای تولید سینوسی انجام دهید. در مورد فرکانس 61.27451 و سایر موارد هم چندان متوجه سوال شما نشدم و اگر لازم است توضیحات بیشتری ارائه کنید.

            3- تا جایی که به خاطر دارم، مقادیر جدول نسبت به محور تقارن 127.5 بصورت کاملا متقارن محاسبه شده است و اگر این تقارن وجود نداشت، باید در آن تصحیح انجام می شد.

            4- مشکل اصلی در روش SPWM برای ساخت اینورتر این است که حتی اگر دامنه سینوسی با مثلثی برابر هم که باشند، دامنه خروجی حدود 13 درصد افت دارد. بنابراین مهم تر از مسئله THD، مسئله دامنه است که برای رفع آن، حتی هارمونیک سوم هم به موج اضافه می شود تا دامنه خروجی افزایش یابد.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #66
              پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و &

              متشکرم,ببینید در رابطه با سوال 1 و 2 این ها رو درست متوجه شده ام : :-B
              1-ما اینجا دو تایمر داریم :

              از تایمر یک با فرکانس بالا و برای تولید موج پی دبلیو ام حامل در پین های خروجی استفاده شده که دیوتی سایکل آن از جدول سینوسی خوانده میشود و فرکانس این تایمر با توجه به هشت بیتی بودن آن و مقسم یک برای آن مقدار ثابت 15.6کیلو هرتز است و دیوتی سایکل آن قرار است عوض شود.
              از تایمر سه نیز در مود تایمر 16 بیتی استفاده شده, که میزان سرعت خواندن از جدول سینوسی را بر عهده دارد
              این سرعت را طبق فرمول داده شده در ددیتا شیت میتوان محاسبه نمود که با تقسیم این سرعت بر 256 فرکانس موج مرجع در خروجی معلوم میشود.

              به این ترتیب میشه با تغییر مقدار TOP در تایمر سه (که همون OCR3A هست) فرکانس خروجی رو تغییر داد که مقادیر مختلف برای این منظور در جدول لوکاپ قرار داده شده است
              بحث در مورد این جدول هست که باید تعداد 996 تا داده داشته باشه که فرکانس 0.5 تا 100 هرتز را در خروجی با پله های 0.1 پوشش بده
              من داده های این جدول را که طبق فرمول ها و مطالب بالا چک میکنم تا داده ی 195 ام درست است و همانی را که در جدول است بدست می آورم
              (که نشان میدهد فرمول هادرست است) ولی از آنجا به بعد نمی فهمم چه اتفاقی می افتد !
              و چرا از فرکانس 19.9 به بعد روند طور دیگری میشود! (ظاهرا دیگران با این برنامه موتور را روشن کرده اند !پس باید درست باشد ! ولی این جدول چگونه درست شده و چرا اینگونه است ؟من فایل اکسلی را برای شما فرستاده ام که نشان دهنده ی این امر است ,خیلی دوست دارم این قضیه رو بفهمم! از شما سپاسگذارم که وقت میگذارید)
              یه راهنمایی کوچک اگه بکنید ممنون میشم :sad:

              2-میخواهیم متوجه بشوم کجاست که باید از آن فرکانس به بالا تعداد 2 یا 4 یا 8 یا ... تایی از جدول خواند ؟؟؟؟ :
              اطلاعاتی که من براساس اون نتیجه گرفتم از این قراره :
              فرکانس موج حامل در اینجا مقدار ثابتی دارد و برابر است با fc=15.686kHz , tc=0.06375ms
              فرکانس موج مرجع را نیز fr و دوره ی تناوب آن را tr فرض میکنیم
              حال تعداد نمونه های لازم برای تولید یک سیکل کامل از موج سینوسی از فرمول روبرو بدست می آید n=fc/fr
              که اگر تعداد نمونه ها را 256 عدد فیکس بگیریم خواهیم داشت: fr=61.27451Hz , tr=16.312ms

              یعنی اگر فرکانس خروجی 61.27 هرتز (دوره تناوب 16.312 میلی ثانیه) باشد با توجه به فرکانس و دوره تناوب موج حامل دقیقا به 256 نمونه احتیاج داریم زیرا : 16.312ms/0.06375ms=256

              حال اگر فرکانس موج سینوسی خروجی یا همان مرجع از این مقدار(61.27هرتز) بیشتر باشد تعداد 256 نمونه برای آن زیاد است و باید فقط از تعدادی از آن استفاده کرد نه همه آن ... این مقدار حدی طبق محاسبات من داده ی شماره ی 607 ام در جدول مقادیر تایمر سه میشه ... ولی ظاهرا در برنامه شما این داده را داده ی 195 ام فرض کرده اید ... که من منطق آن را متوجه نمی شود اگه توضیحی در این خصوص بدهید بسیار ممنون میشم.

              دقیقا منظورم این خطوط از برنامه است ,عملکرد این چگونه است ؟

              کد:
               if (speed>794)index+=16;
               else if(speed>594)index+=8;
               else if(speed>394)index+=4;
               else if(speed>194)index+=2;
               else ++index;
              زیرا اگه استددلال من صحیح باشه فقط کافیه که ایندکس زوج افزایش یابد یعنی 128 نمونه خواهیم داشت و بدین ترتیب تا فرکانس 122.5 هرتز مشکلی پیش نخواهد آمد (ولی در این جا شما 4 تایی و 8 و حتی 16 تایی هم خونده اید از جدول!)


              {فرمول تصحیح شد}
              ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

              دیدگاه


                #67
                پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                3-در مورد جدول سینوسی نوع استخراج اعداد منظور من بود که تفاوت بسیار جزیی هست و اهمیتی نداره
                توی فایل زیر مقایسه بین دو روش اومده
                کد مطلب هم جهت مقایسه ی گرافیکی بین دو شکل حاصله از دو روش اومده که تشخیص اینکه کدوم بهتره کمی سخته و مستلزم محاسبه ی
                THD و ... هست ...
                http://alinili68.persiangig.com/document/Fout%20to%20%20Timer3.rar/download
                4-ممنون از پاسختون منظور شما رو متوجه شدم ,ظاهرا ساده ترین راه برای افزایش ولتاژ افزایش ولتاژ لینک دی سی میتونه باشه.

                {لینک اصلاح شد}
                ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

                دیدگاه


                  #68
                  پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                  نوشته اصلی توسط alinili68
                  نکته اساسی برای پاسخگویی به اشکالات شما این است که فرمول بالا فقط برای 196 داده اول برقرار است و از فرکانس 20.0 هرتز به بعد، index جدول بصورت دوتایی افزایش پیدا می کند. بنابراین در مخرج بجای 256 که تعداد نقاط سینوسی است، باید 128 قرار داده شود و در سایر مرزها هم اعداد 64 و 32 و 16 در مخرج قرار می گیرند. ضمنا شرط هایی که نوشته اید مربوط به اولین نسخه نرم افزار است و در نسخه های بالاتر مثلا بجای 194 مقدار 195 قرار گرفته است. با این نگاه احتمالا ابهامات شما برای تفسیر مقادیر جدول برطرف خواهد شد.
                  در مورد فایلی هم که قرار داده اید ظاهرا تنها یک سری اعداد با محاسبه بایت های پائین و بالا در آن وجود دارد و امکان مقایسه میسر نیست. اما به هر روشی هم که اعداد را محاسبه می کنید باید حول محور 127.5 متقارن باشند.
                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه


                    #69
                    پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                    متشکرم بخش اول رو متوجه شدم و سوال دومم جدی تر شد.
                    سوال و اشکال من بطور دقیق اینه که مبنای انتخاب فرکانس 20 هرتز یا همان داده ی 195 ام چی هست ؟
                    من میگویم که این فرکانس تا 61 هرتز هم میتونه باشه یعنی داده ی 607 ام و تا این فرکانس میتوان بدرستی از تمام 256 داده ی جدول استفاده کرد و فرکانس 20 هرتز برای تقسیم کردن جدول سینوسی بسیار زود است!

                    مبنای محاسبه فرکانس 61 هرتز که خدمتتون میگم همون طور که گفتم به این شرحه:

                    میخواهیم متوجه بشویم کجاست که باید از آن فرکانس به بالا تعداد 2 یا 4 یا 8 یا ... تایی از جدول خواند ؟؟؟؟
                    فرکانس موج حامل در اینجا مقدار ثابتی دارد و برابر است با fc=15.686kHz , tc=0.06375ms
                    فرکانس موج مرجع را نیز fr و دوره ی تناوب آن را tr فرض میکنیم
                    حال تعداد نمونه های لازم برای تولید یک سیکل کامل از موج سینوسی از فرمول روبرو بدست می آید n=fc/fr
                    که اگر تعداد نمونه ها را 256 عدد فیکس بگیریم خواهیم داشت(که ظاهرا برای راحتی کار این عدد انتخاب شده(؟).)
                    fr=fc/n
                    fr=fc/256
                    fr=61.27451Hz , tr=16.312ms
                    یعنی اگر فرکانس خروجی 61.27 هرتز باشد با توجه به فرکانس و دوره تناوب موج حامل دقیقا به 256 نمونه احتیاج داریم زیرا : 16.312ms/0.06375ms=256
                    حال اگر فرکانس موج سینوسی خروجی یا همان مرجع از این مقدار(61.27هرتز) بیشتر باشد تعداد 256 نمونه برای آن زیاد است و باید فقط از تعدادی از آن استفاده کرد نه همه آن ... این مقدار حدی طبق فرمول بالا داده ی شماره ی 607 ام در جدول مقادیر تایمر سه میشه ... ولی ظاهرا در برنامه شما این داده را داده ی 195 ام یا 196 ام فرض کرده اید(و بعد از آن 395 ام و 595 ام ...) که نمیفهمم بر چه اساس :question:



                    با این استدلال فقط کافیه که ایندکس زوج افزایش یابد یعنی 128 نمونه خواهیم داشت و بدین ترتیب تا فرکانس 122.5 هرتز مشکلی پیش نخواهد آمد (ولی در این جا شما 4 تایی و 8 و حتی 16 تایی هم خونده اید از جدول!)
                    [hr]
                    در مورد جدول سینوسی فایلی که قرار داده بودم اشتباه بود میبخشید. اصلاحش کردم و لینک فایل درست رو قرار دادم. کد رو در مطلب میتونید کپی کنید و نتایج رو مشاهد کنید, با عرض پوزش مجدد. :read:

                    ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

                    دیدگاه


                      #70
                      پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                      این موضوع که برای درک عملکرد و جزئیات نرم افزار با علاقه مندی وقت می گذارید و تا این حد دقیق می شوید برای من امری ارزشمند است و به همین دلیل هم برای پاسخگویی مفصل به شما وقت می گذارم. برای توجیه شما به مواردی اشاره می کنم:

                      1- مطلب اول اینکه اصولا ربطی بین فرکانس حامل (موج مثلثی) و فرکانس سینوسی وجود ندارد و تنها لازم است نسبت آنها یک عدد بزرگ باشد که در این پروژه حداقل حدود 156 برابر و حداکثر حدود 31000 برابر است. بنابراین فرمول n=fc/fr که نوشته اید، به هیچ وجه در این مورد برقرار نیست. (مقدار n.fr برابر با فرکانس حامل نیست. بلکه تعداد وقفه های لازم در یک ثانیه برای ایجاد سینوسی با فرکانس fr و n نمونه است).

                      2- هدف از کاهش تعداد نقاط سینوسی با افزایش فرکانس دو مسئله است. یکی امکان تحقق پله های 0.1 هرتز و دیگری کاهش بار پردازشی cpu. به عنوان مثال اگر برای فرکانس های 99.9 و 100 هرتز مقادیر OCR3 + 1 را حساب کنید، ملاحظه خواهید کرد که هیچ یک از این دو فرکانس قابلیت تولید با جدول 256 تایی را نخواهند داشت. چرا که اگر این عدد را 313 در نظر بگیریم، فرکانس 99.84 و اگر 312 در نظر بگیریم فرکانس 100.16 بدست خواهد آمد. اما با کاهش تعداد نقاط جدول امکان بالا بردن پله تغییرات فرکانس هم بیشتر می شود. ضمنا توجه کنید که در متن برنامه، اعداد جدول یک واحد کاهش می یابند و بعد در رجیستر ریخته می شوند.
                      اوژن: به معنای افکننده و شکست دهنده است
                      دانایی، توانایی است-Knowledge is POWER
                      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                      دیدگاه


                        #71
                        پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                        از این که اهمیّت قایل میشوید و پاسخ میدهید صمیمانه سپاسگزارم . :smile:

                        این که میفرمایید نسبت فرکانس حامل به مرجع باید خیلی بیشتر از یک باشد درست ,ولی من این فرمول رو برای یک شرایط مرزی بکار بردم .
                        با ذکر این دو هدفی که فرمودید خیلی مساله برام روشن تر شد :agree:
                        من هدف از این کار رو این میدونستم که اصولا از یک فرکانسی به بالا تر اصلا شکل موج خروجی سینوسی نخواهد شد بلکه قسمتهای ناقصی از یک سینوس کنار هم قرار گرفته و در خروجی ظاهر میشوند که با راهنمایی که شما کردید متوجه شدم دلایل دیگری نیز بعد از آن وجود دارد مثلا توسط نرم افزار تمامی داده ها را با فرض جدول 256 تایی تولید کردم و دوباره فرکانس رو بدست آووردم که توش معلوم بود که پله های 0.1 به صورت متوالی بدست نمی آید و در آن بعضی فرکانس ها تولید نمیشود و بجای آن تکرار مشاهده میشود ,البته تا فرکانس 58.8 یعنی داده ی 583 ام با مقدار تایمر 530 (که من فکر میکردم این فرکانس 61هرتز و داده ی 607 ام است :question:!!) ,با جدول 256 تایی مشکلی پیش نمی امد و مشکل از آنجا به بعد شروع میشد ,که میفرمایید دلیل این که جدول بر این اساس طراحی نشده و خیلی قبل تر از آن یعنی حدود فرکانس 20هرتز جدول تقسیم شده,نیز این است که با آن وضع بار پردازشی سی پی یو زیاد میشود که این بخش آخر کمی برام ابهام داره ,یعنی وقوع کامپیر مچ و ایجاد وقفه ی تایمر و تولید پی دبلیو ام که توسط واحد های پیرامونی انجام میشود, اینقدر بار پردازشی رو زیاد میکنه که باید تمهیدی برایش اندیشیده بشه ؟ ... مگر این که تعداد خواندن از جدول منظور باشد که آن هم مشکلزا بنظر نمی رسد (فرکانس سی پی یو 8MHz است و تایمر تنها 15KHz !) ... از این گذشته این کار این عیب رو هم داره که شکل موج سینوسی حاصله از دقت بسیار کمتری بر خوردار خواهد بود مخصوصا در فرکانس های بالا تر از 80 هرتز فقط از 16 داده ی جدول سینوسیمان برای تو لید شکل موج خروجی استفاده میکنیم !!!
                        ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

                        دیدگاه


                          #72
                          پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                          در مورد بار پردازشی cpu و کم کردن نقاط در فرکانس های بالاتر، اگر فرض کنیم که به عنوان مثال از همان جدول 256 تایی برای تولید فرکانس 100 هرتز استفاده شود، با فرض 312 برای 1+OCR3 عملا cpu برای پاسخگویی به هر وقفه فقط 312 سیکل زمان دارد که اگر در بین این زمان لازم باشد cpu به کارهای دیگری شامل سرویس دادن به سایر وقفه ها و اجرای حلقه اصلی بپردازد، ممکن است برای اجرای کلی تمام کدها زمان کافی در اختیار cpu نباشد. البته ممکن است در یک شکل ساده از نرم افزار مسئله ای بوجود نیاید. اما با توسعه آن و اضافه کردن امکانات بیشتر این مسئله خود را نشان خواهد داد. بطور کلی با فرض اینکه بنا باشد نسخه های بعدی نرم افزار توسعه پیدا کند، توجه به میزان بارپردازشی cpu اهمیت ویژه ای برای امکان توسعه و اضافه کردن گزینه های بیشتر در نرم افزار خواهد داشت.
                          اوژن: به معنای افکننده و شکست دهنده است
                          دانایی، توانایی است-Knowledge is POWER
                          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                          دیدگاه


                            #73
                            پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                            پس اگر درست فهمیده باشم مبنای اولیه برای محاسبه ی مقادیر Timer3 همین تعداد وقفه ها در شرایطی که بار پردازشی سی پی یو رو اشغال نشه در نظر گرفته شده ...
                            در همین موضوع وقفه و CPU در مورد واحد ADC هم میشه گفت اگر هر تبدیل 13 کلاکِ ADC لازم داشته باشه و کلاک واحد ADC نیز 125 کیلو هرتز باشه هر 832 کلاکِ cpu یک وقفه ی ADC ایجاد میشود که که تا حدودی میتواند بار پردازشی را زیاد کند در مواردی,با توجه به کاربردی نیز که ما از ADC در این پروژه داریم هر چه سرعت خواندن ADC بالاتر باشد امکان خواندن نویز و تغییرات عدد خوانده شده بالاتر میرود و همچنین باعث اشغال بیشتر سی پی یو میشود,آیا بهتر نیست از مقسم 128 برای کلاکِ واحد ADC که کلاک 62.5 کیلو هرتز (که بالای 50 کیلو هربز است و در محدوده ی مجاز) را ایجاد میکند وهر 1664 کلاک باعث وقفه میشود استفاده شود ؟توجیه استفاده از مقسم 64 در اینجا چه میتواند باشد؟
                            (تشکر بابت پاسخ های دقیق و خوب شما)

                            ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

                            دیدگاه


                              #74
                              پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                              با عرض پوزش چند نکته در مورد برنامه به نظرم میرسه که البته بعضی هاش جزیی هست:

                              1-در زیر روال TIM3_COMPA ابتدا به متغیر Index اضافه میشود و بعد, از آن جهت مقداردهی به رجیستر های OCR1x استفاده میشود که اینجوری داده ی مربوط به index=0 از دست میرود ;که برای تصحیح آن باید روند اضافه کردن به متغیر Index بعد از مقدار دهی به رجیستر های OCR1x انتقال یابد.

                              2-همه ی اعداد جدول Timer_Value[] را میتوان منهای یک نمود و جدول را تصحیح نمود که اینجوری دیگه در برداشتن عدد از این جدول لازم به کم کردن یک از آن نیست و 996 عمل تفریق صرفه جویی خواهد شد.

                              3-مقدار دهی اولیه به رجیستر OCR3A برای یک فرکانس معلوم در ابتدای برنامه میتواند گنجانده شود زیرا داشتن مقدار صفر برای این رجیستر مطلوب نیست (اگر چه مقدار ندادن اولیه به این رجیستر در این برنامه مشکلی ایجاد نمی کند).

                              ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

                              دیدگاه


                                #75
                                پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                                نوشته اصلی توسط alinili68
                                در همین موضوع وقفه و CPU در مورد واحد ADC هم میشه گفت اگر هر تبدیل 13 کلاکِ ADC لازم داشته باشه و کلاک واحد ADC نیز 125 کیلو هرتز باشه هر 832 کلاکِ cpu یک وقفه ی ADC ایجاد میشود که که تا حدودی میتواند بار پردازشی را زیاد کند در مواردی,با توجه به کاربردی نیز که ما از ADC در این پروژه داریم هر چه سرعت خواندن ADC بالاتر باشد امکان خواندن نویز و تغییرات عدد خوانده شده بالاتر میرود و همچنین باعث اشغال بیشتر سی پی یو میشود,آیا بهتر نیست از مقسم 128 برای کلاکِ واحد ADC که کلاک 62.5 کیلو هرتز (که بالای 50 کیلو هربز است و در محدوده ی مجاز) را ایجاد میکند وهر 1664 کلاک باعث وقفه میشود استفاده شود؟ توجیه استفاده از مقسم 64 در اینجا چه میتواند باشد؟
                                در این کد 3 ورودی مختلف آنالوگ برای تشخیص فرکانس و شتاب مثبت و منفی، هر یک به تعداد 64 نمونه اندازه گیری می شوند. بنابراین هر دوره اندازه گیری نیاز به 192 وقفه دارد که اگر حساب کنید، مجموعا حدود 20 میلی ثانیه زمان نیاز دارد. بنابراین برای اینکه در تغییرات سریع پتانسیومتر تنظیم فرکانس، تغییر سرعت موتور بخوبی انجام شود این کلاک در نظر گرفته شده است. هر چند که باید امتحان شود که با کاهش کلاک ADC تا چه میزان تاخیر ناشی از محاسبات، خود را در عمل نشان خواهد داد.


                                نوشته اصلی توسط alinili68
                                1-در زیر روال TIM3_COMPA ابتدا به متغیر Index اضافه میشود و بعد, از آن جهت مقداردهی به رجیستر های OCR1x استفاده میشود که اینجوری داده ی مربوط به Index=0(sine[0]) از دست میرود ;که برای تصحیح آن باید روند اضافه کردن به متغیر Index بعد از مقدار دهی به رجیستر های OCR1x انتقال یابد.

                                2-همه ی اعداد جدول Timer_Value[] را میتوان منهای یک نمود و جدول را تصحیح نمود که اینجوری دیگه در برداشتن عدد از این جدول لازم به کم کردن یک از آن نیست و 995 عمل تفریق صرفه جویی خواهد شد.

                                3-مقدار دهی اولیه به رجیستر OCR3A برای یک فرکانس معلوم در ابتدای برنامه میتواند گنجانده شود زیرا داشتن مقدار صفر برای این رجیستر مطلوب نیست (اگر چه مقدار ندادن اولیه به این رجیستر در این برنامه مشکلی ایجاد نمی کند).
                                1- مقدار صفر از دست نمی رود. بلکه در بار اول، محاسبات با مقداری غیر از صفر انجام می شود و در بارهای بعدی مجددا به مقدار 0 بازگشت می شود. البته جابجایی مورد پیشنهاد شما را هم می توان انجام داد، اما منظور از توضیح داده شده این بود که روند اشتباهی در جریان اجرای نرم افزار اتفاق نمی افتد. (اگر سینوسی دو فاز بود، شروع سینوسی از مقدار 0 وضعیت مطلوبی بود. اما از آنجایی که این سینوسی 3 فاز است، در هر صورت دو فاز آن دارای مقدار غیر صفر هستند).

                                2- این مطلب کاملا برای صرفه جویی در زمان اجرا صحیح است و نیاز به یک دوباره نویسی جدول و یا محاسبه مجدد آن دارد.

                                3- مقدار این رجیستر همیشه قبل از فعال سازی تایمر محاسبه می شود. بنابراین قرار دادن یک مقدار اولیه دیگر تنها حافظه flash بیشتری را اشغال می کند.
                                اما پیرو سوال اخیر شما به نظرم رسید با توجه به اینکه این تایمر در آخرین نسخه نرم افزار در مد fast pwm عمل می کند و در این مد مقدار تایمر در TOP پدیت می شود، می توان قبل از هر بار راه اندازی موتور و برای سیکل اول، تغییری در نرم افزار داد تا اولین سیکل تایمر با OCR3 پدیت شده شروع کند. البته این مورد با آنچه که مطرح شده متفاوت است (زیرا ممکن است موتور چندین بار راه اندازی شود و مقدار دهی در ابتدای کد کفایت نمی کند). اما سوال شما باعث شد این اصلاح به نظرم برسد.

                                بطور کلی تاکنون کمتر در این انجمن با اشخاصی برخورد کرده ام که روی جزئیات عملکرد کدها وقت بگذارند و دقت کنند و اکثرا به دنبال جواب گرفتن و به اصطلاح راه اندازی کارشان هستند. از این جهت، شما را جدا تشویق می کنم که به همین روال خود ادمه دهید. با توجه به اینکه در این مورد وقت می گذارید، توجه شما را به یک اصلاح لازم در نرم افزار در روند تولید pwm جلب می کنم و آن تصحیح مقدار 84 در فاز دوم سینوسی به 85 است و این یکی از مواردی است که در نسخه بعدی نرم افزار اعمال خواهد شد.
                                اوژن: به معنای افکننده و شکست دهنده است
                                دانایی، توانایی است-Knowledge is POWER
                                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                                دیدگاه

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