- Cảm biến tìm phạm vi thời gian bay (ToF) VL6180X
- Sơ đồ mạch
- Thêm các Thư viện bắt buộc cho Cảm biến ToF VL6180
- Lập trình và Giải thích làm việc
TOF hay Thời gian bay là một phương pháp thường được sử dụng để đo khoảng cách của các vật thể ở xa bằng các cảm biến đo khoảng cách khác nhau như cảm biến siêu âm. Phép đo thời gian mà một hạt, sóng hoặc một vật thể thực hiện để di chuyển một quãng đường qua môi trường được gọi là Thời gian bay (TOF). Phép đo này sau đó có thể được sử dụng để tính vận tốc hoặc chiều dài đường đi. Nó cũng có thể được sử dụng để tìm hiểu về hạt hoặc đặc tính của môi trường như thành phần hoặc tốc độ dòng chảy. Đối tượng di chuyển có thể được phát hiện trực tiếp hoặc gián tiếp.
Thiết bị đo khoảng cách bằng sóng siêu âm là một trong những thiết bị sử dụng nguyên lý thời gian bay sớm nhất. Các thiết bị này phát ra một xung siêu âm và đo khoảng cách tới vật liệu rắn dựa trên thời gian sóng phản xạ trở lại thiết bị phát. Chúng tôi đã sử dụng cảm biến siêu âm trong nhiều ứng dụng của mình để đo khoảng cách:
- Đo khoảng cách dựa trên cảm biến siêu âm & Arduino
- Đo khoảng cách bằng cảm biến siêu âm Raspberry Pi và HCSR04
- Cách đo khoảng cách giữa hai cảm biến siêu âm
Phương pháp thời gian bay cũng có thể được sử dụng để ước tính độ linh động của electron. Trên thực tế, nó được thiết kế để đo các màng mỏng dẫn điện thấp, sau này nó được điều chỉnh cho các chất bán dẫn thông thường. Kỹ thuật này được sử dụng cho các bóng bán dẫn hiệu ứng trường hữu cơ cũng như các cấu trúc kim loại-điện môi-kim loại. Bằng cách áp dụng tia laser hoặc xung điện áp, các điện tích dư thừa được tạo ra.
Các nguyên tắc TOF được sử dụng để đo khoảng cách giữa một bộ cảm biến và một đối tượng. Thời gian tín hiệu quay trở lại cảm biến sau khi phản xạ từ một vật thể được đo và nó được sử dụng để tính khoảng cách. Nhiều loại tín hiệu (sóng mang) khác nhau như âm thanh, ánh sáng có thể được sử dụng với nguyên tắc TOF. Khi TOF được sử dụng để tìm phạm vi, nó rất mạnh khi phát ra ánh sáng hơn là âm thanh. So với sóng siêu âm, nó cung cấp khả năng đọc nhanh hơn, độ chính xác cao hơn và phạm vi lớn hơn nhưng vẫn duy trì các đặc điểm trọng lượng thấp, kích thước nhỏ và tiêu thụ điện năng thấp.
Ở đây trong hướng dẫn này, chúng tôi sẽ sử dụng Cảm biến tìm phạm vi VL6180X TOF với Arduino để tính toán khoảng cách giữa cảm biến và đối tượng. Cảm biến này cũng cho biết giá trị Cường độ sáng trong LUX.
Cảm biến tìm phạm vi thời gian bay (ToF) VL6180X
VL6180 khác với các cảm biến khoảng cách khác vì nó sử dụng đồng hồ chính xác để đo thời gian ánh sáng phản xạ lại từ bất kỳ bề mặt nào. Điều này mang lại lợi ích cho VL6180 so với các cảm biến khác vì nó chính xác hơn và không bị nhiễu.
VL6180 là một gói 3 trong 1 bao gồm bộ phát hồng ngoại, cảm biến ánh sáng xung quanh và cảm biến phạm vi. Nó giao tiếp thông qua giao diện I 2 C. Nó có một bộ điều chỉnh 2,8V tích hợp. Vì vậy, ngay cả khi chúng ta cắm vào điện áp lớn hơn 2,8V, nó sẽ tự động chuyển xuống mà không làm hỏng bo mạch. Nó đo được phạm vi lên đến 25 cm. Hai GPIO có thể lập trình được cung cấp trong đó.
Sơ đồ mạch
Ở đây, Nokia 5110 LCD được sử dụng để hiển thị mức độ ánh sáng và khoảng cách. Nokia 5110 LCD hoạt động ở 3.3V nên không thể kết nối trực tiếp với các chân kỹ thuật số Arduino Nano. Vì vậy, thêm điện trở 10k nối tiếp với tín hiệu dữ liệu để bảo vệ các đường 3.3V từ chân kỹ thuật số 5V. Tìm hiểu thêm về cách sử dụng Nokia 5110 LCD với Arduino.
Các VL6180 Sensor có thể được kết nối trực tiếp đến Arduino. Giao tiếp giữa VL6180 và Arduino là I2C. Thực tế giao thức truyền thông I2C kết hợp các tính năng tốt nhất của SPI và UART. Ở đây chúng ta có thể kết nối nhiều nô lệ với một chủ duy nhất và chúng ta có thể có nhiều chủ điều khiển một hoặc nhiều nô lệ. Giống như giao tiếp UART, I2C sử dụng hai dây cho giao tiếp SDA (Dữ liệu nối tiếp) và SCL (Đồng hồ nối tiếp), một đường dữ liệu và đường đồng hồ.
Sơ đồ mạch để kết nối cảm biến VL6180 ToF Range Finder với Arduino được hiển thị bên dưới:
- Kết nối chân RST của LCD với chân 6 của Arduino thông qua điện trở 10K.
- Kết nối chân CE của LCD với chân 7 của Arduino thông qua điện trở 10K.
- Kết nối chân DC của LCD với chân 5 của Arduino thông qua điện trở 10K.
- Kết nối chân DIN của LCD với chân 4 của Arduino thông qua điện trở 10K.
- Kết nối chân CLK của LCD với chân 3 của Arduino thông qua điện trở 10K.
- Kết nối chân VCC của LCD với chân 3,3V của Arduino.
- Kết nối Chân GND của LCD với GND của Arduino.
- Kết nối chân SCL của VL6180 với chân A5 của Arduino
- Kết nối chân SDA của VL6180 với chân A4 của Arduino
- Kết nối chân VCC của VL6180 với chân 5V của Arduino
- Kết nối chân GND của VL6180 với chân GND của Arduino
Thêm các Thư viện bắt buộc cho Cảm biến ToF VL6180
Ba thư viện sẽ được sử dụng trong giao tiếp cảm biến VL6180 với Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 là một thư viện dành cho Màn hình LCD đơn sắc Nokia 5110. Các màn hình này sử dụng SPI để giao tiếp. Cần có bốn hoặc năm chân để giao tiếp với màn hình LCD này. Liên kết để tải xuống thư viện này được cung cấp dưới đây:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Thư viện Adafruit_GFX cho Arduino là thư viện đồ họa cốt lõi cho màn hình LCD, cung cấp một cú pháp chung và tập hợp các nguyên thủy đồ họa (điểm, đường, vòng tròn, v.v.). Nó cần được ghép nối với một thư viện phần cứng cụ thể cho từng thiết bị hiển thị mà chúng tôi sử dụng (để xử lý các chức năng cấp thấp hơn). Liên kết để tải xuống thư viện này được cung cấp dưới đây:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 là thư viện Arduino với chức năng cơ bản của cảm biến VL6180. VL6180 bao gồm một bộ phát hồng ngoại, một cảm biến phạm vi và một cảm biến ánh sáng xung quanh giao tiếp thông qua giao diện I2C. Thư viện này cho phép bạn đọc khoảng cách và đầu ra ánh sáng từ cảm biến, và xuất dữ liệu qua kết nối nối tiếp. Liên kết để tải xuống thư viện này được cung cấp dưới đây:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Thêm lần lượt tất cả các thư viện bằng cách vào Sketch >> Bao gồm thư viện >> Thêm thư viện.ZIP trong Arduino IDE. Sau đó tải lên thư viện mà bạn đã tải xuống từ các liên kết trên.
Đôi khi bạn sẽ không cần thêm thư viện dây và SPI, nhưng nếu bạn gặp lỗi, vui lòng tải xuống và thêm chúng vào IDE Arduino của bạn.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Lập trình và Giải thích làm việc
Mã hoàn chỉnh với video hoạt động được đưa ra ở cuối hướng dẫn này, ở đây chúng tôi sẽ giải thích chương trình hoàn chỉnh để hiểu hoạt động của dự án.
Trong chương trình này, phần lớn các phần được xử lý bởi các thư viện mà chúng tôi đã thêm vào nên bạn không cần phải lo lắng về điều đó.
Trong thiết lập một phần của thiết lập tốc độ truyền là 115200 và khởi tạo thư viện Dây cho I2C. Sau đó kiểm tra xem cảm biến VL6180 có hoạt động bình thường hay không, nếu không hoạt động thì hiện thông báo lỗi.
Trong phần sau, chúng tôi đang thiết lập màn hình, bạn có thể thay đổi độ tương phản thành giá trị mong muốn của bạn ở đây, tôi đặt nó là 50
void setup () { Serial.begin (115200); // Bắt đầu Serial ở tốc độ 115200bps Wire.begin (); // Khởi động thư viện I2C delay (100); // sự chậm trễ. if (sensor.VL6180xInit ()! = 0) { Serial.println ("FAILED TO INITALIZE"); // Khởi tạo thiết bị và kiểm tra lỗi }; cảm biến.VL6180xDefautSettings (); // Tải cài đặt mặc định để bắt đầu. chậm trễ (1000); // độ trễ 1s display.begin (); // init done // bạn có thể thay đổi độ tương phản xung quanh để điều chỉnh màn hình // để xem tốt nhất! display.setContrast (50); display.display (); // hiển thị splashscreen display.clearDisplay (); }
Trong vòng khoảng trống phần thiết lập các hướng dẫn để hiển thị các giá trị trên màn hình LCD. Ở đây chúng tôi đang hiển thị hai giá trị, một là “Mức ánh sáng xung quanh tính bằng Lux” (Một lux thực sự là một lumen trên diện tích mét vuông) và giá trị thứ hai là “Khoảng cách được đo bằng mm”. Để hiển thị các giá trị khác nhau trên màn hình LCD, hãy xác định vị trí của từng văn bản sẽ hiển thị trên màn hình LCD bằng cách sử dụng “display.setCursor (0,0);”.
void loop () { display.clearDisplay (); // Lấy mức ánh sáng xung quanh và báo cáo trong LUX Serial.print ("Mức ánh sáng xung quanh (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (ĐEN); display.setCursor (0,0); display.println ("Mức độ sáng"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Lấy Khoảng cách và báo cáo bằng mm Serial.print ("Khoảng cách đo được (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (ĐEN); display.setCursor (0, 24); display.println ("Khoảng cách (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); chậm trễ (500); }
Sau khi tải lên chương trình, hãy mở màn hình nối tiếp và nó sẽ hiển thị đầu ra như hình dưới đây.
Công cụ tìm phạm vi VL6180 TOF được sử dụng trong điện thoại thông minh, thiết bị màn hình cảm ứng di động, Máy tính bảng, máy tính xách tay, thiết bị chơi game và thiết bị gia dụng / thiết bị công nghiệp.
Ở đây chúng tôi đang hiển thị mức ánh sáng xung quanh theo Lux và khoảng cách tính bằng mm.
Tìm chương trình hoàn chỉnh và Video trình diễn bên dưới. Đồng thời kiểm tra cách đo khoảng cách bằng Cảm biến siêu âm và mức ánh sáng bằng Cảm biến ánh sáng xung quanh BH1750.