🚀 Robotik Projeler ve Yapım Rehberleri 📅 16 Ekim 2026

Çizgi İzleyen Robot Nasıl Yapılır? Devre Şeması ve Kodları

Arduino ile çizgi izleyen robot nasıl yapılır? TCRT5000 çizgi sensörü, L298N motor sürücü, devre şeması, PID mantığı ve tam C++ kod rehberi.

Çizgi İzleyen Robot Nasıl Yapılır? Devre Şeması ve Kodları

Robot yarışmalarının (MEB Robot, TEKNOFEST, üniversite robot günleri) ve robotik kodlama eğitimlerinin tartışmasız en klasik ve en prestijli projesi **"Çizgi İzleyen Robot"**tur (Line Follower Robot). Beyaz zemin üzerindeki siyah bir çizgiyi (veya siyah zemin üzerindeki beyaz çizgiyi) optik sensörleriyle takip ederek otonom bir şekilde parkuru tamamlayan bu robotlar, günümüzde akıllı fabrikalarda ve Amazon lojistik depolarında yük taşıyan AGV (Automated Guided Vehicle) araçlarının temelini oluşturur.

Bu kapsamlı rehberde; kızılötesi çizgi sensörlerinin çalışma mantığını, 2 sensörlü temel algoritmadan PID kontrolüne kadar yazılım mimarisini, L298N motor sürücü bağlantılarını ve çalışan Arduino C++ kodlarını adım adım inceliyoruz.

---

1. Çizgi İzleyen Robotun Çalışma Prensibi: Işığın Yansıması ve Soğurulması

Çizgi izleyen robotların temel çalışma mantığı fiziğin en temel optik kuralına dayanır: **Açık renkler (beyaz) ışığı geri yansıtırken, koyu renkler (siyah) ışığı emer (soğurur).**

Bu tespiti yapmak için robotun alt tabanına, zemine yaklaşık 3 ila 10 mm mesafede duracak şekilde **Kızılötesi (IR) Sensörler (örneğin TCRT5000 veya QTR-8A)** yerleştirilir:

1. **Kızılötesi Verici LED (IR LED):** Zemine insan gözünün göremediği kızılötesi ışık dalgaları gönderir.

