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

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

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

سرو موتور MG996R — کنترل دقیق فرمان UGV با PWM و آردوینو (فارسی)

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

سرو MG996R — ارزان‌ترین سرو قوی بازار

MG996R یک سرو با گشتاور ۹.۴–۱۱kg.cm، زاویه ۱۸۰° و فریم فلزی است. برای فرمان UGV تا ۵kg عالی است. با یک پالس PWM (۱–۲ms) کنترل می‌شود. کتابخانه Servo.h آردوینو آن را بسیار ساده می‌کند.

مشکل رایج: Jitter (لرزش خفیف سرو حتی در حالت ثابت) که از نویز در خط سیگنال است. با یک مقاومت ۱kΩ سری روی خط سیگنال + خازن ۱۰۰nF به GND این مشکل حل می‌شود.

🛠️ کارت پروژه

مشخصات ۵V، ۲.۵A peak، ۹.۴kg.cm، ۱۸۰°
قیمت ~۱۵۰K تومان
نکته برق از USB آردوینو تغذیه نکن — خازن ۴۷۰μF روی 5V

کالیبراسیون نقطه صفر سرو

#include <Servo.h>
Servo steer;

void setup(){
  steer.attach(9);
  Serial.begin(9600);
  Serial.println("Enter angle (0-180):");
}

void loop(){
  if(Serial.available()){
    int angle = Serial.parseInt();
    steer.write(angle);
    Serial.print("Set to: "); Serial.println(angle);
    // وقتی فرمان مستقیم بود، این عدد = CENTER شما
  }
}

فیلتر Jitter + کنترل نرم

#include <Servo.h>
Servo steer;

const int CENTER = 92;  // عدد کالیبره‌شده شما
float smoothAngle = CENTER;

void setSteer(int targetAngle, float smoothFactor=0.15){
  // EWMA filter — حرکت نرم و بدون jitter
  smoothAngle = smoothFactor*targetAngle + (1-smoothFactor)*smoothAngle;
  steer.write((int)smoothAngle);
}

void setup(){
  steer.attach(9, 500, 2500);  // محدوده دقیق microseconds
  steer.write(CENTER);
}

// مثال استفاده:
// هر ۲۰ms این تابع را با مقدار جدید صدا بزن:
// setSteer(CENTER + steeringCommand);

نگاشت دستور LoRa به زاویه سرو

// rcSteering: -100 تا +100 از LoRa
// CENTER ±35 درجه زاویه فرمان
void applySteer(int rcSteering){
  int angle = CENTER + map(rcSteering, -100, 100, -35, 35);
  angle = constrain(angle, CENTER-35, CENTER+35);
  setSteer(angle);
}

  • Last Minute Engineers: آموزش سرو با آردوینو
  • آپارات: سرو موتور آردوینو
برچسب‌ها: Ackermann Jitter MG996R PWM UGV آردوینو سرو موتور فرمان کالیبراسیون
​
مطلب بعدی موتور DC با Encoder: کنترل دقیق سرعت و موقعیت با PID (فارسی) مطلب قبلی موتور پله‌ای NEMA17 + درایور A4988 — راه‌اندازی کامل و تنظیم جریان (فارسی)
</> Make for Iran – بسازیم برای ایران

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

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

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

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

پیوندها

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

آخرین مطالب

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