تایمرهای مدولاسیون پهنا پالس

آموزش تایمرهای مدولاسیون پهنا پالس

آموزش تایمرهای مدولاسیون پهنا پالس

آموزش تایمرهای مدولاسیون پهنا پالس (PWM) در میکروکنترلرها:

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

مقاله ی اول درمورد ویژگی های عمده اکثر انواع تایمرها است و تایمرهای دوره ای را پوشش می دهد. اگر با عملکرد کلی تایمرهای میکروکنترلر آشنایی ندارید، توصیه می کنم مقاله اول را قبل از این آموزش مطالعه کنید.

تایمرهای PWM معمولا برای کنترل حرکت و LED های کم نور استفاده می شوند. نمونه هایی از کاربردهای آن در این آموزش برای شما آورده شده است.

آموزش چرخه کار PWM:

در این آموزش، چرخه کار میزان زمانی است که یک سیگنال دیجیتال نسبت به زمان سیگنال، در حالت فعال قرار دارد و معمولا به صورت درصد نشان داده می شود. مثالا، یک موج مربع با زمان بالای برابر و زمان کم برابر، دارای چرخه کار 50٪ است. در این آموزش نمودارهایی وجود دارد که چرخه ی کار را به صورت کلی نشان می دهد.

تایمرهای مدولاسیون پهنا پالس

( شکل 1. نمایش مفهوم چرخه ی کار )

آموزش محاسبه تایمر میکروکنترلر چرخه کار:

براساس مثال بالای آموزش، چگونه چرخه کار را محاسبه می کنیم؟

اگر زیاد فعال باشد، چرخه کار:

اگر سیگنال را کم فعال تعریف کنیم، چرخه کار 70٪ است.

مرور کلی بر تایمر PWM:

در این آموزش نموداری از زمان بندی نوعی سیگنال PWM وجود دارد.

تایمرهای مدولاسیون پهنا پالس

( شکل 2. یک نمونه نمودار زمان بندی PWM را می بینید)

شمارنده از 0 تا یک مقدار اضافی در یک ثبت مدول(ضریب) حساب می کند. با رسیدن مدول، شمارنده در ساعت بعدی به 0 می رود. مدول در اینجا مقدار 9 است و تعداد حالت های شمارنده 9 + 1 یا 10 است. تا زمانی که تایمر فعال باشد شمارش به سادگی تکرار می شود. خروجی شمارنده به سمت منطق پهنا می رود، زمانی که شمارنده سرریز می شود، خروجی را زیاد می کند و وقتی شمارنده با ثبت پهنا مطابقت داشته باشد، خروجی را کم قرار می دهد.

پهنای خروجی پالس در زمان اجرا، توسط تغییر مقدار در ثبت پهنا، تغییر می کند. این عمل با خطوط نقطه نشان داده شده است. همانطور که در نمودار بعدی این آموزش نشان داده شده است، پهنای دوره(زمان) و پالس با بارگذاری مقدار مناسب در یک ثبت(رجیستر) تنظیم می شوند. برای نمودار زمان بندی بالا، ثبت دوره شامل مقدار 9 است و ثبت پهنای آن مقدار 2 را شامل می شود.

در این آموزش یک نمودار بلوکی از نوعی تایمر PWM نشان داده شده است.

تایمرهای مدولاسیون پهنا پالس

( شکل 3. نمودار بلوکی تایمر PWM )

یک ساعت توسط یک پیش تقسیم کننده، مجزا می شود و برای یک دوره شمارنده به کار می برند. مدت دوره ی شمارنده با رجیستر(ثبت) مدول یا دوره تنظیم می شود. خروجی دوره ی شمارنده به سمت چندین کانال از منطق پهنای پالس می رود. پهنای پالس هر کانال به طور مستقل کنترل می شود زیرا هر کانال دارای رجیستر یا ثبات پهنای جداگانه ای است.

در این آموزش توجه داشته باشید که دوره تمام کانال ها یکسان است زیرا آنها دوره شمارنده مشابه ای را به اشتراک می گذارند اما پهنای پالس متفاوت است.

آموزش کنترل موتور PWM:

استفاده مهم از تایمرهای PWM، کنترل موتور است. نمودار زیر یک نوع راه اندازی نشان می دهد که سیگنال PWM به سمت یک کنترل کننده ی موتور می رود که یک موتور را کنترل کند. (اگر می خواهید PWM را در عمل مشاهده کنید، به روبات C-BISCUIT  AAC  نگاهی بیندازید، که برای کنترل سرعت موتور از مدولاسیون پهنای پالس استفاده می کند)

تایمرهای مدولاسیون پهنا پالس

( شکل 4. نمودار بلوکی ساده شده ای از راه اندازی PWM )

نمودار زمان بندی آموزش زیر نشان دهنده ی مثالی است که، جهت و میزان گشتاور با سیگنال PWM کنترل می شود.

این زمان بندی 50٪ PWM  نامیده می شود، به این معنی که چرخه کار 50٪، هیچ گشتاوری تولید نمی کند و چرخه های کار بزرگتر یا کمتر از 50٪، مقدار گشتاور را در دو جهت کنترل می کنند.

