آموزش آردوینوآموزش الکترونیک

آموزش راه اندازی PWM با آردوینو Due – جلسه دوم

سلام. آموزش راه اندازی PWM با آردوینو Due – جلسه دوم را آماده کردیم.

پروژه استفاده از PWM در Arduino Due

برد آردوینو Due یک برد با پردازنده مرکزی ARM است که برای مهندسین الکترونیک و علاقمندان این عرصه طراحی شده است. معماری آرم در الکترونیک مدرت بسیرا تاثیر گذار بوده است. ما در همه جا از کنترلر های مبتنی بر ARM استفاده میکنیم. به طور مثال در موبایل، آیپد، لپ تاپ و …

ما در قسمت قبل اصول اولیه برنامه نویسی برد آردوینو Due را بررسی کردیم. آموزش شروع کار با آردوینو Due + ساخت LED چشمک زن

حالا در این آموزش قصد داریم با استفاده از سیگنال PWM تولید شده توسط Arduino due، روشنایی یک ال ای دی را کنترل کنیم. PWM یک ولتاژ متغیر نسبت به منبع تغذیه ایجاد میکند.

PWM چیست ؟

ما قبلاً بارها در مورد PWM صحبت کرده ایم و بحث PWM را برای آردوینو و AVR به طور کامل آموزش داده ایم.

چرخه وظیفه چیست ؟ Duty Cycle

به تصویر بالا نگاه کنید. اگر سوئیچ به طور مداوم طی یک مدت زمان بسته باشد، ال ای دی در این مدت به صورت مداوم روشن خواهد ماند. اگر سوئیچ به مدت نیم ثانیه بسته باشد و برای نیم ثانیه دیگر باز باشد، ال ای دی فقط در نیمه اول یک ثانیه روشن خواهد شد. به نسبت روشن بودن ال ای دی در کل زمان ، چرخه وظیقه یا Duty Cycle گفته میشود. چرخه وظیفه را میتوانید به صورت زیر محاسبه کنید.

چرخه وظیفه = زمان روشن /  (زمان روشن + زمان خاموش)

چرخه وظیفه = (0.5 / (0.5 + 0.5)) = 50٪

بنابراین متوسط ​​ولتاژ خروجی 50٪ ولتاژ باتری خواهد بود.

این حالت برای یک ثانیه اتفاق می افتد و می توانیم شاهد باشیم که LED برای نیمی از ثانیه خاموش و LED در نیمه دوم روشن است. اگر فرکانس این عمل از یک بار در ثانیه به 50 بار در ثانیه تبدیل شود، چشم انسان نمی تواند این فرکانس را ثبت کند. برای یک چشم معمولی، چراغ LED طوری بنظر میرسد که انگار فقط با نصفه ولتاژ روشن است. یعنی فکر میکنیم دارای نیمی از روشنایی اصلی است. بنابراین با کاهش بیشتر زمان روشن بودن ال ای دی، درخشندگی بسیار کمتر به نظر میرسد.

