آموزش ESP32 17/55 - کنترل موتور سروو با استفاده از ESP32 و پتانسیومتر - کیت یادگیری IoT ESP32
در این آموزش، ما یاد خواهیم گرفت که چگونه یک موتور سروو را با استفاده از میکروکنترلر ESP32 و یک پتانسیومتر از کیت یادگیری IoT ESP32 شرکت سانفاندر کنترل کنیم. در پایان این پروژه، شما قادر خواهید بود که زاویه موتور سروو را به آرامی با استفاده از پتانسیومتر تنظیم کنید و کنترل دقیقی داشته باشید. این یک روش عالی برای کشف قابلیتهای ESP32 و نحوه برقراری ارتباط آن با موتورها است.

در حالی که به جزئیات میپردازیم، اجزای سختافزاری مورد نیاز، دستورالعملهای سیمکشی و نمونههای شِفر (کود) را برای راهاندازی همهچیز بررسی خواهیم کرد. برای نمایشی بصریتر، حتما ویدیوی مرتبط با این آموزش را مشاهده کنید (در ویدیو در 0:30).
توضیحاتی در مورد سختافزار
اجزای اصلی این پروژه شامل میکروکنترلر ESP32، یک موتور سروو (SG90) و یک پتانسیومتر است. ESP32 یک میکروکنترلر قدرتمند است که Wi-Fi و بلوتوث داخلی را ارائه میدهد و آن را برای پروژههای اینترنت اشیا مناسب میسازد. این دستگاه قادر است دستگاههای مختلف، از جمله موتورها، را با دقت بالا کنترل کند.
موتور سرو SG90 یک جزء پرکاربرد است که میتواند تقریباً ۲۷۰ درجه بچرخد. این موتور بر اساس سیگنال مدولاسیون عرض پالس (PWM) کار میکند، جایی که زاویه چرخش توسط عرض پالس ارسال شده به آن تعیین میشود. پتانسیومتر به عنوان یک مقاومت متغیر عمل میکند و به شما این امکان را میدهد که ولتاژ ارسال شده به ESP32 را تنظیم کنید که به نوبه خود موقعیت سرو را کنترل میکند.
جزئیات دیتاشیت
| تولیدکننده | SG |
|---|---|
| شماره قطعه | SG90 |
| ولتاژ منطقی/ورودی و خروجی | ۳.۳ ولت (ESP32) |
| ولتاژ تامین | ۵ ولت |
| جریان خروجی (به ازای هر کانال) | ۱.۲ الف |
| جریان اوج (برای هر کانال) | 2.5 آمپر |
| راهنمای فرکانس PWM | ۵۰ هرتز |
| آستانههای منطق ورودی | ۰.۲ ولت (پایین)، ۲.۵ ولت (بالا) |
| افت ولتاژ / RDS(on)/ اشباع | ۰.۵ ولت |
| محدودیتهای حرارتی | حداکثر 85 درجه سانتیگراد |
| بسته | پلاستیک |
| یادداشتها / واریانتها | در انواع مختلف تجهیزات در دسترس است |
- اطمینان حاصل کنید که سرو با ولتاژ مناسب (۵ ولت) تامین شود.
- پایهٔ زمین سرو را به زمین ESP32 متصل کنید تا یک مرجع مشترک داشته باشید.
- از سیگنالهای PWM مناسب برای کنترل موقعیت سروو استفاده کنید.
- به نیازهای جاری سروو توجه داشته باشید؛ در صورت لزوم از منبع تغذیه خارجی استفاده کنید.
- برای جلوگیری از پیکربندی نادرست، در هنگام سیمکشی از درستی انتسابهای پایه اطمینان حاصل کنید.
دستورالعملهای سیمکشی

