Arduino - Çizgi İzleyen Robot - Elektrik Elektronik Projeleri

Post Top Ad

2 Nisan 2015 Perşembe

Arduino - Çizgi İzleyen Robot

Bu projemizde basit bir çizgi izleyen robot yapacağız. Robotumuzda sensör olarak CNY70 kontrast sensörünü, schmitt trigger entegresi olarak 74HC14 entegresini ve motor sürücü için de L293D motor sürücü entegresini kullanacağız.
Proje Devresi:

Şemada CNY70 sensörü yerine switchler kullanılmıştır.

Robot üç devreden oluşmaktadır: Sensör devresi, kontrol devresi ve motor sürücü devresi. Kontrol devremiz arduinodur. Sensör devresi ve motor sürücü devresi arduinoya bağlıdır.

Sensör devresinde 5 tane CNY70 sensörü ve 1 adet 74HC14 schmitt trigger entegresi kullanılmıştır. Motor sürücü devresinde L293 motor sürücü entegresi ve 7805 gerilim regülatörü kullanılmıştır.

Sensör devresi beslemesini arduinonun 6 ve 7. pininden almaktadır. Motor sürücü devresi ise bataryadan beslenmektedir. Burada arduino ve motor devresi ayrı bataryalardan beslenebileceği gibi tek bir bataryadan da beslenebilir. 

Malzeme Listesi
  • Arduino
  • CNY70 (5 Adet)
  • 74HC14 (1 Adet)
  • 100Ω direnç (5 Adet)
  • 4.7K direnç (5 Adet)
  • 330Ω direnç (5 Adet)
  • LED (5 Adet)
  • L293D (1 Adet)
  • 7805 (1 Adet)
  • 1N4001 diyot (1 Adet)
  • 330uF kondansatör (1 Adet)
  • 10uF kondansatör (1 Adet)
  • 1uF kondansatör (1 Adet)
  • Switch (1 Adet)
  • Klemens (3 Adet)
  • Redüktörlü DC motor (2 Adet)
  • Tekerlek (2 Adet)
  • Sarhoş teker (1 Adet)
  • Robot gövdesi olabilecek herhangi bir malzeme

Sensör Devresi PCB Çizimi

Motor Sürücü Devresi PCB Çizimi

CNY70 Kontrast Sensörü
Bu sensör kızılötesi led ve fototransistörden oluşur. Led kızılötesi ışınlar yayar. Fototransistör ise üzerine düşen ışık şiddetine ters orantılı olarak devreden bir akım geçirir.

Beyaz zemin üzerine düşen ışığın neredeyse tamamını yansıtır. Kızılötesi ledden yayılan ışınlar beyaz zemine çarpar ve yansır. Yansıyan ışınlar fototransistörün üzerine düşer. Fototransistör üzerindeki ışık şiddeti yüksek olduğundan transistör kesime gider ve üzerinden akım geçirmez. Yani sensör çıkışı 0V’tur. Siyah zemin ise üzerine düşen ışığın neredeyse tamamını soğurur. Dolayısıyla siyah zeminde fototransistör üzerindeki ışık şiddeti çok az bir değerdir ve transistör iletimdedir. Yani sensör çıkışı 5V’tur.

Sensörün çalışması için kızılötesi ledin anot ucuna artı gerilim uygulanmalı ve katot ucu gnd yapılmalıdır. Fototransistörün ise kollektörüne artı gerilim uygulanmalı ve emiter gnd yapılmalıdır.

74HC14 Schmitt Trigger Entegresi
Schmitt trigger entegresi girişten aldığı değerleri bir sınır değer ile kıyaslar (sınırın altında - üstünde kalanlar olarak)  ve kıyaslama sonucu çıkışını lojik-0 veya lojik-1 yapar.

74HC14 entegresi tersleyen bir schmitt triggerdir. Yani belirli bir değerin altındaki gerilim için çıkıştan lojik-1, üzerindeki gerilim değeri için çıkıştan lojik-0 verir.
74HC14 entegresinde 6 tane tersleyen kapı bulunur. Yani en fazla altı tane giriş-çıkış bağlayabiliriz.

Bu entegre ile devremizin çalışmasını daha kararlı bir hale getirmekteyiz.

