Tải bản đầy đủ (.docx) (20 trang)

Đề tài kết nối arduinovới thiết bị bên ngoài module VL53L5CX

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (587.35 KB, 20 trang )

lO MoARcPSD|9242611

TRƯỜ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 ngồ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


MỤ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


I. 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 vng 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ẻ.


- 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 số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 tố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ó


thể 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 tố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 xun âm của thủy tinh ngồi 60 cm.

II. Thơng số kĩ thuật
1. Thơng số chung
Bảng 1. Các thơng số vl53l5cx
Tính năng

Chi tiết


Gói

Optical LGA16

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

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ệ)


Bảng 2. góc FoV

Vùng phát hiện
Tổng vùng loại trừ

Ngang

Thẳng

Chéo


45 o

45 o

63 o

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 vng 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.



Hì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


Hì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

A1

Tên tín hiệu

I2C_RST

Loại tín hiẹu

Digital input

Mơ tả tín hiệu
Đặ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

A3

INT

A4

IOVDD

Reserved
Digital input/output
(I/O)
Power

Nối đất ground
Đầu ra gián đoạn, mặc định là opendrain
output (tristate), cần trở 47 kΩ đến
IOVDD
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
Kích hoạt comms. Đặt chân này là logic 0
để vơ hiệu hóa I2C comms khi thiết bị ở


A5

LPn

Digital input

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)


A7

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

C1

GND

Ground


Ground

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)

C7

GND

Ground

Ground


Note:

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


lO MoARcPSD|9242611

Hình 5. Sơ đồ kết nối chân vl53l5cx-satel và arduino

Kênh kết nối trái

Kênh kết nối phải

VL53L5C XPin No. Pin Name MCU Pin MCU Pin Pin Name Pin No.
SATEL

Downloaded by tran quang

VL53L5C XSATEL


-


-

-

-

PC5

D15

10

SCL

-

-

-

-

PC4

D14

9

SDA


-

-

-

-

-

AREF

8

-

-

-

-

-

GND

7

-


1

NC

-

PB5

D13

6

-

2

IOREF

-

PB4

D12

5

-

3


RESET

PC6

PB3

~D11

4

IOVDD

4

+3V3

-

PB2

~D10

3

AVDD

5

+5V


-

PB1

~D9

2

6

GND

-

PB0

D8

1

7

GND

-

-

-


-

8

VIN

-

PD7

D7

8

-

-

-

~PD6

D6

7

1

A0


PC0

~PD5

D5

6

I2C_RST

2

A1

PC1

PD4

D4

5

INT

3

A2

PC2


~PD3

D3

4

LPn

4

A3

PC3

PD2

D2

3

5

A4

PC4

PD1

D1


2

6

A5

PC5

PD0

D0

1

PWR_EN

GND

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 VL53CXSATEL:
- 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


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 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*/


myImager.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*/


}

- 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*/


Serial.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();
}


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*/
}


- 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.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*/

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*/

/*Using 4x4, min frequency is 1Hz and max is 60Hz*/
/*Using 8x8, min frequency is 1Hz and max is 15Hz*/
bool response = myImager.setRangingFrequency(15);
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."));
}
else{

Serial.println(F("Cannot set ranging frequency requested. Freezing..."));
while (1) ;
}
myImager.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*/
}




×