تایمرهای مدولاسیون پهنا پالس

( شکل 5. مثالی که در آن دو عملکرد گشتاور، به وسیله ی سیگنال PWM کنترل می شوند )

3 مورد، چرخه کار 50٪ است و موتور حرکت نمی کند. 2 مورد از چرخه کار بیشتر از 50٪ است و موتور در جهت عقربه های ساعت با گشتاور متناسب با مقدار چرخه کاری که بیشتر از 50٪ است، حرکت می کند. 1 مورد از چرخه کار کمتر از 50٪ است و موتور در خلاف جهت عقربه های ساعت با گشتاور متناسب با مقدار چرخه کاری که کمتر از 50٪ است، حرکت می کند.

مثالی از آموزش سرو موتور PWM:

 مثال دیگر این آموزش، سرو موتور است که زاویه محور را با توجه به پهنای پالس تغییر می دهد. برای نمونه، یک پالس 1.5 میلی ثانیه، محور را تا 0 درجه تنظیم می کند. تغییر عرض پالس از 1.5 میلی ثانیه به 1 میلی ثانیه از 0 درجه به 90- درجه می چرخد و از 1.5 میلی ثانیه به 2 میلی ثانیه از 0 تا 90+ درجه می رود.

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

تایمرهای مدولاسیون پهنا پالس

( شکل 6. تغییر سرعت و جهت چرخش موتور مطابق با سیگنال PWM کنترل می شود )

دوره 20 میلی ثانیه است و پالس با فعالیت زیاد، جهت و سرعت را کنترل می کند. زمانی موتور حرکت نمی کند که پهنای پالس، 1.5 میلی ثانیه باشد. پهن تر از 1.5 میلی ثانیه سرعت را در جهت خلاف جهت عقربه های ساعت افزایش می دهد و باریک تر از 1.5 میلی ثانیه، باعث می شود که موتور در جهت عقربه‌های ساعت حرکت کند.

آموزش کنترل شدت LED با استفاده از یک تایمر PWM:

  مثالی دیگر از استفاده چرخه کار یک تایمر PWM، کنترل شدت LED است. در این آموزش طرح کلی را می بینید:

تایمرهای مدولاسیون پهنا پالس

( شکل 7. تصویر اولیه برای یک LED که توسط یک تایمر PWM کنترل می گردد )

هنگامی که خروجی تایمر کم است LED روشن است و زمانی خاموش است که خروجی بالا باشد. تایمر، یک خروجی به سرعت در حال تغییر ایجاد می کند که LED را به سرعت کافی، خاموش و روشن می کند بنابراین چشم به طور متوسط زمان را روشن می کند و تغییر شدت را درک می کند و نه چشمک می زند و نه خاموش می شود.

تایمرهای مدولاسیون پهنا پالس

( شکل 8. سه مورد LED کنترل شده از PWM برای LED های روشن تر، کم رنگ تر و متوسط )

نمودار سه مورد را نشان می دهد. مورد روشن تر در بیشتر دوره ها کم(پایین) است و LED، روشن تر از حالت کم رنگ تر ظاهر می شود که برای مدت زمان کمتری، کم است.

تنظیم زمان بندی سرو موتور:

در این آموزش، پیچیده ترین قسمت استفاده از تایمر PWM، تنظیم پارامترهای زمان بندی برای رو به رو شدن با مقررات دستگاه های خارجی است. فکر می کنم یک تایمر PWM به عنوان نوعی مبدل دیجیتالی به آنالوگ است (DAC). ( در واقع، یک PWM می تواند به عنوان DAC، با برخی ازکمک های فیلتر پایین گذر استفاده شود.)

ولتاژ خروجی DAC، مقدار دیجیتالی را در خود می گیرد و آن را به ولتاژ خروجی آنالوگی تبدیل می کند. در حقیقت، کوچکترین تغییر در خروجی آنالوگ زمانی رخ می دهد که، مقدار دیجیتال توسط یک تعداد تغییر کند.

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

برای تایمر PWM، وضوح خروجی یا کوچکترین تغییر ممکن در دوره یا پهنای خروجی پالس، یک دوره از ساعتی است که به سمت دوره شمارنده می رود. برای نمونه در این آموزش، اگر مدت زمان وارد شدن به دوره ی شمارنده 10 میکروثانیه (با فرکانس 100 کیلوهرتز) باشد، وضوح زمان بندی خروجی دوره و پهنای پالس، 10 میکروثانیه است.

در این بخش از آموزش، پارامترهای زمان بندی را برای كنترل سرو موتور با چرخش مداوم تعیین می كنم. برای ارجاع به نمودار زمان بندی شکل 6 نگاه کنید.

اطلاعات مربوط به تایمر PWM برای تعیین زمان بندی:

  • فرکانس زمان: 24 مگاهرتز
  • گزینه های پیش تقسیم کننده: تقسیم بر 1 ، 2 ، 4 ، 8 ، 16 ، 32 ، 64 یا 128
  • دوره شمارنده و رجیستر پهنا: 16 بیت پهنا یا 65536 شمارش

