• اگر سمپادی هستی همین الان عضو شو :
    ثبت نام عضویت

تایمر(تولید پالس PWM)

  • شروع کننده موضوع
  • #1
ارسال‌ها
3,981
امتیاز
32,330
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
1390
هر موتور برای اینکه با سرعت مشخصی بچرخه، نیاز داره که پالس PWMبه تعداد مشخص تولید کنه. در واقع این کار با روشن و خاموش کردن موتور به اندازه کسری از ثانیه اتفاق می افته. PWM میتونه مقداری بین 0 تا255 داشته باشه. برای مثال وقتی 63 را به نسبت میدیم، هر ثانیه که به 255 بخش تقسیم شده، به اندازه 0.25 ثانیه روشن و به اندازه 0.75 ثانیه خاموش میشه. البته نه به این معنا که مثلا از 0 تا0.25 ثانیه موتور روشن واز 0.25 تا 1 ثانیه موتور خاموش بشه. بلکه این 63 دقیقا طوری تقسیم میشه که بین هر روشنی و خاموشی فاصله زمانی یکسانی وجود داشته باشه.
برای ایجاد پالسهای، در میکروکنترلر، سخت افزاری به اسم تایمر وجود داره. تنظیمات ویزارد این سخت افزار در کدویژن، در تگTimers به صورت زیرهست:
8c2705725a8b787deccd678487a6fbf2.bmp

1. Clock: System Clock
2. بزرگترین مقدار غیر صفر=Clock value
3. Mode: Fast PWM top=FFh
با تنظیم تایمر در این مد، PWM به صورت 255 سطحی تولید میشه.
4. Output: Non-inverted PWM
پس از تنظیمات فوق، در برنامه، از رجیسترهایOCR0,OCR1A,OCR1A,OCR2 استفاده میکنیم که هرکدوم به یکی از پینهای OC0,OC1A,OC1B,OC2میکروکنترلر مربوط هستند.
توجه کنید از اینجا به بعد در هرکجای برنامه که مقدارPWM تغییر کنه، مقدار جدید حتما باید به یکی از این ثباتها نسبت داده بشه. در غیر اینصورت موتور با همان سرعت قبلی به چرخش خودش ادامه میده.
پس از انجام تنظیمات ویزارد، از File-->program preview دستورات تولید شده را به برنامه اصلیتون کپی کنید. دقت کنید دستورات مربوط به Timers به طور کامل باید به برنامه اصلی منتقل بشه.
ad8e562992c745a45868c3fd002b9e8e.bmp
 
بالا