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

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

سلام. آموزش کامل کنترل سرعت موتور DC با Arduino و پتانسیومتر و PWM (آموزش آردوینو #5) را آماده کردیم.

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

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

در قسمت قبلی سری آموزش های Arduino ، ما به طور کامل با مبحث آنالوگ به دیجیتال در برد های آردوینو آشنا شدیم. در این آموزش ما به آنالوگ به دیجیتال نیاز داریم پس حتما قسمت قبل را ببینید.

قسمت قبل : آموزش کامل آنالوگ به دیجیتال در Arduino (آموزش آردوینو #4)

PWM چیست ؟

PWM روشی است که با استفاده از آن می توانیم ولتاژ یا توان را کنترل کنیم. برای درک ساده تر آن ، اگر از 5 ولت برای تغذیه موتور استفاده کنید موتور با سرعت میچرخد، حالا ما ولتاژ را 2 ولت کم کنیم ، یعنی موتور با تغذیه 3 ولت با سرعت کمتری میچرخد. اما چگونه با آردوینو این سرعت را کم کنیم ؟ اینکار با استفاده از PWM انجام میشود. پیشنهاد میکنم مقاله PWM چیست را بخوانید.

برای یادگیری کامل آردوینو (برنامه نویسی حرفه ای، ارتباط با اندروید، ساخت ربات) ، روی دوره آموزش آردوینو کلیک کنید.

همچنین اگر میخواهید الکترونیک را با فیلم های آموزشی یاد بگیرید، روی دوره آموزش الکترونیک کلیک کنید.

ما آموزش تغییر سرعت موتور DC با آردوینو را توسط یک پروژه به طور کامل شرح میدهیم.

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

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

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

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

  1. برد آردوینو Uno
  2. موتور DC
  3. ترانزیستور 2N2222
  4. پتانسیومتر 100 کیلو اهم
  5. خازن 0.1uf
مطلب پیشنهادی:  پروژه تغییر سرعت فن وابسته دما با آردوینو

توضیحات کد آردوینو کنترل سرعت موتور

بحث اصلی ما در نوشتن کد برای کنترل سرعت موتور است. در اینجا ما به صورت خط به خط این مسئله را توضیح میدهیم.

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

مقدار PWM با استفاده از پتانسیومتر تعیین میشود. بنابراین باید یک پین را نیز برای پتانسیومتر در نظر بگیریم که در اینجا ما از پین آنالوگ A0 استفاده کرده ایم.

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

خب ممکن است برایتان سوال پیش بیاید که c1 و c2 چه هستند ؟ C1 و C2 دو متغیر هستند که آن ها را تعریف کردیم کمی بعد به آن ها به طور کامل میپردازیم.

حالا باید نوع پین های PWM و pot را تنظیم کنیم. در اینجا PWM به عنوان خروجی و pot به عنوان ورودی تنظیم میشود.

void setup()  {
  pinMode(pwmPin, OUTPUT); // تنظیم پین PWM به عنوان خروجی
  pinMode(pot, INPUT);  // تنظیم پین pot به عنوان ورودی
}

قسمت اصلی کد

اکنون ، در void loop() ، ما با استفاده از analogRead مقدار آنالوگ را از A0 را می خوانیم و آن را در متغیر c2 ذخیره می کنیم. سپس مقدار c2 را از 1024 کم میکنیم و نتیجه را در c1 ذخیره میکنیم.

دلیل کم کردن مقدار آنالوگ از 1024 این است که آنالوگ به دیجیتال برد Arduino Uno با دقت 10 بیتی است (بنابراین مقدار آن بین 0 تا 1024 است). به این معنی که ولتاژهای ورودی بین 0 تا 5 ولت را به یک عدد صحیح بین 0 تا 1024 تبدیل میکند. بنابراین اگر مقدار ورودی anlogValue را در 5/1024 ضرب کنیم ، مقدار دیجیتال ولتاژ ورودی را بدست می آوریم. در قسمت قبلی به طور کامل آنالوگ به دیجیتال را در آردوینو آموزش دادیم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
void loop()
{
  c2= analogRead(pot); // دستور خواندن مقدار آنالوگ پتانسیومتر
  c1= 1024-c2; // کم کردن مقدار پتانسیومتر از 1024          
  digitalWrite(pwmPin, HIGH); // روشن کردن پین pwm
  delayMicroseconds(c1);   // به مدت c1 روشن بماند
  digitalWrite(pwmPin, LOW);  // خاموش کردن پین pwm
  delayMicroseconds(c2);   // به مدت c2 خاموش بماند
}

متوجه شدید ؟ دوباره به این تصویر دقت کنید :

Duty Cycle (چرخه وظیفه) PWM اگر بخواهیم کد نوشته شده و این تصویر را با هم مرتبط کنیم. مقدار C2 میشود زمان Off Time و مقدار C1 میشود زمان On time. و به همین ترتیب با استفاده از PWM  و آنالوگ به دیجیتال سرعت موتور DC را کنترل میکنیم. یعنی با استفاده از پتانسیومتر مقدار Duty Cycle یا همان چرخه وظیفه را تغییر میدهیم.

فیلم عملکرد پروژه

کد کامل پروژه

int pwmPin = 12; 
int pot = A0; 
int c1 = 0;   
int c2 = 0;   
void setup() 
{
  pinMode(pwmPin, OUTPUT); 
  pinMode(pot, INPUT);  
}
void loop()
{
  c2= analogRead(pot); 
  c1= 1024-c2;         
  digitalWrite(pwmPin, HIGH); 
  delayMicroseconds(c1);   
  digitalWrite(pwmPin, LOW);  
  delayMicroseconds(c2);  
}

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

قسمت بعد : آموزش جامع اتصال LCD کاراکتری به برد آردوینو و ایجاد متن متحرک(آموزش آردوینو #6)

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

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

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

محمد رحیمی

محمد رحیمی

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

1 دیدگاه

  1. سلام خسته نباشد
    میشه درباره علت انتخاب این نوع خازن و ترانزیستور در این پروژه توضیح دهید
    مرسی ممنون

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

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