شرایط لازم برای موتور سرو در این آموزش نشان داده ایم:

  • دورهPWM: 20 میلی ثانیه
  • پهنای پالس PWM برای موتور متوقف شده: 1.5 میلی ثانیه
  • پهنای پالس PWM برای حداکثر سرعت CCW: 2 میلی ثانیه
  • پهنای پالس PWM برای حداکثر سرعت CW: 1 میلی ثانیه

آموزش انتخاب مقدار پیش تقسیم کننده:

بخش اول تنظیم این آموزش، انتخاب یک مقدار تقسیم برای پیش تقسیم کننده است. اگر مقدار خیلی کوچک باشد (زمان سریع)، حداکثر دوره یا مدت زمان PWM با استفاده از شمارنده ی 16 بیتی، خیلی کوتاه است. در صورتی که مقدار بزرگ باشد (زمان آهسته)، وضوح زمان بندی، ضعیف است و کنترل درشت وجود دارد. یک مکان خوب برای شروع، تعیین بالاترین فرکانس ممکن درون دوره شمارنده، fPC ، دادن یک دوره خروجی 20 میلی ثانیه است.

اگر فرکانس ورودی زیاد باشد، برای به دست آوردن دوره مورد نظر، باید از یک مدول(ضریب) تعداد زیاد استفاده کنیم. حالا بیایید مدول یا ضریب 60000 را امتحان کنیم و فرکانس ورودی دوره شمارنده را مشخص کنیم.

زمان ورودی پیش تقسیم کننده، 24 مگاهرتز است. بنابراین، مقدار تقسیم پیش تقسیم کننده،P، است:

جالب است در این آموزش بدانید، من می توانم برای یک مجموعه پیش تقسیم کننده با تقسیم 8 و یک مدول(ضریب) دوره شمارنده 60،000 برای دوره PWM از 20 میلی ثانیه، استفاده کنم. حالا وضوح زمان بندی خروجی پالس را می دانیم. وضوح زمان بندی، مدت زمان 3 مگاهرتزی یا 0.333 میکروثانیه است.

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

آموزش انتخاب مقادیر برای رجیستر(ثبت) پهنای پالس:

انتخاب مقادیر رجیستر پهنای پالس،W. پهنای پالس، tW، به دست می آید با:

در این آموزش، یک جدول با مقادیر W برای تنظیمات موتور مشخص شده، وجود دارد.

 

تایمرهای مدولاسیون پهنا پالس

مقدار آن در رجیستر پهنا برای کنترل کامل موتور از 3000 تا 6000، متغیر است. در نهایت، یک تعداد از مقادیر دوره و پهنای نوشته شده برای ثبت ها(رجیسترها) برای تنظیم تعداد 0 اضافی، کم می شود.

در این آموزش تمام مقادیر تایمر وجود دارد:

  • زمان فرکانس: 24 مگاهرتز
  • پیش تقسیم کننده: تقسیم بر 8
  • مدول یا ضریب شمارنده دوره: 59،999
  • رجیستر پهنای پالس برای موتور متوقف شده: 4،499
  • رجیستر پهنای پالس برای حداکثر سرعت CW: 5،999
  • رجیستر پهنای پالس برای حداکثر سرعت CCW: 2،999

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

توجه به وضوح کنترل:

تعداد شمارش از سرعت کامل متوقف شده در هر جهت، 1.500 است. بنابراین، وضوح کنترل یک بخش 1500 است، یعنی کمتر از 0.1٪. این وضوح بسیار بالا برای موتورهای سرو با سطح پایین است، اما وضوح بالا ممکن است به انواع دیگر موتورها نیازمند باشد.

در این آموزش توجه کنید که چگونه اولین قدم بالا، پیش تقسیم کننده را دنبال می کند. فرکانس بالاتر به دنبال دوره ی شمارنده ای می رود که وضوح بالاتری را نشان دهد.

روش دیگر برای بررسی این مسئله ی آموزش، استفاده از تعداد بیشتر دوره شمارنده است که وضوح بیشتری می دهد.

سخن دیگر:

گاهی اوقات کنترل شدید بین خروجی PWM و نرم افزار مهم می باشد. یک روش موثر برای همگام سازی این دو، وقفه است (برای کسب اطلاعات بیشتر در مورد وقفه ها به مقاله اول این مجموعه مراجعه کنید).

تایمرهای PWM، اغلب می توانند درخواست قطع یا وقفه را ایجاد کنند، زمانی که دوره شمارنده سرریز شود و هنگامی که منطق پهنای یک تطبیق را مشاهده می کند (پایان پالس خروجی)

اگر چندین کانال وجود داشته باشد، روال سرویس قطع یا وقفه معمولا رجیستر یک تایمر را می خواند تا پیدا کند کدام کانال درخواست وقفه را دارد.

آموزش های آینده:

آموزش مقاله بعدی درمورد ساعت زمان – حقیقی یا RTC است. RTC، قابلیت مهمی برای نگه داشتن دقیق زمان روز و تقویم، به میکروکنترلر می دهد.

پاسخی را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *