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

آموزش راه اندازی PWM با برد آردوینو Due

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

پروژه استفاده از PWM در آردوینو Due

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

توجه داشته باشید از کد های این آموزش میتوان برای انواع برد های آردوینو استفاده کرد.

فیلم زیر نحوه کار این پروژه را نمایش میدهد.

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

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

PWM چیست ؟

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

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

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

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

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

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

جهت کسب اطلاعات بیشتر، مقاله PWM چیست را مشاهده کنید.

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

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

پین های PWM در Arduino Due

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

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

مدار پروژه PWM با آردوینو Due

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

پروژه استفاده از 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 (همیشه روشن) متغیر است.

سپس در تابع 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

5 (6 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

5 نظر

  1. سلام من میخوام یه راه انداز واسه استپ موتور ۵ فاز ۱۰ سیمه سرهم کنم،واسه یه cnc.میشه راهنمایی کنید؟

  2. سلام مهندس اگه همین سیستم رو بخاییم با دو کانال pwm داشته باشیم چه تغییری تو کد باید اعمال کنیم؟ ممنون

    1. سلام عزیز، از کد های مربوط به پین PWM باید دوبار قرار بدید و پین رو تعیین کنید، بهتر هست دوره آموزش آردوینو را مشاهده کنید.

  3. سلام
    وقتتون بخیر و خسته نباشید
    ممنون از سایت شما
    من یه برنامه ای pwm برای آردینو میخواستم که فرکانس خروجی 2 کیلو هرتز باشه و با استفاده از یک پتانسیومتر مقدار دیوتی سایکل رو تغییر بدم
    لازم به ذکره که من قدرت خوندم و اولین باره با اردینو میخوام کار کنم
    ممنون میشم بهم از طریق ایمیل اطلاع رسانی کنید تا پاسختون رو ببینم
    با تشکر از سایت خوبتون

    1. سلام جناب، همین آموزش کافی هست اگر نیاز به توضیح بیشتر دارید دوره آموزش آردوینو رو مشاهده کنید.

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

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