اپلیکیشن زینگ | باربری آنلاین
زینگ - سامانه جامع حمل و نقل

تماس تلفنی

دانلود زینگ
خانه اپلیکیشن زینگ سامانه صادرات و واردات فروشگاه خدمات اطلاعاتی
خدمات جانبی
تماس با ما
زینگ - سامانه جامع حمل و نقل کشوری

تماس تلفنی

دانلود زینگ

جستجو
عضویت در سامانه صادرات، واردات، تجارت
گروه بازرگانی هومان پویان

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

کدویژن3

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

بازگشت به 0 در این شرایط تایمر می تواند وقفه ای ایجاد کند و باید یک روال سرویس وقفه (ISR) را برای مدیریت رویداد بنویسید.

سه تایمر مختلف در Atmega16 موجود است و همه تایمرها تقریباً به یک شکل کار می کنند. این تایمرها TIMER0 و TIMER1 و TIMER2 هستند.

استفاده از تایمر

مقسم:
«مقسم» (Prescaler) مکانیزمی برای تولید ساعت برای تایمر توسط ساعت CPU است. هر CPU دارای یک منبع ساعت است و فرکانس این منبع نرخ اجرای دستورات توسط پردازنده را تعیین می کند.

ساعت Atmega دارای چندین فرکانس مانند 1 مگاهرتز، 8 مگاهرتز، 12 مگاهرتز، 16 مگاهرتز (حداکثر) است. مقسم برای تقسیم این فرکانس ساعت و تولید ساعت برای تایمر استفاده می شود.

مقسم را می توان طوری تنظیم کرد که انواع زیر را تولید کند:

  • بدون ساعت (No Clock) یا توقف ساعت.
  • بدون تقسیم (فرکانس ساعت = فرکانس CPU).
  • FCPU/8.
  • FCPU/64.
  • FCPU/256.
  • FCPU/1024.
  • ساعت خارجی، اگرچه به ندرت استفاده می شود.

حالت های تایمر:
تایمرها معمولاً در یکی از حالت های زیر استفاده می شوند:

  • نرمال (Normal).
  • CTC.
  • PWM سریع (Fast PWM).
  • PWM تصحیح فاز (Phase correct PWM).

در ادامه، این حالت ها را توضیح می دهیم.

حالت نرمال:
تایمری که در حالت نرمال کار می کند، حداکثر مقدار خود را محاسبه می کند. وقتی به این حداکثر مقدار می رسد، یک وقفه سرریز صادر می کند و مقدار تایمر را به مقدار اولیه خود باز می گرداند.

وقفه سرریز

در مورد بالا، می توانید ببینید که دوره 256 برابر دوره ساعت است. 255 چرخه یا دوره ساعت برای دستیابی به حداکثر مقدار و یک چرخه ساعت برای پاک کردن مقدار تایمر مورد نیاز است. بنابراین، ftimer = fclock/256.

حالت CTC:
در اینجا نحوه استفاده از تایمر در حالت مقایسه را خواهیم دید. در حالت نرمال، ساعت تایمر را با استفاده از مقسم تنظیم می کنیم و اجازه می دهیم تایمر کار کند.

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

در حالت مقایسه از رجیستری استفاده می شود که به عنوان خروجی مقایسه می شود و مقدار انتخابی ما را ذخیره می کند.

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

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

می توان از آن برای تولید سیگنال PWM مورد استفاده برای پیاده سازی مبدل دیجیتال به آنالوگ (DAC) استفاده کرد که می تواند برای کنترل سرعت موتورهای DC استفاده شود.

به سادگی تولید، وقفه و فراخوانی یک ناظر (Handler) را انجام دهید.

در یک تطبیق مقایسه، تایمر خود را به 0 بازنشانی می کند که CTC (مخففِ Clear Timer on Compare Match به معنی پاک کردن زمان در تطبیق مقایسه) نامیده می شود.