L293D Motor Sürücü Entegresi
Aynı anda iki motoru kontrol edebilmemize yarayan bir sürçü entegresidir. İçerisinde iki tane H köprüsü barındırır. Motorlara 4,5V – 36V gerilim ve motor başına 0,6A akım verir. Zorlama akımı 1,2A’dir.

7805 Voltaj Regülatörü
7805 entegresi sabit 5V gerilim almamızı sağlayan bir entegredir. 7V-35V arası giriş gerilimi uygulanabilmektedir. Maksimum 1A çıkış verebilir.

Robot Gövdesi
Robot gövdesi, devreleri, motorları ve tekerlekleri bir arada tutacak platformdur. Bu işlevi gerçekleştirebilecek herhangi bir malzeme kullanılabilir. Robot gövdesini kendiniz yapabileceğiniz gibi piyasada hazır satılan platformları da kullanabilirsiniz. Ben bu projede Magician Chassis robot kitini kullandım.
Projenin Kaynak Kodu:
int enSol, sol, orta, sag, enSag;

void setup(){
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, INPUT);
  pinMode(4, INPUT);
  pinMode(3, INPUT);
  pinMode(2, INPUT);
  pinMode(1, INPUT);

  digitalWrite(7, HIGH); // sensor VCC
  digitalWrite(6, LOW); //sensor GND

  pinMode(12, OUTPUT); // sağ motor -
  pinMode(10, OUTPUT); //sağ motor PWM
  pinMode(13, OUTPUT); //sol motor -
  pinMode(11, OUTPUT); //sol motor PWM
 
  digitalWrite(12, LOW); // sağ motor -
  digitalWrite(13, LOW); // sol motor -
}

void loop(){
  enSol=digitalRead(5);
  sol=digitalRead(4);
  orta=digitalRead(3);
  sag=digitalRead(2);
  enSag=digitalRead(1);
 
  if(enSol==1 && sol==1 && orta==0 && sag==1 && enSag==1){
    analogWrite(10, 255);
    analogWrite(11, 255);
  }
  if(enSol==1 && sol==0 && orta==1 && sag==1 && enSag==1){
    analogWrite(10, 255);
    analogWrite(11, 150);
  }
  if(enSol==0 && sol==1 && orta==1 && sag==1 && enSag==1){
    analogWrite(10, 255);
    analogWrite(11, 0);
  }
  if(enSol==1 && sol==1 && orta==1 && sag==0 && enSag==1){
    analogWrite(10, 150);
    analogWrite(11, 255);
  }
  if(enSol==1 && sol==1 && orta==1 && sag==1 && enSag==0){
    analogWrite(10, 0);
    analogWrite(11, 255);
  }
}

 

7 yorum:

  1. rica ederim. ilginiz için ben teşekkür ederim.

    YanıtlaSil
  2. analogWrite(10, 255);

    Bu komut ilaç gibi geldi yarışmaya bir gün kala. Düz çalıştırıyorduk sonuç alamıyorduk.. Sağolasın..Varolasın..

    YanıtlaSil
  3. blog bir harika. herşey bütün detaylarıyla anlatılmış. çoğu blok yazarı açıp bir daha ugramıyor. baktıgımda sorulan sorulara cevap veren yok. ama siz çok farklısınız. çok faydalı oldu bu blog. çok tşkler. esp konusunda bilgi paylaşırsanız sevinirim. iyi günler

    YanıtlaSil
    Yanıtlar
    1. ilginiz için ben teşekkür ederim. iş yoğunluğu nedeniyle bu aralar yeni yazı ekleyemiyorum. en kısa sürede yeni projeler eklenecektir.

      Sil
  4. sayın hocam kesik kesik çizgileri zaman değeri ile mi anlıyosunuz? yoksa gittiği yolun mesafesini mi kullanıyorsunuz?
    Projenizde robotunuzun hızını elde edebiliyormusunuz?_yada bunu en kolay nasıl hesaplayabiliriz?yardımıc olursanız çok sevinirim..teşekkürler..başarılar..

    YanıtlaSil
    Yanıtlar
    1. kesik çizgileri anlamak için özel bir kod yazılmamıştır. çizgiler kaybolduğunda robot önceki verilere göre hareket etmektedir. robotun hızı için ise encoder kullanmak gerekir.

      Sil

Post Top Ad