سه نوع موتور اصلی در رباتیک
موتور DC سادهترین نوع است — با اعمال ولتاژ میچرخد. سرعت آن با PWM و جهت با H-Bridge کنترل میشود. ارزان، قوی، و در همه جا پیدا میشود — اما دقت موقعیت ندارد مگر با encoder.
سرو موتور (Servo) یک موتور DC کوچک با گیربکس و انکودر داخلی است که به زاویه خاص میرود و آنجا میماند. با سیگنال PWM (پالس ۱–۲ms) کنترل میشود. برای فرمان، بازوها و مکانیزمهای دقیق ایدهآل است.
موتور پلهای (Stepper) بدون encoder هم موقعیت دقیق دارد — هر پالس الکتریکی آن را یک «قدم» میچرخاند (معمولاً ۱.۸°). برای CNC، پرینتر سهبعدی و ناوبری دقیق استفاده میشود اما گرانتر و سنگینتر است.
جدول مقایسه کامل
| ویژگی | موتور DC | سرو | پلهای |
|---|---|---|---|
| قیمت | خیلی ارزان | متوسط | متوسط |
| دقت موقعیت | ندارد (بدون encoder) | ±۱° | ±۱.۸° (full step) |
| سرعت | بالا | متوسط | پایین |
| گشتاور | بالا | متوسط | بالا (در سرعت کم) |
| درایور | L298N / L9110S | مستقیم از Arduino | A4988 / DRV8825 |
| کاربرد UGV | چرخ محرک اصلی | فرمان Ackermann | ربات دقیق، داخل ساختمان |
| پیچیدگی کد | ساده (analogWrite) | ساده (servo.write) | متوسط (step/dir) |
کد سریع — هر سه نوع
// ===== موتور DC با L298N =====
#define ENA 9 // PWM سرعت
#define IN1 7 // جهت
#define IN2 8
void dcForward(int speed){ // speed: 0-255
digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
analogWrite(ENA,speed);
}
// ===== سرو با کتابخانه Servo =====
#include <Servo.h>
Servo steer;
steer.attach(10);
steer.write(90); // مستقیم
steer.write(60); // ۳۰° چپ
steer.write(120); // ۳۰° راست
// ===== موتور پلهای با A4988 =====
#define STEP_PIN 3
#define DIR_PIN 4
void stepMove(int steps, bool dir){
digitalWrite(DIR_PIN, dir);
for(int i=0;i<steps;i++){
digitalWrite(STEP_PIN,HIGH); delayMicroseconds(800);
digitalWrite(STEP_PIN,LOW); delayMicroseconds(800);
}
}