Merhaba arkadaşlar. Bu yazımızda “Çizgi İzleyen Robot nedir, nasıl yapılır?” konularından bahsedeceğiz.

Çizgi izleyen robotu yap, sonra engelden kaçanı da yapmanı tavsiye ederiz 🙂 >>>>Engelden Kaçan Robotu Da Yap!
Genel olarak robot yapımı ile alakalı detaylı içeriğimizi de okuyabilirsiniz. >>>> Genel olarak detaylı robot yapımı yazımızı da incele!

Çizgi İzleyen Robot Nedir?

Çizgi izleyen robot, gideceği yolu otonom olarak takip eden robot tipidir. Takip edeceği yol, siyah düzlemin üstünde beyaz çizgi veya beyaz düzlemin üstünde siyah çizgi olacak şekilde hazırlanabilir. Robot bu takip etme işlemini sensörleri vasıtasıyla renk farkını algılayarak yapmaktadır.

Yarışmalar için hazırlanmış bir çizgi izleyen robotun yol takibinin iyi olması dışında yolu kısa sürede tamamlayabilmesi için hızlı olması gerekir. Hızlı bir robotun anlık yol takibi yapabilmesi için dengesinin de iyi olması gerekir. Bu yüzden kullandığınız gövde, sensör ve motor seçimi de önemlidir.

Endüstriyel sektörde de çizgi izleyen robot mantığında robotlar bulunmakta fakat biz bu yazımızda hobi amaçlı çizgi izleyen robotları inceleyeceğiz.

Arduino ile Çizgi İzleyen Robot Nasıl Yapılır?

Robotumuz, 3 adet kızılötesi sensör ile hangi yöne gitmesi gerektiğini belirleyecek. Robotumuzun hızını ve yönünü bir motor sürücü ile kontrol edeceğiz.

Gerekli Malzemeler

Çizgi İzleyen Robot Devresi

 

 

çizgi izleyen robot devresi

Her şey tamamsa robotumuzun montajına başlayabiliriz.

Öncelikle Arduinomuzu, sürücümüzü, sensörlerimizi ve pilimizi robot platformunda nereye yerleştireceğimize karar vermeliyiz. Sonrasında ise platformu kılavuzdaki adımları takip ederek monte ediyoruz. Devre bağlantılarını da gerçekleştirdikten sonra robotumuz programlanmaya hazır hale geliyor.

Gövde Montajı

Çizgi İzleyen Robot Montajı

Sensörleri 90 derece açı ile aşağıya bükmemiz gerekiyor ki yüzeydeki rengi sağlıklı bir şekilde görebilsin.

Arduino Programı

Arduino programını yazmadan önce çizgi izleyen sensörün çalışma mantığından bahsetmek istiyorum. Kullanacağımız sensörler dijital çıkış verdiklerinden dolayı siyah ve beyaz gördüklerinde çıkış sinyalleri 0 veya 1 olacaktır. Sensör siyah gördüğünde hangi değeri verdiğini bu yazılım ile test edebilirsiniz:

#define SensorSol 10
#define SensorOrta 11   // Sensör pinlerini tanımlıyoruz.
#define SensorSag 12

void setup() {

  pinMode(SensorSol, INPUT);
  pinMode(SensorOrta, INPUT); //Sensörlerimizi giriş olarak tanımlıyoruz.
  pinMode(SensorSag, INPUT);
  Serial.begin(9600);  //Seri haberleşmeyi başlatıyoruz.
  Serial.println("Cizgi Sensoru Testi");
  delay(2000);
}

void loop() {
  Serial.print(digitalRead(SensorSol));
  Serial.print(",");
  Serial.print(digitalRead(SensorOrta));
  Serial.print(",");
  Serial.println(digitalRead(SensorOrta));
  delay(100);
}

Sensörlerimizin siyah görüğünde “1” çıkış değerini aldığında oluşan mantık tablodaki gibidir.

Bu mantığa göre programlamaya başlıyoruz.

#define SensorSol 10  
#define SensorOrta 11
#define SensorSag 12

#define MotorR1 6
#define MotorR2 7 // Sensör ve Motorların Arduino'ya bağladığımız pinlerini tanımlıyoruz.
#define MotorRE 9

#define MotorL1 5
#define MotorL2 4
#define MotorLE 3



void setup() {
  
  pinMode(SensorSol, INPUT);
  pinMode(SensorOrta, INPUT);
  pinMode(SensorSag, INPUT);

  pinMode(MotorR1, OUTPUT); // Sensör ve Motorların Giriş-Çıkış bilgilerini belirtiyoruz.
  pinMode(MotorR2, OUTPUT);

  pinMode(MotorL1, OUTPUT);
  pinMode(MotorL2, OUTPUT);


}

void loop() {

  if(digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 1 && digitalRead(SensorSag) == 0){  // Orta sensör çizgiyi gördüğünde robot ileri gitsin.
    ileri();
  }

  if(digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 1){  // Sağ sensör çizgiyi gördüğünde robot sağa dönsün.
    sag();
  }

  if(digitalRead(SensorSol) == 1 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 0){  // Sol sensör çizgiyi gördüğünde robot sola dönsün.
    sol();
  }

 
  

}


void ileri(){  // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
  digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
  analogWrite(MotorRE, 150); // Sağ motorun hızı 150

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 150); // Sol motorun hızı 150
  
  
}


void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
  digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
  analogWrite(MotorRE, 0); // Sağ motorun hızı 0 (Motor duruyor)

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 150); // Sol motorun hızı 150
  
  
}

