نحوه اتصال سروو موتور به ESP32
![](/wp-content/uploads/2023/12/نحوه-اتصال-سروو-موتور-به-ESP32.jpg)
محتویات
سرووموتور نوعی موتور است که برای کنترل دقیق حرکت یک دستگاه استفاده میشود. به طور معمول، سرووموتور شامل یک موتور DC، یک مدار کنترل و یک مکانیزم فیدبکی است. مکانیزم فیدبکی اطلاعاتی درباره موقعیت شفت موتور در اختیار مدار کنترل میگذارد و سپس براساس این اطلاعات، ثدرت موتور تنظیم میشود. این حلقه فیدبک، تضمین میکند که شفت موتور به همان مکانی که سیگنال کنترلی مشخص کرده، حرکت میکند. از سرووموتورها در پروژ هایی که کنترل دقیق موقعیت مدنظر است مثل رباتیک، ماشین های CNC و چاپگرهای سه بعدی استفاده میشود.
همچنین از آن ها در هواپیما برای کنترل سطوحی مانند بالابر یا شهپر استفاده میشود.
پس در این مطلی، نحوه اتصال سرووموتور SG-90 به ESP32 را بررسی کرده و طی این پروسه، شما را با مدار داحلی سرووموتور و نحوه کار ان آشنا میکنیم.
در انتها یک مدار ساخته و با کمی کدنویسی شما را به درک بهتری از سرووموتور و عملکردش میرسانیم. در گذشته یک سرووموتور کنترلی را به آردوینو Due متصل کردیم و همچنین یک سروو کنترل موقعیت با وزن ( سنسور نیرو) و پروژه های بسیار دیگری یا سرووموتور انجام داده ایم. اگر علاقه مند هستید، میتوانید آن ها را هم مطالعه کنید.
چگونه زاویه سروو موتور را کنترل کنیم؟
وظیفه سرووموتور، کنترل چرخش زاویه در یک سیستم کنترلی حلقه بسته و استفاده از فیدبک برای تنظیم سرعت و زاویه موتور برای رسیدن به نتیجه دلخواه است.
سرووموتور SG-90 که ما استفاده میکنیم، از یک سیستم کنترلی حلقه بسته برای کنترل موقعیت شفت یا محور موتور استفاده میکند. برای تغییر موقعیت بازوی موتور، تنها کافی است یک سیگنال PWM با فرکانس 50 هرتز و چرخه کار متغیر فراهم کنید.
برای کنترل زاویه شفت سرووموتور، باید قطاری از پالس ها را به سرووموتور بفرستیم، یک سرووموتور معمولی انتظار دارد که هر 20 میلی ثانیه یکبار، یک پالس با چرخه کار 50 هرتز دریافت کند. بورد کنترلی درون سرووموتور به گونه ای طراحی شده است که طول پالس نشان دهنده زاویه شفت سروو باشد. اگر پالس به مدت 1 میلی ثانیه HIGH باشد، زاویه سروو 0 درجه خواهد بود. پالس 1.5 میلی ثانیه ای شفت را به زاویه 90 درجه و یک پالس طولانی 2 میلی ثانیه ای بازو سروو را به 180 درجه مبرد. یک پالس به طول 1 تا 2 میلی ثانیه شفت سروو را به موقعیت 180 درجه میبرد.
اجزا سروو موتور SG-90
سرووموتور SG-90 یک دستگاه مقرون به صرفه و با توان مصرفی پایین است که در مصارف بسیاری کاربرد دارد. اجزای درونی سرووموتور SG-90 در تصویر پایین نشان داده شده اند.
همانگونه که در تصویر بالا مشاهده میکنید، برای در معرض دید گذاشتن قطعات درونی سرووموتور، آن را باز کرده ایم. درون موتور، دنده کاهنده، موتور اصلی، پتانسیومتر و بورد کنترل دیده میشود. پتانسیومتر فیدبک را به واحد کنترلی سروو میدهد که در آن موقعیت فعلی موتور با موقعیت دلخواه آن مقایسه میشود.
شرح پایه یا پین اوت سرووموتور SG-90
اغلب سرووموتورهایی که در فروشگاه ها پیدا میکنید، 3 پایه دارند. پایه های سروو SG-90 در تصویر پایین نشان داده شده اند.
- GND : این پایه، زمین مشترک سرووموتور و میکروکنترلر است.
- VCC : این پایه، پایخ تغذیه ولتاژ است که سروو را روشن میکند.
- Control : این پایه، ورودی یک میکروکنترلر یا هر مکانیزم کنترل دیگری است. ( میکروکنترلر به این پایه متصل میشود.)
سوالات متداول درباره سرووموتور SG-90
1-چرا نام این موتور، سرووموتور است؟
سرووموتور یک نام و اصطلاح کلی برای خواندن نوع خاصی از محرک های خطی یا چرخشی است. اساسا، این نام به اصطلاح سروومکانیزم (servomechanism) گرفته شده است و معنی آن، این است که موتور به طور مداوم زیرنظر گرفته شده تا حرکت را کنترل کند.
2-سرووموتور چه کاربردهایی دارد؟
سروو موتورها یا سرووها، دستگاه های الکتریکی یا محرک های خطی ای هستند که میتوانند با زاویه دقیقی چرخیده و به قطعات ماشین فشار آورند. سرووها اغلب برای موقعیت های خطی یا زاویه ای به کار گرفته میشوند.
3- سرووموتور یک موتور AC است یا DC؟
دو نوع سرووموتور داریم. سروو های AC و سرووهای DC. تفاوت اصلی بین این دو نوع سروو، در منبع تغذیه آن هاست. سرووموتورهای AC از پریزهای برق تغذیه شده در حالیکه سزوو موتور های DC اغلب با باتری کار میکنند.
4-سرووموتور چیست و انواع آن کدامند؟
سرووموتورها در سه دسته کلی و در اندازه های مختلفی وجود دارند. این سه دسته، چرخش موقعیتی، چرخش مداوم و خطی هستند. سرووهای چرخش موقعیتی تا 180 درجه میچرخند. همچنین دارای توقف هایی در مکانیزم خود هستند تا شفت خروجی را از چرخش بیش از اندازه حفظ کنند.
5-تفاوت بین یک موتور DC و یک سرووموتور در چیست؟
سرووموتور یک سیستم سه سیمه به نام های سیم تغذیه، زمین و کنترل است. دارای چهار موتور DC، یک مجموعه دنده، یک مدار کنترل و یک سنسور موقعیت است. یک موتور DC، یک ماشین مجزا و تکی است که مونتاژ ندارد. این موتورها در بازوها یا پاهای رباتیک و کنترل رادرها استفاده میشوند.
مدار اتصال سروو موتور و ESP32
حال که با عملکرد سرووموتور آشنا شدیم، میتوانیم تمام سیم کشی های لازم را به ESP32 انجام داده و برای کنترل سروو کد بنویسیم. اتصال سرووموتور به ESP32 بسیار ساده است. تنها کافی است که پایه تغذیه سرووموتور و میکروکنترلر را به هم و پایه کنترل موتور را هم به یک پایه GPIO میکروکنترلر وصل کنیم. مدار اتصال کامل کنترل سرووموتور با ESP32 را در تصویر پایین مشاهده میکنید.
مدار اصلی را در نصویر پایین مشاهده میکنید. برای مدار سخت افزاری، ESP32 را به بورد متصل کرده و با استفاده از سیم های جامپر، سروو را به ESP32 وصل کرده ایم.
کد آردوینو برای اتصال سرووموتور و ESP32
درک راه اندازی سروو با ESP32 بسیار آسان است. در این کد، تنها کافی است یک پایه تعریف کرده و بقیه کار را به ESP32 بسپاریم. اما پیش از آن، باید کتابخانه esp32 servo motor را دانلود کنیم. به محض اینکه این کتابخانه دانلود و نصب شد، میتوانیم پروسه کد نویسی را آغاز کنیم.
کد خود را با فراخوانی تابع Servo.h شروع کرده و یک نمونه از کلاس Servo تعریف میکنیم. سپس یک متغیر به نام pos که موقعیت حساب شده سروو را در خود ذخیره خواهد کرد، تعریف میکنیم.
#include <Servo.h> Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0;
سپس تابع ()setup را فراخوانی میکنیم. در این تابع، با استفاده از متد attatch که در کتابخانه Servo.h موجود است، پایه ESP32 GPIO را به عنوان سیگنال کنترلی خروجی تنظیم میکنیم.
void setup() { myservo.attach(26); // attaches the servo on pin 13 to the servo object }
در تابع ()loop، دو حلقه for داریم. اولین حلقه for موتور را از 0 تا 180 درجه چرخانده و حلقه for دوم، موتور را 180 درجه تا 0 درجه میچرخاند. این پروسه تا قطع شدن منبع تغذیه ادامه پیدا خواهد کرد.
void loop() { for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } }
کدنویسی این پروژه، در اینجا به پایان میرسد و حال میتوانیم به بخش بعدی برویم.
عملکرد ماژول سروو با ESP32
ویدیوی زیر، مدار سخت افزاری کنترل سرووموتور SG-90 را با ESP32 نشان میدهد. همانطور که قبلا اشاره شد، ESP32 را به گونه ای برنامه نویسی کرده ایم که موتور به طور مدارم از 0 تا 180 درجه و از 180 درجه تا 0 درجه بچرخد و ویدیوی یر هم بیانگر همین امر است.
در اتصال سرووموتور به مشکل برخورده اید؟ این کار را انجام دهید!
گاهی اوقات سروو به دلیل اتصال مستقیم به منبع تغذیه ESP32 به درستی کار نمیکند. زیرا هنگام راه اندازی موتور زیاد جریان کشیده و دارای پیک های جریان است که میتواند میکروکنترلر را ریست کرده یا به آن آسیب دائمی وارد کند. برای حل این مشکل، میتوانید یک خازن الکترولیتی نسبتا بزرگ ( 470 تا 1000 میکروفارادی) بین 5V و GND اضافه کنید. خازن به عنوان یک مخزن عمل کرده و هنگامی که موتور جریان بالایی میکشد، خازن آن را جریان را تامین میکند و ESP32 با مشکل مواجه نمیشود. خازن دو پایه دارد. پایه بلندتر را به 5V و پایه دیگر را به زمیین متصل کنید.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام گفته بودید که کتابخانه سروو در esp32 نیست و یه روش دیگه هست
میشه اون روش بگید
سلام عزیز
در دوره ESP32 آموزش داده شده است.
سلام خسته نباشید
کتابخانه سروو رو از کجا باید پیدا کنم؟
میتونید سایت کتابخانه رو بذارید؟
سلام عزیز
برای ESP32 کتابخانه سروو نیست باید از روش دیگری استفاده کنید. در دوره ESP32 آموزش داده شده است.
با سلام و خسته نباشید اگر بخواهیم سروو موتور را مستقیم به برد وصل نکنیم و از درایور استفاده کنیم این کار چگونه انجام میشود
سلام عزیز
سوال را در انجمن مطرح کنید که امکان ارسال تصاویر باشد