2. **Fototransistör (Alıcı):**

  • Zemin **BEYAZ** ise: Işık zeminden aynen yansır ve fototransistöre çarpar. Devre iletime geçer ve Arduino'ya lojik `0` (LOW / 0V) sinyali gider.
  • Zemin **SİYAH** ise: Siyah çizgi kızılötesi ışığı emer, geri hiçbir ışık yansımaz. Fototransistör yalıtkan kalır ve Arduino'ya lojik `1` (HIGH / 5V) sinyali gider.
  • Arduino bu iki sensörün durumunu saniyede yüzlerce kez okuyarak robotun çizgide olup olmadığını anlar.

    ---

    2. Diferansiyel Sürüş ve 2 Sensörlü Karar Tablosu

    Aracın önünde yan yana iki adet çizgi sensörü (Sol Sensör ve Sağ Sensör) bulunur. Robotun karar mekanizması şu basit mantık tablosuna göre çalışır:

    | Sol Sensör | Sağ Sensör | Robotun Durumu | Yapılacak Eylem | Sol Motor | Sağ Motor |

    |---|---|---|---|---|---|

    | **0 (Beyaz)** | **0 (Beyaz)** | Çizgi tam ortada | Düz İleri Git | İLERİ (Hızlı) | İLERİ (Hızlı) |

    | **1 (Siyah)** | **0 (Beyaz)** | Çizgi sola kaydı | Sola Düzeltme Yap | DUR / GERİ | İLERİ |

    | **0 (Beyaz)** | **1 (Siyah)** | Çizgi sağa kaydı | Sağa Düzeltme Yap | İLERİ | DUR / GERİ |

    | **1 (Siyah)** | **1 (Siyah)** | Parkur sonu / Durak | Dur veya Karar Ver | DUR | DUR |

    ---

    3. Gerekli Malzemeler Listesi

    | Malzeme Adı | Miktar | Görevi / Açıklama |

    |---|---|---|

    | **Arduino Uno veya Nano** | 1 Adet | Robotun beyni |

    | **2WD Robot Araba Gövdesi (Şasi)** | 1 Adet | Pleksi taban, sarhoş tekerlek ve montaj vidaları |

    | **Sarı Redüktörlü DC Motor ve Tekerlek** | 2 Adet | Çekiş tekerlekleri |

    | **L298N Çift Motor Sürücü Modülü** | 1 Adet | DC motorların hız ve yön kontrolü |

    | **2 Kanallı TCRT5000 Çizgi Sensör Kartı**| 1 Adet | Zemindeki siyah çizgiyi algılayan modül |

    | **2 Adet 18650 Li-ion Pil ve Pil Yuvası** | 1 Adet | 7.4V yüksek akımlı güç kaynağı |

    | **Jumper Kablolar (Erkek-Dişi, Erkek-Erkek)**| 15-20 Adet | Devre elemanlarını bağlamak için |

    | **Siyah Elektrik Bandı** | 1 Rulo | Beyaz zemin üzerine test pisti çizmek için |

    ---

    4. Devre Şeması ve Pin Bağlantı Rehberi

    A. L298N Motor Sürücü Bağlantıları:

  • **OUT1 & OUT2:** Sol DC Motor
  • **OUT3 & OUT4:** Sağ DC Motor
  • **12V Klemensi:** 18650 Pillerin (+) kutbuna
  • **GND Klemensi:** 18650 Pillerin (-) kutbuna VE **Arduino GND** pinine (Ortak Topraklama!)
  • **IN1:** Arduino Dijital Pin 5
  • **IN2:** Arduino Dijital Pin 6
  • **IN3:** Arduino Dijital Pin 9
  • **IN4:** Arduino Dijital Pin 10
  • B. TCRT5000 Çizgi Sensörü Bağlantıları:

  • **VCC:** Arduino 5V
  • **GND:** Arduino GND
  • **OUT1 (Sol Sensör):** Arduino Dijital Pin 2
  • **OUT2 (Sağ Sensör):** Arduino Dijital Pin 3
  • ---

    5. Tam ve Çalışan Arduino C++ Kodları

    Aşağıdaki kod, 2 sensörlü klasik çizgi izleyen robot için en kararlı ve test edilmiş yazılımdır:

    /*
     * RobotKodla.com - Otonom Robotik Projeleri
     * Proje: 2 Sensörlü Çizgi İzleyen Robot
     * Yazar: Kadir Hoca
     */
    
    // Sensör Pinleri
    const int solSensorPin = 2;
    const int sagSensorPin = 3;
    
    // Motor Sürücü Pinleri (L298N)
    const int solMotorIleri = 5;
    const int solMotorGeri  = 6;
    const int sagMotorIleri = 9;
    const int sagMotorGeri  = 10;
    
    void setup() {
      // Sensörler giriş olarak yapılandırılır
      pinMode(solSensorPin, INPUT);
      pinMode(sagSensorPin, INPUT);
    
      // Motor pinleri çıkış olarak yapılandırılır
      pinMode(solMotorIleri, OUTPUT);
      pinMode(solMotorGeri, OUTPUT);
      pinMode(sagMotorIleri, OUTPUT);
      pinMode(sagMotorGeri, OUTPUT);
    }
    
    void loop() {
      // Sensör durumlarını oku (1 = Siyah, 0 = Beyaz)
      int solSensor = digitalRead(solSensorPin);
      int sagSensor = digitalRead(sagSensorPin);
    
      // Durum 1: İki sensör de beyazda (Çizgi tam ortada) -> DÜZ GİT
      if (solSensor == 0 && sagSensor == 0) {
        ileriGit();
      }
      // Durum 2: Sol sensör siyah gördü -> SOLA DÖN
      else if (solSensor == 1 && sagSensor == 0) {
        solaDon();
      }
      // Durum 3: Sağ sensör siyah gördü -> SAĞA DÖN
      else if (solSensor == 0 && sagSensor == 1) {
        sagaDon();
      }
      // Durum 4: İki sensör de siyah gördü (Bitiş çizgisi) -> DUR
      else if (solSensor == 1 && sagSensor == 1) {
        dur();
      }
    }
    
    void ileriGit() {
      digitalWrite(solMotorIleri, HIGH);
      digitalWrite(solMotorGeri, LOW);
      digitalWrite(sagMotorIleri, HIGH);
      digitalWrite(sagMotorGeri, LOW);
    }
    
    void solaDon() {
      // Sol motor geri, sağ motor ileri dönerse robot olduğu yerde hızla sola döner
      digitalWrite(solMotorIleri, LOW);
      digitalWrite(solMotorGeri, HIGH);
      digitalWrite(sagMotorIleri, HIGH);
      digitalWrite(sagMotorGeri, LOW);
    }
    
    void sagaDon() {
      // Sol motor ileri, sağ motor geri dönerse robot hızla sağa döner
      digitalWrite(solMotorIleri, HIGH);
      digitalWrite(solMotorGeri, LOW);
      digitalWrite(sagMotorIleri, LOW);
      digitalWrite(sagMotorGeri, HIGH);
    }
    
    void dur() {
      digitalWrite(solMotorIleri, LOW);
      digitalWrite(solMotorGeri, LOW);
      digitalWrite(sagMotorIleri, LOW);
      digitalWrite(sagMotorGeri, LOW);
    }

    ---

    6. Sensör Kalibrasyonu (Hayati Aşama)

    TCRT5000 sensör kartının üzerinde iki adet mavi küçük potansiyometre (trimpot) bulunur:

    1. Robotu test pistinin **beyaz zeminine** koyun. Kart üzerindeki gösterge LED'i sönük olmalıdır. Eğer yanıyorsa vidayı LED sönene kadar çevirin.

    2. Sensörü **siyah çizginin** üzerine getirin. Gösterge LED'i anında parlak bir şekilde yanmalıdır.

    3. Bu hassas kalibrasyon, ortamın oda ışığına göre sensörün siyah ile beyazı hatasız ayırt etmesini sağlar.

    ---

    7. İleri Düzey: PID Kontrolü Nedir?

    2 sensörlü temel robotlar çizgiyi "zikzaklar çizerek (sallanarak)" takip eder. Çünkü sistem sadece "tam sola dön" veya "tam sağa dön" diyebilir.

    Profesyonel yarışma robotlarında 5 veya 8 sensörlü dizilimler (QTR-8A) ve **PID (Proportional - Integral - Derivative) Algoritması** kullanılır:

  • **P (Orantısal):** Çizgiden ne kadar saptığını hesaplar (hata payı). Az saptıysa az döner, çok saptıysa sert döner.
  • **D (Türevsel):** Hatanın değişim hızına bakar; robotun viraja sert girdiğinde savrulmasını engeller.
  • **I (İntegral):** Sürekli biriken küçük açı kaymalarını dengeler.
  • PID kontrolü sayesinde robot virajları tren rayında kayar gibi pürüzsüz ve inanılmaz yüksek hızlarda tamamlar.

    ---

    8. Sık Karşılaşılan Sorunlar ve Çözümleri

    | Sorun | Olası Neden | Pratik Çözüm |

    |---|---|---|

    | Robot çizgiye gelince zıt yöne dönüyor | Sol ve sağ motor kabloları ters takılmış | Kodda `solaDon` ve `sagaDon` fonksiyonlarındaki pinleri veya motor kablolarını yer değiştirin. |

    | Robot siyah çizgiyi hiç görmüyor, düz geçip gidiyor | Sensör zemine çok uzak | Sensör yüksekliğini zeminden 4-6 mm seviyesine indirin. |

    | Robot virajlarda çizgiden çıkıyor | Hız çok yüksek veya pil voltajı düşüyor | L298N ENA/ENB pinlerine PWM vererek motor hızını %70 seviyesine düşürün. |

    ---

    9. Kapsamlı Sıkça Sorulan Sorular (SSS)

    Çizgi genişliği kaç santimetre olmalıdır?

    Standart yarışma kurallarına göre siyah çizgi genişliği **18 mm ile 20 mm** (standart bir elektrik bandı genişliği) olmalıdır. İki sensörünüzün arasındaki mesafe de tam bu çizginin iki kenarına denk gelecek şekilde ayarlanmalıdır.

    Zemin mat mı yoksa parlak mı olmalıdır?

    Parlak beyaz zeminler kızılötesi ışığı ayna gibi saçarak sensörü yanıltabilir. İdeal test pisti **mat beyaz dekota veya mat beyaz branda** üzerine çekilmiş mat siyah folyodur.

    4WD (4 tekerlekli) araba ile çizgi izleyen yapılır mı?

    Yapılabilir ancak 4 tekerlekli araçların dönüş sürtünmesi çok yüksektir; virajlarda zorlanırlar. Çizgi izleyen robotlarda en çevik ve ideal tasarım **arkada 2 çekiş tekerleği, önde ise 1 adet sarhoş tekerlek (2WD)** konfigürasyonudur.

    ---

    Sonuç

    Çizgi izleyen robot projesi, sensör fiziği ile diferansiyel motor dinamiğinin kusursuz birleşimidir. Bu projeyi başarıyla yürüten bir öğrenci; otonom sürüş mantığını, sensör kalibrasyonunu ve kapalı çevrim kontrol sistemlerini derinlemesine öğrenmiş olur. Daha gelişmiş robotik tasarımlar için sitemizin [Projeler](/projeler) bölümünü incelemeye devam edin!