در این حالت، فرض کنید ما پیشامد خود را طوری تنظیم کرده ایم که پین خروجی را تغییر دهد. در این حالت، پین خروجی برای یک دوره زمانی تایمر high باقی می ماند و برای یک دوره زمانی دیگر low خواهد ماند. بنابراین، tout = 2 × ttimer.

از حالت نرمال می توانیم برای پیدا کردن ttimer بنویسیم: ttimer = tclock × (OCR + 1).

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

بنابراین، می توانید به راحتی از آن برای کنترل وضعیت LED، یعنی روشن یا خاموش کردن آن استفاده کنید. به همین ترتیب، می توانید از آن برای روشن یا خاموش کردن هر وسیله برقی با استفاده از درایورهای مناسب (ترانزیستور، ترایاک، رله و غیره) استفاده کنید.

اما گاهی نیازی به کنترل «روشن» و «خاموش» دستگاه ندارید. به عنوان مثال، اگر می خواهید روشنایی یک LED (یا هر لامپ دیگری) یا سرعت موتور DC را کنترل کنید، سیگنال های روشن/خاموش دیجیتال کافی نخواهد بود.

این وضعیت بسیار هوشمندانه با تکنیکی به نام PWM یا «مدولاسیون پهنای پالس» (Pulse Width Modulation) اداره می شود.

PWM تکنیکی است که برای تولید سیگنال های آنالوگ از قطعات دیجیتال، مانند MCU، به کار می رود. در ادامه، با PWM و روش تولید PWM در کدویژن آشنا می شویم.

مدولاسیون پهنای پالس:
یک میکروکنترلر فقط می تواند دو سطح در خروجی خود ایجاد کند: HIGH = 5V و LOW = 0V. اما اگر بخواهیم 2٫5 ولت یا 3٫1 ولت یا هر ولتاژی بین 0 تا 5 ولت را به عنوان خروجی تولید کنیم، باید چه کاری را انجام دهیم؟

برای این کار، به جای تولید خروجی ولتاژ DC ثابت، یک موج مربعی تولید می کنیم که ویژگی آن HIGH = 5V و LOW = 0V است.

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

یک اصطلاح به نام «چرخه وظیفه» ( Duty Cycle) تعریف می شود:

d = ton/ttotal×100%

مشاده می کنید که چرخه وظیفه در مورد شکل بالا 50 درصد است. اگر فرکانس چنین موجی به اندازه کافی زیاد باشد (مثلاً 500 هرتز)، خروجی نصف 5 ولت یعنی 2٫5 ولت است. بنابراین، اگر این خروجی به موتور وصل شود (با استفاده از درایورهای مناسب)، در 50٪ سرعت کامل 5V کار می کند.

تکنیک PWM در کدویژن و میکروکنترلر از این حقیقت برای ایجاد هرگونه ولتاژ بین دو مقدار (به عنوان مثال بین 0 ولت و 12 ولت) استفاده می کند.

کافی است که چرخه وظیفه را بین 0 تا 100 درصد تغییر دهید و درصد مشابهی از ولتاژ ورودی را به خروجی به دست آورید.

به مثال های زیر توجه کنید.

pwm در کدویژن

در شکل بالا، چرخه وظیفه 75 درصد است. بنابراین معادل ولتاژ خروجی آنالوگ 3٫75 ولت خواهد بود.

pwm در کدویژن

در شکل اخیر، چرخه وظیفه 12٫5 درصد است. بنابراین ولتاژ خروجی آنالوگ 0٫625 ولت خواهد بود. می بینیم که به راحتی می توان به ولتاژهای دلخواه دست یافت.

کشتیرانی
حمل زمینی
وانت
حمل هوایی
نظر شما
نام و نام خانوادگی:

شماره تماس (نمایش داده نمی شود):

کد امنیتی: captcha

متن پیام: (نظر شما پس از بررسی منتشر خواهد شد)


مطالب مرتبط:
مخفی کردن >>