Arduino İle TCRT5000 Kızılötesi Sensör Kullanımı

Bu derste, TCRT5000 Kızılötesi Sensör nasıl kullanılır ve gürültüler nasıl azaltılır bunu öğreneceğiz. Bu sensör tipik olarak hedefin kaba mesafesini ölçmek veya cisim tespiti amacıyla kullanılır. Bu tip sensörler, ortamda mevcut olan statik gürültüden etkilenir. Bu nedenle, bu yazımızın ana odak noktası, her türlü ortam gürültüsünü ortadan kaldırmasını sağlayan bir program yazmaktır. Dolayısıyla bu yöntemi kullandıktan sonra IR sensörünün farklı ortam koşulları için kalibre edilmesine gerek kalmayacaktır.

Yazımıza ilk olarak TCRT5000 kızılötesi sensörün genel özelliklerinden ve genel olarak nerelerde kullanılır birkaç örnek vererek başlayalım.

TCRT5000 Kızılötesi Sensör
TCRT5000 Kızılötesi Sensör

TCRT5000 Özellikleri Nelerdir?

  • Paket tipi: kurşunlu
  • Dedektör tipi: fototransistör
  • Boyutlar (mm olarak U x G x Y): 10,2 x 5,8 x 7
  • Tepe çalışma mesafesi: 2,5 mm
  • %20 bağıl kollektör akımı dahilinde çalışma aralığı: 0,2 mm ila 15 mm
  • Test edilen tipik çıkış akımı: IC = 1 mA
  • Gün ışığı engelleme filtresi
  • Verici dalga boyu: 950 nm
  • Kurşun (Pb) içermeyen lehimleme çıktı
  • RoHS yönergesi 2002/95/EC’ye ve WEEE 2002/96/EC’ye uygun

TCRT5000 Kızılötesi Sensörün Kullanıldığı Yerler Nelerdir?

  • Mil enkoderi için konum sensörü
  • Kağıt, IBM kartları, manyetik bantlar vb. gibi yansıtıcı malzemelerin tespiti.
  • VCR’de mekanik hareketler için limit anahtarı
  • Çizgi izleyen robotlarda
  • Sumo robotlarında

TCRT5000 sensöründe ldr kullanır gibi analog veri okuma yapacağız. Analog verinin nasıl okunduğunu bilmiyorsanız aşağıdaki linkten analog verinin nasıl okunduğunu anlattığımız yazımıza bakabilirsiniz.

TCRT5000 Kızılötesi Sensörünün Çalışma Prensibi Nedir?

IR sensörü kullanılarak mesafe ölçümü çok kolaydır. Hedefe bir IR ışını gönderilir ve yansıyan ışın fotodiyot tarafından yakalanır. Fotodiyot, ışığın yoğunluğunu ölçer (burada çoğunlukla IR ışığı). IR diyot, sadece IR ışığının yoğunluğunu ölçmez, aynı zamanda görünür ışığa da duyarlıdır. Fotodiyot tarafından kaydedilen IR ışığının yoğunluğu, hedef ile sensör arasındaki mesafeyi temsil eder.

Kızılötesi Işığın Cisim ile Uzaklık İlişkisi

Bu tabloya dışarıdan gelen gürültülerde etki etmektedir.

Arduino İle TCRT5000 Kızılötesi Sensörünün Bağlantı Şeması

TCRT5000 sensörünün devre şeması aşağıdadır.

TCRT5000 Devre Şeması
TCRT5000 Devre Şeması

Dijital giriş(Digital in) pini arduinoda 6 nolu pinine bağlamanız gerekmektedir. Arduinonun 5v pinine 5K ohm bacağı bağlanmalıdır. 5K ohm dirençten çıkan diğer bacak ise bizim fotodiyotumuza bağlanmalıdır. Fotodiyotumuzdan çıkan diğer bacak ise toprağa bağlanmalıdır. 5K ohm ile fotodiyot arasına arduinonun A3 pininden bir bağlantı yapmalıyız.

Arduino Kodumuz:

void setup() 
{
Serial.begin(9600); 
pinMode(6,OUTPUT); 
}
void loop() 
{  digitalWrite(6,HIGH); 
delayMicroseconds(500); 
a=analogRead(A3);
Serial.println(a); }

Şimdi seri çiziciyi açın ve sensörün önünde bir hedef hareket ettirin. Seri çizicide grafiğin nasıl değiştiğine bakın.

