سریمو موتور کنترل: راهنمای کامل
آموزشهای کلیدی:
تعریف کنترل سریمو موتور: کنترل سریمو موتور اجازه میدهد تا موقعیت، سرعت و شتاب موتور با استفاده از سیگنالهای الکترونیکی به طور دقیق کنترل شود.
سیستم بازخورد: سیستم بازخورد، معمولاً یک پتانسیومتر یا انکودر، مطمئن میشود که خروجی موتور دقیقاً با ورودی کنترل همخوانی داشته باشد.
سیگنال PWM: پالس-عرض مدولاسیون (PWM) برای تنظیم موقعیت سریمو با تغییر مدت زمان پالسهای الکتریکی حیاتی است.
آردوینو و سریمو موتورها: استفاده از برد آردوینو روشی محبوب و موثر برای برنامهنویسی و کنترل سریمو موتورها با تنظیمات سختافزاری کمی است.
کاربردهای سریمو موتورها: سریمو موتورها برای پروژههایی که نیاز به کنترل موقعیت دقیق دارند، مانند رباتیک و سیستمهای خودکار ضروری هستند.
سریمو موتور یک موتور طراحی شده برای دقت و صحت بالا در چرخش است. این موتور از موتور DC معمولی با قابلیت حفظ موقعیت خاص به جای چرخش مداوم متفاوت است. این ویژگی سریمو موتورها را برای رباتیک، اتوماسیون و پروژههای هابی مناسب میکند.
این مقاله توضیح میدهد که چگونه کنترل سریمو موتور عمل میکند، انواع مختلف سریمو موتورها و روشها و دستگاههای کنترل متنوع. همچنین مثالهایی از کاربردها و پروژههای سریمو موتور ارائه میدهد.
سریمو موتور چیست؟
سریمو موتور به عنوان یک актуатор تعریف میشود که اجازه میدهد کنترل دقیق موقعیت (زاویه)، سرعت و شتاب را فراهم کند. سریمو موتور معمولی شامل سه مولفه اصلی است: موتور DC، مدار کنترل و دستگاه بازخورد.
موتور DC سریمو را تغذیه میکند و به گیربکس متصل میشود که سرعت را کاهش میدهد و گشتاور روی محور خروجی را افزایش میدهد.

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

دستگاه بازخورد دادههای موقعیت را به مدار کنترل بازمیگرداند که سپس انرژی موتور DC را تنظیم میکند تا موقعیت فعلی با موقعیت مورد نظر از سیگنال ورودی هماهنگ شود.
حلقه بازخورد بین مدار کنترل و دستگاه بازخورد مطمئن میشود که سریمو میتواند به طور دقیق به هر موقعیت در محدوده حرکت خود برسد و آن را حفظ کند.
چگونه میتوان یک سریمو موتور را کنترل کرد؟
سریمو موتورها با ارسال یک سیگنال PWM (پالس-عرض مدولاسیون) به خط سیگنال سریمو کنترل میشوند. PWM تکنیکی است که سیگنال را به طور سریع روشن و خاموش میکند تا پالسهایی با عرضهای متفاوت ایجاد کند. عرض پالسها موقعیت محور خروجی را تعیین میکند.
به عنوان مثال، وقتی سیگنال PWM با عرض پالس 1.5 میلیثانیه (ms) ارسال میکنید، سریمو به موقعیت متعادل (90 درجه) حرکت میکند.

