کنترل دقیق توان با PWM در آردوینو

  • نویسنده موضوع نویسنده موضوع Ali
  • تاریخ شروع تاریخ شروع

اطلاعات موضوع

درباره موضوع در تاریخ, در دسته آردوینو ایجاد شده و آغاز کننده آن Aliمی باشد و موضوع آن: کنترل دقیق توان با PWM در آردوینو است. این موضوع تا کنون 16 بازدید کننده و, 0 پاسخ داشته و 0 بار پسندیده شده...
نام دسته آردوینو
نام موضوع کنترل دقیق توان با PWM در آردوینو
آغاز کننده موضوع Ali
تاریخ شروع
پاسخ‌ها
0
بازدیدها
16
پسندها
0
آخرین ارسال توسط Ali

Ali

مسئول نظارت بر محتوا
پرسنل مدیریت
ناظم انجمن
Jun 7, 2020
984
1,269
مدولاسیون عرض پالس (PWM) یکی از تکنیک‌های اساسی و بسیار پرکاربرد در دنیای میکروکنترلرها، از جمله آردوینو، است. این تکنیک به ما امکان می‌دهد تا با استفاده از یک سیگنال دیجیتال، رفتاری شبیه به سیگنال آنالوگ را شبیه‌سازی کرده و به این ترتیب، توان متوسط اعمال شده به یک دستگاه الکترونیکی را کنترل کنیم. این قابلیت برای کاربردهایی مانند کم و زیاد کردن نور LED، کنترل سرعت موتورهای DC، تولید سیگنال‌های صوتی و بسیاری موارد دیگر حیاتی است.

PWM چیست و چگونه کار می‌کند؟

PWM در واقع یک روش برای تولید یک سیگنال شبه آنالوگ از یک منبع دیجیتال است. در این روش، یک سیگنال دیجیتال با فرکانس ثابت به صورت متناوب بین حالت "روشن" (HIGH) و "خاموش" (LOW) تغییر می‌کند. آنچه که کنترل می‌شود، "عرض پالس" یا مدت زمانی است که سیگنال در حالت HIGH قرار دارد.

دو پارامتر اصلی در PWM وجود دارد:

1. چرخه کاری (Duty Cycle): این پارامتر نسبت زمان "روشن" بودن سیگنال (HIGH) به کل دوره تناوب سیگنال را نشان می‌دهد و معمولاً به صورت درصدی بیان می‌شود.
* اگر چرخه کاری 0% باشد، سیگنال همیشه LOW است (دستگاه خاموش).
* اگر چرخه کاری 100% باشد، سیگنال همیشه HIGH است (دستگاه با حداکثر توان روشن).
* اگر چرخه کاری 50% باشد، سیگنال نیمی از زمان HIGH و نیمی از زمان LOW است (دستگاه با نصف توان روشن).

2. فرکانس (Frequency): این پارامتر تعداد دفعاتی است که چرخه PWM در یک ثانیه تکرار می‌شود. فرکانس PWM در آردوینو معمولاً ثابت است (برای اکثر پین‌ها حدود 490 هرتز و برای پین‌های 5 و 6 حدود 980 هرتز در بردهای Uno و Nano). بالا بودن فرکانس باعث می‌شود که چشم انسان یا موتور نتواند تغییرات سریع روشن و خاموش شدن را تشخیص دهد و یک اثر پیوسته ایجاد شود.

پین‌های PWM در آردوینو

همه پین‌های دیجیتال آردوینو قابلیت PWM را ندارند. پین‌هایی که از PWM پشتیبانی می‌کنند، معمولاً با علامت " ~ " در کنار شماره پین مشخص شده‌اند. در برد آردوینو Uno و Nano، این پین‌ها عبارتند از: 3، 5، 6، 9، 10 و 11.

استفاده از تابع analogWrite()

در محیط برنامه‌نویسی آردوینو، برای تولید سیگنال PWM از تابع analogWrite() استفاده می‌شود. این تابع بسیار ساده است:

