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

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

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›ربات‌های زمینی (UGV)›کنترل موتور BLDC با FOC و SimpleFOC روی Arduino: نرم‌ترین حرکت برای UGV (فارسی)
ربات‌های زمینی (UGV) پروژه‌ها

کنترل موتور BLDC با FOC و SimpleFOC روی Arduino: نرم‌ترین حرکت برای UGV (فارسی)

​ ژوئن 11, 2026 1 دقیقه مطالعه
FOC SimpleFOC BLDC موتور UGV کنترل

FOC و SimpleFOC چیست؟ (مبتدی)

موتورهای BLDC (Brushless DC) در کوادکوپترها، ماشین‌های برقی، و UGVهای حرفه‌ای استفاده می‌شوند. معمولاً کنترل آن‌ها با ESC ساده انجام می‌شود که فقط سرعت را تنظیم می‌کند. اما FOC (Field Oriented Control — کنترل میدان‌گرا) روشی است که موتور را با بیشترین گشتاور و کمترین اتلاف انرژی کنترل می‌کند — نتیجه: حرکت نرم‌تر، توقف دقیق‌تر، و کنترل موقعیت.

کتابخانه SimpleFOC این کنترل پیچیده را برای آردوینو ساده کرده. با یک درایور DRV8302/DRV8305 (حدود ۱۵-۳۰ دلار) و یک انکودر مغناطیسی AS5600 (۵ دلار)، می‌توان FOC را روی آردوینو اجرا کرد. UGV با FOC می‌تواند سرعت دقیق را حفظ کند حتی در سربالایی.

محصولی که می‌سازید

یک UGV با کنترل سرعت FOC — موتور BLDC + AS5600 + SimpleFOC.

  • هزینه درایور: SimpleFOC Shield ≈ ۲۵ دلار
  • انکودر: AS5600 ≈ ۵ دلار
  • دقت سرعت: ±۰.۵ RPM

Arduino + SimpleFOC PID Velocity AS5600 ← فیدبک DRV8302 Driver 3-phase PWM BLDC Motor AS5600 انکودر UGV چرخ FOC — Arduino → DRV8302 → BLDC → AS5600 فیدبک

کد SimpleFOC — Velocity Control


#include <SimpleFOC.h>

// موتور: 7 جفت قطب (BLDC معمولی)
BLDCMotor motor = BLDCMotor(7);
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8);  // 3PWM + Enable

// انکودر مغناطیسی AS5600 روی I2C
MagneticSensorI2C sensor = MagneticSensorI2C(AS5600_I2C);

float target_velocity = 10.0;  // rad/s

void setup() {
  sensor.init();
  motor.linkSensor(&sensor);

  driver.voltage_power_supply = 12;  // ولتاژ
  driver.init();
  motor.linkDriver(&driver);

  motor.controller = MotionControlType::velocity;

  // PID تنظیم Velocity:
  motor.PID_velocity.P = 0.2;
  motor.PID_velocity.I = 20;
  motor.PID_velocity.D = 0.001;

  motor.voltage_limit = 6;  // حداکثر ولتاژ اعمالی

  motor.init();
  motor.initFOC();
}

void loop() {
  motor.loopFOC();
  motor.move(target_velocity);

  // دستور از Serial:
  if(Serial.available()) {
    target_velocity = Serial.parseFloat();
  }
}

مقایسه FOC با L298N

مشخصه L298N + موتور DC SimpleFOC + BLDC
نرمی حرکت متوسط عالی ✓
کنترل دقیق سرعت ضعیف عالی (±0.5RPM) ✓
هزینه ۵ دلار ۳۰ دلار
پیچیدگی ساده متوسط
راندمان ۶۰-۷۰% ۹۰-۹۵% ✓

SimpleFOC Velocity PID DRV8302 3-phase PWM BLDC Motor نرم و دقیق AS5600 فیدبک انکودر SimpleFOC — کنترل BLDC با Loop بسته، UGV نرم

ویدئوهای آموزشی


منابع بیشتر

  • آپارات: FOC موتور BLDC آردوینو فارسی
  • SimpleFOC: Official Documentation
برچسب‌ها: Arduino BLDC FOC SimpleFOC UGV Velocity PID آموزش گام‌به‌گام کنترل موتور
​
مطلب بعدی ساخت ردیاب دارایی با LR1110 LoRa+GNSS: ماژول Sub-GHz زیر ۲۰ دلار برای ردیابی UGV (فارسی) مطلب قبلی ساخت شبکه Meshtastic با ماژول‌های LoRa T-Beam: ارتباط بدون اینترنت در ۵ نقطه (فارسی)
</> Make for Iran – بسازیم برای ایران

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

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

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

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

پیوندها

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

آخرین مطالب

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