لوگو ملی یونی

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

سبد خرید شما خالی است.

کنترل سرعت موتور DC با آردوینو + فیلم

دسته بندی :آردوینو, آموزش 28 مرداد 1398 سامان کاظمی 2703
کنترل موتور DC با آردوینو

در این پروژه قصد داریم کنترل سرعت موتور DC را با آردوینو یاد بگیریم چرا که از موتور های DC در رباتیک و پروژه های الکترونیکی و صنعتی بسیار استفاده میشود.برای کنترل این نوع موتورها راه های بسیار زیادی وجود دار که ما در این پروژه از PWM آردوینو استفاده خواهیم کرد و با یک پیتانسیومتر میزان سرعت موتور را تعیین خواهیم کرد.

در پروژه ی قبل ما شروع کار با آردوینو و کنترل LED با کلید فشاری را آموزش دادیم.اگر بار اول است که میخواهید با آردوینو کار کنید حتما از آن پست ببینید

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

مدولاسیون عرض پالس (PWM=Pulse Width Modulation)

به طور خیلی ساده اگر بخواهیم از PWM صحبت کنیم بایستی بگوییم که PWM یک تکنیک است که با استفاده از آن میتوانیم ولتاژ یا پاور را کنترل کنیم.برای درک بهتر فرض کنید که 5 ولت را به موتور اعمال میکنید،موتور با سرعت بالا حرکت میکند;حال اگر این ولتاژ را به 3 ولت کاهش دهیم ، سرعت موتور نیز کاهش میابد.این مفهوم در پروژه برای کنترل ولتاژ با استفاده از PWM مورد استفاده قرار میگیرد.

در دل PWM یک مفهوم کاملا ساده نهفته وجود دارد به نام duty cycle که به صورت زیر تعریف میشود.

% Duty cycle = (TON/(TON + TOFF)) *100

Where, TON = HIGH time of the square wave
       TOFF = LOW time of square wave
مفهموم duty cycle
مفهموم duty cycle

