اطلاعیه

Collapse
No announcement yet.

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

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

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

    -در مورد اختلاف فاز 256 عدد داریم که تقسیم بر سه میشود: 85.33 و ضرب در دو میشود: 170.66 ,که چون اندیس از صفر شروع میشود این اعداد میشوند 84.33 و 169.66 که با گرد کردن به اعداد 84 و 170 میرسیم که بنظر میرسد صحیح انتخاب شده اند! (اگر هم 85 و 170 بگیریم در کل تفاوتی ندارد در هر صورت سه فاز به صورت 85,86,85 یا 86,85,85 در خواهند آمد که بالاخره یکی از فاز ها یک عدد نسبت به بقیه اضافه دارد . منظورتان این است که فاز اول اگر این عدد اضافه را بر دوش کشد مزیتی خواهد داشت ؟)

    [s]-یک نکته ی مهم در رابطه ی با تابع محاسبه ی دامنه :
    به نظرم میرسه در نحوه ی محاسبه ی دامنه در تابع A_calc اشتباهی شده است ,هم در محاسبه هم در انتخاب سیکل, برای نمونه وقتی که ایندکس از 128 بزرگتر باشد باید داده مکمل شود که در برنامه ی موجود این کار برای i<128 انجام شده ! اگر فرض بگیریم که این کار فقط اختلاف فاز 180 درجه ایجاد خواهد کرد و مشکلی پیش نخواهد آمد در روند محاسبات اعداد غلط بدست می آیند(برای مثال اعداد 255 و 25 در تابع جایگذاری شوند اشتباه بدست می آید).
    در عکس زیر که توسط نزم افزار مطلب استخراج شده Ain=25 در نظر گرفته شده. داده های اصلی سینوسی با رنگ آبی هستند و شکل قرمز رنگ حاصل از داده های محاسبه شده توسط تابع موجود در برنامه است و شکل سبز رنگ نیز حاصل از تابع اصلاح شده است :[/s]

    نکته ی دیگه ای که در این رابطه متوجه شدم اینه که منحنی v/f در اینجا خطی هست ولی از نقطه ی مبدا عبور نمی کنه که دلیل آن جلوگیری از پیچیده شدن محاسبات در برنامه بوده احتمالا, که کار جالب و هوشمندانه ای هست :agree:

    -در رابطه با ADC متشکر از توضیحات شما ,باید بیشتر برسی کنم . . .

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

    دیدگاه


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

      در مورد ایندکس صحیح جدول، فرض کنید جدولی با 6 عضو از شماره 0 تا 5 وجود داشته باشد. در این جدول 6 فاصله مساوی باید طی شود تا از عضو 0 مجددا به همان نقطه برگشت شود. بنابراین اگر اولین فاز با عضو شماره 0 شروع شود، فاز دوم با عضو 2=6/3 و فاز سوم با عضو 4=12/3 شروع می شود و یک واحد لازم نیست کم شود (در اینصورت فاز دوم با عضو شماره 1 و فاز سوم با عضو شماره 3 شروع می شود که غلط است). بنابراین اگر بجای 6 عضو 256 عضو وجود داشته باشد، همان اعداد 0 و 85.33 و 170.66 صحیح هستند که برای فاز دوم 85 و برای فاز سوم می توان 171 (یا 170) را در نظر گرفت.
      در مورد تابع محاسبه دامنه، هرچند برای دامنه های پائین باید اصلاحی در آن صورت گیرد تا ناحیه Dead zone از سینوسی در نزدیک محور صفر حذف شود. اما در محاسبات خود احتمالا اشتباهی را انجام داده اید که به این صورت نتیجه داده است (فراموش نکنید که این نرم افزار بصورت عملی با موتور و روی اسیلوسکوپ جواب می دهد). در باره نحوه عملکرد این تابع در پست زیر توضیح داده شده است:

      http://www.eca.ir/forum2/index.php?t...5236#msg315236

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

      دیدگاه


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

        بـــله درسته ... مثال کاملا موضوع رو روشن کرد ,نکته ی دقیق و قابل توجهی بود ,متشکّر . :smile:

        در مورد تابع A_calc هم همون طور که گفتید جایی در محاسبات اشتباه کرده بودم :redface:
        اشتباه دیگه ام این بود که عبارت if sin<128 رو if index<128 برداشت میکردم !!!!
        ولی اگه از index هم برای تشخیص نیم سیکل استفاده کنم ظاهرا فرقی نمی کنه و صحیح خواهد بود. درسته ؟

        در مورد فرمولی که استفاده کردید اونجایی که تقسیم بر 256 شده, آیا در تیوری نباید تقسیم بر 255 بشه؟ برای سادگی محاسبات این طوری در نظر گرفته شده ؟ اگر درست فهمیده باشم همین تقریب,منشا خطاست و باعث میشه خروجی تابع در کل کمی نامتقارن بشه ,طبق برسی های من بنظرم در نیم سیکل اول اعداد لازم نیست با یک جمع شوند و در نیم سیکل دوم بجای یک با دو باید جمع شوند, تا تقارن دقیقا حاصل بشه. . .

        در مورد جدول سینوسی دو داده ی اول 128 و 131 هستند و دو داده ی آخر 121 و 124 هستند در صورتی که انتظار میره ابتدا و انتهای جدول به هم نزدیک تر از این باشند! همون طوری که قبلا گفته بودم بنظرم میرسه میشه جدول سینوسی رو هم بهتر کرد.
        ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

        دیدگاه


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

          نوشته اصلی توسط alinili68
          ولی اگه از index هم برای تشخیص نیم سیکل استفاده کنم ظاهرا فرقی نمی کنه و صحیح خواهد بود. درسته ؟
          دقیقا متوجه منظور سوال نشدم.

          نوشته اصلی توسط alinili68
          در مورد فرمولی که استفاده کردید اونجایی که تقسیم بر 256 شده, آیا در تیوری نباید تقسیم بر 255 بشه؟
          یک روش برای اعمال مقدار دامنه در سینوسی این است که مقدار آن در سینوسی ضرب شود و High byte به عنوان جواب در نظر گرفته شود که تقسیم بر 256 هم در واقع محاسبه همین بایت بالا است. این روش برای دامنه های کم و مقادیر کوچک جدول (حول محور 127.5) نتیجه 0 را حاصل می کند که مقداری در شکل موج اعوجاج بوجود می آورد که مورد نظرم هست که در نسخه بعدی نرم افزار، برای اعمال دامنه روش بهینه تری اعمال شود. مقادیر سینوسی را هم برای نسخه جدید مجددا بررسی می کنم و در صورت لزوم جدول آن را از نو محاسبه خواهم کرد.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


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

            برای اینکه دامنه ی جدید رو محاسبه کنیم (در ضریبی کمتر از یک ضرب کنیم) ابتدا باید بفهمیم داده ی مورد نظر در نیم سیکل اول (127.5 تا 255) است یا در نیم سیکل دوم (0 تا 127.5) ,زیرا طریقه ی محاسبه ی داده ی جدید در این دو وضعیت با هم فرق میکنه, خب یک روش برای تشخیص این که داده ای که در دست داریم اینه که اون داده رو مقدارش رو ببینیم در کدوم یک از بازه هاست (127.5تا255 ای اینکه 0تا127.5) ؟
            داده ای که در دست داریم یک مقدار دارد و همچنین یک اندیس یعنی از 0تا255 ,یعنی داده ی چندم از جدول است ؟که این یعنی متغیر index.
            حال سوال من اینه که برای تشخیص نیم سیکل مسلما باید بشه که index داده رو بجای مقدار خود داده ملاک قرار داد.

            در مورد تابع محاسبه ی دامنه این که گفتم برای بزرگتر از 128 با عددی جمع نشود و برای کوچکتر از 128 با 2 جمع شود را کاملا تست کردم مطمینم اسن طوری خروجی کاملا متقارن و درست میشه ,اگر فرصت چک دارید میتوانید امتحان بفرمایید

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

            دیدگاه


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

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

              دیدگاه


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

                -میبخشید شاید جواب سوالم واضح باشه میخواستم بدونم کد سی موجود رو باید با کدوم کامپایلر ,کامپایل کرد ؟ با AVR Studio یا codevision یا IAR ?

                -اگر استفاده از مگا128 بجای مگا64 ممکن است باعث بروز مشکل شود لطفا راهنمایی بفرمایید . . .

                -من کد سی موجود رو برای اینکه مجبور بشم کامل متوجه بشم و یاد بگیرم به بیسیک دوباره خودم نوشتم ,ولی اکنون در بهت و حیرت هستم که وقتی خروجی فیلتر شده ی OCR1x را روی اسکوپ تست میکنم فرکانس های بین 25 تا 40 هرتز و همچنین 10 تا 20 تولید نمیشود (اگرچه در این محدوده ها دامنه به درستی مقیاس میشود!)
                آیا ممکن است که ضعف ناشی از کامپایلر بسکام باشد ؟؟؟!! همه چیز درست نوشته شده و بار ها بازبینی کرده ام . . .
                بسایر عجیه که مقداری خونده شده از جدول لوکاپ به OCR3A نسبت داده میشه ولی در فرکانس خروجی بعضی جاها تغییر حاصل میشه و بعضی جاها نمیشه !!!!!! :question:



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

                دیدگاه


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

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

                  دیدگاه


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

                    با عوض کردن جدول تایمر سه با یک آرایش جدید مشکل حل شد ولی معلوم نشد از کجا بود بالاخره !! :sad:

                    بله حق با شماست زبان سی زبان بهتری هست , از لطف شما متشکرم :smile:

                    در مورد ADC :
                    1-ADC در مود Freerunning باید باشد یا Single Conversion ؟ در کامنت برنامه freerunning ذکر شده ولی در برنامه Singleconversion پیکربندی شده !!!

                    2-هدفی که از خواندن مقادیر ADC داریم این است که یک مقدار ثابت را از آن استخراج کنیم و آن را مبنا قرار داده و باتوجه به آن فرکانس خروجی را تعیین کنیم و یا این که قرار است سرعت حرکت روی منحنی v/f را مشخص کنیم ,لذا بر عکس کاربرد های معمولی که از ADC سراغ داریم در اینجا اصلا مطلوب ما نیست تغییرات سریع ورودی خوانده شود و حساسیت زیاد از خود نشان دهد ,ای بسا این نوسانات ناپایدار شود و در خروجی موتور نوعی لنگی مشاهده شود .برای رسیدن به این هدف نتها باید فرکانس نمونه برداری ADC حداقل باشد بلکه مطلوب است قبل از خواندن از پتانسیومتر ,ورودی از یک فیلتر پایین گذر نیز عبور کند :
                    اگر مقسم 128 در نظر گرفته شود و هر تبدیل 13 کلاک و هر داده 64 بار گرفته شود و این عملیات 3 بار برای سه ورودی انجام شود در مجموع حصول این سه داده حدودا 40 میلی ثانیه زمان لازم دارد ,که اصولا زیاد بودن این زمان مشکل زا بنظر نمیرسد چرا که ما میخواهیم دور موتور به مثلا w برسد این که به این دور, سریع برسد یا دیر برسد زمانی مهم میشود که میخواهیم موتور را استارت کنیم یا آن را خاموش کنیم هنگامی که موتور در حال کار باشد و بخواهیم سرعت آن را در حین کار به سرعت دیگری برسانیم این که دیر عوض شود یا سریع از اهمیت چندانی برخوردار نیست مخصوصا این که این زمان در حد میلی ثانیه است و محسوس نیست (اگر مهم است اشاره بفرمایید)
                    بر فرض اگر تصمیم بر کم نگه داشتن این زمان داشته باشیم بهتر است که مقسم را 128 بگذاریم و عملیات میانگین گیری را 32 بار انجام دهیم تا اینکه مقسم را 64 بگذاریم و تعداد 64 تا را بخوانیم (این دو روش یک زمان میبرند ولی در روش اول هم سی پی یو آزاد تر میماند و هم داده ی نهایی ثبات بیشتری دارد)
                    در مورد فیلتر سر راه ورودی ADC نیز اگر یک فیلتر RC ساده با مقدار مقاومت چند ده اهم و خازن چند ده نانوفاراد را در نظر بگیریم فرکانس قطع آن در حدود چند مگاهرتز خواهد بود که برای سد کردن نویز ها مفید خواهد بود و تاثیری هم روی اون زمان 20 یا 40 میلی ثانیه نخواهد داشت.

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

                    دیدگاه


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

                      نوشته اصلی توسط alinili68
                      در کامنت برنامه freerunning ذکر شده ولی در برنامه Singleconversion پیکربندی شده !!!
                      1- در کدام خط از نسخه های جدید برنامه چنین کامنتی نوشته شده است؟

                      2- متوسط گیری از 64 نمونه در برنامه در واقع اعمال یک نوع فیلترینگ بصورت دیجیتال است و حتی اگر لازم باشد می توان تعداد این نمونه ها را بیشتر کرد تا خروجی تثبیت شده تری از ADC حاصل شود. بنابراین قرار دادن فیلتر بصورت آنالوگ در شرایطی که می توان بصورت دیجیتال ورودی را فیلتر کرد، روش چندان مناسبی نیست. در مورد تغییر سرعت هم توجه کنید که به ازای هر واحد تغیییرات، فرکانس فقط 0.1 هرتز تغییر می کند و در تغییرات سریع پتانسیومتر تعیین کننده فرکانس و در شرایطی که اعداد متناظر شتاب مثبت و منفی در حداقل مقدار خود باشند، لازم است سرعت کافی در محاسبات ADC برای دنبال کردن تغییرات سریع فرکانس وجود داشته باشد.


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

                      دیدگاه


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

                        در سایت چهار نسخه برنامه گذاشته شده است که ظاهرا نسخه های بالاتر دارای امکانات افزوده شده و پیشرفته تر اند و نسخه های پایین تر ساده تر و بیان گر اصول کار اند و فکر نمیکنم منظور این بوده که نسخه های قبلی غلط هستند ,در کامنت پیکربندی ای دی سی در تابع main در برنامه ی SPWM3_0 مود فری رانینگ اشتباها نوشته شده بود که من تا همین اواخر فرض را بر آن گذاشته بودم . . .
                        متوسط گیری از 64 نمونه فیلترینگ بسیار سطح پایینی است و هرگز کارایی فیلتر آنالوگ را (در اینجا) ندارد ,فیلتر آنالوگ اصولا اجازه ورود ولتاژ های ناخواسته ی فرکانس بالا را نمی دهد اما این فیلتر نرم افزاری در واقع خطا را می خواند ولی آن را در بین داده های درست مستهلک میسازد که کمتر قابل اتکاست و بسیار محتمل است که در هر بار نمونه گیری و میانگیری برای یک ورودی ثابت اعدادی متفاوت بدست آید, فیلتر های دیجیتال پیشرفته فرکانس نمونه برداری ای در حدود فرکانس های خطا را دارند که میتوانند بدرستی خطا را از موج اصلی حذف کنند, برای مثال فیلتر های دیجیتال ای که وظیفه ی حذف سیگنال نویز روی نوار قلب (الکتروکاردیوگرام) را دارند چون نویز مربوطه در واقع نویز حاصل از فرکانس برق شهر هستند نیاز به سمپلینگ ریت بالا ندارند و طراحی آنها نیاز به سخت افزار قوی با توان پردازشی بالا ندارد ,بر عکس در فرکانس های بالا اکثرا در حال حاضر از فیلتر های آنالوگ که بصورت گسترده روی مدار چاپی یا ... طراحی میشوند استفاده میشود.

                        در مورد مود ای دی سی میبخشید که باز جزیی سوال میپرسم (از روی علاقه است) :
                        به نظر میرسد که استفاده از مود فری رانینگ در کاربرد های این چنینی متداول تر باشد چراکه ای دی سی بدون در گیری سی پی یو و همچین ایجاد وقفه و استارت دوباره و غیره ... دایما در حال تبدیل و به روز رسانی رجیستر داده ی ای دی سی است و برنامه نویس در برنامه هرجا که به اصطلاح وقت کرد میتواند تنها رجیستر اِی دی سی را بخواند و از داده ی آن که بصورت مطلق مورد نیاز است استفاده کند مثلا در اینجا میشود در زیر روال های موجود مثلا تایمر سه یا تایمر دو این کار را کرد ! استفاده از وقفه و مود سینگل کانورژن برای خواندن یک شکل موج در ورودی که نیاز به نمونه برداری با فاصله ی زمانی یکسان دارد به کار گرفته میشود و در اینجا شاید نیاز نباشد که سی پی یو را درگیر این کار ساده کرد.

                        در برنامه ی موجود مقدار acceleration , deceleration از مقدار 1 شروع میشوند تا 255 که بنظرم برای این که از 0 تا 255 باشند میتوان در برنامه جای اضافه شدن به کانتر را با چک کردن شرط برابریِ کانتر با این مقادیر عوض کرد .

                        در مورد تاخیری که در خواندن ای دی سی داریم فکر میکنم متوجه منظورتان شده ام :
                        بر فرض اینکه در اینجا داریم از پتانسیومتر های مولتی ترن ایستاده ی معمولی در بازار استفاده میکنیم که 20 دور هستند و با توجه به اینکه تعداد 996 عدد مختلف از آن میخواهیم بخوانیم میتوان گفت که به ازای هر دور چرخش پیچ پتانسیومتر 50 عدد را طی کرده ایم (که یعنی با فرض پله های 0.1 هرتزی میتوان گفت که هر دور چرخش پتانسیومتر باعث تغییر 5 هرتزی در موتور میشود)اگر زمان تاخیر خواندن ای دی سی با فرض سه ورودی ,در برنامه موجود طبق محاسباتی که قبلا شد حدودا 20 میلی ثانیه در نظر بگیریم میتوان گفت که 50*20=1000ms یعنی اگر بخواهیم که موتور تغییرات فرکانس را طبق فرمان ما با پله های 0.1 هرتزی دنبال کند, باید چرخش هر دور پتانسیومتر که توسط کاربر انجام میشود کمتر از یک ثانیه طول نکشد وگرنه در فرکانس پرشهای بیش از 0.1 هرتزی خواهیم داشت که البته با چشم شاید محسوس نباشد ,یک بحث ای که این جا مطرح میشود این است که اصولا موتور مورد استفاده ی ما چقدر لختی دارد به عبارت دیگر اگر به یکباره خاموش شود چقدر طول میکشد که از دور نامی به دور صفر برسد ؟ اگر این زمان را 4 ثانیه در نظر بگیریم برای پله های 0.1 هرتزی این لَختی 8 میلی ثانیه میشود که این یعنی این 20 میلی ثانیه ی کنونی زیاد است و جای کاهش دارد . . . و کاهش دادن بیشتر آن از این 8 میلی ثانیه باید برسی شود که آیا تاثیر خواهد داشت ؟ قطعا تاثیر آن خطی نخواهد بود . . .

                        برای رسیدن به زمان تاخیر کم تر ,منطقی ترین راه کم کردن تعداد میانگین گیری هاست و در عوض اضافه کردن فیلتر آنالوگ , و یا این که مود اِ ی دی سی به فری رانینگ تغییر پیدا کند که بتوان فرکانس کلاک اِی دی سی را با خیال راحت افزایش داد
                        همچنان این دو نکته ای که در پست قبل به اون اشاره کردم به قوت خودشون باقی اند :
                        اگر تصمیم بر کم نگه داشتن این زمان داشته باشیم بهتر است که مقسم را 128 بگذاریم و عملیات میانگین گیری را 32 بار انجام دهیم تا اینکه مقسم را 64 بگذاریم و تعداد 64 تا را بخوانیم (این دو روش یک زمان میبرند ولی در روش اول هم سی پی یو آزاد تر میماند و هم داده ی نهایی ثبات بیشتری دارد)
                        در مورد فیلتر سر راه ورودی ADC نیز اگر یک فیلتر RC ساده با مقدار مقاومت چند ده اهم و خازن چند ده نانوفاراد را در نظر بگیریم فرکانس قطع آن در حدود چند مگاهرتز خواهد بود که برای سد کردن نویز ها مفید خواهد بود و تاثیری هم روی اون زمان 20 یا 40 میلی ثانیه نخواهد داشت.
                        ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

                        دیدگاه


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

                          نوشته اصلی توسط alinili68
                          در کامنت پیکربندی ای دی سی در تابع main در برنامه ی SPWM3_0 مود فری رانینگ اشتباها نوشته شده بود که من تا همین اواخر فرض را بر آن گذاشته بودم
                          من یکبار دیگر فایل های موجود در پست اول تاپیک شامل اولین نسخه را که مربوط به نزدیک به یکسال پیش هستند مجددا دانلود کردم. اما چنین کامنتی در مورد مد Free running را در آن مشاهده نکردم. در کدام خط از این فایل چنین کامنتی وجود دارد؟

                          در مورد بحث فیلترینگ هم مطلب اول این است که در مدل ورودی ADC اصولا یک فیلتر پائین گذر وجود دارد و اگر هدف سد کردن فرکانس های بالا باشد، این فیلترینگ توسط مدار ورودی ADC انجام می شود (به مدل ورودی ADC و حداکثر پهنای باند آن در Datasheet مراجعه کنید). مورد دیگر اینکه این تاپیک درباره کد نوشته شده برای میکروکنترلر تشکیل شده و در سطح نرم افزار هم متوسط گیری لازم برای ورودی ADC انجام شده و اگر در خارج از سخت افزار میکروکنترلر نیازی به وجود فیلترینگ بصورت خارجی وجود داشته باشد، می تواند در سخت افزار موجود در انجمن الکترونیک صنعتی اعمال شود. اما در مورد همان سخت افزار هم با توجه به اینکه تغذیه پتانسیومترها از تغذیه رگوله شده مدار تامین شده و روی این تغذیه هم نوسانات چندانی وجود ندارد، در عمل نیازی به قرار دادن فیلتر مشاهده نشده است. هرچند که اگر به هر دلیلی وجود این فیلتر لازم باشد (مثلا در شرایط اعمال یک ولتاژ DC با مبدا خارج از برد) می توان در شماتیک مربوط به آن تاپیک فیلتر را اضافه کرد.

                          درباره مد مورد استفاده برای ADC هم از آنجایی که در این پروژه نیاز به تغیییر دائمی ورودی های ADC در پایان هر تبدیل و سوئیچ کردن به ورودی بعدی از طریق تغییر مالتی پلکسر وجود دارد و با توجه به اینکه فرمان تبدیل باید بصورت سنکرون و بعد از تغییر کانال ورودی انجام شود، چطور می توان با استفاده از مد Free Running و بدون درگیر کردن cpu، این تغییر کانال ورودی و صدور فرمان تبدیل را انجام داد؟

                          برای acceleration و deceleration اگر پیشنهادی در جهت تغییر برنامه دارید، نمونه کد آن را قرار دهید تا بررسی کنم.

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

                          دیدگاه


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

                            فایلی که من در دست دارم را سه ماه پیش دانلود کردم و این کامنت ها را در آن میبینم اما فایل هایی که الان روی سایت است اصلا کامنت ندارند
                            بهر حال از شما پوزش می خواهم . . .

                            این که میفرمایید در مدل ورودی ای دی سی فیلتر پایین گذر وجود دارد را من نتوانستم پیدا کنم . . . آیا منطورتان خازن و مقاومت نشتی موجود در ورودی پین های ای دی سی است (این دو سِری هستند و نقش فیلتر را بازی نمیکنند و ذیل بحث امپدانس داخلی منبعی که به ورودی ای دی سی داده میشوند مطرح شده اند!) در ذیل همین بحث خود دیتا شیت AVR این طور توصیه کرده :



                            در مود فری رانینگ هنگامی که مثلا در یکی از زیر روال ها ای دی سی را خواندیم ,کانال را هم همانجا عوض میکنیم که بار بعد که خوانده میشود از آن کانال خوانده شود دقیقا شبیه آنچه در برنامه ی کنونی پیاده شده با این تفاوت که دیگر وقفه ی جدا گانه ای برای ای دی سی لازم نیست و از یکی از همین وقفه های موجود استفاده شده و 64 بار استارت کردن ای دی سی هم دیگر لازم نخواهد بود . . .

                            کد پیشهادی من تقریبا به این شکل است :
                            کد:
                             else if(speed<final_speed)
                             {
                             Deceleration_counter=0;
                             if(Acceleration_counter==Acceleration)
                             {
                              Acceleration_counter=0;
                              speed++;
                              }
                             Acceleration_counter++ 
                             }
                             else
                             {
                             Acceleration_counter=0;
                             if(Deceleration_counter==Deceleration)
                             {
                              Deceleration_counter=0;
                              speed--;
                             }
                             Deceleration_counter++
                             }
                            یک اشکال احتمالی که بد نیست به آن هم نیم نگاهی داشت این موضوع است :
                            Is a common temptation to use the output of the voltage regulator as the voltage reference for the ADC. The problem is that a typical voltage regulator, like a 7805, has voltage tolerance of about 5%. This mean that the ADC converted value will have a 5% error. Lets take an example. Suppose that the regulator output voltage is 5.1V, and the input to the ADC is 2.5V. You would expect a converted value of 512, but instead you get 501. Seeing that, you could think that something is wrong with your ADC, but the problem is with your reference voltage. Don't worry, there's components designed to produce reference voltages, like the LM285. However. There is one exception to this rule: when you are making a radiometric measurement. In a radiometric measurement, the voltage is a proportion of the regulator voltage, so any error in the value of this voltage is canceled. The output of a potentiometer is a typical radiometric output. The problem described above is common to external sensors that have an own power supply.


                            در مورد توضیحاتی که در پست قبل راجع به تاخیر خواندن ای دی سی گفته شد که 20 میلی ثانیه زیاداست و تا هشت میلی ثانیه کاهش مفید است, خوشحال میشم نظرتون رو بدونم.

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

                            دیدگاه


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

                              سلام

                              این جدول سینوسی پیشهنادی من هست , نسبت به خط افقی 127.5 کاملا متقارنه و هر نیم سیکل نیز نسبت به خط عمودی 90 درجه متقارن است و در نیم سیکل دوم نیز داده های طوری هستند که هنگامی که قرار است نیم سیکل بعدی کنار آن قرار گیرد متقارن باشد .
                              در محاسبه ی نیم سیکل اول مقادیر floor شده اند و در نیم سیکل دوم مقادیر ceil شده اند که بهترین نتیجه را میدهند .

                              http://alinili68.persiangig.com/other/final_sin_table.xls/download
                              ای هیــــچ , بهر هیچ بر هیــــچ مپیــچ ... !

                              دیدگاه


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

                                با سلام و عرض خسته نباشید خدمت تمامی دوستان فعال در انجمن به خصوص استاد دانشمند جناب آقای طراح.
                                من تازه برنامه نویسی میکرو کنترلر و البته برنامه نویسی با زبان c رو شروع کردم و به شدت تو این مسئله تازه کارم.
                                در بررسی این پروژه با یک مشکل برخورد کردم که تقاضا میکنم بررسی کنید و اطلاع بدید:
                                در شکل موج سینوسی خروجی در زمانهای نامشخص اعوجاجی بوجود میاد و برای مدت زمانی خروجی به شکل یک خط افقی ادامه پیدا میکنه که البته اگر جسارت نباشه بنده تصور میکنم به تایمری که دیوتی سایکل pwm رو تغییر میده مربوط میشه به این ترتیب که تایمر مربوطه برای مدت زمانی که ذکر شد به نوعی غیر فعال میشه.
                                این مسئله برای حالتی که تایمر مذکور با فرکانس 8MHz کار میکنه حدود 8ms و در حالتی که تایمر با فرکانس 2MHz کار میکنه حدود 32ms است.
                                البته لازمه تذکر بدم که این اتفاق در شبیه ساز می افته و من هنوز بصورت عملی ازمایش نکردم.
                                امیدوارم توضیحاتم قابل درک باشه چون تصویری از صفحه شبیه ساز تهیه کرده بودم که نمیدونم چطور باید قرار داده بشه.
                                به هر حال میخوام بدونم ای مشکل اصولا از کجا بوجود میاد و چطور میشه این مشکل رو حل کرد .
                                با تشکر.

                                دیدگاه

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