- VL6180X Uçuş Süresi (ToF) Mesafe Bulucu Sensörü
- Devre şeması
- VL6180 ToF Sensörü için gerekli Kitaplıkları ekleme
- Programlama ve Çalışma Açıklaması
TOF veya Time of flight, ultrasonik sensör gibi çeşitli mesafe ölçüm sensörleri ile uzaktaki nesnelerin mesafesini ölçmek için yaygın olarak kullanılan bir yöntemdir. Bir parçacığın, dalganın veya bir nesnenin bir ortam içinde bir mesafe katetmek için harcadığı zamanın ölçümü, Uçuş Süresi (TOF) olarak adlandırılır. Bu ölçüm daha sonra hızı veya yol uzunluğunu hesaplamak için kullanılabilir. Bileşim veya akış hızı gibi ortamın partikülü veya özellikleri hakkında bilgi edinmek için de kullanılabilir. Seyahat eden nesne doğrudan veya dolaylı olarak tespit edilebilir.
Ultrasonik mesafe ölçüm cihazları, uçuş süresi ilkesini kullanan ilk cihazlardan biridir. Bu cihazlar ultrasonik bir darbe yayar ve dalganın yayıcıya geri dönmesi için geçen süreye bağlı olarak katı bir malzemeye olan mesafeyi ölçer. Mesafeyi ölçmek için uygulamamızın çoğunda Ultrasonik sensör kullandık:
- Arduino & Ultrasonik Sensör Bazlı Mesafe Ölçümü
- Raspberry Pi ve HCSR04 Ultrasonik Sensörü kullanarak Mesafeyi Ölçün
- İki Ultrasonik Sensör Arasındaki Mesafe Nasıl Ölçülür?
Uçuş zamanı yöntemi, elektron hareketliliğini tahmin etmek için de kullanılabilir. Aslında, düşük iletken ince filmlerin ölçümü için tasarlanmıştı, daha sonra ortak yarı iletkenler için ayarlandı. Bu teknik, organik alan etkili transistörlerin yanı sıra metal dielektrik metal yapılar için kullanılır. Lazer veya voltaj darbesinin uygulanmasıyla fazla yükler üretilir.
TOF ilkesi, bir sensör ve bir nesne arasındaki mesafeyi ölçmek için kullanılmaktadır. Sinyalin bir cisimden yansıttıktan sonra sensöre geri dönmesi için geçen süre ölçülür ve mesafenin hesaplanmasında kullanılır. TOF prensibi ile ses, ışık gibi çeşitli sinyal türleri (taşıyıcılar) kullanılabilir. TOF menzil bulma için kullanıldığında, ses yerine ışık yayarken çok güçlüdür. Ultrasona kıyasla, daha hızlı okuma, daha yüksek doğruluk ve daha geniş aralık sağlarken düşük ağırlığını, küçük boyutunu ve düşük güç tüketimi özelliklerini korur.
Bu eğitimde , sensör ve nesne arasındaki mesafeyi hesaplamak için Arduino ile bir VL6180X TOF Mesafe Bulucu Sensörü kullanacağız. Bu sensör ayrıca LUX'daki Işık yoğunluğu değerini de söyler.
VL6180X Uçuş Süresi (ToF) Mesafe Bulucu Sensörü
VL6180, ışığın herhangi bir yüzeyden geri yansıması için harcadığı zamanı ölçmek için hassas bir saat kullandığından diğer mesafe sensörlerinden farklıdır. Bu, VL6180'e diğer sensörlere göre bir avantaj sağlar çünkü daha doğru ve gürültüden etkilenmez.
VL6180, bir IR yayıcı, bir ortam ışığı sensörü ve bir menzil sensörü içeren 3'ü 1 arada bir pakettir. Bir I 2 C arayüzü üzerinden iletişim kurar. Yerleşik 2.8V regülatöre sahiptir. Dolayısıyla, 2,8V'den daha büyük bir voltaj taksak bile, karta zarar vermeden otomatik olarak aşağı kayacaktır. Bu 25 cm kadar bir dizi önlemler. İçinde iki programlanabilir GPIO sağlanmıştır.
Devre şeması
Burada Nokia 5110 LCD, Işık seviyesini ve mesafeyi görüntülemek için kullanılır. Nokia 5110 LCD 3,3V'de çalışır, bu nedenle doğrudan Arduino Nano dijital pinlerine bağlanamaz. 3.3V hatlarını 5V dijital pinlerden korumak için veri sinyalleri ile seri olarak 10k direnç ekleyin. Nokia 5110 LCD'yi Arduino ile kullanma hakkında daha fazla bilgi edinin .
VL6180 Sensör doğrudan Arduino bağlanabilir. VL6180 ve Arduino arasındaki iletişim I2C'dir. Aslında I2C iletişim protokolü, SPI ve UART'ın en iyi özelliklerini birleştirir. Burada birden fazla slave'i tek bir master'a bağlayabiliriz ve tekli veya çoklu slave'i kontrol eden birden fazla masterimiz olabilir. UART iletişimi gibi, I2C de iletişim için iki kablo kullanır SDA (Seri Veri) ve SCL (Seri Saat), bir veri hattı ve saat hattı.
VL6180 ToF Mesafe Bulucu Sensörünü Arduino ile bağlamak için devre şeması aşağıda gösterilmiştir:
- LCD'nin RST Pinini 10K direnç üzerinden Arduino'nun 6 numaralı pinine bağlayın.
- LCD'nin CE Pinini 10K direnç üzerinden Arduino'nun 7 numaralı pinine bağlayın.
- LCD'nin DC Pinini 10K direnç üzerinden Arduino'nun 5 numaralı pinine bağlayın.
- LCD'nin DIN Pinini 10K direnç üzerinden Arduino'nun 4. pinine bağlayın.
- LCD'nin CLK Pinini 10K direnç üzerinden Arduino'nun 3. pinine bağlayın.
- LCD'nin VCC Pinini Arduino'nun 3.3V pinine bağlayın.
- LCD'nin GND Pinini Arduino'nun GND'sine bağlayın.
- VL6180'in SCL pinini Arduino'nun A5 pinine bağlayın
- VL6180'in SDA pinini Arduino'nun A4 pinine bağlayın
- VL6180'in VCC pinini Arduino'nun 5V pinine bağlayın
- VL6180'in GND pinini Arduino'nun GND pinine bağlayın
VL6180 ToF Sensörü için gerekli Kitaplıkları ekleme
VL6180 sensörünün Arduino ile arayüzlenmesinde üç kütüphane kullanılacaktır.
1. Adafruit_PCD8544
Adafruit_PCD8544, Tek Renkli Nokia 5110 LCD Ekranlar için bir kitaplıktır. Bu ekranlar iletişim için SPI kullanır. Bu LCD ile arayüz oluşturmak için dört veya beş pim gereklidir. Bu kitaplığı indirmek için bağlantı aşağıda verilmiştir:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Arduino için Adafruit_GFX kütüphanesi, ortak bir sözdizimi ve grafik ilkelleri (noktalar, çizgiler, daireler vb.) Kullandığımız her bir görüntüleme cihazı için donanıma özel bir kitaplıkla eşleştirilmesi gerekir (daha düşük seviyeli işlevleri ele almak için). Bu kitaplığı indirmek için bağlantı aşağıda verilmiştir:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180, VL6180 sensörünün temel işlevselliğine sahip Arduino kütüphanesidir. VL6180, bir IR yayıcı, bir menzil sensörü ve bir I2C arayüzü aracılığıyla iletişim kuran bir ortam ışığı sensöründen oluşur. Bu kütüphane, sensörden gelen mesafe ve ışık çıkışlarını okumanıza izin verir ve verileri bir seri bağlantı yoluyla çıkarır. Bu kitaplığı indirmek için bağlantı aşağıda verilmiştir:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Arduino IDE'de Sketch >> Include library >> Add.ZIP library'ye giderek tüm kitaplıkları tek tek ekleyin . Ardından, yukarıdaki bağlantılardan indirdiğiniz kitaplığı yükleyin.
Bazen tel ve SPI kitaplıkları eklemenize gerek kalmaz, ancak bir hata alırsanız lütfen bunları indirin ve Arduino IDE'nize ekleyin.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Programlama ve Çalışma Açıklaması
Bu eğitimin sonunda bir çalışma videosu ile birlikte eksiksiz kod verilmiştir, burada projenin çalışmasını anlamak için tüm programı açıklıyoruz.
Bu programda parçaların çoğu eklediğimiz kütüphaneler tarafından işlendiğinden endişelenmenize gerek yok.
In kurulum parçası ler 115200 olarak baud hızını ayarlamak ve I2C için Tel kütüphane başlatılamadı. Ardından, VL6180 sensörünün düzgün çalışıp çalışmadığını kontrol edin, çalışmıyorsa bir hata mesajı gösterin.
Aşağıdaki bölümde ekranı kuruyoruz, kontrastı istediğiniz değere göre değiştirebilirsiniz burada ben 50 olarak ayarlıyorum
geçersiz kurulum () { Serial.begin (115200); // Seri'yi 115200bps'de Başlat Wire.begin (); // I2C kitaplık gecikmesini başlat (100); // gecikme. if (sensor.VL6180xInit ()! = 0) { Serial.println ("BAŞLATMA BAŞARISIZ"); // Cihazı başlatın ve hataları kontrol edin }; sensor.VL6180xDefautSettings (); // Başlamak için varsayılan ayarları yükleyin. gecikme (1000); // 1 sn gecikme display.begin (); // init bitti // ekranı en iyi görüntülemeye uyarlamak için // kontrastı değiştirebilirsiniz ! display.setContrast (50); display.display (); // açılış ekranını göster display.clearDisplay (); }
Boş döngü parçası kurulumunda, değerleri LCD ekranda görüntülemek için talimatlar. Burada iki değer görüntülüyoruz, biri "Lüks olarak ortam ışığı seviyesi" (Bir lüks aslında metrekare başına bir lümendir) ve ikincisi "mm cinsinden ölçülen mesafe". Bir LCD ekranda farklı değerleri görüntülemek için, “display.setCursor (0,0);” kullanarak LCD ekranda gösterilmesi gereken her metnin konumunu tanımlayın.
void döngü () { display.clearDisplay (); // Ortam Işığı seviyesini alın ve LUX Serial.print'de rapor edin ("Ortam Işık Seviyesi (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (SİYAH); display.setCursor (0,0); display.println ("Hafif Seviye"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Mesafe alın ve mm cinsinden raporlayın Serial.print ("Ölçülen mesafe (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (SİYAH); display.setCursor (0, 24); display.println ("Mesafe (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); gecikme (500); }
Programı yükledikten sonra, seri monitörü açın ve aşağıda gösterildiği gibi çıktıyı göstermelidir.
VL6180 TOF telemetre akıllı telefonlarda, taşınabilir dokunmatik ekranlı cihazlarda, Tablette, dizüstünde, oyun cihazlarında ve Ev aletlerinde / endüstriyel cihazlarda kullanılır.
Burada Lux cinsinden Ortam ışık seviyesini ve mm cinsinden mesafeyi gösteriyoruz.
Aşağıda tam programı ve tanıtım videosunu bulun. Ayrıca Ultrasonik sensörü ve ışık seviyesini kullanarak BH1750 Ortam Işığı Sensörünü kullanarak mesafenin nasıl ölçüleceğini kontrol edin.