در قسمت دوازدهم آموزش میکروکنترلر AVR به بررسی مدهای غیر PWM در تایمر کانتر صفر از ATMEGA32 پرداختیم. در این قسمت از آموزش AVR قصد داریم مدهای PWM در تایمر کانتر صفر از ATMEGA32 را بررسی کنیم.
در قسمت قبل توضیح داده شد که در مد نرمال تولید شکل موج دارای فرکانس ثابت و دیوتی سایکل 50 درصد است؛ یعنی هم فرکانس ثابت و هم دیوتی سایکل ثابت است. البته با این فرض که از f clock io یا یکی از تقسیمات آن کلاک تایمر کانتر تأمین شود.
مد CTC
در مد CTC دیوتیسایکل پنجاهدرصد است؛ اما فرکانس از طریق OCR0 قابلتغییر است. در این قسمت در مورد مدهای PWM صحبت میکنیم که فرکانس در آنها ثابت است؛ اما دیوتیسایکل و نسبت بخش پای شکل موج نسبت به کل شکل موج قابلتغییر است و چهار وضعیت داریم، مد نرمال فرکانس ثابت دیوتیسایکل ثابت، مد CTC فرکانس متغیر دیوتیسایکل ثابت، در دو مد fast PWM و Phase Correct PWM که فرکانس ثابت است؛ ولی دیوتیسایکل متغیر است. در مد fast PWM وضعیت صفر برای دو بیت، امکان عملکرد پورت بهصورت نرمال را مهیا میکند.
باتوجهبه رجیستر پورت B پین شماره سه، وضعیت صفر یک، رزرو شده است و تعریف شده نیست. در ATMEGA32 برای تایمر صفر، وضعیت یک صفر و یک یک بهاینترتیب است که در وضعیت یک صفر، اگر شکل موج را بهصورت موج دندانارهای در نظر بگیریم، با فرض منظم بودن کلاک در نقطه پایین شکل موج یک خواهد شد؛ خروجی OC0 و با برابری با مقدار رجیستر OCR0 شکل موج صفر خواهد شد و به همین ترتیب، پالسی با عرض متغیر بسته به مقدار OCR0 ایجاد خواهد شد که عرض این پالس میتواند با تغییر OCR0، افزایش یا کاهش پیدا کند. فرکانس این شکل موج برابر خواهد بود با f clock io تقسیم بر N ضربدر 256 که با تغییر N البته فرکانس شکل موج قابلتغییر است؛ ولی با فرض ثابتبودن N و f clock io فرکانس این شکل موج عدد ثابتی خواهد بود. در شرایط یک یک عملکرد پین oc0، ـnot این وضعیت خواهد بود؛ یعنی در نقطه صفر شکل موج در وضعیت صفر است و در برابری با مقدار OCR0 عملاً not شکل موج بالا ایجاد خواهد شد.
مد Phase-Correct PWM
در مد Phase Correct PWM که این شکل موج را میتوانیم بهصورت یک موج مثلثی در نظر بگیریم، اگر وضعیت یک صفر برای این دو بیت تنظیم شود، در زمانی که این شکل موج در ناحیه صعودی خودش است، برابری با مقدار OCR0، سبب صفرشدن خروجی و در زمانی که در مسیر نزولی است، سبب یک شدن آن خواهد شد.
به همین ترتیب، در اینجا هم فرکانس ثابت است که مقدار آن برابر است با f clock io تقسیم N ضربدر 510، عدد 510 به این خاطر است که 255 کلاک نیاز است برای از صفر تا 255 و 255 کلاک نیاز است برای رسیدن از 255 به صفر، در اینجا دیوتی سایکل متغیر است.
در شرایطی که این دو بیت در شرایط یک یک باشند، شکل موج در این وضعیت OC0، ـ not خواهد بود. همچنین، از این فرمول و فرمول قبلی مشخص است که فرکانس کلاک در مد fast PWM تقریباً دوبرابر مد Phase Correct PWM است.
مدولاسیون PWM
مبحث PWM و استفاده از مدولاسیون PWM یکی از پرکاربردترین مباحث در رشته الکترونیک است که در بحث مدارات قدرت، کنترل دور موتور، رگولاتورهای سوئیچی، بحث کنترل نور و موارد متعدد دیگری قابلبررسی است که یکی از کاربردهای مدولاسیون استخراج یک شکل موج dc است که dc به معنای شکل موجی با فرکانس نسبتاً پایین است.
در قیاس با فرکانس موج PWM یا در حالت fast PWM ضریب 256 در مخرج است. اگر تفاوت زیادی بین فرکانس PWM و شکل موجی که آن مدولاسیون را اجرا می کند و در OCR0 قرار گیرد، وجود داشته باشد، ثابت می شود که با عبور آن شکل موج از یک فیلتر پایین گذر، آن شکل موج با فرکانس پایین که می تواند هر شکل موج دلخواهی باشد که در رجیستر OCR0 توسط خطوط کد قرار داده می شود ثابت می شود که با عبور از یک فیلتر پایین گذر آن شکل موج قابل استخراج است.
مزیت مدولاسیون fast PWM چیست؟
مزیت مدولاسیون fast PWM این است که به دلیل بالاتر بودن فرکانس PWM این امکان وجود دارد که با فیلترهایی با مرتبه پایینتر این شکل موج استخراج شود. مبحث PWM کاربردهای خاص خود را دارد و در نقطه مقابل Phase Correct PWM به دلیل تقارنی که نسبت به محور دارد، اگر ما وسط اینجا را در نظر بگیریم، تقارنی در این شکل موج است که نوع تقارن آن باعث میشود که این شکل موج در مواردی از جمله: کنترل موتور سهفاز کاربرد داشته باشد؛ در این مورد، استفاده از Phase Correct PWM به دلیل طیفی که ایجاد میکند، به لحاظ شکل موج خروجی مناسبتر است. درهرصورت، هر کدام از این دو نوع مدولاسیون PWM توسط fast PWM و Phase Correct PWM قابلانجام است.
هدف ما از توضیح این موارد، فقط بیان عملکرد تایمر کانتر صفر در ATMEGA32 است. یک بیت دیگر به نام forc output comper match وجود دارد. عملکرد این بیت در مدهای غیر PWM است. بهاینترتیب که یک کردن این بیت در مدهای غیر pwm شرایط comper match را از نظر ایجاد شکل موج خروجی شبیهسازی میکند و البته منجر به ایجاد وقفهای نخواهد شد و فلگ مربوط به وقفه comper match نخواهد شد؛ به این معنی که اگر با برابری مقدار تایمر کانتر با رجیستر OCR0 تغییری در شکل موج ایجاد شود، طبق توضیحاتی که داده شد، این عملیات میتواند توسط نرمافزار هم انجام شود؛ بدون اینکه واقعاً برابری ایجاد شود؛ به این معنی که با یک کردن این بیت در رجیستر TTCR0 تغییر در شکل موج توسط نرمافزار ایجاد شود و این عملیات مختص مدهای غیر PWM است.
نکته
نکتهای که باید به آن توجه کنیم این است که اگر جایی این تعداد ضرایب مهم باشد، این امکان وجود دارد که Prescaler ریست شود؛ یعنی از نقطه صفر شروع کند، به عملکرد در رجیسترهای به خصوصی این کار انجام میشود.
در اینجا باید به این نکته اشاره کنیم که بهمحض اینکه ما در کد متصل شویم، Prescaler ورودی کلاک تایمر کانتر را با همان تعداد کلاک ایجاد می کند. برای این کار Prescaler باید به طریق مناسب ریست شود.
در قسمت بعد از این آموزش، کدهایی را برای عملیاتیکردن عملکرد تایمر کانتر صفر با کد ویژن را برای شما مینویسیم و بحث کدنویسی را بررسی میکنیم تا اگر امکانش باشد، روی اُسیلوسکوپ بتوانیم مشاهده کنیم که عملکرد تایمر کانتر صفر بر اساس کدهای نوشته شده به چه صورت است.
در قسمت چهاردهم آموزش میکروکنترلر AVR، به انجام یک آزمایش عملی با تایمر کانتر 0، خواهیم پرداخت. با سیسوگ همراه باشید.
سری مقالات آموزش میکروکنترلر AVR توسط آقای مهندس کینژاد تهیه شده است.
سلام وقتتون بخیر
قسمت چهاردهم به بعد منتشر نمیکنید ؟
خیر متاسفانه میتونید از سایر دوره های رایگان موجود در وبسایت استفاده کنید.
https://sisoog.com/avr-microcontroller-training/
سلام
قسمت چهاردهم ب بعد کجا هستن ؟
سلام… به زودی قسمت های جدید منتشر میشه🌹