وقتی سیگنال PWM با عرض پالس 1 ms ارسال میکنید، سریمو به موقعیت حداقل (0 درجه) حرکت میکند. وقتی سیگنال PWM با عرض پالس 2 ms ارسال میکنید، سریمو به موقعیت حداکثر (180 درجه) حرکت میکند.
سیگنال PWM با فرکانس 50 Hz است که به معنای تکرار هر 20 ms است. عرض پالس میتواند از 1 ms تا 2 ms در این دوره متفاوت باشد.
راههای زیادی برای تولید و ارسال سیگنالهای PWM به سریمو موتورها وجود دارد. برخی از روشهای معمول عبارتند از:
استفاده از برد آردوینو یا یک میکروکنترلر دیگر
استفاده از یک پتانسیومتر یا سنسور آنالوگ دیگر
استفاده از یک جویستیک یا دستگاه ورودی دیجیتال دیگر
استفاده از یک کنترلکننده یا درایور سریمو اختصاصی
در بخشهای بعدی، هر یک از این روشها را به طور دقیقتر بررسی خواهیم کرد و مثالهایی از نحوه کار آنها را مشاهده خواهیم کرد.
کنترل سریمو موتور با آردوینو
آردوینو یکی از محبوبترین پلتفرمها برای کنترل سریمو موتورها است. بردهای آردوینو دارای خروجیهای PWM داخلی هستند که میتوانند سیگنالها را به سریموها ارسال کنند. آردوینو همچنین کتابخانه Servo را دارد که نوشتن کد برای کنترل سریمو را آسان میکند.
برای کنترل سریمو موتور با آردوینو، شما نیاز خواهید داشت:
یک برد آردوینو (مانند آردوینو UNO)
یک سریمو موتور استاندارد (مانند SG90)
سیمهای جامپر
یک برد آزمایشی (اختیاری)
سیم قرمز از سریمو به 5V برد آردوینو متصل میشود. سیم سیاه از سریمو به GND برد آردوینو متصل میشود. سیم سفید از سریمو به پین 9 برد آردوینو متصل میشود.
برای برنامهنویسی برد آردوینو، شما نیاز دارید تا از IDE آردوینو (آنلاین یا آفلاین) استفاده کنید. میتوانید یکی از مثالهای موجود در کتابخانه Servo را استفاده کنید یا کد خودتان را بنویسید.
کد زیر نشان میدهد چگونه میتوانید یک سریمو موتور را در 180 درجه با استفاده از یک حلقه for حرکت دهید:
#include <Servo.h> // Include Servo library
Servo myservo; // Create Servo object
int pos = 0; // Variable for position
void setup() {
myservo.attach(9); // Attach Servo object to pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Loop from 0 to 180 degrees
myservo.write(pos); // Write position to Servo object
delay(15); // Wait 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Loop from 180 to 0 degrees
myservo.write(pos); // Write position to Servo object
delay(15); // Wait 15 ms
}
}
این کد از دو حلقه برای افزایش و کاهش متغیر موقعیت از 0 تا 180 درجه و بالعکس استفاده میکند. سپس این مقدار را به شیء Servo با استفاده از myservo.write(pos) مینویسد. همچنین یک توقف 15 ms بین هر مرحله اضافه میکند تا حرکت کند.
این کد را با استفاده از دکمه Upload در IDE به برد آردوینو بارگذاری کنید و مشاهده کنید که سریمو موتور شما به طور صاف در 180 درجه حرکت میکند.
کنترل سریمو موتور با پتانسیومتر
پتانسیومتر یک سنسور آنالوگ است که میتواند مقاومتش را با توجه به چرخش دکمهاش تغییر دهد. میتوانید پتانسیومتر را به عنوان یک دستگاه ورودی برای کنترل سریمو موتور استفاده کنید.
برای کنترل سریمو موتور با پتانسیومتر، شما نیاز خواهید داشت:
یک برد آردوینو (مانند آردوینو UNO)
یک سریمو موتور استاندارد (مانند SG90)
یک پتانسیومتر (10k Ohms)
سیمهای جامپر
یک برد آزمایشی
نمودار برشی برای اتصال پتانسیومتر و سریمو موتور به برد آردوینو در زیر نشان داده شده است:
سیم قرمز از پتانسیومتر به 5V برد آردوینو متصل میشود. سیم سیاه از پتانسیومتر به GND برد آردوینو متصل میشود. سیم سبز از پتانسیومتر به پین A0 برد آردوینو متصل میشود.
سیم قرمز از سریمو به 5V در ردیف دیگری از برد آزمایشی متصل میشود. سیم سیاه از سریمو به GND در ردیف دیگری از برد آزمایشی متصل میشود. سیم سفید از سریمو به پین D9 در ردیف دیگری از برد آزمایشی متصل میشود.
برای برنامهنویسی برد آردوینو، شما نیاز دارید تا از همان کد مثال قبلی استفاده کنید اما چند خط را تغییر دهید:
#include <Servo.h> // Include Servo library
Servo myservo; // Create Servo object
int potpin = A0; // Pin connected to potentiometer
int val = 0; // Variable for reading potentiometer value
void setup() {
myservo.attach(9); // Attach Servo object pin D9
}
void loop() {
val = analogRead(potpin); // Read value from potentiometer (0 -1023)
val = map(val,0,1023,0,180); // Map value range (0 -180)
myservo.write(val); // Write mapped value Servo object
delay(15); // Wait 15 ms
}
این کد از تابع analogRead(potpin) برای خواندن مقدار از پتانسیومتر متصل به پین A0 استفاده میکند. سپس از تابع map(val,0,1023,0,180) برای نقشهبرداری محدوده مقدار از 0 تا 1023 به 0 تا 180 استفاده میکند. سپس مقدار نقشهبرداری شده را به شیء Servo با استفاده از myservo.write(val) مینویسد. همچنین یک توقف 15 ms مانند مثال قبلی اضافه میکند.
میتوانید این کد را با استفاده از دکمه Upload در IDE به برد آردوینو بارگذاری کنید. شما باید سریمو موتور خود را به طوری که مطابق با موقعیت دکمه پتانسیوم حرکت میکند مشاهده کنید.
کنترل سریمو موتور با جویستیک
جویستیک یک دستگاه ورودی دیجیتال است که میتواند جهت و مقدار حرکت را در دو محور تشخیص دهد. میتوانید جویستیک را برای کنترل سریمو موتور با نقشهبرداری محور x جویستیک به زاویه سریمو استفاده کنید.
برای کنترل سریمو موتور با جویستیک، شما نیاز خواهید داشت:
یک برد آردوینو (مانند آردوینو UNO)