void sol(){ // Robotun sola dönme hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
  digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
  analogWrite(MotorRE, 150); // Sağ motorun hızı 150

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 0); // Sol motorun hızı 0 (Motor duruyor)
  
}

void dur(){ // Robotun durma hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH);
  digitalWrite(MotorR2, LOW);
  digitalWrite(MotorRE, LOW);

  digitalWrite(MotorL1, HIGH);
  digitalWrite(MotorL2, LOW);
  digitalWrite(MotorLE, LOW);
  
}

Proje hakkında yorumlarınızı aşağıdaki ‘Yorumlar’ kısmında bizimle paylaşabilirsiniz.

Siz de yaptığınız projeleri Twitter ve Instagram üzerinden #Robotistan hashtagi ile bizimle paylaşın, projenizi hesabımızda paylaşalım !

Twitter ve Instagram Hesaplarımız: @Robotistan

Bu yazımızda bir çizgi izleyen robotun temel bileşenlerinden ve çalışma mantığından bahsederek basit bir uygulama yaptık. Yaptığımız robot öğretici amaçlı olup herhangi bir yarışma amacı taşımamaktadır. İsterseniz farklı gövde ve devre elemanları kullanarak da robotunuzun görünüşünü ve performansını değiştirebilirsiniz. Başka bir projede görüşmek dileğiyle, takipte kalın 🙂

26 Yorumlar

  1. abi ben devreyi kurdum motorlara güç gitmiyor robot olduğu yerde kalıyor sebebi nedir güç kaynağımda duracell

    • Pilinizin doluluğundan emin olun. Düşük pil seviyesi, motorlara yeterli akımı gönderemeyecektir.

  2. iyi günler dilerim. ben yaptım fakat şunu anlamadım.bu siyah beyaz sensörler varya onlar robotun arka tarafındamı oluyor yani robot hangi yöne gidecek ? montajı yaptım sadece sensör kaldıda

    • Bu Konuda Sizden Ben Bu Aşamaya Kadar Yardım Alabilirmiyim Yada Nasıl Iletisim Sağlayabilirim Çünkü Proje Ödevimmm.

      • iyi günler tayfun bey ben yaptım her şeyi oldu fakat pili bağlıyorum yani enerjiyi veriyorum çizgiyi görmeden sadece sağ tekerlek dönüyor sorun nedir ? söylerseniz sevinirim.

        • Sensörlerin çizgiyi görüp görmediğini kontrol edebilir misiniz? Tüm sensörler doğru çalışıyorsa motorların doğru çalıştığından emin olun.

          • bu sorunuda çözdüm fakat sensör sadece 0 görüyor bunun sorunu nedir lütfen cevap verirseniz sevinirim ne yaparsam yapayım her zaman 0 görüyor

    • Merhabalar, projede kullanmış olduğumuz motor sürücü olan L298N’nin datasheet’ine bakacak olursak, burada belirtilen değerin maksimum 24V olduğunu ve sürekli verebileceği akımın 2A olduğunu görüyoruz. Bu demektir ki maksimum olarak 50W güç sağlayabilecek bir motor sürücüye sahibiz. Bu sürücüyü 250W gücündeki bir motor ile kullanmamız malesef mümkün değildir.

  3. Merhaba;
    15.30 dk’ da ki motor sürücü kartından çıkış için kullanılan iki kablo ile pil yatağından çıkan iki kabloyu 20.40 dk’da ki klemens dönüştürücü yardımıyla arduinonun jak girişine takmak yerine başka bir seçenek var mı? Arduino ile ilgili bilgim kısıtlı. Devre şemasında biraz farklı gösterilmiş sanki o şekilde bağlamak istersem ne yapabilirim? Klemens dönüştürücüm yok ve hızlı temin edebileceğim bir yerde yok. Projeyi hızlı yapmam lazım. Şimdiden teşekkür ederim. Böyle bizlere yardım eden çalışmalarınızın devamını dilerim. Kolay gelsin.

  4. L298N voltaj regulatorlu çift motor surucu kartı ve çizgi izleyen sensor seti robotistanda tükenmiş bunlar yerine başka hangi malzeme kullanabilirim

  5. Bir yarışma için bu aracı yapacağız. Bunun gidiş hızını arttırma işlemini sadece kodlama ile mi gerçekleştiriyoruz, yoksa önerebileceğiniz bir motor var mı? Birde kulvarda dönüşlerde bu hız yüzünden parkur dışında kalmamak için ne yapabiliriz?

    • Merhabalar, yarışma amaçlı bir robot yapacaksanız daha hafif ve daha küçük boyutlu bir robot gövdesi kullanmanızı tavsiye ederiz. Bu gövdeye uyumlu olacak motorlar set içerisindekilerdir ve malesef daha yüksek hız sunamamaktadırlar.

  6. 4WD platform ile nasıl çizgi izleyen yapılır acilen yazabilir misiniz? Hemen yazabilirseniz muhteşem olur teşekkürler

  7. Çizgi izleyen ve engelde durup bekleyip engel kalkınca yoluna devam eden veya engelin çevresinden dolaşan robot kodu ve malzeme listesi pin şeması var mı ? Varsa malzelerı sizden siparis edeceğim.

  8. Merhaba videonuzdaki her şeyi yaptım fakat robot çalışmıyor, tekerliklerde dönmüyor sebebi nedir? Sadece sol teker döndü ve durdu. çalışmadı
    Ne yapmam lazım

CEVAP VER

Please enter your comment!
Please enter your name here