کنترل نور LED و سرعت موتور با PWM در آردوینو

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

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

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

Ali

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

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

PWM روشی برای کنترل توان متوسطی است که به یک بار الکتریکی (مانند LED یا موتور) تحویل داده می‌شود، با روشن و خاموش کردن سریع منبع تغذیه. به جای اینکه ولتاژ را به صورت پیوسته تغییر دهیم (که در خروجی‌های دیجیتال آردوینو ممکن نیست)، PWM با تغییر "عرض پالس" یا "Duty Cycle" این کار را انجام می‌دهد.

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

  • فرکانس (Frequency): تعداد دفعاتی است که سیگنال در یک ثانیه روشن و خاموش می‌شود. در آردوینو، فرکانس PWM برای اکثر پین‌ها حدود 490 هرتز و برای پین‌های 5 و 6 حدود 980 هرتز است. این فرکانس به اندازه‌ای بالاست که چشم انسان سوسو زدن LED را تشخیص نمی‌دهد و موتورها نیز به نرمی کار می‌کنند.

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

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

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

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

analogWrite(pin, value);

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

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

فرض کنید می‌خواهیم نور یک LED را به تدریج کم و زیاد کنیم.

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

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

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

  • کنترل سرعت موتورهای DC: با تغییر Duty Cycle، می‌توانیم سرعت چرخش موتور را کنترل کنیم.
  • کنترل موقعیت سروو موتورها: سروو موتورها از سیگنال PWM خاصی برای تعیین موقعیت خود استفاده می‌کنند.
  • تولید سیگنال‌های صوتی: با تغییر سریع Duty Cycle، می‌توانیم صداهای مختلفی تولید کنیم.
  • تولید ولتاژ آنالوگ: با فیلتر کردن سیگنال PWM (مثلاً با یک خازن)، می‌توانیم یک ولتاژ DC تقریباً ثابت با مقدار دلخواه تولید کنیم.

PWM یک ابزار قدرتمند در جعبه ابزار هر علاقه‌مند به آردوینو است که امکان کنترل دقیق و انعطاف‌پذیری بالایی را در پروژه‌ها فراهم می‌کند.
 

عقب
بالا