Eğer dikkatli baktıysanız bu şekilde ölçüm yaparsanız grafiğimize dışarıdan çok fazla gürültünün etki ettiğini göreceksiniz. Bunun sebebi şudur:

  • Ölçüm ambiyansa duyarlıdır. Ortam ışığındaki herhangi bir değişiklik ölçümü bozmaktadır.

Örneğin: Eğer biz bu kod ile sabah referans değerler alırsak akşam için bu referans değeri uyuşmayacaktır. Başka bir örnek verecek olursak. Diyelimki odamızdaki lamba kapalıyken biz bir ölçüm aldık ve daha sonra ışığımızı açıp bir deneme yaptığımızda referans değerlerimizin uyuşmadığını göreceksiniz.

TCRT5000 Sensörüne Etki Eden Gürültü Kaynakları

Referans değeri alırken sürekli referans değeriniz değişmektedir. Bunun sebebi dışarıdan etki eden faktörlerden dolayı olduğunu söylemiştik. Aşağıdaki resimde bu faktörler gösterilmektedir.

Sensöre Etki Eden Işık Kaynakları
Sensöre Etki Eden Işık Kaynakları
  • Güneşten Gelen IR Radyasyonu: Güneş, IR radyasyonunun büyük bir bölümünü dünyaya iletir. Bu da fotodiyotlara etki etmektedir.
  • İç Mekan Aydınlatması: IR fotodiyot sadece IR ışığını yakalamaz, aynı zamanda oda ışıklarından iletilen görünür ışığı da algılar. Buda bizim ölçümlerimize etki etmektedir.
  • Isı Kaynağı: Tüm ısı kaynakları, IR fotodiyot tarafından yakalanan bir çeşit radyasyon yayar. Bu radyasyonun miktarı, cismin sıcaklığına ve boyutuna bağlıdır.

Bu kaynaklar, IR Fotodiyotlar tarafından yakalanan IR radyasyonu yayar, bu yüzden hata ölçümümüze eklenir.

IR Gürültü Azaltma Yöntemi

Resimde görüldüğü gibi ledi açarsak fotodiyot gürültü+sinyal ölçer, ledi kapatırsak fotodiyot sadece gürültü alır. Bu iki değer arasındaki fark gürültüden arındırılmış veriyi verecektir. Çok hızlı iki okuma yaparsak, gürültü giderme daha iyi olur.

Sadece Gürültünün Ölçülmesi
Sadece Gürültünün Ölçülmesi
Gürültülü ve Gürültüsüz Verinin Alınması

Buradaki mantık şu şekildedir. Sensörümüzün IR ışık kaynağına ilk başta güç verilerek hem gürültü hemde bizim istediğimiz veri beraber ölçülür. Daha sonra sensörümüzün IR ışık kaynağına güç verilmeden ortamdan gelen gürültü ölçülür. İki ölçüm sonucunda ilk ölçüm verisinden sonraki ölçüm verisi çıkarılarak gürültüsüz veri ölçülmüş olur.

Doğru Veri=(Gürültü+Doğru Veri) – (Gürültü)

Not: Bu yöntemle, mesafe ve sensör çıktısı arasındaki ilişki doğrusal olmadığı için, gürültü verilerinin çıkarılması tam olarak doğru çıktı vermeyecektir. Ancak, düşük doğrulukta uygulamalar için bu tatmin edici bir şekilde çalışacaktır.

Gürültüsü Azaltma Yönteminin Çıktısı

Aşağıdaki resimde Gürültü, Doğru Veri ve Gürültülü Verinin grafiği yer almaktadır.

Gürültü,Gürültülü ve Doğru Verinin Grafiği
Gürültü,Gürültülü ve Doğru Verinin Grafiği

Bu yöntemle yaptığınız sistemi sürekli kalibre etmenize gerek kalmadan kullanmanıza olanak sağlayacaktır. Aşağıda yukarıdaki yöntemimizin kodu yer almaktadır.

int a,b,c;
void setup() 
{
Serial.begin(9600);
pinMode(6,OUTPUT);
}

void loop() {
 digitalWrite(6,HIGH);    // Turning ON LED
 delayMicroseconds(500);  //wait
 a=analogRead(A3);        //take reading from photodiode(pin A3) :noise+signal
 digitalWrite(6,LOW);     //turn Off LED
 delayMicroseconds(500);  //wait
 b=analogRead(A3);        // again take reading from photodiode :noise
c=a-b;                    //taking differnce:[ (noise+signal)-(noise)] just signal

//Serial.print(a);         //noise+signal
//Serial.print("\t");
//Serial.print(b);         //noise
//Serial.print("\t");
Serial.println(c);         // denoised signal
 
}