C++:
محتوای بلوک کدها در دسترس شما نیست. برای مشاهده بلوک کدها، وارد انجمن شوید یاثبت نام کنید

  • pin: شماره پین دیجیتالی که می‌خواهید سیگنال PWM را از آن خارج کنید (باید یکی از پین‌های PWM باشد).
  • value: یک عدد صحیح بین 0 تا 255. این مقدار چرخه کاری را تعیین می‌کند.
* 0 به معنای 0% چرخه کاری (همیشه LOW) است.
* 255 به معنای 100% چرخه کاری (همیشه HIGH) است.
* مقادیر میانی (مثلاً 127) چرخه کاری متناسب را ایجاد می‌کنند (127/255 تقریباً 50%).

این تابع از رزولوشن 8 بیتی استفاده می‌کند، به این معنی که 256 سطح مختلف از توان (از 0 تا 255) را می‌توان کنترل کرد.

مثال کاربردی: کم و زیاد کردن نور LED

یکی از ساده‌ترین و رایج‌ترین کاربردهای PWM، کنترل روشنایی یک LED است. با تغییر مقدار value در تابع analogWrite()، می‌توانیم نور LED را به آرامی کم یا زیاد کنیم.

C++:
محتوای بلوک کدها در دسترس شما نیست. برای مشاهده بلوک کدها، وارد انجمن شوید یاثبت نام کنید

در این کد، یک LED به پین 9 آردوینو متصل شده است (به همراه یک مقاومت سری برای محافظت از LED). حلقه اول for مقدار brightness را از 0 به 255 افزایش می‌دهد و نور LED را به تدریج زیاد می‌کند. حلقه دوم for همین کار را برعکس انجام داده و نور LED را کم می‌کند. تابع delay() برای ایجاد یک مکث کوتاه بین هر تغییر روشنایی استفاده شده تا تغییرات قابل مشاهده باشند.

کاربردهای دیگر PWM:

  • کنترل سرعت موتور DC: با تغییر چرخه کاری PWM، می‌توان ولتاژ متوسط اعمال شده به موتور را تغییر داد و در نتیجه سرعت چرخش آن را کنترل کرد.
  • سروو موتورها: سروو موتورها از سیگنال PWM خاصی برای تعیین موقعیت خود استفاده می‌کنند.
  • تولید سیگنال صوتی: با تغییر سریع چرخه کاری PWM، می‌توان سیگنال‌های صوتی با فرکانس‌های مختلف تولید کرد.
  • کنترل هیترها یا المنت‌های گرمایشی: برای تنظیم دمای خروجی.

محدودیت‌ها و نکات:

  • رزولوشن: رزولوشن 8 بیتی (256 سطح) برای اکثر کاربردها کافی است، اما در صورت نیاز به دقت بالاتر، باید از میکروکنترلرهای پیشرفته‌تر یا روش‌های دیگر استفاده کرد.
  • فرکانس: فرکانس ثابت PWM در آردوینو Uno/Nano برای برخی کاربردها (مانند کنترل موتورهای خاص) ممکن است ایده‌آل نباشد. تغییر فرکانس PWM امکان‌پذیر است اما نیاز به دستکاری رجیسترهای تایمر میکروکنترلر دارد که پیچیده‌تر است.
  • تفاوت با analogRead(): توجه داشته باشید که analogWrite() برای خروجی سیگنال شبه آنالوگ است، در حالی که analogRead() برای خواندن ورودی‌های آنالوگ از پین‌های آنالوگ (A0-A5) استفاده می‌شود.

با درک و استفاده صحیح از PWM، می‌توانید کنترل بسیار دقیق‌تری بر روی اجزای الکترونیکی پروژه‌های آردوینو خود داشته باشید و قابلیت‌های جدیدی را به آن‌ها اضافه کنید.
 

عقب
بالا