آموزش کنترل سرعت موتور DC با پتانسیومتر و آردوینو
سلام. آموزش کامل کنترل سرعت موتور DC با Arduino و پتانسیومتر و PWM (آموزش آردوینو #5) را آماده کردیم.
محتویات
چگونه سرعت موتور DC را با آردوینو کنترل کنیم ؟
موتور DC پرکاربردترین موتور در پروژه های روباتیک و الکترونیک است. برای کنترل سرعت موتور DC روشهای مختلفی داریم، ما در این آموزش آردوینو ما با استفاده از PWM سرعت موتور DC را کنترل می کنیم. در این پروژه قادر خواهیم بود سرعت موتور DC را با پتانسیومتر کنترل کنیم و می توانیم با چرخاندن دستگیره پتانسیومتر سرعت را تنظیم کنیم.
در قسمت قبلی سری آموزش های Arduino ، ما به طور کامل با مبحث آنالوگ به دیجیتال در برد های آردوینو آشنا شدیم. در این آموزش ما به آنالوگ به دیجیتال نیاز داریم پس حتما قسمت قبل را ببینید.
قسمت قبل : آموزش کامل آنالوگ به دیجیتال در Arduino (آموزش آردوینو #4)
PWM چیست ؟
PWM روشی است که با استفاده از آن می توانیم ولتاژ یا توان را کنترل کنیم. برای درک ساده تر آن ، اگر از 5 ولت برای تغذیه موتور استفاده کنید موتور با سرعت میچرخد، حالا ما ولتاژ را 2 ولت کم کنیم ، یعنی موتور با تغذیه 3 ولت با سرعت کمتری میچرخد. اما چگونه با آردوینو این سرعت را کم کنیم ؟ اینکار با استفاده از PWM انجام میشود. پیشنهاد میکنم مقاله PWM چیست را بخوانید.
همچنین اگر میخواهید الکترونیک را با فیلم های آموزشی یاد بگیرید، روی دوره آموزش الکترونیک کلیک کنید.
ما آموزش تغییر سرعت موتور DC با آردوینو را توسط یک پروژه به طور کامل شرح میدهیم.
پروژه کنترل سرعت موتور DC با پتانسیومتر
شماتیک مدار این پروژه را در تصویر زیر میبینید.
قطعات مورد نیاز این پروژه
- برد آردوینو Uno
- موتور DC
- ترانزیستور 2N2222
- پتانسیومتر 100 کیلو اهم
- خازن 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 خاموش بماند }
متوجه شدید ؟ دوباره به این تصویر دقت کنید :
اگر بخواهیم کد نوشته شده و این تصویر را با هم مرتبط کنیم. مقدار 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)
سلام خسته نباشد
میشه درباره علت انتخاب این نوع خازن و ترانزیستور در این پروژه توضیح دهید
مرسی ممنون