تبليغاتX
الکتور الکترونیک - مدولاسيون PWM-2
 
پروژه های الکترونیک میکروکنترلر دیجیتال مخابرات کامپیوتر
 
 
همان طور که اشاره شد يکی از راه های توليد 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 را نيز فعال کنيد.)

  نوشته شده در  جمعه نهم فروردین 1387ساعت   توسط ميلاد  | 
 
  POWERED BY BLOGFA.COM