آردوینو آموزش آردوینو

آموزش آردوینو بخش یازدهم – استفاده از PWM در برنامه نویسی آردوینو

arduino-basic-tutorial-part-eleven-pwm-signal-digispark
نوشته شده توسط پریسا پوربلورچیان

مدولاسیون پهنای باند Pulse Width Modulation، یک تکنیک برای دریافت خروجی آنالوگ از دیجیتال است. کنترل دیجیتال برای ساخت یک موج مربعی استفاده می‌شود. سیگنالی که بین صفر و یک سوییج شده و فقط دو حالت دارد. الگوی خاموش و روشن میتواند ولتاژ را بین ۵ ولت یا ۳٫۳ ولت تا GND شبیه سازی کند. مدت زمان سپری شده در این بازه را عرض پالس PULSE WIDTH می‌نامند. برای به دست آوردن مقادیر آنالوگ متفاوت، باید عرض پالس PULSE WIDTH را شبیه سازی کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


PWM چیست یک بار برای همیشه


PWM در برنامه نویسی مخفف Pulse Width Modulation است که یک تکنیک خاص برای کنترل نور چراغ، دور موتور، کنترل سرو موتور و یا هر جایی که نیاز به دریافت خروجی آنالوگ از ابزارهای دییجتال داریم، استفاده می‌شود. خروجی پایه های دیجیتال به صورت موج مربعی و در دو حالت ۱ و ۰ است که منظور از ۱ همان ۵ ولت و صفر همان gnd است. با یک مثال بررسی می‌کنیم، اگر بخواهیم شدت نور یک ال ای دی را کم و زیا کنیم، عملا با استفاده از ۵ ولت و صفر ولت امکان پذیر نیست. زیرا در یک لحظه ال ای دی خاموش و در یک لحظه در بالاترین میزان نور خواهد بود اما میتوانیم مدت زمان سیگنال را کم و زیاد کنیم. اگر بتوانیم مدت زمان فعال و غیرفعال شدن سیگنال را با سرعت بیشتری انجام دهیم، در نتیجه میتوانیم بازه های بین ۰ تا ۵ولت را محاسبه کنیم. سه پارامتر اصلی PWM به صورت زیر است.

  •  TON = ON TIME = زمانیکه سیگنال در بالاترین حد HIGH است.
  • TOFF = OFF TIME = زمانیکه سیگنال در پایین ترین حد LOW است.
  • پریود = PERIOD =  حاصل جمع زمان TON و TOFF پریود گفته می‌شود.
  • دیوتی سایکل = DUTY CYCLE = درصد زمان هنگامی که سیگنال در بالاترین حد در مدت زمان مشخص باشد.

 به عنوان مثال در دیوتی سایکل ۵۰% و فرکانس ۱Hz، ال ای دی به مدت نیم ثانیه در بالاترین حد HIGH و به مدت نیم ثانیه دیگر در پایین تر حد LOW تغییر وضعیت میدهد. اگر فرکانس را تا ۵۰Hz افزایش دهیم، ال ای دی ها با نور بیشتری روشن خواهند شد. به تصویر زیر نگاه کنید. در دیوتی سایکل ۲۰ درصد، مدت زمان یا همان PERIOD کوتاه تر است و رفته رفته با افزایش دیوتی سایکل پریود طولانی تر خواهد شد. هر خط عمودی نشان دهنده ی یک دوره زمانی منظم است.

دیوتی سایکل در PWM آردوینو - دیجی اسپارک

 

مدولاسیون پهنای باند یا PWM در برنامه نویسی، یک تکنیک برای دریافت خروجی آنالوگ ANALOG از پایه های دیجیتال DIGITAL است. کنترل دیجیتالی یک موج مربعی صفر و یک در خروجی تولید می‌کند که بین ۰ و ۱ تغییر وضعیت دارد. این الگوی خاموش و روشن میتواند ولتاژ را بین VCC ( 5, 3.3 V) و GND را با مدت زمان سپری شده تغییر داده و شبیه سازی کند. مدت زمان روشن بودن ONTIME پهنای پالس نامیده می‌شود. برای دریافت مقادیر آنالوگ مختلف، بایستی پهنای باند را تغییر یا مدوله دهید. اگر همین الگو ON -OFF را با یک ال ای دی برای نمونه اجرا کنید. میتوانید ولتاژ ال ای دی را بین ۰ و ۱ با تغییر شدت نور در هر لحظه مدیریت کنید. 

موج مربعی PWM در آردوینو - دیجی اسپارک

 

