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

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

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

دنبال کردن خط با UGV — ساده‌ترین پروژه خودکار با حسگر IR (فارسی)

​ ژوئن 12, 2026 1 دقیقه مطالعه
Line Following UGV AGV TCRT5000 IR PID آردوینو

AGV دنبال‌کننده خط — مدل صنعتی برای همه

در انبارها و کارخانه‌ها، AGV (Automated Guided Vehicle)ها از خطوط رنگی روی کف برای ناوبری استفاده می‌کنند. ما یک نسخه DIY با TCRT5000 — یک آرایه ۵ یا ۸ حسگر IR/فتوترانزیستور — می‌سازیم که خط سیاه روی کف سفید را تشخیص می‌دهد.

الگوریتم کنترل با PID است: خطای انحراف از مرکز خط را محاسبه می‌کند و فرمان فرمان را تنظیم می‌کند. با P به تنهایی UGV نوسان می‌کند — با D نوسان کاهش می‌یابد.

🛠️ کارت پروژه

حسگر TCRT5000 آرایه ۸ حسگر (~۱۵۰K) یا QTR-8RC Pololu
خط نوار چسب برق سیاه عرض ۲cm روی کف سفید
بودجه ~۳۰۰K (حسگر + Arduino + L298N)

کد PID خط‌کشی ۵ حسگر

// ۵ حسگر TCRT5000 روی A0–A4
int sensorPins[5] = {A0,A1,A2,A3,A4};
int sensorValues[5];
int sensorMin[5], sensorMax[5];

float Kp=0.3, Ki=0.0005, Kd=5.0;
float lastError=0, integral=0;
int BASE_SPEED=180;

void calibrate(){
  for(int i=0;i<200;i++){
    for(int j=0;j<5;j++){
      int val = analogRead(sensorPins[j]);
      sensorMin[j] = min(sensorMin[j], val);
      sensorMax[j] = max(sensorMax[j], val);
    }
    delay(10);
  }
}

float getLinePosition(){
  float weightedSum=0, sum=0;
  for(int i=0;i<5;i++){
    sensorValues[i] = map(analogRead(sensorPins[i]), sensorMin[i], sensorMax[i], 0, 1000);
    weightedSum += sensorValues[i] * (i * 250);  // وزن‌دهی
    sum += sensorValues[i];
  }
  return (sum > 100) ? weightedSum/sum : 500;  // 0–1000، مرکز=500
}

void loop(){
  float position = getLinePosition();
  float error = position - 500;

  integral += error;
  integral = constrain(integral, -5000, 5000);
  float correction = Kp*error + Ki*integral + Kd*(error-lastError);
  lastError = error;

  int leftSpeed  = constrain(BASE_SPEED + correction, 0, 255);
  int rightSpeed = constrain(BASE_SPEED - correction, 0, 255);
  driveDiff(leftSpeed, rightSpeed);
}

کالیبراسیون حسگرها

  1. روی UGV بگذار و دستی روی خط بچرخانش در حین calibrate().
  2. sensorMin و sensorMax ذخیره شوند در EEPROM برای دفعات بعد.
  3. PID را شروع کن: فقط P (مثلاً P=0.3)، اگر نوسان داشت D را بالا ببر.

  • Pololu QTR Sensor راهنما
  • آپارات: ربات دنبال خط
برچسب‌ها: AGV Calibration IR Array Line Following PID TCRT5000 UGV آردوینو خط‌کشی
​
مطلب بعدی LiDAR ارزان برای UGV — RPLIDAR A1 و TF-Luna: نقشه محیط با آردوینو (فارسی) مطلب قبلی ادغام ROS با UGV آردوینو — rosserial و ارتباط با Raspberry Pi (فارسی)
</> Make for Iran – بسازیم برای ایران

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

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

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

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

پیوندها

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

آخرین مطالب

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