pwm يا مدولاسيون پهناي باند يكي از امكانات ميكرو هست كه از آن براي توليد پالس مربعي و ديگر پالس ها استفاده ميكنند در اين مدولاسيون دامنه پالس ثابت هست يعني دامنه 5 ولت  و فقط نسبت زمان صفر به يك آن تغيير ميكند .يا همون پهناي پالس تغيير ميكند.

براي درست كردن پالس pwm  ميشود  از تايمر هاي يك و دو استفاده كرد . 

هر كدوم از تايمر ها پيكره بندي خاص مربوط به خودشون را دارند كه يكي يكي اونارو ميگم .

فرض كنيم ميخواهيم از تايمر يك آيسي  استفاده كنيم  پايه هاي خروجي موج pwm مربوط به اين تايمر پايه هاي oc1a و oc1b هست .اين تايمر دو خروجي دارد كه هر كدوم را به طور جداگانه ميشود تنظيم كرد . يعني پالس را فقط ميتوانيم از اين پايه ها دريافت كنيم .

نحوه پيكره بندي تايمر يك در مد pwm به صورت زير هست.

Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down 

pwm1a=100

pwm1b=20

<<==========================================================>>

config timer1=pwm يعني ميكرو جان تايمر يك را براي ايجاد موج pwm ميخوام 

prescale=1 كه اين گزينه ميتواند 1 يا 8 يا 64 يا 256 يا 1024 باشد كه براي تنظيم فركانس موج pwm هست.

pwm=8  ميتواند 9 يا 10 بيتي  باشد هر چه اين بيت ها بيشتر باشد دقت موج بيشتر هست اگر 8 بيتي باشد شما 256 واحد آن را كم و زياد كنيد  اگر 9 باشد 512و 10 بيتي 1024 .

compare a pwm=clear up ميتواند clear down هم باشد اگر clear up باشد سطح پالس  پايه oc1a از يك شروع ميشود و اگر clear down باشد از سطح صفر شروع مشود .

 compare b pwm=clear up ميتواند clear down هم باشد اگر clear up باشد سطح پالس  پايه oc1b از يك شروع ميشود و اگر clear down باشد از سطح صفر شروع مشود .

حالا در خط بعد با قرار دادن عدد در جلوي pwm1a و pwm1b پهناي پالس خروجي روي پايه هاي oc1a و oc1b را مشخص ميكنيم . به اين ترتيب كه عدد جلوي pwm1a مربوط به پايه oc1a و عدد جلوي pwm1b مربوط به oc1b هست.

براي اينكه بهتر متوجه بشين يك مثال عملي ميزنم كه بهتر متوجه بشين اگر بخواين هم ميتوانيد با وصل كردن اسيلوسكوپ در پروتيوس به پايه هاي oc1a و oc1b شكل موج pwm را مشاهده كنيد.

.(توي پروتيوس كم و زياد شدن نور led قابل ملاحظه نيست بايد به صورت عملي مدار را ببنديد)

برای مشاهده کامل عکس ها آن ها را save کنید.

عکس برنامه

نقشه مدار (فقط آند led به پايه 15 وصل ميكنيد و كاتد را به زمين تغذيه ميكرو هم كه ايشالا وصل ميكنيد یعنی پایه ۷ میکرو به +۵ ولت و پایه ۸ میکرو به زمین یا همون gnd.)

نقشه پروتیوس برای 1LED

نقشه پروتیوس برای 6LED

من خودم این مدار را روی برد بورد بستم و عملا کار کردش را دیدم.

از این جا فایل HEX , BAS,و پروتیوس را دانلود کنید.