Skip to Content
SensörlerKızılötesi (IR) Çizgi Sensörü

Kızılötesi (IR) Çizgi Sensörü

Kızılötesi çizgi sensörü, zemine kızılötesi ışık gönderip geri yansıyan miktarı ölçerek yüzeyin açık mı koyu mu olduğunu anlar. Çizgi izleyen robotların gözü budur.

Aynı prensip engel algılamada da kullanılır: yansıyan ışık varsa önde bir cisim vardır.

Nasıl Çalışır?

Sensörün üzerinde yan yana iki bileşen bulunur:

  • IR LED (verici): Sürekli kızılötesi ışık yayar. Gözle görünmez.
  • Fototransistör (alıcı): Yansıyan kızılötesi miktarına göre iletkenliği değişir.

Zeminin rengi sonucu belirler:

YüzeyYansımaAlıcının gördüğüDijital çıkış
Beyaz / açık renkYüksekÇok ışıkGenellikle LOW
Siyah / koyu renkDüşük (ışığı yutar)Az ışıkGenellikle HIGH

Siyah yüzey kızılötesini emer, beyaz yüzey yansıtır. Sensör aslında rengi değil, yansıtıcılığı ölçer — bu yüzden mat siyah bant ile parlak siyah zemin farklı sonuç verebilir.

Çıkış polaritesi modüle göre değişir. Kendi modülünüzde beyaz zeminin HIGH mı LOW mu verdiğini ilk iş olarak test edin.

Yaygın Modüller

ModelTipMenzilNot
TCRT5000Çizgi (yakın mesafe)1 – 25 mmEn yaygın çizgi sensörü
QRE1113Çizgi1 – 5 mmDaha hassas, yarış robotlarında
FC-51 / IR engel modülüEngel2 – 30 cmAyarlanabilir mesafe
QTR-8A / QTR-8RC8’li çizgi dizisi3 – 8 mmProfesyonel çizgi izleyici

Modül Bağlantısı

Tipik bir TCRT5000 modülünde üç veya dört pin bulunur:

PinAçıklama
VCC3,3 – 5 V
GNDToprak
DODijital çıkış (eşiğe göre HIGH/LOW)
AOAnalog çıkış (ham yansıma değeri)

Kart üzerindeki mavi potansiyometre, DO çıkışının eşiğini ayarlar.

DO mu, AO mu?

DO (dijital) basittir: “siyah” veya “beyaz”. Basit çizgi izleyiciler için yeterlidir.

AO (analog) yansıma miktarını sayı olarak verir. Çizginin ne kadar dışına çıktığınızı bilirsiniz. PID kontrollü, yumuşak dönüş yapan robotlar için gereklidir.

Ciddi bir çizgi izleyici yapıyorsanız AO kullanın.

Dijital Okuma

const int SENSOR_PIN = 2; void setup() { pinMode(SENSOR_PIN, INPUT); Serial.begin(9600); } void loop() { int durum = digitalRead(SENSOR_PIN); if (durum == HIGH) { Serial.println("Siyah zemin (cizgi uzerinde)"); } else { Serial.println("Beyaz zemin"); } delay(100); }

Analog Okuma ve Kalibrasyon

Analog çıkışın gerçek gücü kalibrasyondadır. Aynı sensör farklı zeminlerde farklı değerler okur; bu yüzden eşiği sabit yazmak yerine ölçerek bulmak gerekir.

const int SENSOR_PIN = A0; int beyazDeger = 0; int siyahDeger = 0; int esik = 0; void kalibreEt() { Serial.println("Sensoru BEYAZ zemine tutun, 3 saniye..."); delay(3000); beyazDeger = analogRead(SENSOR_PIN); Serial.print("Beyaz: "); Serial.println(beyazDeger); Serial.println("Sensoru SIYAH cizgiye tutun, 3 saniye..."); delay(3000); siyahDeger = analogRead(SENSOR_PIN); Serial.print("Siyah: "); Serial.println(siyahDeger); esik = (beyazDeger + siyahDeger) / 2; Serial.print("Esik degeri: "); Serial.println(esik); } void setup() { Serial.begin(9600); kalibreEt(); } void loop() { int deger = analogRead(SENSOR_PIN); Serial.print(deger); Serial.print(" -> "); Serial.println(deger > esik ? "SIYAH" : "BEYAZ"); delay(200); }

Zemin veya aydınlatma değiştiğinde kalibrasyonu tekrarlamak gerekir. Yarışma robotlarında bu yüzden başlangıçta bir kalibrasyon butonu bulunur.

Çizgi İzleyen Robot Mantığı

İki sensörlü (basit)

İki sensör çizginin iki yanına, çizgiyi ortada bırakacak şekilde yerleştirilir.