حال به عکس بالا توجه کنید ، تا زمانی که کلید در یک دوره زمانی بسته باشد ، موتور در این مدت به طور مداوم روشن خواهد شد. حال اگر کلید برای 8 میلی ثانیه بسته شود و 2 میلی ثانیه باز شود در یک چرخه (cycle) ده میلی ثانیه ای در 8 میلی ثانیه روشن خواهد بود.حال اگر طبق فرمول بالا محاسبه کنید Ton=8 و Toff=2 در نتیجه یک duty cycle=80% خواهیم داشت یعنی در واقع 80 درصد انرژی باتری در آن دوره ی زمانی به موتور داده میشود.( چشم انسان توانایی دیدن اینکه 8 میلی ثانیه روشن و 2 میلی ثانیه خاموشی موتور را ندارد و چیزی که میبیند و درک میکند این است که موتور با 80% سرعت خود میچرخد.

در مابقی موارد شکل بالا نیز به همین صورت میتوان تحلیل و استفاده کرد.حال که با این مفاهیم آشنا شدیم سراغ راه اندازی پروژه میرویم.

وسایل و قطعات مورد نیاز برای کنترل موتور DC

آردوینو یونو Arduino UNOآردوینو یونوخرید از فروشگاه ملی یونی
موتور DCخرید از فروشگاه ملی یونی
ترانزیستور 2N2222خرید از فروشگاه ملی یونی
پتانسیومتر 100 کیلو اهم خرید از فروشگاه ملی یونی
خازن 0.1 میکروفاراد خرید از فروشگاه ملی یونی
برد بورد خرید از فروشگاه ملی یونی
سیم های اتصال خرید از فروشگاه ملی یونی

دیاگرام مداری و نحوه اتصال قطعات

دیاگرام مداری برای کنترل سرعت موتور DC در آردوینو
دیاگرام مداری برای کنترل موتور DC در آردوینو

کدنویسی پروژه با توضیحات

کدنویسی کامل پروژه کنترل موتور DC در آردوینو در پایان در اختیار شما قرار داده خواهد شد.

در قطعه کد زیر ما ابتدا تمامی متغیر ها را به همراه نوع آن مشخص میکنیم. c1 و c2  و پین آنالوگ A0 برای خروجی پتانسیومتر و پین 12 که PWM است.

int pwmPin = 12;
int pot = A0;
int c1 = 0;  
int c2 = 0;  

حال ، در کد زیر ، در تابع ()void setup پین A0 را به عنوان ورودی و پین 12 را خروجی در نظر میگیریم.

void setup()  {
  pinMode(pwmPin, OUTPUT); // پین 12 به عنوان خروجی
  pinMode(pot, INPUT);  // پین آنالوگ ورودی 
}

حال در تابع ()void loop مقدار A0 را با استفاده از دستور analogRead میخوانیم در متغیر c2 ذخیره میکنیم.سپس 1024 را از c2 کم کرده و در متغیر c1 ذخیره میکنیم.حال پین 12 را HIGH میکنیم(ولتاژ 5 ولت به آن اعمال میکیم).سپس یک تاخیر که مقدار آن را c1 مشخص میکند را اعمال کرده و سپس پین 12 را صفر میکنیم و یک تاخیر که این بار c2 مقدار آن را مشخص میکند را اعمال میکنیم.

void loop()
{
  c2= analogRead(pot);
  c1= 1024-c2;           
  digitalWrite(pwmPin, HIGH); // پین 12 را 5 ولت قرار میدهیم
  delayMicroseconds(c1);   // به اندازه متغیر سی1 میکرو ثانیه تاخیر ایجاد میکنیم
  digitalWrite(pwmPin, LOW);  // پین 12 را صفر میکنیم
  delayMicroseconds(c2);   // به اندازه متغیر سی2 میکرو ثانیه تاخیر ایجاد میکنیم
}

نحوه ی کار پروژه کنترل سرعت موتور DC

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

ما در این مدار از از یک پتانسیومتر (مقاومت متغیر) 100 کیلو اهمی برای کنترل سرعت موتور DC استفاده کرده ایم که به پایه ی آنالوگ A0 آردوینو متصل شده است و موتور DC نیز به پایه ی شماره 12 آردوینو که یک پایه ی PWM است متصل میکنیم.نحوه ی کار آن بسیار ساده است.مقدار ولتاژ آنالوگ از پایه ی A0 خوانده میشود.و این ولتاژ در پتانسیومتر قابل تغییر است.با کم و زیاد کردن پتانسیومتر ، ولتاژ نیز تغییر کرده و سرعت موتور نیز تغییر میکند و در واقع ما با پتانسیومتر پهنای پالس را کم و زیاد میکنیم و طبق مفهوم PWM و duty cycle سرعت موتور DC را کنترل میکنیم.


کدنویسی کامل پروژه کنترل سرعت موتور DC

int pwmPin = 12; // assigns pin 12 to variable pwm
int pot = A0; // assigns analog input A0 to variable pot
int c1 = 0;   // declares variable c1
int c2 = 0;   // declares variable c2

void setup()  // setup loop
{
  pinMode(pwmPin, OUTPUT); 
  pinMode(pot, INPUT);  
}

void loop()
{
  c2= analogRead(pot); 
  c1= 1024-c2;         // subtracts c2 from 1000 ans saves the result in c1
  digitalWrite(pwmPin, HIGH); 
  delayMicroseconds(c1);   
  digitalWrite(pwmPin, LOW);  
  delayMicroseconds(c2);  
}

فیلم از نحوه ی کارکرد پروژه کنترل سرعت موتور DC

کنترل و راه اندازی موتور DC
سامان کاظمی
سامان کاظمی

دانشجوی مهندسی برق دانشگاه سمنان

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

  چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد. چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد. چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد. چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد. چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.  

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

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

لینک کوتاه:
0