</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›آموزش›UGV با فرمان Ackermann — سرو موتور و درایو DC برای ماشین‌مانند (فارسی)
آموزش ربات‌های زمینی (UGV)

UGV با فرمان Ackermann — سرو موتور و درایو DC برای ماشین‌مانند (فارسی)

​ ژوئن 12, 2026 1 دقیقه مطالعه
UGV فرمان Ackermann سرو موتور

فرمان Ackermann چیست و چرا از Differential Drive بهتر است؟

در سیستم فرمان Ackermann، چرخ‌های جلو در پیچ زاویه‌های متفاوتی دارند تا همه چرخ‌ها حول یک نقطه مشترک بچرخند — بدون سُر خوردن. این همان سیستمی است که در تمام خودروها استفاده می‌شود. در مقابل، Differential Drive با سُر چرخ‌ها می‌چرخد که برای محیط‌های خاکی یا موزاییک مشکل‌ساز است.

برای UGV مبتنی بر Ackermann، یک سرو فرمان را کنترل می‌کنیم + یک موتور DC برای پیشرانش — دقیقاً مثل یک ماشین RC تجاری اما با کنترل کامل کد.

🛠️ کارت پروژه

پایه شاسی ماشین RC ۱:۱۰ اسکرپ یا جعبه ماشین ارزان
بودجه ~۵۰۰K (با شاسی RC)
حداقل شعاع پیچ ~۳۰cm برای wheelbase ۲۰cm

محاسبه زاویه فرمان

برای Ackermann: tan(δ) = L / R که L = wheelbase و R = شعاع پیچ است.

با L=20cm و R=30cm: δ = atan(20/30) = 33.7° — زاویه فرمان داخلی. زاویه خارجی: atan(20/(30+15)) = 24°.

BOM

قطعه قیمت
شاسی ماشین RC ۱:۱۰ (یا DIY آلومینیوم) ~۲۰۰K
سرو MG996R برای فرمان ~۱۵۰K
موتور DC 12V + گیربکس برای پیشرانش ~۱۵۰K
Arduino Uno ~۱۵۰K
L298N ~۸۰K

کد کنترل Ackermann

#include <Servo.h>
Servo steer;

#define THROTTLE_IN1 7
#define THROTTLE_IN2 8
#define THROTTLE_ENA 9

const int STEER_CENTER = 90;  // درجه
const int STEER_MAX = 35;     // ±35 درجه از مرکز

void setup(){
  steer.attach(10);
  steer.write(STEER_CENTER);
  pinMode(THROTTLE_IN1,OUTPUT);
  pinMode(THROTTLE_IN2,OUTPUT);
  pinMode(THROTTLE_ENA,OUTPUT);
}

// steering: -100 (کامل چپ) تا +100 (کامل راست)
// throttle: -100 (برعکس) تا +100 (جلو)
void control(int steering, int throttle){
  int servoAngle = STEER_CENTER + map(steering,-100,100,-STEER_MAX,STEER_MAX);
  steer.write(constrain(servoAngle,STEER_CENTER-STEER_MAX,STEER_CENTER+STEER_MAX));

  int spd = map(abs(throttle),0,100,0,255);
  digitalWrite(THROTTLE_IN1, throttle>0?HIGH:LOW);
  digitalWrite(THROTTLE_IN2, throttle>0?LOW:HIGH);
  analogWrite(THROTTLE_ENA, spd);
}

void loop(){
  // مثال: جلو با انحراف ۵۰٪ به راست
  control(50, 80);
  delay(2000);
  control(0, 0);
  delay(1000);
}

  • آپارات: فرمان Ackermann ربات
برچسب‌ها: Ackermann RC Car Turning Radius UGV آردوینو سرو فرمان ماشین خودران موتور DC
​
مطلب بعدی پلتفرم UGV چوبی — بخش ۲: سیم‌کشی L298N، کد آردوینو و کنترل RC (فارسی) مطلب قبلی UGV با موتورهای پله‌ای — ناوبری دقیق در فضای بسته بدون GPS (فارسی)
</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

یاد بگیر، بساز، به اشتراک بگذار. جامعه‌ای برای سازندگان، مهندسان و علاقه‌مندان به فناوری در ایران.

دسته‌بندی‌ها

  • پروژه‌ها
  • ربات‌های پرنده (UAV)
  • آموزش
  • ربات‌های زمینی (UGV)
  • الکترونیک
  • پهپاد و مولتی‌روتور

پیوندها

  • خانه
  • درباره ما
  • تماس
  • فید RSS

آخرین مطالب

  • خلاصه دوره ArduPilot/iNAV و گام‌های بعدی (فارسی)
  • رادیو تله‌متری در مقابل LTE/4G برای کنترل از راه دور (فارسی)
  • Ground Station روی موبایل و تبلت — QGroundControl و Solex (فارسی)
  • راه‌اندازی Ground Station با Mission Planner (فارسی)
© 2026 Make for Iran – بسازیم برای ایران. تمامی حقوق محفوظ است.
ساخته شده با ❤️ برای سازندگان ایران  |  ورود