برای اتصال موتور سرو و پتانسیومتر به ESP32، ابتدا سیم زمین موتور سرو (معمولاً سیاه یا قهوهای) را به یکی از پایههای زمین روی ESP32 وصل کنید. سپس سیم توان (معمولاً قرمز) موتور سرو را به پایه 5V روی ESP32 وصل کنید. در نهایت، سیم سیگنال (معمولاً نارنجی یا سفید) را از موتور سرو به پایه وصل کنید.25روی ESP32.
برای پتانسیومتر، یکی از پایههای بیرونی را به پایه 3.3V روی ESP32 و پایه بیرونی دیگر را به زمین متصل کنید. پایه میانی پتانسیومتر باید به پایه متصل شود.34روی ESP32. این تنظیمات به ESP32 اجازه میدهد تا خروجی ولتاژ متغیر از پتانسیومتر را خوانده و از آن برای کنترل موقعیت سرو motor استفاده کند.
نمونههای کدنویسی و راهنمایی
شِفر (کود) زیر سروو را مقداردهی اولیه کرده و پارامترهای کنترل حرکت آن را تنظیم میکند:
#include
Servo myServo;
const int servoPin = 25;
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms
void setup() {
myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
myServo.setPeriodHertz(50); // Standard 50Hz servo
}
در این شِفر (کود)، ما شامل می شویمESP32Servoکتابخانه و ایجاد یک نمونه از سروو با نامmyServoما شماره پایه برای سروو را تعریف کرده و حداقل و حداکثر پهنای پالسی را که با محدودیتهای زاویهای سروو مطابقت دارد، تنظیم میکنیم.
بعدی، بیایید نگاهی به حلقهای بیندازیم که به طور مداوم سروو را به جلو و عقب میبرد:
void loop() {
for (int angle = 0; angle <= 180; angle++) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
for (int angle = 180; angle >= 0; angle--) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
}
این حلقه به تدریج زاویه را از ۰ تا ۱۸۰ درجه و سپس دوباره به حالت اولیه تغییر میدهد، با استفاده ازmapتابعی برای تبدیل زاویه به عرض پالس مربوطه برای سروو. هر تغییر با یک تأخیر کوتاه دنبال میشود تا سروو بتواند به آرامی به موقعیت جدید خود برسد.
نمایش / چه انتظاری باید داشته باشید
هنگامی که همه چیز متصل شد و شِفر (کود) بارگذاری شد، باید ببینید که موتور سرو به آرامی از 0 تا 180 درجه و برعکس حرکت میکند. اگر پتانسیومتر را تنظیم کنید، سرو باید موقعیت جدید را بر اساس ولتاژ ارائه شده توسط پتانسیومتر نشان دهد. در هنگام سیمکشی احتیاط کنید زیرا ممکن است قطعات شما آسیب ببیند (در ویدیو در :45).
علامتگذاری زمان ویدئو
- ۰۰:۰۰ آغاز
- 1:56 سرو موتور چیست؟
- 5:00 صفحه مدارک
- 6:33 توضیحات سیمکشی برای سروو
- انتخاب پورت COMP برای ESP32 در Arduino IDE ساعت ۷:۴۵
- شِفر (کود) آردوینو در 9:27 توضیح داده شده است
- ۱۴:۳۱ نمایش کنترل سرو با استفاده از ESP32
- قدرتدهی سروو غیر از 5 ولت
- ۱۸:۴۷ کنترل سروو بدون حلقه
- کنترل سرو با پتانسیومتر 20:15
- شِفر (کود) آردوینو سروو با پتانسیومتر توضیح داده شده :21:37
Common Course Links
Common Course Files
منابع و مراجع
-
مستنداتمدار ۱۷/۵۵ آموزش ESP32 - مستندات موتور سرو سافتندرdocs.sunfounder.com
فایلها📁
برگه مشخصات (pdf)
-
برگه داده موتور سرو DS5160
DS5160_datasheet.pdf0.33 MB
سایر فایلها
-
دانلود دیتاشیت SG90 (پیدیاف)
robojax-servo-sg90_datasheet.pdf