Arduino İle TOF400C Mesafe Sensörü Kullanımı
Bu yazımızda arduino ile TOF400C mesafe sensörünün kullanımını öğreneceğiz. Bu sensörümüz IR ışınlarını kullanarak mesafe tespiti yapan bir sensördür. İlk olarak sensörümüzün özelliklerini öğrenelim. Ardından kullanımına geçelim.
TOF400C Mesafe Sensörü Nedir ve Özellikleri Nelerdir?
TOF400C, VL53L1X sistemine dayalı ToF mesafe sensörlü bir sensördür. Algılanan nesnenin rengi ve yüzeyinden bağımsız olarak mutlak mesafeyi ölçmenizi sağlayan SPAD (Single Photon Avalanche Diodes) matrisi ve FlightSense ™ teknolojisi ile etkileşime girer. 940 nm dalga boyuna sahip ışık yayan IR verici uygulaması ve bir dizi filtre sayesinde, ortam ışığından kaynaklanan parazitlere karşı iyi dirençle 400 cm’ye kadar bir menzil sunar. Sensör, 0 ila 4 cm arasında değişen bir ölü bölgeye ve 27°’lik bir algılama açısına sahiptir. Modül ayrıca 1D hareketleri algılama yeteneği de sunar. VL53L1, I2C arabirimi aracılığıyla iletişim kurar ve kullanıcı, C dilinde sunulan kolay ve kullanımı kolay bir API’ye (Uygulama Programlama Arabirimi) sahiptir. Hem endüstriyel robotlarda hem de mobil yapılarda nesnelerin ve engellerin varlığını tespit etmeye yönelik uygulamalarda kullanılabilir.
TOF400C Mesafe Sensörünün Özellikleri Nelerdir?
- Aralık: 4 ile 400 cm
- Ölü bölge: 0 ile 4 cm
- Bağlantı arayüzü: I2C
- Programlanabilir I2C adresi: 0x52 veya 0x29
- Görüş Açısı (FOV): 27°
- Değişen frekans: 50 Hz
- 1D hareket algılama özelliği
- Koruyucu kapak
- İki M2 montaj deliği
- Güç kaynağı: 3 ila 5 V
- Akım tüketimi: 40 mA
- Çalışma sıcaklığı: -20 ila 70°C
- Boyut: 20x12x15mm
VL53L1X Sensörü Nedir ve Özellikleri Nedir?
VL53L1X, kızılötesi lazer ışığını kullanarak bir nesneye olan mesafeyi ölçen çok küçük bir Uçuş Süresi Mesafe Sensörü (ToF) sensörüdür. Işığın bir nesneden yansıması için geçen süreyi ölçerek mesafeleri yüksek doğrulukla hesaplayabilir. VL53L1X, üstünde iki delik bulunan küçük bir çiptir (4,4 x 2,5 x 1,56 mm). Biri lazer ışık yayıcısı için, diğeri ışık dedektörü için. VL53L1X, yayıcıdan bir lazer ışığı artı göndererek, dedektördeki bir nesneden yansıyan ışığı alarak ve geçen zamana (uçuş süresi) dayanarak nesneye olan mesafeyi hesaplayarak çalışır. Aşağıdaki resim yayıcı ve dedektör konilerini göstermektedir.
VL53L1X’in temel özellikleri şunlardır:
- 940 nm VCSEL yayıcı (IR ışık, gözle görülemez)
- Ölçüm süresi 20ms’den 1000ms’ye kadar
- Programlanabilir ilgi alanı (ROI) boyutu
- Alıcı dizide programlanabilir ROI konumu
- Üç mesafe modu: kısa, orta ve uzun
- 4cm ile 400cm arası ölçüm mesafesi
- Çözünürlük: 1mm
- Voltaj: 2,6 ila 3,5 V
- I2C iletişim protokolü (400kHz’e kadar)
VL53L1X’in programlanabilir ilgi alanları (ROI), tam görüş alanının küçültülmesini veya birden fazla bölgeye bölünmesini sağlar. Bunu, örneğin kaydırma gibi hareket tanımayı uygulamak için kullanabilirsiniz. Daha fazla ayrıntı için VL53L1X sensörünün veri sayfasına(datasheet) bakın:
Gerekli Malzemeler
TOF400C Bağlantı Şeması
Bağlantımızı aşağıdaki şemaya göre yapalım.
Arduino | TOF40C |
5V | VIN |
GND | GND |
A4 | SDA |
A5 | SCL |
TOF400C Arduino Kodu
Bu sensörü kullanabilmek için öncelikle gerekli kütüphanemizi kurmamız lazım. Kullanacağımız kütüphaneyi aşağıdan indirebilirsiniz.
Kütüphanemizi indirip yüklediyseniz artık kodumuza bakabiliriz.
#include <Wire.h> //i2c protokolü için gerekli kütüphanemiz
#include "SparkFun_VL53L1X.h" // TOF400C için gerekli kütüphanemizi ekliyoruz.
//Opsiyonel interrupt and shutdown(kapatma) pinleri.
#define SHUTDOWN_PIN 2
#define INTERRUPT_PIN 3
SFEVL53L1X distanceSensor; // sensörümüz için ilk olarak objemizi oluşturuyoruz.
//interupt ve shutdown pinlerini kullanmayacaksak aşağıdaki satırı yorum satırı olarak bırakın.
//SFEVL53L1X distanceSensor(Wire, SHUTDOWN_PIN, INTERRUPT_PIN);
void setup(void)
{
Wire.begin(); // i2c haberleşmeyi başlatıyoruz.
Serial.begin(115200); // seri haberleşmeyi başlatıyoruz.
Serial.println("VL53L1X Sensör Testi"); // bağlatı testi yaptırıyoruz
if (distanceSensor.begin() != 0) //Eğer düzgün 0 değerini görmezse
{
Serial.println("Sensor baslatilamadi. Lutfen baglantinizi kontrol edin.");
while (1)
;
}
Serial.println("Sensor baglandi!");
}
void loop(void)
{
distanceSensor.startRanging(); //Ölçümü başlatmak için yapılandırma baytlarını yazdırma
while (!distanceSensor.checkForDataReady())
{
delay(1);
}
int distance = distanceSensor.getDistance(); //ölçülen mesafeyi alma
distanceSensor.clearInterrupt(); // intereptlar temizliyoruz
distanceSensor.stopRanging(); // mesafe baytlarını okumayı bitiriyoruz
Serial.print("Mesafe(mm): ");
Serial.print(distance);
float distanceInches = distance * 0.0393701; // Milimetreyi İnc'e çevirme işlemi yapıyoruz
float distanceFeet = distanceInches / 12.0; // İnc'i feet mesafe türüne çevirme işlemi yapıyoruz
Serial.print("\tMesafe(ft): ");
Serial.print(distanceFeet, 2); // feet'i ondalıklı olarak yazdırıyoruz.
Serial.println();
}
Kodumuzu yükleyip seri port ekranımızı açtığımızda çıktımız aşağıdaki fotoğraf gibi olması gerekmektedir.
Bir yazımızın daha sonuna geldik. Takıldığınız yerleri yorum olarak sorabilirsiniz .