Sol sensörSağ sensörAnlamHareket
BeyazBeyazÇizgi ortadaDüz git
SiyahBeyazRobot sağa kaymışSola dön
BeyazSiyahRobot sola kaymışSağa dön
SiyahSiyahKesişim veya bitiş çizgisiDur / özel durum
const int SOL_SENSOR = 2; const int SAG_SENSOR = 3; void ileri() { /* iki motor da ileri */ } void solaDon() { /* sol motor dur, sag motor ileri */ } void sagaDon() { /* sag motor dur, sol motor ileri */ } void dur() { /* iki motor da dur */ } void loop() { bool sol = digitalRead(SOL_SENSOR); // HIGH = siyah bool sag = digitalRead(SAG_SENSOR); if (!sol && !sag) { ileri(); } else if (sol && !sag) { solaDon(); } else if (!sol && sag) { sagaDon(); } else { dur(); } }

Bu yöntem çalışır ama robot zikzak çizer. Sensörler arasındaki mesafe çizgi kalınlığına yakın olmalıdır.

Üç ve beş sensörlü

Sensör sayısı arttıkça robot çizgiden ne kadar saptığını daha iyi bilir ve dönüşler yumuşar.

Beş sensörlü bir dizide her sensöre bir ağırlık verilir (−2, −1, 0, +1, +2). Okunan değerlerin ağırlıklı ortalaması hata değerini verir:

const int SENSOR_SAYISI = 5; const int pinler[SENSOR_SAYISI] = { A0, A1, A2, A3, A4 }; const int agirliklar[SENSOR_SAYISI] = { -2, -1, 0, 1, 2 }; const int ESIK = 500; float hataHesapla() { float toplamAgirlik = 0; int aktifSayisi = 0; for (int i = 0; i < SENSOR_SAYISI; i++) { if (analogRead(pinler[i]) > ESIK) { // siyah gorduyse toplamAgirlik += agirliklar[i]; aktifSayisi++; } } if (aktifSayisi == 0) return 999; // cizgi kayboldu return toplamAgirlik / aktifSayisi; }

Hata değeri 0 ise robot tam ortadadır. Negatifse sola, pozitifse sağa kaymıştır. Bu hata değeri bir PID kontrolcüsüne verilerek motor hızları ayarlanır — profesyonel çizgi izleyicilerin yaptığı budur.

Sensör Yüksekliği

Bu, çizgi sensörlerinde en sık yapılan mekanik hatadır.

TCRT5000’in optimum çalışma mesafesi zeminden 3 – 8 mm’dir.

  • Çok yakın (< 2 mm): Alıcı doyuma girer, beyaz ile siyah arasındaki fark kaybolur.
  • Çok uzak (> 15 mm): Yansıyan ışık zayıflar, sensör her yerde “siyah” okur.

Robotun süspansiyonu yoksa ve zemin düz değilse bu mesafe sürekli değişir. Sensör tutucuyu ayarlanabilir yapmak ciddi zaman kazandırır.

Ortam Işığı Sorunu

IR sensörler güneş ışığından ciddi şekilde etkilenir; güneş güçlü bir kızılötesi kaynağıdır.

Belirtileri: robot içeride mükemmel çalışır, pencere kenarında veya dışarıda çıldırır.

Çözümler:

  • Sensörleri robotun altına, ışık girmeyecek şekilde yerleştirin.
  • Sensör çevresine küçük bir siyah gölgelik / etek ekleyin.
  • Modülasyonlu sensör kullanın (38 kHz taşıyıcılı IR alıcılar ortam ışığını filtreler).
  • QTR-8RC gibi, ortam ışığını referans alarak fark ölçen dizileri tercih edin.

IR Engel Sensörü (FC-51)

Aynı prensiple çalışır ama zemine değil ileriye bakar. Önünde bir cisim varsa IR ışık yansır ve çıkış aktif olur.

ÖzellikDeğer
Algılama mesafesi2 – 30 cm (potansiyometre ile ayarlanır)
ÇıkışDijital (engel varken genellikle LOW)
Besleme3,3 – 5 V

Sınırları: Algılanan mesafe cismin rengine ve yüzeyine bağlıdır. Siyah bir cisim, beyaz bir cisimden çok daha yakında algılanır. Bu yüzden IR engel sensörü mesafe ölçmez, sadece “var/yok” der. Gerçek mesafe için HC-SR04 veya VL53L0X kullanın.

Özet

IR çizgi sensörü, zemine kızılötesi ışık gönderip yansıyan miktarı ölçerek açık ve koyu yüzeyleri ayırt eder. Siyah yüzey ışığı emer, beyaz yüzey yansıtır.

Bu derste şunları öğrendik:

  • IR LED ve fototransistör ikilisinin çalışma mantığını
  • DO (dijital) ve AO (analog) çıkış farkını
  • Zemine göre kalibrasyon yapmayı
  • İki, üç ve beş sensörlü çizgi izleme mantığını
  • Ağırlıklı ortalama ile hata değeri hesaplamayı
  • Sensör yüksekliğinin (3–8 mm) neden kritik olduğunu
  • Güneş ışığının yarattığı sorunu ve çözümlerini