حتما ببینید :  نحوه استفاده از شیفت رجیستر در آردوینو (آموزش آردوینو #7)

ما برد due را طوری برنامه ریزی میکنیم که بتوانیم سیگنال پی وی ام را از آن دریافت کنیم. و برای نمایش نتیجه کار خود از یک ال ای دی استفاده کرده ایم. همچنین این پروژه مانند یک دیمر کار میکند و با استفاده از دو دکمه که در مدار قرار داده ایم میتوانید میزان چرخه وظیفه را کم و زیاد کنید.

پین های PWM در Arduino Due

12 کانال PWM (پین 2 تا پین 13) در DUE وجود دارد و ما می توانیم از یک یا همه آنها استفاده کنیم. در این آموزش آردوینو ما به ایجاد یک سیگنال PWM در PIN2 میپردازیم.

توضیحات مدار پروژه

شماتیک مدار این پروژه در تصویر زیر نشان داده شده است. همانطور که میبینید مدار به قطعات زیادی نیاز ندارد.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

پروژه استفاده از PWM در Arduino Due
قطعات را مانند تصویر بالا متصل کنید. دکمه ها به پین 14 و 15 متصل میشوند و ال ای دی نیز به پین 2 متصل میشود. استفاده از مقاومت ها جهت جلوگیری از نویز و فشار بالا میباشد.

قطعات مورد نیاز

  1. برد آردوینو Due
  2. منبع تغذیه (5 ولت)
  3. ال ای دی
  4. دکمه – دو عدد
  5. مقاومت 1 کیلو اهم – دو عدد
  6. مقاومت 220Ω

برنامه نویسی برد آردوینو Due

دریافت سیگنال PWM از DUE آسان است. Arduino IDE ویژگی های مفیدی را ارائه می دهد که مشکلات برنامه نویس را کاهش می دهد. اگر از برد آردوینو استفاده نکنید و بخواهید از میکروکنترلر به صورت تنها سیگنال PWM را دریافت کنید کار سختی در پیش دارید. اما آردوینو این کار را بسیار آسان کرده است و به ما یک سیگنال دقیق PWM را به آسانی تحویل میدهد.

به طور پیش فرض ، تمام پرونده های هدر و رجیسترها توسط Arduino IDE از پیش تعریف شده اند، ما فقط باید آنها را فراخوانی کنیم و اینگونه ما یک خروجی PWM در پین مورد نظر خواهیم داشت. همچنین برای دستیابی به سیگنال PWM باید دستورات خاصی را وارد کنیم.

در ابتدا همانطور که گفته شد پین های مورد نظر را معرفی میکنیم.

volatile int brightness = 0; // مقدار اولیه
void setup() 
{
  pinMode(2, OUTPUT); // معرفی پین ال ای دی به عنوان خروجی
  pinMode(14, INPUT); // معرفی پین دکمه
  pinMode(15, INPUT); // معرفی پین دکمه
}

ابتدا باید کانال خروجی PWM را انتخاب کنیم. انتخاب ما باید از 12 پین معرفی شده برای PWM در آردوینو Due باشد. ما در اینجا از پین 2 استفاده کردیم و آن را به عنوان خروجی تعریف میکنیم.

pinMode(2, OUTPUT)
analogWrite(pin, value)

باید با فراخوانی تابع “analogWrite (pin، value)” ویژگی PWM را فعال کنیم. در اینجا “pin” شماره پین ​​را که در آن به خروجی PWM نیاز داریم قرار میدهیم. ما آن را به عنوان “2” قرار می دهیم. بنابراین در PIN2 ما به تولید PWM می پردازیم. “value” مقدار ON بودن چرخه وظیفه است و بین 0 (همیشه خاموش) و 255 (همیشه روشن) متغیر است.

حتما ببینید :  آموزش رجیستر AVR (آموزش AVR جلسه چهارم)

سپس در تابع void loop() یک حلقه بی پایان را شروع میکنیم که عملکرد دکمه ها و … را در آن تعریف میکنیم.

void loop() 
{
  if(digitalRead(14)==HIGH)  // اگر دکمه متصل به پین 14 فشرده شد
  {
    if(brightness<255) // اگر مقدار روشنایی کمتر از 255 بود
    {
      brightness++;  // به مقدار روشنایی یکی اضافه شود
    }
    delay(20); // فرآیند اضافه شدن هر 20 میلی ثانیه تکرار شود
  }
    if(digitalRead(15)==HIGH) // اگر دکمه متصل به پین 15 فشرده شد
  {
    if(brightness>0) // اگر مقدار روشنایی بیشتر از 0 بود
    {
      brightness--; // از مقدار روشنایی یکی کم شود
    }
    delay(20); // فرآیند کم شدن هر 20 میلی ثانیه تکرار شود
  }
  analogWrite(2, brightness); // تعیین مقدار PWM و ارسال به پین 2
}

کد کامل :

volatile int brightness = 0; 
void setup() 
{
pinMode(2, OUTPUT);
pinMode(14, INPUT);
pinMode(15, INPUT);
}
void loop() 
{
if(digitalRead(14)==HIGH) 
{
if(brightness<255)
{
brightness++; 
}
delay(20); 
}
if(digitalRead(15)==HIGH) 
{
if(brightness>0)
{
brightness--;
}
delay(20);
}
analogWrite(2, brightness);
}

فیلم عملکرد مدار

ما برای تغییر مقدار PWM، دو دکمه را به برد DUE وصل کردیم. یک دکمه برای افزایش مقدار روشنایی و دیگری برای کاهش مقدار روشنایی است. پس از انجام برنامه نویسی با توجه به برنامه ریزی ، می توانیم با فشار دادن این دکمه ها میزان روشنایی را تنظیم کنیم. فیلم زیر نحوه کار این پروژه را نمایش میدهد.

جلسه بعد : آموزش کنترل سروو موتور با آردوینو Due – جلسه سوم

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن