کنترل موتور سروو آردوینو با استفاده از پتانسیومتر

کنترل موتور سروو آردوینو با استفاده از پتانسیومتر

در این آموزش، ما به بررسی نحوه کنترل یک موتور سروو با استفاده از یک پتانسیومتر و آردوینو خواهیم پرداخت. هدف ایجاد یک مدار ساده است که در آن موقعیت سروو بر اساس چرخش پتانسیومتر تنظیم می‌شود. در پایان این پروژه، شما یک مدل عملی خواهید داشت که به آرامی زاویه سروو را از ۰ تا ۱۸۰ درجه در حین چرخاندن پتانسیومتر تغییر می‌دهد. این یک روش عالی برای درک اصول ورودی آنالوگ و کنترل سروو در آردوینو است.

برای دستیابی به این هدف، ما از یک برد آردوینو، یک موتور سروو و یک پتانسیومتر استفاده خواهیم کرد. پتانسیومتر به عنوان یک مقاومت متغیر عمل می‌کند و ورودی آنالوگ را به آردوینو ارائه می‌دهد که سپس موقعیت موتور سروو را بر اساس آن تعیین می‌کند. این پروژه نه تنها سرگرم‌کننده است بلکه آموزشی نیز هست، زیرا مفاهیم کلیدی در الکترونیک و برنامه‌نویسی را نشان می‌دهد. برای توضیحات بیشتر، حتماً ویدیو را مشاهده کنید (در ویدیو در 00:00).

توضیح سخت‌افزار

در این پروژه، اجزای اصلی شامل برد آردوینو، موتور سروو و پتانسیومتر هستند. آردوینو مغز عملیات است که ورودی‌ها را پردازش کرده و خروجی‌ها را کنترل می‌کند. موتور سروو بر اساس دستورات دریافتی از آردوینو به‌طور فیزیکی حرکت خواهد کرد. پتانسیومتر می‌تواند از ۱ کیلو اهم تا ۱ مگا اهم باشد و به کاربران این امکان را می‌دهد که ورودی متغیری ارائه دهند که به حرکت سروو تبدیل می‌شود.

موتور سرو با دریافت سیگنال PWM (مدولاسیون عرض پالس) که موقعیت مورد نظر را نشان می‌دهد، کار می‌کند. پتانسیومتر، هنگامی که چرخانده می‌شود، مقاومت خود را تغییر می‌دهد که توسط آردوینو به عنوان یک ولتاژ آنالوگ خوانده می‌شود. موتور سرو با ۵ ولت کار می‌کند. با ۳.۳ ولت کار نمی‌کند. این ولتاژ سپس به دامنه حرکت موتور سرو نگاشته می‌شود و حرکت نرم از ۰ درجه تا ۱۸۰ درجه را امکان‌پذیر می‌سازد.

جزئیات برگه داده برای موتور سروو SG90

تولیدکنندهپارالاکس
شماره قطعهSG90
ولتاژ منطقی/ورودی و خروجی۵ ولت
ولتاژ تأمین۴.۸-۶ ولت
جریان خروجی (به ازای هر کانال)~۵۰۰ میلی آمپر
جریان اوج (به ازای هر کانال)۱ A
راهنمایی فرکانس PWM۵۰ هرتز
آستانه‌های منطقی ورودی۰.۵ ولت (پایین)، ۲.۵ ولت (بالا)
افت ولتاژ / RDS(on)/ اشباع۰.۵ ولت در ۵۰۰ میلی‌آمپر
محدودیت‌های حرارتی۰ درجه سانتی‌گراد تا ۶۰ درجه سانتی‌گراد
بستهسروو استاندارد 9 گرم
یادداشت‌ها / واریانت‌هابه طور معمول در برنامه‌های RC استفاده می‌شود

  • اطمینان حاصل کنید که سروو از حداکثر میزان جریان خود فراتر نرود.
  • از یک هیت سینک استفاده کنید اگر سروو به طور مداوم تحت بارهای بالا کار می‌کند.
  • پتانسیومتر را به یک پایه آنالوگ متصل کنید تا خوانش‌های دقیقی داشته باشید.
  • در مورد زمان‌بندی سیگنال PWM برای کنترل سروو احتیاط کنید.
  • محدوده حرکت سروو را بررسی کنید تا از موانع فیزیکی جلوگیری شود.

دستورالعمل‌های سیم‌کشی

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

برای این تنظیم، شما باید اجزا را به صورت زیر متصل کنید:

پایه وسط پتانسیومتر (وایپر) را به پایه آنالوگ آردوینو متصل کنید.A0دو پایه دیگر پتانسیومتر باید به متصل شوند به5VوGNDبر روی آردوینو. برای موتور سرو، سیم قرمز را به5V، سیم سیاه بهGNDو سیم زرد یا سفید به پایه دیجیتال9بر روی آردوینو. این ترتیب اجازه می‌دهد تا پتانسیومتر یک ورودی آنالوگ به آردوینو ارائه دهد که موقعیت موتور سرو را بر اساس آن ورودی کنترل خواهد کرد.

اطمینان حاصل کنید که تمام اتصالات را بررسی کرده و مطمئن شوید که سروو در دامنه حرکتی خود مسدود نشده است. اگر از مدل دیگری از آردوینو استفاده می‌کنید، تأیید کنید که تخصیص پایه‌ها برای ورودی آنالوگ و خروجی سروو سازگار است.

نمونه‌های شِفر (کود) و راهنمایی

در زیر بخشی از شِفر (کود) که سروو را راه‌اندازی کرده و مقدار پتانسیومتر را می‌خواند، آمده است:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

در این شِفر (کود)، کتابخانه سروو را شامل می‌شویم و یک شیء سروو به نامmyservoسروو به پایه متصل است9که به ما اجازه می‌دهد تا آن را با استفاده از این پایه کنترل کنیم.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

در تابع حلقه، مقدار پتانسیومتر را از پایه می‌خوانیمA0و آن را از دامنه‌اش (۰-۱۰۲۳) به دامنه سروو (۰-۱۸۰ درجه) نگاشت کنید.myservo.write(pos)سپس فرمان سروو را به موقعیت مورد نظر بر اساس چرخش پتانسیومتر منتقل می‌کند.

نمایش / چه انتظاری باید داشت

زمانی که این برنامه را اجرا می‌کنید، باید ببینید که موتور سرو به آرامی از ۰ تا ۱۸۰ درجه حرکت می‌کند در حالی که پتانسیومتر را می‌چرخانید. اگر سرو به طور مورد انتظار حرکت نکرد، سیم‌کشی را بررسی کنید و اطمینان حاصل کنید که پتانسیومتر به درستی کار می‌کند. علاوه بر این، اطمینان حاصل کنید که آردوینو به درستی تغذیه می‌شود و شِفر (کود) بدون خطا بارگذاری شده است. شما می‌توانید انتظار داشته باشید که سرو موقعیت پتانسیومتر را به صورت زنده نشان دهد (در ویدیو در ۰۲:۰۰).

زمان‌بندی ویدیو

  • ۰۰:۰۰- مقدمه‌ای بر پروژه
  • ۰۱:۳۰توضیح تنظیمات سخت‌افزاری
  • ۰۳:۴۵- دستورالعمل‌های سیم‌کشی
  • 05:00- مرور شِفر (کود)
  • ۰۷:۳۰- نمایش پروژه تکمیل شده

تصاویر

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
زبان: C++
کپی شد!

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

هیچ فایلی موجود نیست.