اطلاعیه

Collapse
No announcement yet.

همه چیز درباره ی روابط pwm (همراه مثال)

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

    همه چیز درباره ی روابط pwm (همراه مثال)

    در بیشتر برنامه ها و پروژه هایی که نیاز است ازpwm استفاده شود مخصوصا زمانهایی که نیاز است پالسهایی بادقت بسیار بالا (استفاده از سروو ها) تولید کنیم گزینه اول (حتی برای حرفه ای های برنامه نویسی) استفاده از مد تایمر ها میباشد وبا استفاده از 2 تایمر پالسهای مورد نظر ایجاد میشود اما انتخاب این گزینه مشکل هایی رو در بردارد از قبیل درگیر شدن 2 تایمر و پیجیده شدن برنامه و....... این درحالی است که اگر رابطه های پیکره بندی در مد pwm رابدانیم با استفاده از یک ماشین حساب راحت ترین عمل در این موارد استفاده از مد pwm است. در این تاپیک قصد دارم تمام این رابطه ها رو همراه با چند مثال عملی بیان کنم. با خواندن مطالب زیر نکات ریزی در تولید پالسهای pwm به دست می اوریم.
    موفقيت بدست آوردن چيزيست كه دوست داري و خوشبختي دوست داشتن چيزيست كه بدست آوردهآ‌اي.

    #2
    پاسخ : همه چیز درباره یpwm (همراه مثال)

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

    دیدگاه


      #3
      پاسخ : همه چیز درباره یpwm (همراه مثال)

      (قسمت اول) pwm یا مدولاسین پهنای پالس یکی از امکانات پرکاربرد در avr میباشد ، از این موج برای کنترل دور موتور ساخت پالس مربعی و دیگر پالس ها و ... استفاده میشود ، در این نوع مدولاسیون دامنه پالس ثابت است و نسبت زمان صفر به یک ان تغییر میکند .pwm در میکرو های قدیم (قبل از xmega) میتواند 8 یا 9 یا 10 بیتی باشد که مقدار بیت هرچه بیشتر یاشد دقت موج بیشتر است (تعداد پله بیشتر است ) pwm هشت بیتی تا 256 سرریز میشود (شما میتوانید 256 واحد ان را کم یا زیاد کنید) pwm نه بیتی تا 512 و pwm ده بیتی تا 1024 سر ریز میشود . ما برای توضیح روابط مد تایمر یک را در نظر میگیریم وبرای ما بقی تایمر ها با استفاده از پیکره بندی دیگر تایمر ها قابل تعمیم است .
      راه اندازی تایمر/کانتر 1 در مد pwm با دستورات زیر انجام میشود :
      Config Timer1 = Pwm,Pwm = 8|9|10 , Compare A Pwm=Clear Up |Clear Down |Disconnect
      ,Compare B Pwm =Clear Up |Clear Down |Disconnect , Prescale=1|8|64|256|1024
      pwm=8/9/10: همان مشخص کننده بیت pwm است که در بالا گفته شد.
      Compare A Pwm=Clear Up |Clear Down |Disconnect : در صورت استفاده از گزینه clear up موج pwm از سطح 0 شروع میشود و در صورت انتخاب cleardown موج pwm از سطح صفر شروع میشود و در صورت انتخاب disconnect هنگامی که مقدار pwm با pwm1a که در برنامه مشخص میشود برابر شد ، ارتباط پالس با پایه ی oc1a قطع میشود.
      قابل ذکر است در حالت استفاده از تایمر یک پایه های oc1a و oc1b به عنوان خروجی pwm میباشد.
      درمورد گزینه یCompare b Pwm=Clear Up |Clear Down |Disconnect نیز حالات فوق صورت میگیرد با این تفاوت که کنترل روی پایه ی oc1b صورت میگیرد .
      Prescale : این گزینه و مقدار کریستال در تعیین فرکانس pwm نقش دارند . برای تولید pwm با فرکانس های متفاوت از این گزینه ها استفاده میشود .
      بعد از معرفی دستورات ساده پیکره بندی در قسمت بعد به معرفی رابطه ها و تعیین دقیق duty cycle می پردازیم.
      موفقيت بدست آوردن چيزيست كه دوست داري و خوشبختي دوست داشتن چيزيست كه بدست آوردهآ‌اي.

      دیدگاه


        #4
        پاسخ : همه چیز درباره یpwm (همراه مثال)

        (قسمت دوم) در این قسمت قصد دارم چگونه به دست اوردن فرکانس وزمان تناوب رو در پالس های تولیدی pwm توضیح بدم . همین تور که حتما میدانید فرکانس موج های تولید شده با pwm از روابط زیر به دست می اید :
        (pwm (8bit) frequncy =crystal frquncy / (510 * prescale
        pwm (9bit) frequncy =crystal frquncy / (1022 * prescale
        pwm (10bit) frequncy =crystal frquncy / (2046 * prescale
        که فرکانس کریستال در فرمولات بالا عبارت است از فرکانس اصلی کریستال خارجی یا همان فرکانس اصلی کریستال داخلی میکرو . prescale هم که در همان پیکره بندی ابتدایی میکرو انتخاب شده است . و طبق فرمول که میدانیم زمان تناوب از رابطه ی T=1/F به دست می اید . مثلا برای موج با فرکانس 50 هرتز زمان تناوب برابر 20 میلی ثانیه است . اما زمان تناوب چیست ؟ دانستن زمان تناوب در تعیین duty cycle دقیق بسیار مهم است . زمان چرخش یک دوره را دوره یا زمان تناوب می گویند در واقع زمان لازم برای ایجاد یک تناوب را زمان تناوب می گوییم. ما با دانستن مقدار زمان تناوب و اینکه چند درصد موج در صطح یک وچند در صد در صطح صفر است میتوانیم مقدار زمان یک بودن پالس رو به دست بیاریم مثلا اگر 78 درصد موج در صطح یک باشد و زمان تناوب 20 میلی ثانی باشد داریم 0.78*20=15.6 یعنی موج ما در 15.6 میلی ثانیه یک و در 4.4 میلی ثانیه صفر است . در قسمت بعد به بدست اوردن همین در صدها با کمک برنامه نویسی می پردازیم .
        موفقيت بدست آوردن چيزيست كه دوست داري و خوشبختي دوست داشتن چيزيست كه بدست آوردهآ‌اي.

        دیدگاه


          #5
          پاسخ : همه چیز درباره یpwm (همراه مثال)

          (قسمت سوم) در این قسمت با طرح یک مثال ساده به بررسی مطالب قبلی و تعیین دقیق duty cycle میپردازیم . به مثال زیر دقت کنید:

          "regfile = "M8DEF.dat$
          crystal = 6528000$
          Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 256
          Do
          Pwm1a = 10
          Loop
          End

          در این مثال ابتدا با توجه به پیکره بندی pwm متوجه میشویم که روی پایه ی oc1a یک موج با فرکانس 50 هرتز تولید میشود . طبق رابطه گفته شده : فرکانس = 6528000/(510 * 256) = 50
          طبق همین فرمول ساده شما با انتخاب بیت pwm و prescale و فرکانس اصلی میکرو میتوانید هر فرکانسی بسازید تنها نیاز به کمی سعی و خطا و استفاده از ماشین حساب دارید.
          و طبق رابطه T=1/F زمان تناوب مو ج ما 20 میلی ثانیه میباشد . دقت کنید در این پیکره بندی موج از سطح صفر شروع میشود .
          اما در دستور pwm1a=10 (همان compare1a) تمام نکات تولید duty cycle در این قسمت نهفته است . همانطور که در این مثال میبینید ما از تایمر یک برای تولید موج استفاده کردیم و pwm رو 8بیتی (8^2) انتخاب کردیم پس موج 256 ( دو بتوان 8 ) پله دارد . تایمر تا 255 میشمرد (از صفر تا 255 برابر 256 پله است) و صفر میشود ، با صفر شدن تایمر دو با ره وضعیت پایهoc1a معکوس میشود ، دو باره تایمر تا 10 میشمارد ، دوباره وضعیت پایه معکوس میشود و این روند مدام تکرار میشود . یعنی به طور مفهوم تر ابتدا سطح موج صفر است تایمر تا 10 میشمارد وسطح موج یک میشود حال دوباره تایمر ادامه میدهد و تا 255 میشمارد و مجددا صفر میشود با این حساب ، از 255 پله ، تعداد 10 عدد در صطح صفر و تعداد 245 عدد در سطح یک می باشد .در صورتی که 255 را صددرصد بگیریم ، میتواین بگوییم که 96.07 درصد موج را سطح یک ان تشکیل میدهدو در واقع ضریب مدولاسیون یا چرخه ی کار یا duty cycle برابر با 96.07 درصد است . وبا یک نسبت ساده وبا دانستن زمان تناوب 20 میلی ثانیه میفهمیم 96.07 درصد 20 عبارت است از 19.214 میلی ثانیه . یعنی موج ما 19.214 میلی ثانیه در سطح یک و 0.786 میلی ثانیه در صطح صفر است . حال مجددا با کمی سعی وخطا میتوان به هر عدد دلخواهی رسید مثلا با تغییر pw1a=25 میبینیم 90 درصد موج در سطح یک قرار میگیرد و همان نسیت های قبلی.
          در قسمت بعد با مثال دیگر انجام این رابطه هارو به صورت معکوس انجام میدهیم ویک کاربرد دقیق از این دقت pwm بیان میکنم.
          موفقيت بدست آوردن چيزيست كه دوست داري و خوشبختي دوست داشتن چيزيست كه بدست آوردهآ‌اي.

          دیدگاه


            #6
            پاسخ : همه چیز درباره یpwm (همراه مثال)

            (قسمت چهارم) ببینید دوستان عزیز استفاده بسیار دقیق از سیکل کاری pwm در بعضی پروژه ها اهمیت بسیاری دارد . برای نمونه یکی از ابزار بسیار دقیق برای پروژه های رباتیک سروو متور ها میباشند . این متور ها علاوه بر 2سیم زمین وتغذیه دارای یک سیم دیگر به نام سیم پالس یا سیگنال میباشند . با دادن پالسهای موجود در دیتا شیت این متورها شفت این متور ها در زاویه ی دلخواه قرار می گیرد . در ایران اکثر کاربران از سروو مدل sg-50 10 استفاده میکنند این سروو با پالس 420 us به زاویه 90- وبا پالس 2390 us به زاویه 90+ وبا پالس 1360 us به زاویه صفر درجه میرود .(با میان گیری میان عداد موجود به دست اوردن دیگر زوایا ممکن است) با دیدن این پالسها که فکر میکنم به صورت ازمون و خطا به دست امده اهمیت دقت پالسهای ایجاد شده در مد pwm اشکار است . در این موارد منظور از پالس مثلا 430 میکرو ثانیه این استکه موج تولید شده توسط pwm باید در مدت 430 میکرو ثانیه در سطح یک باشد در واقع در این گونه مثالها که ما نیاز به چندین سطح موج داریم تنها کافی است مقدار pwm1a یا pwm1b را به صورت یک متغیر تعریف کنیم و هرزمان که نیاز داریم در برنامه این متغیر را عدد دلخواه انتخاب کنیم تا به سطح مو ج دلخواه برسیم البته از قبل باید به صورت عملی برای هر عدد که به متغیر میدهیم سیکل کار را به دست اورده باشیم . قابل ذکر است ما برای سنجیدن این پالسها نیاز به اسکوپ داریم اما نرم افزار پروتوس یک ابزار بسیار قدرتمند برای این کار در نظر گرفته است که در قسمت بعد به صورت کامل در باره ی ان بحث میکنیم.
            موفقيت بدست آوردن چيزيست كه دوست داري و خوشبختي دوست داشتن چيزيست كه بدست آوردهآ‌اي.

            دیدگاه


              #7
              پاسخ : همه چیز درباره ی روابط pwm (همراه مثال)

              (قسمت پنجم) در این قسمت قصد دارم توضیحاتی در باره ی یک ابزار قدرتمند در پروتوس برای مشاهده ی پالسهای تولیدی بدم. بیشتر دوستان برای مشاهده پالسهای تولید شده در پروتوس از ابزار oscilloscope استفاده میکنند اما این ابزار اصلا دقت لازم رو نداره و مثلا برای مشاهده پالسهایی در رنج میکرو ثانیه شما رو با مشکلات بسیاری مواجه میکنه . اما در این نرم افزار ابزار دیگری وجود دارد که دقت ان بسیار بالا وخطای ان نزدیک به صفر است که به توضیح ان میپردازیم. ابتدا از منوی سمت چپ نرم افزار روی منوی graph mode کلیک کنید حالا از ابزار های نمایان شده روی گزینه ی digital کلیک کنید . حال موس را روی صفحه ی اصلی برده و با کلیک کردن و انتخاب سایز ابزار زکر شده رو روی صفحه بیارید . در این حالت یک کادر سبز رنگ با عنوان digital analysis ظاهر میشود . اما برای استفاده از این ابزار باید در سر هر پایه که میخواهید یک پراب ولتاژ قرار بدید . مثلا به عکس زیر توجه کنید در سر پین d.5 یک پراب ولتاژ قرار دادیم حال روی پراب راست کلیک کنید وگزینه ی drag object رو انتخاب کنید حال موس رو روی کادر سبز ظاهر شده ببرید و کلیک کنید(پرابو روی کادر بندازید)


              حال روی کادر سبز برید وبعد از راست کلیک کردن گزینه یsimulate graph رو انتخاب کنید و نتیجه ی کار رو مشا هده کنید . قابل ذکر است بعد از اجرای برنامه با راست کلیک کردن روی کادر سبز وانتخاب گزینه maximize با امکانات بیشتری روبه رو میشوید.
              موفقيت بدست آوردن چيزيست كه دوست داري و خوشبختي دوست داشتن چيزيست كه بدست آوردهآ‌اي.

              دیدگاه


                #8
                پاسخ : همه چیز درباره ی روابط pwm (همراه مثال)

                سلام
                ممنون خیلی اموزشتون خوب بود کلی 2 زاریمو انداخت فقط یه مشکل :

                یعنی با تغییر مقدار pwma1 فرکانس نوسانات عوض میشه ، درسته ؟

                اگه بخوام بازدن یه دکمه فرکانسم 1 هرتز و با زدن یه کلید دیگه فرکانسم 20 هرتز بشه ، محاسباتش چطوریه ؟
                تنظیمات اولیه (config) رو بر اساس کدوم فرکانس بذارم و برای هر فرکانس باید چه عددی تو pwm1a بریزم ؟
                (منظورم طریقه محاسبه مقادیره)
                http://www.eca.ir/forum2/index.php/topic,10159.0.html

                دیدگاه


                  #9
                  پاسخ : همه چیز درباره ی روابط pwm (همراه مثال)

                  دوست عزیز تغیر pwm1a تنها در تغییر duty cycle دخیله وفرکانس موج در همان پیکره بندی موج مشخص میشه
                  موفقيت بدست آوردن چيزيست كه دوست داري و خوشبختي دوست داشتن چيزيست كه بدست آوردهآ‌اي.

                  دیدگاه


                    #10
                    پاسخ : همه چیز درباره ی روابط pwm (همراه مثال)

                    سلام . اول اینکه من این پستو کامل خوندم و باید خیلی خیلی ازتون بابت این آموزش تشکر کنم دوم یه سوال داشتم که اگه بهم جواب بدید ممنون میشم . اگه بخام با pwm موج سینوسی تولید کنم چه کدی باید بنویسیم (بسکام) . میخام کنترل موتور ac رو با میکرو انجام بدم .ممنون

                    دیدگاه

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