در این تصویر خطوط سبز، نشان دهنده ی یک دوره زمانی منظم است. این مدت زمان همان فرکانس PWM است. فرکانس PWM آردوینو ۵۰۰ هرتز است که با توجه به این تصویر هر ۲ میلی ثانیه اندازه گیری می‌شود. با فراخوانی AnalogWrite بازه مقیاس بین ۰ تا ۲۵۵ است. به طوریکه اگر مقدار Analogwrite برابر با ۲۵۵ باشد، دیوتی سایکل ۱۰۰ درصد است.

اگر مقدار AnalogWrite برابر با صفر باشد، دیوتی سایکل ۰ درصد خواهد بود.

به همین ترتیب بازه های بین ۰ تا ۱۰۰ درصد مقادیر متفاوتی از آنالوگ رایت را در اختیار میگیرد. در دیوتی سایکل ۲۵ درصد مقدار Analogwrite برابر با ۶۴ است و در دیوتی سایکل ۵۰ درصد مقدار analogwrite برابر با ۱۲۷ است.

آنالوگ رایت و دیوتی سایکل در PWM آردوینو - دیجی اسپارک

 


آردوینو و PWM


نرم افزار آردوینو دارای دستور داخلی analogWrite است که برای تولید سیگنال PWM استفاده می‌شود. فرکانس PWM برای هر پایه ۴۹۰Hz است و در خروجی مقداری بین ۰ تا ۲۵۵ را نمایش میدهد.

اگر مقدار analogWrite صفر باشد به این معنی است که دیوتی سایکل Dutycycle صفر است.

اگر مقدار analogWrite برابر با ۱۲۷ باشد، به این معنی است که دیوتی سایکل ۵۰ درصد است.

اگر مقدار analogWrite برابر با ۲۵۵ باشد به این معنی است که دیوتی سایکل ۱۰۰ درصد است.

آردوینو و PWM - دیجی اسپارک

 


استفاده از فانکشن analogWrite


فانکشن AnalogWrite یک مقدار آنالوگ PWM WAVE را بر روی یک پایه رایت می‌کند. از این تابع برای کنترل ال ای دی ها، سرو موتورها و موتورها استفاده می‌شود. پس از فراخوانی analogwrite یک موج مربعی با دیوتی سایکل مشخص بر روی پایه اعمال می‌شود. فرکانس سیگنال pwm در هر پایه تقریبا ۴۹۰Hz است.

 

روش فراخوانی 

 

  • منظور از پین پایه ای است که باید رایت شود.
  • منظور از value دیوتی سایکل است که بین عدد ۰ و ۲۵۵ است.

 

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

 

برای تست ماهیت PWM در آردوینو از یک ال ای دی و یک پتانسیومتر برای کنترل شدت نور و رایت مقادیر بر روی پایه استفاده می‌کنیم.

 

 


اتصال پروژه PWM با آردوینو


 

اتصال پروژه PWM با آردوینو - دیجی اسپارک

 

 تست نمونه کد آردوینو با SERVO MOTOR PWM

 

 

کد نویسی برای PWM آردوینو - دیجی اسپارک

 

راه اندازی سرو موتور با PWM آردوینو - دیجی اسپارک

 


جدول پایه های PWM در بردهای آردوینو


 

جدول پایه های PWM در بردهای آردوینو - دیجی اسپارک

 

 


مثال هایی برای PWM


PWM چندین استفاده دارد.

  •  کنترل ال ای دی DIMMING LED
  • تامین خروجی آنالوگ; اگر خروجی دیجیتال فیلتر شده باشد، ولتاژ آنالوگ بین ۰ تا ۱۰۰ درصد تامین می‌کند.
  • تولید سیگنال صدا
  • تامین کنترل دور موتور
  • تولید سیگنال مدوله شده

 


جمع بندی لیدی پای


  استفاده از PWM در برنامه نویسی آردوینو پرکاربردترین دستورات برنامه نویسی است. از PWM برای کنترل خروجی و روند افزایشی و کاهشی چراغ ها، کنترل دور موتور استفاده می‌شود. برای کدنویسی آردوینو برای اعمال دستورات از تابع فانکشن analogWrite استفاده می‌شود که مقدار دیتا را در همان پایه رایت می‌کند. در متن آموزش دو آموزش راه اندازی ماهیت PWM نوشته شده است و با یک بار اجرای دستورات میتوانید نحوه ی عملکرد و فراخوانی را یاد بگیرید.

 

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲ دیدگاه