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

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

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

کالیبراسیون و تیونینگ PID برای وسایل نقلیه خودمتوازن — راهنمای عملی (فارسی)

​ ژوئن 12, 2026 1 دقیقه مطالعه
تیونینگ PID ربات خودمتوازن Serial Plotter

چرا PID به تنظیم دقیق نیاز دارد؟

فرمول PID سه عدد دارد: Kp، Ki، Kd. هیچ مقدار «جادویی» برای همه ربات‌ها وجود ندارد — هر سیستم بسته به جرم، ارتفاع مرکز جرم، قدرت موتور و سرعت حلقه کنترل، اعداد متفاوتی نیاز دارد. تنظیم دستی یاد گرفتنی است اما نیاز به روش و صبر دارد. در این پست یاد می‌گیریم چطور با ابزارهای رایگان آردوینو PID را بهینه کنیم.

🛠️ ابزارهای لازم

نرم‌افزار Arduino IDE → Serial Plotter (رایگان)
سخت‌افزار ربات/اسکوتر آماده از پست‌های قبل

روش تنظیم دستی گام به گام

مرحله کار نتیجه مورد انتظار
۱ Ki=0, Kd=0 — فقط Kp را بالا ببر ربات واکنش نشان می‌دهد اما نوسان دارد
۲ Kp را تا نوسان پایدار بالا ببر (Ku) نوسان ثابت با دامنه مشخص (Tu را اندازه بگیر)
۳ Kp=0.6×Ku، Kd=0.075×Ku×Tu اضافه کن نوسان کم می‌شود
۴ Ki=1.2×Ku/Tu اضافه کن خطای ماندگار از بین می‌رود
۵ دست‌تنظیم ظریف با Serial Plotter پاسخ نرم و سریع

کد با Serial Plotter output

// افزودن به loop() برای نمایش در Serial Plotter:
Serial.print("Setpoint:"); Serial.print(setpoint);
Serial.print(",Angle:");   Serial.print(angle);
Serial.print(",Output:");  Serial.println(output);
// در Serial Plotter سه خط رنگی می‌بینی
// هدف: Angle روی Setpoint بماند و Output آرام باشد

کالیبراسیون آفست IMU

// قبل از استفاده، MPU-6050 را روی سطح صاف بگذار و این را اجرا کن:
#include <MPU6050_6Axis_MotionApps20.h>
MPU6050 mpu;
void setup(){
  Wire.begin(); Serial.begin(115200);
  mpu.initialize();
  mpu.CalibrateAccel(6);  // ۶ بار میانگین
  mpu.CalibrateGyro(6);
  mpu.PrintActiveOffsets();  // آفست‌ها را یادداشت کن
}
// سپس در کد اصلی:
// mpu.setXAccelOffset(آفست‌خودت);
// mpu.setYAccelOffset(آفست‌خودت);
// مقادیر را از PrintActiveOffsets بخوان

جدول عیب‌یابی PID

علامت علت درمان
نوسان سریع Kp یا Kd خیلی زیاد هر دو را ۲۰٪ کم کن
کند و بی‌تفاوت Kp کم Kp را دو برابر کن
drift مداوم به یک سمت آفست IMU یا setpoint اشتباه setpoint را تنظیم کن، IMU کالیبر کن
لرزش موتور (buzz) dt خیلی کوچک یا Kd خیلی بزرگ Kd کم کن، یا از فیلتر مشتق استفاده کن
Integral Windup Ki × زمان جمع خطا errSum = constrain(errSum,-N,N)

  • کتابخانه PID آردوینو — Brett Beauregard
  • آپارات: تنظیم PID فارسی
برچسب‌ها: Anti-windup IMU PID tuning Serial Plotter Ziegler-Nichols آردوینو خودمتوازن کالیبراسیون
​
مطلب بعدی ساخت اسکوتر خودمتوازن DIY با موتور Hoverboard و VESC (فارسی) مطلب قبلی کنترل از راه دور اسکوتر خودمتوازن با LoRa SX1278 — ۲ کیلومتر برد (فارسی)
</> Make for Iran – بسازیم برای ایران

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

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

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

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

پیوندها

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

آخرین مطالب

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