اطلاعیه

Collapse
No announcement yet.

PWM

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

    PWM

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

    PWM:
    این کلمه مخفف Pulse Width Modulation به معنای مدولاسیون پهنای پالس می باشد. یا به عبارتی دیگر یعنی با تغییراتی در پهنای پالس، توان (قدرت) الکتریکی انتقالی به موتور را کاهش یا افزایش می دهیم. وقتی می گوئیم موتور DC با ولتاژ DC دارای دور نامی مشخصی می باشد، یعنی اگر ولتاژی با مقدار معین را در سر موتور قرار دهیم، در این صورت قدرت انتقالی به موتور ثابت بوده و در نتیجه موتور با دور نامی خود، کار خواهد کرد. ولتاژ DC یعنی ولتاژ ثابت. میدانیم که یک ولتاژ ثابت همان پالس با پهنا پالس دلخواه است. یعنی به ازای این مقادیر زمانی ولتاژ دو سر بار مقداری مستقیم است. حال اگر ما به هر نحوی این ولتاژ مستقیم روی دو سر موتور را کاهش دهیم، نتیجتاً قدرت انتقالی به موتور و در نتیجه دور موتور کمتر خواهد بود. با ادامه بحث هر چه بیشتر متوجه منظورم خواهید شد.
    اصل و مبنای PWM تغییر (مدوله کردن) پهنای پالس و در نتیجه تغییر مقدار متوسط ولتاژ موج است.در صورتی که یک موج مربعی را در نظر بگیریم، در این صورت خواهیم داشت:


    می دانیم:



    در شکل موج فوق،



    که در آن y مقدار ولتاژ یکسو شده میباشد.

    روش های تولید PWM:
    1) ساده ترین راه ایجاد PWM استفاده از یک موج اره ای و یک موج سینوسی ایجاد ده توسط اسیلاتور می باشد. حال کافی است تا با استفاده از یک Op-Amp این دو ولتاژ را با یکدیگر مقایسه شوند. در صورتی که ولتاژ سبز رنگ در شکل زیر بیشتر از ولتاژ آبی رنگ باشد، سطح ولتاژ بالا و در صورتی که منحنی سبز رنگ از منحنی آبی رنگ پائین تر باشد، سطح ولتاژ پائین خواهد بود.



    2) روش DELTA:
    در این روش ولتاژ خروجی با دو سطح ولتاژ معین که یکی از آنها همان مقدار ولتاژ اول با مقداری Offset می باشد، مقایسه میشود. در صورتی که ولتاژ خروجی از یکی از این دو محدودیت افزایش یا کاهش یابد، در این صورت سطح ولتاژ پالس نیز تغییر خواهد کرد. شکل زیر بیان گر این موضوع می باشد.



    روش 3) در این روش ولتاژ خروجی از یک ولتاژ مرجع کمتر میشود، در صورتی که مجموع این ولتاژ خطا ( تفاضل ولتاژ خروجی از ولتاژ مرجع) از مقدار معینی بیشتر شود، سطح ولتاژ خروجی عوض میشود.

    روش 4) بسیاری از مدارات دیجیتال می توانند PWM تولید کنند. برای مثال بسیاری از میکروپروسسور ها دارای خروجی PWM می باشند. معمولاً این میکروپروسسور ها درای شمارنده ای می باشند که پس از زمان معینی سطح ولتاژ خروجی را تغییر می دهند.

    علاوه بر روش های گفته شده برای تولید PWM، سه حالت کلی برای PWM موجود می باشد:
    1) مرکز پالس در روی محور زمانی ثابت باشد و با افزایش یا کاهش کناره های (لبه های کناری) مدولاسیون پالس رو تغییر دهیم.
    2) لبه بالایی را ثابت نگه داریم و لبه پایینی را تغییر دهیم
    3) لبه پایینی را ثابت نگه داریم و لبه بالایی را تغییر دهیم.
    از سایر موارد کار برد PWM علاوه بر کنترل دور موتور، می توان کار برد آن در مخابرات و تنظیم ولتاژ و پخش توان اشاره کرد.

    این قسمت اول.
    موفق باشید.
    BNTSTBNT

    #2
    پاسخ : PWM

    آقا کارت درسته!!
    همه کمک کنند (البت خودم هم ) ...
    براتون یه فایل انمیشن توپ با تمام مخلفات .... قولشو 100% می دم !! اگر واقعا به جائی برسه و یه توپ از آب در بیاد البت!!! :agree:

    دیدگاه


      #3
      پاسخ : PWM

      ای ول یاشار جان.
      علی بود. دمت کوووووووووره.
      به شخصه کوللی استفاده کردم.
      آموزش نرم افزار Matlab برای دانشجویان رشته های مهندسیhttp://alidoost.ir/news.php?readmore=22

      دیدگاه


        #4
        پاسخ : PWM

        ُسلام. دوستان بخش دوم این بحث: ( قبل از ادامه از تمامی دوستان و همکاران و اساتید این زمینه در صورتی که خطا یا اشتباه علمی در مطلب موجود باشد، خواهشمند است، متذکر شوند)

        همان طور که اشاره شد یکی از راه های تولید PWM استفاده از میکرو ها یا همان روش های دیجیتالی بود. در اینجا به چگونگی ایجاد PWM با استفاده از AVR ATMEGA 16 می پردازیم.

        در راحت ترین حالت برنامه CODE Vision را اجرا کنید:
        حال از منوی File گزینه New را انتخاب کنید.


        گزینه Project را مطابق شکل زیر انتخاب کنید:


        حال گزینه Yes را انتخاب کنید.
        صفحه زیر نمایان خواهد شد.


        در همین صفحه ( قمست Chip) نوع AVR ATMEGA16 مورد استفاده را معین کنید. در اینجا قصد توضیح تمامی قسمت های این پنجره را نداریم بلکه تنها در مورد تایمر ها و چگونگی ایجاد PWM بحث خواهیم کرد. نتیجتاً قسمت هایی مورد نیاز:
        Chip
        Timers
        External IRQ
        می باشد.
        بعد از اینکه در پنجره فوق نوع میکرو و CLOCK آن را مشخص کردید، به منوی Timers بروید.


        همان طور که مشاهده می کنید در این میکرو 3 تایمر در اختیار شماست. فرضاً TIMER 0 را در نظر بگیرید.
        1) این تایمر 8 بیتی است.
        2) Clock Source: در این قسمت منبع کلاک تایمر را انتخاب کنید. یعنی هر بار که کلاکی از این منبع به ورودی تایمر اعمال شود، تایمر یک بار خواهد شمرد. به عبارتی دیگر در این قسمت منظور از Timer، شمارنده است که البته می توان با آن بصورت Timer نیز استفاده کرد. بعداً چگونگی این کار توضیح داده خواهد شد. در حال حاضر منبع کلاک را انتخاب کنید.


        System Clock: با انتخاب این گزینه، فرکانس تایمر مطابق با فرکانس مشخص شده برای تایمر در قسمت Chip می باشد. ( در این قسمت فرض می کنیم، نیازی به استفاده از منبع خارجی نباشد و از منبع داخلی تایمر استفاده کنیم)
        T0 Falling Edge: در بین 40 پایه ی میکرو، پایه ای با نام T0 برای ورودی تایمر صفر در نظ گرفته شده است. انتخاب این گزینه موجب خواهد شد تا در صورت عبور پالس پائین گذر از پایه T0، تایمر (شمارنده) یک بار بشمارد.
        T0 Rising Edge: مطابق همان قسمت فوق ، با این تفاوت که تنها در هنگام عبور لبه بالا رونده، تایمر ( شمارنده) خواهد شمرد.

        در اینجا برای ایجاد PWM، نیاز به System Clock داریم.

        Clock Value:
        خوب در این قسمت می توانید در صورت نیاز تنها قسمتی از فرکانس کاری میکرو را برای تایمر استفاده کنید.
        فقط دقت کنید که مقداری برای آن انتخاب کنید! ( برای روی Timer Stopped رها نکنید.)


        Mode: حالت کاری میکرو را مشخص کنید. در این قسمت است که مشخص می کنید از این تایمر قصد استفاده بصورت مولد PWMرا دارید.


        Normal top=FFh: یعنی بصورت یک شمارنده معمولی با فرکانس تعیین شده در قسمت های قبلی تا عدد 255 خواهد شمرد. ( یاد آور میشوم این تایمر 8 بیتی است)

        CTC top=0CR0 مخفف ( Clear Timer on Compare Match (CTC) Mode):
        در این حالت زمانی که مقدار تایمر ( مقدار رجیستر TCNT0) به مقدار مشخص شده برای رجیستر OCRO رسید، تایمر Reset میشود. در ضمن میتوانید با فعال نمودن گزینه Compare Match Interrupt، زمانی که تایمر به مقدار رجیستر OCR0 رسید، علاوه بر بازنشانی تایمر، سرویس وقفه مربوطه نیز فعال میگردد که میتوانید برنامه مورد نظر را در آن سرویس وقفه وارد کنید. همچنین مقدار رجیستر OCR0 که بطور اولیه بر روی صفر تنظیم شده است را می توانید از قمست Compare مشخص کنید. ( دقت کنید که عدد را به hex وارد کنید و بزرگتر از 255 نباشد.)

        Fast PWM top=FFh: امکان PWM با فرکانس های بالا را به شما میدهد. در این حالت تایمر تا مقدار رجیستر شمرده و سپس بسته به حالت قسمت Output:
        1) قسمت Output


        بر روی Non_inverted تنظیم شده باشد. در این صورت به ازای مقادیر بیشتر از مقدار رجیسترOCR0 مقدار خروجی تایمر صفر و به ازای مقادیر کوچکتر از رجیستر OCR0 مقدار خروجی تایمر ( پایه ی 4ـ OC0) یک خواهد بود.
        2) قسمت Output بر روی inverted تنظیم شده باشد. در این صورت به ازای مقادیر بیشتر از مقدار رجیسترOCR0 مقدار خروجی تایمر، یک و به ازای مقادیر کوچکتر از رجیستر OCR0 مقدار خروجی تایمر ( پایه ی 4ـ OC0)، صفر خواهد بود.

        Phase correct PWM top=FFh:
        در این حالت تایمر بطور دائم از مقدار صفر تا 255 خواهد شمرد و سپس از 255 به صفر باز خواد گشت. (255، 254، 253، ...) اگر خروجی در حالت Non-Inverted باشد، زمانی که مقدار خروجی و مقدار رجیستر OCR0 برابر شدند، در حالت بالا شمار خروجی باز نشانی و در حالت پائین شمار خروجی یک میشود.

        پس بدین ترتیب تا اکنون به سادگی می توانید حدث بزنید که برای تولید PWM مورد نظر می توانید از یکی از حالت های Fast PWM یا Phase correct PWM استفاده کنید. روش سومی نیز استفاده از سرویی وقفه در زمان برابری مقدار تایمر با رجیستر OCR0 می باشد. به این ترتیب با تنظیم مقدار رجیستر OCR0 می توانید PWM خروجی با سیکل کاری مورد نظر را ایجاد کنید. .( در این روش سوم، باید گزینه Compare Match Interrupt را نیز فعال کنید.)


        BNTSTBNT

        دیدگاه


          #5
          یه سوال

          سلام
          من یه سوال دارم ؟
          اگه درایور پل H به پایه که pwm میدهد وصل کنیم . موتور می چرخه؟
          اصلا درایور رو به کدوم پایه های باید زد
          ممنون میشم کمک کنید . این پروژه منه که یه مقدار قاطی کردم :sad:
          یاور همیشه مومن تو برو سفر سلامت غم من مخور که دوری برای من شده عادت

          دیدگاه


            #6
            پاسخ : PWM

            سلام. در مورد پل H مثال زیر رو در نظر بگیرید.
            IC (L298) از دو پل H مطابق شکل زیر ساخته شده. البته این مدار تقریبی این IC هستش.




            سیگنال PWM خروجی از میکرو را به پایه ENABLE این سیستم می دهیم. به این ترتیب این IC متناسب با پهنای پالس مدوله شده، فعال و غیر فعال شده و ولتاژ موتور قطع و وصل می شود و در نتیجه دور موتور بسته به Duty Cycle سیگنال PWM، کاهش یا افزایش می یابد.
            نحوه انالیز مدار هم ساده هستش. شما یکی از این پل H ها رو در نظر بگیرین. (مثلاً پل H با خروجی های OUT1 و OUT2)، همچنین فرض کنید که به یکی از اون ورودی هاتون in1=1 و in2=0، (in1 همون پایه 5, in2 هم پایه 7) هستش.
            حالا وقتی پایه Enable که به PWM وصل هستش رو در نمظر بگیریم. وقتی تو قسمت LAW یا همون صفر پالس PWM هستیم، هر دو ترانزیستور خاموش و خروجی نخواهید داشت و موتور ها خاموش هستن. وقتی پایه ENABLE از طریق پالس PWM به سطح High میره (یعنی به یک میشه) در نتیجه حالا خروجی های AND هاتون رو برسی کنید. متوجه میشید که خروجی هاتون به ترتنیب out1=1 و out2=0 میشه. یعنی موتورتون اگر بسته به اتصالات موتور با پایه های out1 و out2 چپ گرد و یا راست گرد شروع به چرخش میکنه.

            امیدوارم توضیحات کامل و کافی بوده باشه!
            BNTSTBNT

            دیدگاه


              #7
              پاسخ : PWM

              سلام و ممنون از اینکه پاسخ دادید ولی من بازم سوال دارم و آن هم اینکه
              تو مدار زیر که مدار پل H مدار من هم هست ببینید ما دو تا از این 4  تا بیس را در هر مرحله فعال باید بکنیم مثلا q2 و q4 که ورودی اولی صفر و دومی باید یک باشه (منظورم پایه avr) .
              حالا این پایه ها که وصل می شن باید به پایه pwm وصل شوند؟ ( همون پایه که کلاک تنظیم شده) و یا باید روی یک پایه باشند و ما آن را یک کنیم . نمی دونم منظورم را رسوندم یا نه.
              ما یک همچین برنامه ای نوشتیم که موتور فقط حرکت می کند و ترمز می کند. و هیچ ارتباطی هم به کلاک ندارد. البته تایمر1 را فعال کردیم . ولی این برنامه نمی تونه سرعت را کنترل کنه . حالا من نمی دونم مدار راه انداز باید به پایه خاصی وصل شوند. (یعنی پایه ای که pwm می دهند)
              #include <mega16.h>
              include <delay.h>#
              ()main
              {
              While(1)
                {
                PORTD.7=0;
                PORTD.6=1;
                PORTC.1=0;
                PORTC.0=1;
                delay_ms(500);
                PORTD.7=1;
                PORTD.6=0;
                PORTC.0=1;
                PORTC.1=0;
                delay_ms(500);
                    }
                    }




              ممنون می شوم دوباره یک توضیح بدهید
              یاور همیشه مومن تو برو سفر سلامت غم من مخور که دوری برای من شده عادت

              دیدگاه


                #8
                پاسخ : PWM

                سلام
                در ادامه صحبتهای یاشار جان باید بگم که شما برای استفاده از پل H با Enable دوتا راه دارین:
                1- PWM رو به Enable وارد کنید و با 4 بیت دیگه جهت رو کنترل کنید
                2- PWM رو به همه 4 بیت ورودی وارد کنید و با Enable جهت رو کنترل کنید
                با این مدار شما باید PWM رو به ترتیب یا به 2 و 4 وارد کنید و یا به 1 و 3 ،برای اینکه راحت تر کار کنید باید از AND هایی که یاشار جان گذاشته استفاده کنید!
                شما تو این برنامه فقط جهت رو کنترل میکنید و موتور با تمام نیرو در جهتی که براش مشخص میشه میچرخه،روی سرعت کنترلی ندارید،برای تست میتونید PWM رو به پایه های 2 و 4 وصل کنید و با تغییر PWM تغییر سرعت رو ملاحظه کنید
                اما به نظر من از به L298 استفاده کنید تا این همه دردسر نداشته باشد!
                در دیر مغان آمد یارم قدحی در دست
                مست از می می خواران از نرگس مستش مست

                دیدگاه


                  #9
                  پاسخ : PWM

                  سلام. کاملاً واضح هستش که این برنامه دور موتور رو کنترل نخواهد کرد. ببنید اگر بدنباله کنترل دور موتور و مطالب مربوطه با AVR ATMEGA16 هستید مقاله زیر رو مطالعه کنید.

                  http://www.eca.ir/forum2/index.php/topic,7338.0.html

                  ولی اگر بحث در مورد PWM هستش، خوب این برنامه با یک پالس معین موتور رو روشن و خاموش خواهد کرد و موتور شما فقط با یه سرعت ثابت خواهد چرخید. و البته اگر هم بار یا به هر دلیلی در چرخش موتور مشکلی پیش بیاد، خوب طبیعی هستش که موتور یا سرعت تغییر میکنه و یا وای میسته! علت هم اینه که همون طور که گفتم، این برای کنترل دور موتور نیست! کلمه کنترل بدون عمل فیدبک گیری بی معناست! شما در مورد کنترل دور موتور همون مقاله بالا رو بخونید،سعی شده تمام جزئیاتش نوشته شده.
                  اگر باز هم متوجه منظور من در مورد PWM نشدید، بگین، براتون توضیحات جزئی هم مدیم.

                  BNTSTBNT

                  دیدگاه


                    #10
                    پاسخ : PWM

                    سلام و با تشکر از شما :rolleyes:
                    مقاله شما خیلی بدرد خورد .
                    من یک سری اطلاعات در مورد کنترل فازی هم می خواهم. شما می توانید منو راهنمایی کنید؟
                    یاور همیشه مومن تو برو سفر سلامت غم من مخور که دوری برای من شده عادت

                    دیدگاه


                      #11
                      پاسخ : PWM

                      سلام. در حال حاضر بالشخصه نه! باید مطالعاتی در این زمینه بکنم تا بتونم مطلبی رو ارائه کنم. فلن در زمینه فرستنده ها و گیرنده ها و ارتباط بین کامپیوتر و دنیای خارج دارم جمع آوری میکنم. :rolleyes:
                      ولی شما تو یه تاپیک جدا، لطف کنید مقالتونو درخواست کنید شاید از سایر دوستان قبلاً در این زمینه مقاله ای داشته باشن. یا اگر اهل مطالعه کتاب های خارجی( زبان مادر ) هستید، درخواست کتابی در این مورد بکنید. البته در تالار مربوطه.
                      موفق باشید.
                      BNTSTBNT

                      دیدگاه


                        #12
                        پاسخ : PWM

                        این سایتم اطلاعات خوبی داره www.eleinmec.com

                        دیدگاه


                          #13
                          پاسخ : PWM

                          سلام...
                          من در حال ساخت یه ربات تعقیب خط با میکرو atmega16 و درایور l298 هستم که در اون می خوام از تکنیک pwm استفاده کنم ....
                          برنامه نویسی انجام شده و input های 1 2 3 و 4 به ترتیب به پایه های 20 19 18 و 21 وصل میشه که برای input1 پین oc1a و برای input2 پین oc1b و یک پین معمولی وجود دارد حالا برای استفاده از این تکنیک با پایه های enable درایور چکار کنم؟آیا به هم وصل باشند یا خیر؟ به پایه ای از میکرو باید متصل بشوند یا نه؟
                          در ضمن اگر می شود توضیح مختصری در باره پل h برای من مبتدی بدهید :eek: هرچی خوندم نوشته هاتون را نفهمیدم :angry:

                          دیدگاه


                            #14
                            پاسخ : PWM

                            ECA هم شورش رو در ابرده....یه پلود منیجر مثل انجمن "برناوه نویس" درست کنید دیگه
                            چه وضعشه تو هر پستی که میریم اکثر عکس ها خراب شده...................................
                            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                            اگه دوس دارید سریع به جواب برسید :
                            1) قبل از پرسیدن سوال، بسرچید.
                            2) سوالاتون رو با جزئیات کامل مطرح کنید.

                            دیدگاه

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