TỔNG QUAN VỀ ĐỀ TÀI
Giới thiệu đề tài
Đề tài "Đo khoảng cách sử dụng cảm biến lidar có áp dụng phương pháp lọc nhiễu Kalman" là một nghiên cứu mới mẻ, ứng dụng cảm biến đo khoảng cách bằng laser VL53L1X.
Cảm biến này có khoảng đo hạn chế nhưng nổi bật với tốc độ phản hồi nhanh và độ chính xác cao Nhờ vào những ưu điểm này, nó được ứng dụng rộng rãi trong các hộ gia đình và công trường nhỏ.
Mục đích nghiên cứu
Sau khi học về vi điều khiển và điều khiển quá trình, tôi nhận thấy sự cần thiết của công cụ đo khoảng cách Tôi quyết định áp dụng kiến thức đã học để kết hợp vi điều khiển Arduino với cảm biến đo khoảng cách laser VL53L1X, tạo ra một công cụ đo khoảng cách tiện lợi cho gia đình Dự án này cũng sẽ là nền tảng cho những nghiên cứu và dự án lớn hơn trong tương lai.
Đối tượng nghiên cứu
- Cảm biến khoảng cách bằng laser VL53L1X
- Cảm biến góc xoay SV01A103AEA01R00
- Cảm biến một chạm điện dung TTP223B Mini
Phạm vi nghiên cứu
Đề tài nghiên cứu này tập trung vào hộ gia đình, nhằm áp dụng thực tiễn một cách hiệu quả và nhanh chóng Sản phẩm được thiết kế nhỏ gọn với khả năng đo khoảng cách tối đa lên đến 4000mm.
Dự kiến kết quả
Sản phẩm dự kiến sẽ là một công cụ đo khoảng cách bằng laser, tích hợp nhiều chế độ mở rộng, bao gồm cảm ứng để chuyển đổi chế độ đo và khả năng đo khoảng cách giữa hai điểm mà không cần tiếp xúc.
THIẾT KẾ VÀ XÂY DỰNG MÔ HÌNH HỆ THỐNG
Các khối của hệ thống
Nguồn sử dụng cho mô hình được cấp từ 2 cell pin 18650
- Điện áp đầu ra khi mắc nốt tiếp 2 cell pin là:
3.7(VDC) + 3.7(VDC) = 7.4(VDC) (điện áp trung bình) hoặc
4.2(VDC) + 4.2(VDC) = 8.4(VDC) (điện áp khi pin được sạc đầy)
- Dung lượng mỗi cell pin là 2800mAh
=> dung lượng khi mắc mắc nối tiếp 2 cell pin là 2800mAh
2.1.2 Khối điều khiển trung tâm
Khối điều khiển trung tâm được cấu thành từ hai module Arduino Uno R3, một loại vi điều khiển dựa trên nền tảng vi xử lý AVR Atmel 8bit với chip ATmega328p.
Chip Atmega328p là sản phẩm của hãng Atmel sản xuất được giới thiệu lần đầu năm
1996, sau đó được hãng Microchip Technology mua lại vào năm 2016 Dòng vi điều khiển 8bit Atmel AVR:
Hình 2.1: 2 cell pin 18650 dung lượng 2800mAh
- Hiệu suất cao, công suất thấp
- Hoạt động hoàn toàn tĩnh
- Các phân đoạn bộ nhớ không biến động có độ bền cao
- 32KBytes của chương trình Flash tự lập trình trong hệ thống
- Chu kì ghi/xóa: 10.000 Flash/100.000 EEPROM
- Thời gian lưu trữ dữ liệu: 20 năm
Chip Atmega328p có 28 cổng kết nối gồm có:
- Cổng số 7(VCC): chân cấp nguồn VDC cho chip
- Cổng số 8, 22(GND): chân nối đất
- Cổng số 14, 15, 16, 17, 18, 19, 9, 10(PortB[0:7]): những cổng PortB[0:7] là những cổng I/O 2 chiều 8bit với các điện trở kéo lên bên trong.
- Cổng số 23, 24, 25, 26, 27, 28(PortC[0:5]): những cổng PortC[0:5] là những cổng I/O 2 chiều 7bit với các điện trở kéo lên bên trong.
- Cổng số 1(PC6): có thể dùng cổng này như một cổng I/O hoặc cổng Reset
- Cổng số 2, 3, 4, 5, 6, 11, 12, 13(PortD[0:7]): những cổng PortD[0:7] là những cổng I/O 2 chiều 8bit với các điện trở kéo lên bên trong
- Cổng số 20(AVCC): cổng cung cấp điện áp cho bộ chuyển đổi A/D
- Cổng số 21(AREF): cổng tham chiếu Analog cho bộ A/D
Hình 2.2: Hình ảnh thật ATMEGA328P
Hình 2.3: Thông tin các chân kết nối ATMEGA328P
Những model hiện tại của Arduino Uno R3 được trang bị:
- 1 cổng giao tiếp với máy tính thông qua cáp
- 14 cổng I/O Digital, trong đó có cổng số 0 và cổng số 1 có thể dùng đề giao tiếp UART.
- Cổng SCL, SDA dùng để giao tiếp I2C
- Và một số cổng có chức năng mở rộng khác
Khối cảm biến được chia làm 2 phần:
- Phần cảm biến chính: gồm 2 cảm biến đo khoảng cách bằng laser VL53L1X module GY-53L1.
Hình 2.4: Hình ảnh thực tế module Arduino Uno R3
Nguyên lý hoạt động của thiết bị dựa trên việc sử dụng đèn LED hồng ngoại phát ra ánh sáng Khi ánh sáng chiếu vào đối tượng đo, MCU sẽ nhận lại ánh sáng phản xạ và tính toán chênh lệch thời gian để xác định khoảng cách, từ đó xuất ra giá trị khoảng cách một cách trực tiếp.
Module đo khoảng cách bằng laser GY-53L1 hỗ trợ hai phương thức đọc dữ liệu: qua cổng nối tiếp UART (mức TTL) kết hợp với PWM, hoặc qua cổng giao tiếp I2C với tốc độ truyền dữ liệu có thể cấu hình từ 9600bps đến 115200bps, với hai chế độ đầu ra liên tục và truy vấn Module này có 12 cổng kết nối, bao gồm 2 cổng VCC để cấp nguồn (3VDC-5VDC), 2 cổng GND để nối đất, 1 cổng SCL SDA cho giao tiếp I2C với Arduino Uno R3, 1 cổng TX RX cho giao tiếp UART với Arduino Uno R3, và 1 cổng PWM để băm xung.
Hình 2.5: Hình ảnh thực tế module VL53L1X o 1 cổng PS
PS= 1 (mức cao mặc định) Chế độ UART cổng nối tiếp, mức TTL, công việc đầu ra PWM hoặc công việc đầu ra chuyển đổi
Khi PS=0 (kết nối với GND) trong chế độ I2C, người dùng có thể tự vận hành chip, nhưng MCU tích hợp của module sẽ không hoạt động và đầu ra PWM cũng sẽ không khả dụng Module có 1 cổng CPIO1 và 1 cổng XSHUT, cho phép mở rộng các chức năng khác Cần lưu ý cách sử dụng và quy ước các bit để đảm bảo hoạt động hiệu quả.
Mặc định Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
4 Trạng thái hiện tại do module trả về Giá trị từ 0~14:
0: Chỉ ra rằng giá trị khoảng cách là đáng tin cậy
1: Cho biết ảnh hưởng của ánh sáng xung quanh
2: Cho biết tín hiệu trả về yếu;
4: Cho biết phạm vi đo bị vượt quá;
5: Cho biết lỗi phần cứng;
7: Cho biết xung quanh có tiếng ồn gây nhiễu
8: Tràn hoặc tràn thuật toán bên trong
14: Phép đo không hợp lệ
2 Thời gian đo của module, thời gian đo càng lớn, phạm vi đo càng lớn
0 Cho biết chế độ đo:
1: Chế độ khoảng cách ngắn, từ 40 đến 1300 mm, ± 25mm
2: Chế độ khoảng cách trung bình, 40~3000 mm, ± 25mm
3: Chế độ khoảng cách dài, từ 40 đến 3600 mm, ± 25mm
Cảm biến VL53L1X là một trong những cảm biến laser hiện đại nhất, thuộc dòng sản phẩm FlightSense của ST Với công nghệ ToF tiên tiến, cảm biến này có kích thước nhỏ gọn, độ chính xác lên đến 3600mm và tần số hoạt động nhanh chóng đạt 50Hz.
Bảng 2.1: Cách sử dụng và quy ước các Bit
Hình 2.6: Hình ảnh cảm biến VL53L1X
Hình 2.7: Thông tin chân của cảm biến VL53L1X
Hình 2.8: Sơ dồ khối của cảm biến VL53L1X
Hình 2.9: Datasheet của cảm biến VL53L1X
Cảm biến VL53L1X hỗ trợ ba chế độ đo khoảng cách: ngắn, trung bình và dài Chế độ đo xa có thể đo tối đa lên đến 4000mm, nhưng khoảng cách này sẽ bị ảnh hưởng bởi ánh sáng xung quanh Ngược lại, chế độ đo ngắn ít bị tác động bởi ánh sáng xung quanh, tuy nhiên, khoảng cách tối đa của nó chỉ đạt khoảng 1300mm.
- Phần cảm biến hỗ trợ: o Cảm biến đo góc xoay SV01A103AEA01R00
Cảm biến đo góc xoay SV01A103AEA01R00 là một thiết bị ít phổ biến do tính ứng dụng hạn chế Thiết bị này chủ yếu được sử dụng để tính toán góc quay tối đa.
Cảm biến này là một biến trở kiểu cầu phân áp, cho phép giá trị đầu ra là tín hiệu điện áp tuyến tính tương ứng với góc quay của biến trở bên trong.
Cảm biến có 3 chân kết nối:
VCC: dùng để cấp nguồn cho cảm biến
Hình 2.10: Hình ảnh thực của cảm biến đo góc xoay
Out: ngõ ra điện áp Analog tương ứng với góc quay hiện tại của cảm biến
Dạng cấu tạo: biến trở
Giá trị biến trở: 10K Ohm
Điện áp cấp: 5VDC o Cảm biến 1 chạm điện dung TTP223B Mini
Cảm biến 1 chạm điện dung TTP223B Mini là một giải pháp hiệu quả nhờ kích thước nhỏ gọn và giá thành hợp lý, thường được áp dụng trong các thiết bị cảm ứng như bàn phím, công tắc cảm ứng và hệ thống báo động Với khả năng cảm ứng qua các chất liệu phi kim như kính, nhựa và acrylic, cảm biến này thể hiện tính sáng tạo cao, mang lại nhiều tiện ích cho người sử dụng.
Hình 2.11: Hình ảnh thực của cảm biến một chạm
Cảm biến có 3 chân kết nối:
VCC: dùng để cấp nguồn cho cảm biến
I/O: dùng để xuất giá trị Digital
Cảm biến được trang bị một cặp tiếp điểm A và một cặp tiếp điểm B, cho phép người dùng tùy chỉnh trạng thái ban đầu của cảm biến, phù hợp với nhu cầu và mục đích sử dụng của mình.
Điện áp làm việc: 3VDC ~ 5VDC
Dòng điện tiêu thụ: 0.025mA
2.1.4 Khối hiển thị kết quả
Khối hiển thị kết quả sử dụng màn hình LCD1602 với độ phân giải 16 cột và 2 hàng, kết hợp với module I2C để dễ dàng điều khiển màn hình.
Màn hình LCD1602, sử dụng driver HD44780, có khả năng hiển thị 2 dòng với 16 ký tự mỗi dòng Với độ bền cao và tính phổ biến, màn hình này cung cấp nhiều mã mẫu và dễ sử dụng, rất phù hợp cho những người mới học và làm đồ án môn học.
- Hình 2.12: Hình ảnh thực của LCD 1602
Chân Ký hiệu Mô tả Giá trị
3 V0 Độ tương phản Tùy chỉnh
4 RS Lựa chọn thanh ghi RS=0 (mức thấp) chọn thanh ghi lệnh
RS=1 (mức cao) chọn thanh ghi dữ liệu
R/W=0 thanh ghi viết R/W=1 thanh ghi đọc
Cổng truyền dữ liệu 8 bit: DB0:DB7
Điện áp hoạt động là 5VDC
Bảng 2.2: Thông tin chân của LCD 1602
Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để tiết kiệm điện năng hơn.
Module chuyển giao tiếp LCD1602 sang I2C cho phép kết nối với LCD1602 chỉ bằng 2 dây SCL và SDA Người dùng cũng có thể điều chỉnh độ phân giải của LCD trực tiếp trên module thông qua biến trở được gắn sẵn.
Module có 4 chân kết nối:
VCC: cấp nguồn cho module 5VDC
LCD1602 được kết nối với module chuyển đổi I2C qua một mạch hàn chắc chắn và gọn gàng, đảm bảo tiếp điểm hoạt động hiệu quả, an toàn và bền bỉ.
Hình 2.13: Hình ảnh thực của module chuyển đổi I2C
Xây dựng mô hình hệ thống
Toàn bộ hệ thống được kết nối với nhau thành một khối thống nhất thông qua vít.
Khung sườn chính là 1 tấm gỗ thông được khoan lỗ, đảm bảo không xảy ra tĩnh điện, an toàn cho con người và thiết bị.
Các khối nguồn, khối cảm biến, khối xử lý trung tâm và khối hiển thị được gắn kết chặt chẽ với khung gỗ thông qua các trục đồng, đảm bảo sự kết nối bền bỉ và ổn định.
Các dây nối (jumper) kết nối giữa module Arduino Uno R3 và các khối cảm biến sẽ được sắp xếp một cách gọn gàng và chắc chắn, nhằm đảm bảo hoạt động an toàn và ổn định nhất.
Phần trục và các khớp xoay được hình thành bằng cách khoan lỗ vào gỗ với kích thước tương ứng của một thanh nhôm nhỏ, giúp đảm bảo chuyển động xoay ổn định, dễ dàng và linh hoạt.
Hình 2.14: Hình ảnh thực của module tích hợp I2C kết nối với LCD 1602
Hình 2.15: Hình ảnh thực thành phần các module trong hệ thống
Hình 2.16: Hình ảnh thực của bố cục hệ thống
Bố cục của hệ thống được bố trí như hình trên.
Ngõ ra của khối nguồn sẽ đặt cạnh khối điều khiển trung tâm để thuận tiện cho cấp nguồn.
Cổng giao tiếp USB của khối điều khiển trung tâm được thiết kế hướng về phía sau, trong khi các cổng giao tiếp và I/O được bố trí hướng vào trung tâm hệ thống mô hình Điều này giúp thuận tiện cho việc cập nhật chương trình, kiểm tra và thay đổi phần cứng của hệ thống.
Khối hiển thị được nâng cao nhờ các trục đồng, giúp người dùng dễ dàng quan sát kết quả hiển thị Thiết kế này cũng tạo ra khoảng trống phía dưới để đặt các đoạn dây nối (jumper) thừa một cách gọn gàng.
Hình 2.17: Hình ảnh thực của cụm cảm biến VL53L1X
Khối cảm biến được gắn chặt với phần cơ bằng ốc vít, đảm bảo sự cố định vững chắc và thuận tiện cho việc điều chỉnh hoặc thay đổi thiết kế khi cần.
Module đo khoảng cách VL53L1X sẽ được gắn cố định trên một trục xoay, trong khi trục xoay này sẽ được kết nối trực tiếp với cảm biến đo góc xoay SV01A103AEA01R00.
Cảm biến đo xoay SV01A103AEA01R00 sẽ được đặt vuông góc với module đo khoảng cách VL53L1X thứ hai.
Khối cảm biến hoạt động đạt tới góc độ 180 nhờ vào các khớp xoay linh hoạt, vì vậy hệ thống sẽ được phát huy tối đa khả năng.
Hình 2.18: Hình ảnh thực của mô hình hệ thống đã hoàn chỉnh
CHƯƠNG TRÌNH GIẢI THUẬT
Lưu đồ giải thuật của hệ thống
Tính toán khoảng cách đo tĩnh, đo động và đo
Arduino 2 nhận tín hiệu từ cảm biến đo khoảng cách 2 (b)
Arduino 1 nhận tín hiệu từ cảm biến đo khoảng cách 1 (a) Bắt đầu
Arduino 2 lọc nhiễu và xuất ra giá trị đã lọc nhiễu
Arduino 1 lọc nhiễu và truyền giá trị đã lọc nhiễu cho Arduino 2
Lọc nhiễu Kalman
Nhiễu là hiện tượng gây sai lệch kết quả của phép đo, làm cho kết quả thực tế không chính xác Trong mọi phép đo, luôn tồn tại nhiễu (sai số), dẫn đến sự khác biệt giữa giá trị đo được và giá trị thực cần xác định Mặc dù sai lệch này thường không lớn, việc loại bỏ hoàn toàn nhiễu khỏi phép đo là một thách thức Do đó, bộ lọc Kalman được phát triển để xử lý vấn đề này.
Bộ lọc Kalman, được phát triển bởi nhà khoa học Rudolf Kalman vào năm 1960, là một công cụ quan trọng trong việc lọc nhiễu từ các giá trị đo Đặc biệt, bộ lọc này đã được tích hợp vào thư viện dành riêng cho vi điều khiển Arduino, giúp người dùng dễ dàng tiếp cận và sử dụng.
Bộ lọc Kalman hoạt động dựa trên nguyên lý trung bình hóa kết quả của các phép đo trong một khoảng thời gian liên tục, giúp giảm thiểu sai số đo lường đáng kể Tuy nhiên, nhược điểm của bộ lọc này là thời gian đáp ứng chậm, do cần thời gian để tính toán giá trị trung bình của tất cả các dữ liệu đo được trong khoảng thời gian đó.
Cảm biến đo lưu lượng nước ghi nhận 5 kết quả trong 1 giây với các giá trị lần lượt là 20cm³/s, 22cm³/s, 21cm³/s, 19cm³/s và 21.5cm³/s Những kết quả này cho thấy sự nhiễu loạn và độ chính xác không đạt yêu cầu, điều này làm giảm độ tin cậy của cảm biến trong việc đo lưu lượng nước.
In ra LCD khoảng cách đo
In ra LCD khoảng cách đo động
Để cải thiện độ chính xác trong việc đo khoảng cách của LCD, bộ lọc Kalman được áp dụng nhằm giảm thiểu nhiễu từ cảm biến lưu lượng Kết quả sau khi sử dụng bộ lọc Kalman cho thấy giá trị đo đạt 20.7cm³/s, cho thấy sự chính xác cao hơn so với khi chưa áp dụng bộ lọc nhiễu.
Chương trình của hệ thống
Hệ thống điều khiển được lập trình bằng ngôn ngữ C thông qua phần mềm Arduino IDE, cho phép giao tiếp và nạp chương trình vào module Arduino Uno R3 qua cổng USB.
Chương trình có thể vận hành nhờ vào các thư viện được tích hợp sẵn trong phần mềm cùng với các thư viện mở rộng trên Internet
Do khối xử lí trung tâm gồm 2 module Arduino Uno R3 nên chương trình điều khiển cũng sẽ có 2 phần độc lập cho 2 module.
Chương trình điều khiển và chú thích ở phần CHƯƠNG 6 Phụ Lục.
Hình 3.1: Nhà khoa học Rudolf (Rudy) E Kálmán
THỰC NGHIỆM
Tiến trình thực nghiệm
4.1.1 Tiến trình hoạt động của mô hình hệ thống
Hệ thống hoạt động theo nguyên lí truyền nhận dữ liệu bằng giao tiếp UART.
Hệ thống chia ra làm hai phần:
- Phần 1: gồm 1 module Arduino Uno R3 và 1 module đo khoảng cách GY-53L1
- Phần 2: gồm 1 module Arduino Uno R3, 1 module đo khoảng cách GY-53L1,
1 module đo góc xoay SV01A103AEA01R00 và 1 module cảm ứng một chạm điện dung TTP223B Mini.
Hệ thống hoạt động như sau:
Hai Arduino hoạt động song song.
Cấp nguồn cho Arduino 1 hoạt động, cấp nguồn cho module VL53L1X thứ nhất.
Module VL53L1X thứ nhất sẽ hoạt động, một tia laser của module sẽ được phát ra và chiếu thẳng đến mục tiêu cần đo.
Khi tia laser chạm tới vật thể cần đo, nó sẽ phản xạ lại và được cảm biến VL53L1X thứ nhất thu nhận.
Khi nhận được tia phản xạ, module sẽ đo thời gian phát ra và thời gian thu nhận, từ đó tính toán khoảng cách đến vật thể bằng cách sử dụng vận tốc ánh sáng khoảng 300.000 km/s.
Khi đó, Arduino thứ nhất sẽ giao tiếp UART với module cảm biếnVL53L1X thứ nhất để đọc giá trị trả về của cảm biến.
Sau khi nhận được tín hiệu, giá trị khoảng cách mà Arduino nhận được lúc này là một biến số nguyên dương kiểu Unsigned_16t có giá trị từ 0 đến
65535, sau đó được chương trình mã hóa lại thành số thực, đó cũng chính là giá trị khoảng cách đo được.
Arduino sử dụng thuật toán lọc nhiễu Kalman từ thư viện để loại bỏ hầu hết các tín hiệu nhiễu có biên độ sai lệch cao, mang lại kết quả là tín hiệu mượt mà hơn so với tín hiệu ban đầu trước khi áp dụng phương pháp lọc Kalman.
Arduino sẽ lấy giá trị khoảng cách và sử dụng thư viện hỗ trợ giao tiếp UART trong Arduino IDE để chuyển tiếp giá trị này đến module Arduino thứ hai Nếu không có thư viện hỗ trợ, Arduino thứ nhất sẽ không thể truyền giá trị khoảng cách vì giao thức UART cơ bản chỉ cho phép truyền tối đa 1 byte, tương đương 127 bits Do đó, khi giá trị khoảng cách vượt quá giới hạn 127 bits, hệ thống sẽ không hoạt động như mong đợi.
Khi Arduino thứ 2 nhận được tín hiệu, nó sẽ lưu lại và để thực hiện một chức năng mở rộng của công cụ.
Cấp nguồn cho Arduino thứ hai, module VL53L1X, cảm biến đo góc xoay SV01A103AEA01R00 và module cảm ứng một chạm điện dung TTP223B Mini là các bước quan trọng để đảm bảo hoạt động ổn định của hệ thống.
Module VL53L1X thứ hai sẽ hoạt động, 1 tia laser của module sẽ được phát ra và chiếu đến mục tiêu cần đo.
Khi tia laser chạm tới vật thể cần đo, nó sẽ phản xạ lại và được cảm biến VL53L1X thứ hai thu nhận.
Khi nhận được tia phản xạ, module sẽ đo thời gian chênh lệch giữa thời điểm phát ra và thời điểm thu nhận Dựa vào vận tốc ánh sáng khoảng 300.000 km/s, module sẽ tính toán khoảng cách từ nó đến vật thể, thể hiện bằng đơn vị mm.
Khi đó, Arduino thứ hai sẽ giao tiếp UART với module cảm biến VL53L1X thứ hai để đọc giá trị trả về của cảm biến.
Sau khi thu thập dữ liệu, Arduino nhận được một biến số nguyên dương kiểu Unsigned_16t với giá trị từ 0 đến 65535 Giá trị này sau đó được mã hóa thành số thực, đại diện cho khoảng cách đo được.
Arduino sử dụng thuật toán lọc nhiễu Kalman để loại bỏ các tín hiệu nhiễu có biên độ sai lệch cao, từ đó tạo ra một tín hiệu mượt mà hơn so với tín hiệu ban đầu trước khi áp dụng phương pháp lọc Kalman.
Cùng thời điểm đó, Arduino thứ hai sẽ giao tiếp UART với Arduino thứ nhất thông qua 2 cổng TX RX trên cổng 0 và 1.
Arduino đầu tiên sẽ gửi dữ liệu khoảng cách từ cảm biến đến một điểm ngẫu nhiên cho Arduino thứ hai, và Arduino thứ hai sẽ nhận dữ liệu này.
Arduino thứ hai sẽ đọc giá trị từ cảm biến góc xoay, cụ thể là mức điện áp mà cảm biến cung cấp Chương trình sẽ thực hiện một phép tính đơn giản để chuyển đổi điện áp này thành giá trị góc xoay Giá trị góc xoay tính toán được sẽ đại diện cho góc chênh lệch giữa hai module đo khoảng cách VL53L1X.
Sau khi thu thập được ba giá trị quan trọng, bao gồm khoảng cách từ module đo khoảng cách VL53L1X thứ hai đến điểm A, khoảng cách đến điểm B, và góc chênh lệch giữa hai module cảm biến (gọi là góc C), chương trình sẽ sử dụng định lý hàm Cos để tính toán khoảng cách giữa hai điểm A và B.
Trong lượng giác, định lý Cos biểu diễn sự liên quan giữa chiều dài của các cạnh của một tam giác phẳng với Cosin của góc tương ứng:
Hình 4.2 Hình ảnh minh họa tam giác bất kì
AB 2 = CA 2 + CB 2 – 2*CA*CB*Cos(C)
- Cạnh AB là khoảng cách cần tìm giữa điểm A và điểm B
- Cạnh CA là khoảng cách giữa module cảm biến đo khoảng cách VL53L1X thứ nhất đến điểm A
- Cạnh CB là khoảng cách giữa module cảm biến đo khoảng cách VL53L1X thứ hai đến điểm B
- Góc C là góc chênh lệch giữa hai module đo khoảng cách
Ta có thể tính được khoảng cách từ điểm A tới điểm B mà không cần di chuyển đến một trong hai điểm trên
Áp dụng phương trình 3.1, chương trình sẽ tính toán ra được khoảng cách giữa 2 điểm A và B.
Sau khi tính toán ra được khoảng cách giữa điểm A và B, Arduino thứ hai sẽ in ra màn hình LCD1602 kết quả tính được.
Khi cảm biến TTP223B Mini nhận tác động từ một lần chạm, hệ thống sẽ hiển thị lần lượt khoảng cách đã lọc nhiễu giữa module VL53L1X đến điểm A, khoảng cách chưa lọc nhiễu từ module VL53L1X đến điểm A và khoảng cách từ điểm A đến điểm B.
Quá trình lọc nhiễu Kalman yêu cầu thời gian để đạt trạng thái xác lập sau mỗi thay đổi vị trí đo Để đảm bảo độ chính xác và ổn định trong quá trình đo, cần chờ một khoảng thời gian cho bộ lọc hoạt động hiệu quả Do đó, khi áp dụng phương pháp lọc này, chỉ nên thực hiện đo khoảng cách tĩnh, tức là đo khoảng cách giữa hai điểm đứng yên.
Cảm biến VL53L1X nổi bật với tốc độ đáp ứng nhanh, cho phép ứng dụng trong việc đo khoảng cách giữa hai điểm di chuyển Tuy nhiên, cảm biến này cũng gặp phải nhược điểm là có thể xảy ra sai số và tín hiệu nhiễu cao.
4.1.2 Tiến trình thực nghiệm của sinh viên
Bước 1: Chuẩn bị mô hình hệ thống đã thiết kế hoàn chỉnh.
Bước 2: Kiểm tra lại các kết nối, các dây dẫn của toàn bộ hệ thống
Bước 3: Lắp pin đã sạc đầy đủ vào mô hình và tiến hành cấp nguồn cho mô hình hệ thống.
Bước 4: Tiến hành di chuyển đến khu vực thích hợp và đo theo các quy cách tự đặt ra:
Đo tĩnh là phương pháp đặt mô hình cố định ở một khoảng cách nhất định để kiểm tra độ chính xác của kết quả, sử dụng thước dây đo kèm theo và áp dụng phương pháp lọc Kalman Đo sáng được thực hiện trong điều kiện ánh sáng đầy đủ để đảm bảo độ chính xác của các phép đo.
Đo khoảng cách gần < 1000mm và kiểm tra vùng tối của cảm biến.
Đo khoảng cách xa > 3000mm và kiểm tra vùng tối của cảm biến. o Đo tối: đo ở điều kiện thiếu ánh sáng
Đo khoảng cách gần < 1000mm và kiểm tra vùng tối của cảm biến.
Đo khoảng cách xa > 3000mm và kiểm tra vùng tối của cảm biến.
Đo động là quá trình di chuyển mô hình liên tục nhằm kiểm tra độ đáp ứng và độ chính xác của hệ thống mà không sử dụng phương pháp lọc Kalman Đo sáng được thực hiện trong điều kiện ánh sáng đầy đủ để đảm bảo kết quả chính xác và đáng tin cậy.
Đo khoảng cách gần < 1000mm và kiểm tra vùng tối của cảm biến.
Đo khoảng cách xa > 3000mm và kiểm tra vùng tối của cảm biến. o Đo tối: đo ở điều kiện thiếu ánh sáng
Đo khoảng cách gần < 1000mm và kiểm tra vùng tối của cảm biến.
Đo khoảng cách xa > 3000mm và kiểm tra vùng tối của cảm biến.
Kết quả thực nghiệm
Sau khi hoàn thành quá trình thực hiện, kết quả thu được đáp ứng mong đợi:
- Mô hình hệ thống hoạt động ổn định, các module kết nối với nhau hiệu quả và đáp ứng tốt các yêu cầu đặt ra.
- Kết quả đo được: o Đo tĩnh:
Kết quả đo khoảng cách gần < 2000mm
Kết quả đo khoảng cách xa > 2000mm
Kết quả đo khoảng cách gần < 2000mm
Kết quả đo khoảng cách xa > 2000mm o o Đo động:
Kết quả đo khoảng cách gần < 2000mm
Kết quả đo khoảng cách xa > 2000mm
Kết quả đo khoảng cách gần < 2000mm
Kết quả đo khoảng cách xa > 2000mm o o Đo 2 điểm l
Kết quả đo lần 2 cho thấy tính hiệu quả của bộ lọc Kalman được kiểm tra thông qua Plotter trong phần mềm Arduino IDE Thử nghiệm đo vào chất lỏng, cụ thể là nước sạch, nhằm đánh giá khả năng xuyên qua chất lỏng của cảm biến đo bằng laser.
Thiết kế của mô hình hiện tại chưa được tối ưu hóa để đo chiều đứng, do đó không thể cung cấp minh chứng cụ thể, chỉ có thể đưa ra nhận xét dựa trên các thực nghiệm tương đối đã thực hiện.
Kết quả đo khi trong chậu có nước
Kết quả đo khi đổ hết nước trong chậu và tay vẫn cố định mô hình
Mặc dù việc cầm tay mô hình có thể ảnh hưởng đến độ chính xác của khoảng cách đo, nhưng hệ thống sử dụng cảm biến laser theo phương pháp TOF không thể đo được mức nước, vì tia laser sẽ xuyên qua nước và chiếu đến đáy của vật chứa.
Kết luận thực nghiệm
Qua quá trình thực nghiệm, mô hình hệ thống đã cho thấy rõ ưu điểm và nhược điểm Kết quả đạt được không chỉ đáp ứng yêu cầu mà còn thể hiện tính khả thi và độ ổn định cao.
Mô hình hệ thống đáp ứng tốt yêu cầu đặt ra cũng như thích hợp để sử dụng trong gia đình và một số công trình vừa và nhỏ.
Sai số của hệ thống là:
- Đo tĩnh (có áp dụng phương pháp lọc Kalman):
- Đo động (không áp dụng phương pháp lọc Kalman):
- Đo 2 điểm (có áp dụng phương pháp lọc Kalman): %
- Đo vào chất lỏng (có áp dụng phương pháp lọc Kalman): %