Tính năng: • Cảm biến đo khoảng cách đa vùng nhanh và chính xác: - Đầu ra đa vùng khác nhau với các vùng riêng biệt 4x4 hoặc 8x8.. Phát hiện khoảng cách đa vùng và đa đối tượng cho phép
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
***
BÁO CÁO NHẬP MÔN NGÀNH ĐIỆN
Đề tài: Kết nối Arduino với thiết bị bên ngoài : module VL53L5CX
GVHD: Chu Đức Việt
Nhóm : 2
SVTH: - Trần Tấn Dương 20202741.
- Nguyễn Tiến Dũng 20202786
- Nguyễn Tuấn Dương 20202740
- Lại Nguyễn Đức Giang 20202742
Hà Nội : tháng 2 năm 2022
Trang 2MỤC LỤC
I GIỚI THIỆU CHUNG 3
1 Tính năng: 3
2 Ứng dụng: 4
3 Mô tả 4
II Thông số kĩ thuật 5
1 Thông số chung 5
2 Trường quan sát 5
3 Trường chiếu sáng 6
4 Sơ đồ khối hệ thống 7
5 Cổng kết nối thiết bị 7
III GIAO TIẾP VỚI MODULE VL53L5CX - SATEL VÀ ARDUINO 9
1 Kết nối module lv53l5cx-satel với arduino 9
2 Lập trình điều khiển module VL53L5CX – SATEL 10
Trang 3I GIỚI THIỆU CHUNG
MODLUE VL53L5CX - SATEL
1 Tính năng:
• Cảm biến đo khoảng cách đa vùng nhanh và chính xác:
- Đầu ra đa vùng khác nhau với các vùng riêng biệt 4x4 hoặc 8x8
- Chế độ năng lượng thấp tự động với ngưỡng có thể lập trình ngắt để đánh thức máy chủ
- Lên đến 400 cm khác nhau.
- Phát hiện đa mục tiêu và đo khoảng cách trong mỗi khu vực.
- Khả năng tốc độ khung hình 60 Hz.
- Xử lý biểu đồ và bù theo thuật toán giảm thiểu hoặc loại bỏ tác động của nhiễu
xuyên âm kính che
- Chỉ báo chuyển động cho từng khu vực để hiển thị nếu các mục tiêu đã di
chuyển và chúng đã di chuyển như thế nào
• Mô-đun thu nhỏ được tích hợp đầy đủ với trường nhìn rộng (FoV):
- Bộ phát: bề mặt khoang dọc phát ra ánh sáng vô hình 940 nm phát ra tia laser
(VCSEL) và trình điều khiển tương tự tích hợp
- FoV vuông chéo 63 ° sử dụng các phần tử quang học nhiễu xạ (DOE) trên cả
bộ phát và bộ thu
- Nhận mảng điốt tuyết lở photon đơn (SPAD).
- Bộ vi điều khiển công suất thấp chạy Firmware.
- Kích thước: 6.4 x 3.0 x 1.5 mm
• Tích hợp dễ dàng:
- Thành phần có thể chỉnh lại đơn lẻ.
Trang 4- Các tùy chọn nguồn điện linh hoạt, hoạt động đơn lẻ 3,3 V hoặc 2,8 V hoặc kết
hợp giữa 3,3 V hoặc 2,8 V AVDD với 1,8 V IOVDD
- Tương thích với nhiều loại vật liệu kính che.
2 Ứng dụng:
• Sự hiểu biết về cảnh vật Phát hiện khoảng cách đa vùng và đa đối tượng cho phép lập bản đồ phòng 3D và phát hiện chướng ngại vật cho các ứng dụng robot
• FoV rộng và quét đa vùng cho phép quản lý nội dung (tải trong xe tải, xe tăng, thùng rác)
• Công nhận cử chỉ
• Kiểm soát mức chất lỏng
• Chỉnh sửa keystone cho máy chiếu video
• Tự động lấy nét hỗ trợ bằng laser (LAF) Nâng cao tốc độ và độ mạnh của hệ thống
AF của máy ảnh, đặc biệt là trong các cảnh khó ánh sáng yếu hoặc độ tương phản thấp
• Tăng cường thực tế ảo / thực tế ảo (AR / VR) Máy ảnh kép lập thể và hỗ trợ độ sâu 3D nhờ đo khoảng cách đa vùng
• Tòa nhà thông minh và hệ thống chiếu sáng thông minh (phát hiện người dùng để đánh thức thiết bị)
• IoT (phát hiện người dùng và đối tượng)
• Theo dõi tiêu điểm video Phạm vi 60 Hz cho phép tối ưu hóa thuật toán lấy nét liên tục
3 Mô tả
VL53L5CX là cảm biến hiện đại, Time-of-Flight (ToF), cảm biến đa vùng nâng cao dòng sản phẩm ST FlightSense Nằm trong một gói nhỏ gọn có thể chỉnh lại, nó tích hợp một mảng SPAD, bộ lọc hồng ngoại vật lý và các phần tử quang học nhiễu xạ (DOE) để đạt được hiệu suất khác nhau tốt nhất trong các điều kiện ánh sáng xung quanh khác nhau với nhiều loại vật liệu kính che phủ.
Việc sử dụng DOE phía trên bề mặt khoang thẳng đứng phát ra tia laser (VCSEL) cho phép chiếu một FoV vuông lên hiện trường Sự phản xạ của ánh sáng này được thấu kính thu hội tụ vào một mảng SPAD.
Không giống như các cảm biến IR thông thường, VL53L5CX sử dụng công nghệ ToF trực tiếp thế hệ mới nhất của ST cho phép đo khoảng cách tuyệt đối bất kể màu sắc và độ phản xạ mục tiêu Nó cung cấp phạm vi chính xác lên đến 400 cm và có
Trang 5thể hoạt động ở tốc độ nhanh (60 Hz), khiến nó trở thành cảm biến ToF thu nhỏ, đa vùng, nhanh nhất trên thị trường.
Có thể đo khoảng cách đa vùng lên đến 8x8 vùng với FoV chéo 63 ° rộng có thể được giảm bớt bằng phần mềm
Nhờ các thuật toán được cấp bằng sáng chế ST Histogram, VL53L5CX có thể phát hiện các đối tượng khác nhau trong FoV Biểu đồ cũng cung cấp khả năng miễn dịch để che phủ nhiễu xuyên âm của thủy tinh ngoài 60 cm.
II Thông số kĩ thuật
1 Thông số chung
Bảng 1 Các thông số vl53l5cx
2 Trường quan sát
Rx (hoặc bộ cảm biến) vùng loại trừ bao gồm tất cả các mô-đun dung sai lắp ráp và được sử dụng để xác định kích thước cửa sổ đo Cửa sổ đo phải bằng hoặc rộng hơn khu vực loại trừ
Khu vực phát hiện đại diện cho việc áp dụng của hệ thống FoV mà mục tiêu đc phát hiện, và khoảng cách đo được nó được xác định bởi ống kính Rx hoạc khẩu độ Rx, và hẹp hơn vùng loại trừ
Hình 1 Mô tả hệ thống FoV và vùng loại trừ (ko theo tỉ lệ)
Kích cỡ 6.4 x 3.0 x 1.5 mm Phạm vi 2 to 400 cm mỗi vùng
Điện áp hoạt động IOVDD: 1.8 hoặc 2.8 V hoặc 3.3 V
AVDD: 2.8 V hoặc 3.3 V Nhiệt độ hoạt động -30 đến 85 °C Tần số mẫu Lên tới 60 Hz
Bộ phát hồng ngoại 940 nm
I2C bus I2C: 400 kHz to 1 MHz serial bus,
address: 0x52 Chế độ hoạt động Liên tục hoặc tự động
Trang 6Bảng 2 góc FoV
Vùng phát hiện 45 o 45 o 63 o
Tổng vùng loại trừ 55.5 o 61 o 82 o
Note: vùng phát hiện phụ thuộc vào môi trường và cấu hình cảm biến cũng như khoảng cách
mục tiêu, độ phản xạ, mức độ ánh sáng xung quanh, độ phân giải cảm biến, bộ mài, chế độ khác nhau và thời gian tích hợp.
Note: vùng phát hiện Bảng 2 góc FoV được đo lường với mục tiêu vuông góc phản xạ 88%
trong FoV đầy đủ, nằm ở 1 m từ cảm biến, không có ánh sáng xung quanh (điều kiện tối), với độ phân giải 8x8 và bộ làm sắc nét 14% (giá trị mặc định), ở chế độ Liên tục
ở 15 Hz.
3 Trường chiếu sáng
Trường chiếu sáng VCSEL (FoI) được thể hiện trong hình dưới Công suất tín hiệu phát ra tương đối phụ thuộc vào góc Fol và tương ứng với:
• 50 ° x 50 ° xét chùm tia với 75 % tín hiệu tối đa
• 65 ° x 65 ° xét chùm tia với 10 % tín hiệu
Trang 7Hình 2 VL53L5CX FoI
4 Sơ đồ khối hệ thống
Hình 3 sơ đồ khối VL53L5CX
5 Cổng kết nối thiết bị
Hình dưới đây cho thấy cổng kết nối của VL53L5CX
Trang 8Hình 4 VL53L5CX pinout (góc nhìn từ dưới lên)
Bảng 3 Mô tả chân kết nối VL53L5CX
Số pin Tên tín hiệu Loại tín hiẹu Mô tả tín hiệu
A1 I2C_RST Digital input
Đặt lại chân I2C, kích hoạt ở trạng thái high Chuyển đổi chân này từ 0 sang 1, rồi trở lại 0 để đặt lại I2C Nối đất GND
qua trở 47 kΩ.
A2 RSVD4 Reserved Nối đất ground
A3 INT Digital input/output
(I/O)
Đầu ra gián đoạn, mặc định là opendrain output (tristate), cần trở 47 kΩ đến
IOVDD A4 IOVDD Power Nguồn 1.8 V, 2.8 V or 3.3 V cấp cho lõi kĩ
thuật số và nguồn I/O
A5 LPn Digital input
Kích hoạt comms Đặt chân này là logic 0
để vô hiệu hóa I2C comms khi thiết bị ở chế độ LP Đặt chán này là logic 1 để kích hoạt I2C comms ở chế độ LP Đặc biệt dùng khi cần thay đổi địa chỉ (adress) I2C trong hệ thống đa thiết bị Cần trở 47 kΩ
đến IOVDD.
A6 RSVD1 Reserved Nối đất (ground)
Trang 9A7 RSVD2 Reserved Nối đất (ground)
B1 AVDD Power Nguồn 2.8 V or 3.3 V analog nguồn
VCSEL B4 THERMALPAD Ground Nối đất ground để dẫn tản nhiệt tốt hơn B7 AVDD Power Nguồn 2.8 V or 3.3 V analog và VCSEL
C2 RSVD6 Reserved
Chân đa nhiệm I/O, mặc định là opendrain output (tristate), cần trở 47 kΩ
đến IOVDD C3 SDA Digital I/O Data (hai chiều), cần trở 2.2 kΩ đến
IOVDD
C4 SCL Digital input Đồng hồ (đầu vào input), cần trở 2.2 kΩ
đến IOVDD C5 RSVD5 Reserved Không kết nối
C6 RSVD3 Reserved Nối đất (ground)
Trang 10Note: chân THERMALPAD phải được kết nối với ground
Note: tất cả các tín hiệu kỹ thuật phải được chuyển đến mức IOVDD
Note: bật chân I2C_RST chỉ đặt lại giao tiếp cảm biến I2C không thiết lập lại bản thân cảm
biến đó.
III GIAO TIẾP VỚI MODULE VL53L5CX - SATEL VÀ ARDUINO
1 Kết nối module lv53l5cx-satel với arduino
Trang 11Hình 5 Sơ đồ kết nối chân vl53l5cx-satel và arduino
VL53L5C
X-SATEL Pin No Pin Name MCU Pin MCU Pin Pin Name Pin No.
VL53L5C X-SATEL
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 12- - - - PC5 D15 10 SCL
Bảng 4 Sơ đồ chân kết nối module vl53l5cx-satel và arduino tương ứng
2 Lập trình điều khiển module VL53L5CX – SATEL
Dưới đây là một vài ví dụ về code trong lập trình điều khiển module VL53CX-SATEL:
- Ví dụ 1: Đọc 64 giá trị khoảng cách cùng lúc.
#include <Wire.h>
#include <SparkFun_VL53L5CX_Library.h>
//http://librarymanager/All#SparkFun_VL53L5CX
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 13SparkFun_VL53L5CX myImager;
VL53L5CX_ResultsData measurementData; /* Result data class structure, 1356 byes
of RAM */
int imageResolution = 0; /*Used to pretty print output*/
int imageWidth = 0; /*Used to pretty print output*/
void setup(){
Serial.begin(115200);
delay(1000);
Serial.println("SparkFun VL53L5CX Imager Example");
Wire.begin(); /*This resets to 100kHz I2C*/
Serial.println("Initializing sensor board This can take up to 10s Please wait.");
if (myImager.begin() == false){
Serial.println(F("Sensor not found - check your wiring Freezing")); while (1) ;
}
myImager.setResolution(8*8); /*Enable all 64 pads*/
imageResolution = myImager.getResolution(); /*Query sensor for current
resolution - either 4x4 or 8x8*/ imageWidth = sqrt(imageResolution); /*Calculate printing width*/
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 14myImager.startRanging();
}
void loop(){
/*Poll sensor for new data*/
if (myImager.isDataReady() == true){
if (myImager.getRangingData(&measurementData)) /*Read distance data
into array*/
{
/*The ST library returns the data transposed from zone mapping shown in datasheet*/
/*Pretty-print data with increasing y, decreasing x to reflect reality*/ for (int y = 0 ; y <= imageWidth * (imageWidth - 1) ; y +=
imageWidth){
for (int x = imageWidth - 1 ; x >= 0 ; x ){
Serial.print("\t");
Serial.print(measurementData.distance_mm[x + y]);
} Serial.println();
} Serial.println();
}
delay(5); /*Small delay between polling*/
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 15- Ví dụ 2: Thiết lập bus I2C để giảm thiểu số lượng khoảng thời gian cần thiết để kích hoạt cảm biến.
#include <Wire.h>
#include <SparkFun_VL53L5CX_Library.h>
/*http://librarymanager/All#SparkFun_VL53L5CX*/
SparkFun_VL53L5CX myImager;
VL53L5CX_ResultsData measurementData; /*Result data class structure, 1356 byes
of RAM*/
int imageResolution = 0; /*Used to pretty print output*/
int imageWidth = 0; /*Used to pretty print output*/
void setup()
{
Serial.begin(115200);
delay(1000);
Serial.println("SparkFun VL53L5CX Imager Example");
Wire.begin(); /*This resets I2C bus to 100kHz*/
Wire.setClock(400000); /*Sensor has max I2C freq of 400kHz*/
/*Wire.setClock(1000000)*/; /*Run sensor out of spec*/
/*myImager.setWireMaxPacketSize(128); /*Increase default from 32 bytes to
128 - not supported on all platforms*/
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 16Serial.println("Initializing sensor board This can take up to 10s Please wait.");
/*Time how long it takes to transfer firmware to sensor*/
long startTime = millis();
bool startup = myImager.begin();
long stopTime = millis();
if (startup == false){
Serial.println(F("Sensor not found - check your wiring Freezing")); while (1) ;
}
Serial.print("Firmware transfer time: ");
float timeTaken = (stopTime - startTime) / 1000.0;
Serial.print(timeTaken, 3);
Serial.println("s");
myImager.setResolution(8*8); /*Enable all 64 pads*/
imageResolution = myImager.getResolution(); /*Query sensor for current
resolution - either 4x4 or 8x8*/ imageWidth = sqrt(imageResolution); /*Calculate printing width*/
myImager.startRanging();
}
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 17void loop(){
/*Poll sensor for new data*/
if (myImager.isDataReady() == true){
if (myImager.getRangingData(&measurementData)) /*Read distance data
into array*/
{
/*The ST library returns the data transposed from zone mapping shown
in datasheet*/
/*Pretty-print data with increasing y, decreasing x to reflect reality*/ for (int y = 0 ; y <= imageWidth * (imageWidth - 1) ; y +=
imageWidth){
for (int x = imageWidth - 1 ; x >= 0 ; x ){
Serial.print("\t");
Serial.println();
}
Serial.println();
}
}
delay(5); /*Small delay between polling*/
}
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 18- Ví dụ 3: Tăng tần số đầu ra.
#include <Wire.h>
#include <SparkFun_VL53L5CX_Library.h>
/*http://librarymanager/All#SparkFun_VL53L5CX*/
SparkFun_VL53L5CX myImager;
VL53L5CX_ResultsData measurementData; /* Result data class structure, 1356 byes
of RAM*/
int imageResolution = 0; /*Used to pretty print output*/
int imageWidth = 0; /*Used to pretty print output*/
void setup(){
Serial.println("SparkFun VL53L5CX Imager Example");
Wire.begin(); /*This resets I2C bus to 100kHz*/
Wire.setClock(400000); /*Sensor has max I2C freq of 400kHz*/
Serial.println("Initializing sensor board This can take up to 10s Please wait.");
if (myImager.begin() == false){
Serial.println(F("Sensor not found - check your wiring Freezing"));
while (1) ;
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 19myImager.setResolution(8 * 8); /*Enable all 64 pads*/
imageResolution = myImager.getResolution(); /*Query sensor for current
resolution - either 4x4 or 8x8*/ imageWidth = sqrt(imageResolution); /*Calculate printing width*/
/*Using 4x4, min frequency is 1Hz and max is 60Hz*/
/*Using 8x8, min frequency is 1Hz and max is 15Hz*/
if (response == true){
int frequency = myImager.getRangingFrequency();
if (frequency > 0){
Serial.print("Ranging frequency set to ");
Serial.print(frequency);
Serial.println(" Hz.");
else
Serial.println(F("Error recovering ranging frequency."));
Serial.println(F("Cannot set ranging frequency requested Freezing "));
while (1) ;
}
Downloaded by tran quang (quangsuphamhoak35@gmail.com)
Trang 20void loop(){
/*Poll sensor for new data*/
if (myImager.isDataReady() == true){
if (myImager.getRangingData(&measurementData)) /*Read distance data
into array*/
{
/*The ST library returns the data transposed from zone mapping shown in datasheet*/
/*Pretty-print data with increasing y, decreasing x to reflect reality*/ for (int y = 0 ; y <= imageWidth * (imageWidth - 1) ; y +=
imageWidth){
for (int x = imageWidth - 1 ; x >= 0 ; x ){
Serial.print("\t");
Serial.print(measurementData.distance_mm[x + y]); }
Serial.println();
} Serial.println();
}
delay(5); /*Small delay between polling*/
}
Downloaded by tran quang (quangsuphamhoak35@gmail.com)