اطلاعیه

Collapse
No announcement yet.

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

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

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

    با سلام خدمت مهندس کی نژاد
    اگر امکان دارد در مورد نحوه محاسبه قطعات قدرت مدار(igbt،رکتیفایر،خازن لینک dc،فیلتر EMI و...) بیشتر توضیح دهید.
    با تشکر

    دیدگاه


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

      تاپیک جاری مربوط به سورس برنامه است و درباره سخت افزار لازم در تاپیک زیر بحث شده است:

      http://www.eca.ir/forum2/index.php?topic=52367.0
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


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

        با سلام
        مهندس کی نژاد سلام
        این امکان هست که یک موتور سروو AC سه فاز رو با این درایور راه اندازی کرد.من از آقای سپاس یار شنیدم که این امکان وجود داره؟
        ممنون از راهنماییتون
        در جهان رازهایی هست که جز به بهای ریختن خون فاش نمی شود . شهید مرتضی آوینی

        دیدگاه


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

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

          دیدگاه


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

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

            دیدگاه


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

              در پست زیر توضیح داده شده است:

              http://www.eca.ir/forum2/index.php?t...8675#msg568675
              اوژن: به معنای افکننده و شکست دهنده است
              دانایی، توانایی است-Knowledge is POWER
              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

              دیدگاه


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

                ممنون از پاسختون (طراح) ، خیلی دنبال پاسخش بودم.

                دیدگاه


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

                  با سلام و تشکر از همه دوستان مخصوصا آقای طراح و دوست گرامی آقای زوار
                  من تقریبا تمام تایپک های مربوط رو خوندم و چیز های رو به طور ناقص متوجه شدم
                  کمی گیج شدم ؟
                  اینکه گفته شده
                  فرکانس حامل PWM برابر 15.6 کیلوهرتز است
                  یعنی چی دقیقتر میشه توضیح بدین ؟
                  من تایمر avr رو مطالعه کردم ولی امکانش هست کمی این بخش رو در برنامه توضییح بدین ؟
                  بدون امضاء

                  دیدگاه


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

                    طی مسیر از 0 تا 255 و برگشت آن به 0 برای مد pwm هشت بیتی به 510 کلاک نیاز دارد و در هر بار طی شدن این مسیر توسط تایمر، یک تغییر در سیگنال های خروجی ایجاد می شود. بنابراین با فرض کلاک 8Mhz برای تایمر، 8000000/510 بار تغییرات در خروجی ایجاد می شود که برابر 15686.2 هرتز خواهد بود.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


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

                      با سلام
                      ممنون از اینکه پاسخگویی شما :applause:
                      بدون امضاء

                      دیدگاه


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

                        با سللام و تشکر از زحمات شما

                        سوال من اینه که اگه بخواهیم یک فیدبک از ولتاژ خروجی داشته باشیم واسه ثابت نگه داشتنش و تنظیم این مقدار با یک ولوم باید از کجا شروع کنم؟؟
                        یعنی میخام ماکزیمم duty cycle با یک ولوم در هر لحظه تنظیم بشه و با ولتاژ خروجی مقایسه بشه که هنگام تغییر مقدار بار ولتاژ ثابت بمونه!!!!!

                        با تشکر

                        دیدگاه


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

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

                          دیدگاه


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

                            ممنون به خاطر پاسخ شما

                            منظور من این بود که ما یک ولوم و ADC برای تعیین ماکزیمم duty cycle به صورت جدا داشته باشیم و بتونیم duty cycle رو در ابتدا تنظیم کنیم که متناسب با این عرض پالس دامنه سینوسی هم قاعدتا تنظیم میشه ،، حالا اگر به خاطر تغییرات بار دامنه ولتاژ تغییر کرد از طریق فیدبک جلوی تغییرات ولتاژ گرفته بشه و همچنین در هر لحظه بتونیم با ولوم دامنه رو تغییر بدیم و با فیدبک ثابت نگهش داریم

                            دیدگاه


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

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

                              دیدگاه


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

                                بله دقیقا ، ولی این تغییرات max و min دارد که اگر max آن کنترل شود در نتیجه max موج سینوسی خروجی نیز متناسب با آن کنترل میشود مثلا اگر ماکزیمم duty cycle روی 80% تنظیم شود ولتاژ فاز به خروجی به جای تقریبا 200 ولت روی حدودا 160 ولت خواهد بود ولی در حال حاضر duty cycle بین min و max جدول متغیر است در کد زیر شاید بتوانم منظور خود را بیان کنم :
                                [code=c][code=c]
                                [pre]
                                bit W ;
                                long int Ab , V ;
                                long int B , F ,fc=0, Ff, Theta1 , Theta2 , Theta3 ;
                                long int D1 , D2 , D3 ,Vw ;
                                float A , Vv ;
                                long int Theta_max = 30000 , Theta_max1 = 7500 ,Theta_max2 = 15000 , Theta_max3 = 22500 ; // 360 degree, 90 degree , '180 degree , '270 degree
                                long int Theta_shift1 = 10000 , Theta_shift2 = 20000; // 180 degree , '120 degree , '240 degree
                                int V_max = 170 , D_scale = 231; // , 'same as N in matlab sine generator , 'sin_max*2 , 'same as sin_max , 'V_max * Sin_max2 / D_max
                                long int F_max = 2000 , Sin_maxv_max = 28900; //f_max=2000
                                float Theta_scale = 0.0333333;
                                int sine[]= {0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 26 , 27 , 28 , 29 , 30 ,
                                31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 ,
                                61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , 80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 87 , 88 , 89 , 90 ,
                                91 , 92 , 93 , 94 , 95 , 96 , 96 , 97 , 98 , 99 , 100 , 101 , 102 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 108 , 109 , 110 ,
                                111 , 112 , 112 , 113 , 114 , 115 , 116 , 116 , 117 , 118 , 119 , 119 , 120 , 121 , 122 , 122 , 123 , 124 , 125 , 125 , 126 , 127 , 128 , 128 , 129 , 130 ,
                                130 , 131 , 132 , 132 , 133 , 134 , 134 , 135 , 136 , 136 , 137 , 138 , 138 , 139 , 139 , 140 , 141 , 141 , 142 , 142 , 143 , 144 , 144 , 145 ,
                                145 , 146 , 146 , 147 , 147 , 148 , 148 , 149 , 149 , 150 , 150 , 151 , 151 , 152 , 152 , 153 , 153 , 154 , 154 , 155 , 155 , 156 , 156 , 156 , 157 , 157 ,
                                158 , 158 , 158 , 159 , 159 , 160 , 160 , 160 , 161 , 161 , 161 , 162 , 162 , 162 , 163 , 163 , 163 , 164 , 164 , 164 , 164 , 165 , 165 , 165 , 165 , 166 ,
                                166 , 166 , 166 , 167 , 167 , 167 , 167 , 167 , 168 , 168 , 168 , 168 , 168 , 168 , 169 , 169 , 169 , 169 , 169 , 169 , 169 , 169 , 169 , 170 , 170 , 170 , 170 , 170 , 170 , 170 , 170 , 170 , 170 , 170 , 170 , 170 } ;
                                .
                                .
                                .
                                .
                                .
                                .
                                .
                                .
                                .

                                while (1)
                                {
                                //******'*******************INPUT FREQUENCY **********
                                F = 315;//read_adc(0) ;
                                Ff = F * 1.953125 ; //10 bit = 1024 , f * (1/1024)*2000 = 1.953125
                                F = Ff ;
                                ///************************************************** *
                                //'******************** INPUT VOLTAGE **********************

                                Vw = 1000;//read_adc(1);
                                Vv = Vw * 0.166 ; //10 bit = 1024 , V * (1/1024)*170 =0.166
                                V = Vv ;




                                if( V > V_max )
                                {
                                V = V_max ;
                                }
                                if(F > F_max)
                                {
                                F = F_max ;
                                }

                                //'************ Thetas Calculation (between 0 & 360 degree) ********
                                Theta1 = Theta1 + F ;
                                Theta2 = Theta1 + Theta_shift1 ;
                                Theta3 = Theta1 + Theta_shift2 ;
                                if( Theta1 >= Theta_max )
                                {
                                Theta1 = Theta1 - Theta_max ;
                                }
                                if( Theta2 >= Theta_max )
                                {
                                Theta2 = Theta2 - Theta_max ;
                                }
                                if( Theta3 >= Theta_max )
                                {
                                Theta3 = Theta3 - Theta_max ;
                                }
                                //****************'**************************** ******************
                                //************************************************** *************
                                //*****'**************** D1 Calculation *************************

                                if (Theta1 <= Theta_max1)
                                {
                                A = Theta1 * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max + B ;
                                D1 = B / D_scale ;
                                }
                                else
                                if( Theta1 <= Theta_max2 )
                                {
                                A = Theta_max2 - Theta1 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max + B ;
                                D1 = B / D_scale ;
                                }
                                else
                                if( Theta1 <= Theta_max3 )
                                {
                                A = Theta1 - Theta_max2 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max - B ;
                                D1 = B / D_scale ;
                                }
                                else
                                {
                                A = Theta_max - Theta1 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max - B ;
                                D1 = B / D_scale ;
                                }

                                //*****'*************************************** ****************
                                //************************************************** ***********
                                //******'***************** D2 Calculation *********************
                                if
                                ( Theta2 <= Theta_max1 )
                                {
                                A = Theta2 * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max + B ;
                                D2 = B / D_scale ;
                                }

                                else
                                if
                                ( Theta2 <= Theta_max2 )
                                {
                                A = Theta_max2 - Theta2 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max + B ;
                                D2 = B / D_scale ;
                                }

                                else
                                if
                                ( Theta2 <= Theta_max3)
                                {
                                A = Theta2 - Theta_max2 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max - B ;
                                D2 = B / D_scale ;
                                }
                                else
                                {
                                A = Theta_max - Theta2 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max - B ;
                                D2 = B / D_scale ;
                                }

                                //*****'*************************************** **********************
                                //************************************************** *****************
                                //******************************* D3 Calculation ********************

                                if
                                ( Theta3 <= Theta_max1 )
                                {
                                A = Theta3 * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max + B ;
                                D3 = B / D_scale ;
                                }

                                else
                                if
                                ( Theta3 <= Theta_max2 )
                                {
                                A = Theta_max2 - Theta3 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max + B ;
                                D3 = B / D_scale ;
                                }
                                else
                                if
                                ( Theta3 <= Theta_max3 )
                                {
                                A = Theta3 - Theta_max2 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max - B ;
                                D3 = B / D_scale ;
                                }


                                else
                                {
                                A = Theta_max - Theta3 ;
                                A = A * Theta_scale ;
                                Ab = A ;
                                Ab = sine[Ab] ;
                                B = Ab * V ;
                                B = Sin_maxv_max - B ;
                                D3 = B / D_scale ;
                                }


                                //************************************************** ***************
                                //************************************************** ***************
                                //********************* Load Duty Cycles **************************

                                OCR0 = D1;
                                OCR1BL = D2 ;
                                OCR1AL = D3 ;
                                }
                                [/pre]
                                [/code][/code]

                                دیدگاه

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