.27 Tín hiệu thơ

Một phần của tài liệu Nghiên cứu, thiết kế và thi công bộ điều khiển xe lăn điện sử dụng cảm biến gia tốc (Trang 74)

4.4 LẬP TRÌNH MƠ PHỎNG 4.4.1 Lưu đồ 4.4.1 Lưu đồ

Hình 4. 26 Lưu đồ kiểm tra giá trị cảm biến để gửi tín hiệu điều khiển

4.4.2 Xử lý tín hiệu

Sử dụng chức năng Serial Plotter trong phần mềm lập trình Arduino để đọc các giá trị dữ liệu cảm biến dưới dạng sơ đồ dạng sóng để dễ dàng xác định được ngưỡng điều khiển cho cảm biến.

Trong đó: : GyroX : GyroY

Hình 4. 29 Tín hiệu cài đặt giá trị offset Hình 4. 28 Tín hiệu gật liên tục Hình 4. 28 Tín hiệu gật liên tục

Từ đồ thị biểu diễn tín hiệu của con quay hồi chuyển (Hình 4.27) chưa qua bộ lọc Kalman cho thấy rằng tín hiệu nhận được rất nhiễu ở cả 2 trục của nó.

Trong đó: : GyroX : GyroY

Hình 4.28 biểu diễn dạng sóng của con quay khi cảm biến bị lật liên tục. Từ đồ thị này cho thấy rằng, khi con quay bị lật liên tục với tốc độ nhanh thì giá trị đạt ở ngưỡng cực đại là ±250 vì phạm vi giới hạn thang đo được chọn là ±250 tương ứng với độ nhạy là 131 LSB/g. Từ đó, có thể sử dụng giá trị đo được của con quay hồi chuyển là GyroY để so sánh điều khiển trạng thái gật liên tục của người sử dụng.

Trong đó: : angelX : angelY : angleZ

Hình 4.29 mơ tả tín hiệu khi vi điều khiển đang tính tốn giá trị bù (offset) của cảm biến. Khi q trình tính tốn xong ta được kết quả như hình 4.30. Q trình tính tốn này mất khoảng 3s để cảm biến ổn định. Sở dĩ ta thấy các tín hiệu ổn định khơng bị nhiễu vì nó đã được xử lý qua bộ lọc Kalman.

Trong đó: : angelX : angelY : angleZ

Hình 4. 30 Tín hiệu các giá trị offset đã được thiết lập

Trong đó: : angelX : angelY : angleZ

Hình 4.31 mơ tả tín hiệu khi thiết bị đặt nằm tương ứng với trục x hướng xuống dưới góc chúc tăng tương ứng với tín hiệu angleY. Từ biểu đồ tín hiệu này, ta có thể lấy giá trị của angleY để so sánh điều khiển khi thiết bị được đặt nằm.

Trong đó: : angelX : angelY : angleZ Hình 4. 32 Tín hiệu tiến Trong đó: : angelX : angelY : angleZ

Hai hình 4.32 và hình 4.33 mơ tả tín hiệu cúi đầu và ngửa đầu tương ứng với góc chúc (angleY). Từ biểu đồ này, ta có thể sử dụng giá trị angleY để so sánh điều khiển khi cúi đầu và ngửa đầu. Các tín hiệu này sẽ về giá trị ban đầu khi cảm biến nghiêng về vị trí ban đầu.

Trong đó: : angelX : angelY : angleZ

Hình 4. 34 Tín hiệu lùi khi quay đầu trái

Trong đó: : angelX : angelY : angleZ

Hai tín hiệu hình 4.34 và hình 4.35 là tín hiệu của góc quay (angleZ). Cũng giống như angleX và angleY nó cũng trả về giá trị ban đầu khi cảm biến trở lại vị trí ban đầu. Tuy nhiên, biểu đồ tín hiệu trên chỉ trong phịng thí nghiệm. Trên thực tế để sử dụng trục này rất khó vì nó khơng thể trở về giá trị ban đầu khi điều khiển xe do góc này ln thay đổi vì chuyển động của đầu đối với các trục khác và chính nó. Khi chạy thử nghiệm trên xe để điều khiển thì góc này vẫn giữ giá trị khi quay rồi trở lại vị trí ban đầu. Bằng cách tính tốn và giới hạn, nhóm đã chọn tín hiệu này để xử lý cho phép đi lùi bằng cách quay đầu tuy nhiên vẫn còn sai số trong một số trường hợp nhất định.

Trong đó: : angelX : angelY : angleZ

Trong đó: : angelX : angelY : angleZ

Hình 4. 37 Tín hiệu sang phải

Cũng như angleY hình 4.36 và hình 4.37 mơ tả tín hiệu của góc nghiêng (angleX). Các giá trị của tín hiệu này trả về giá trị ban đầu khi cảm biến trở vè vị trí ban đầu. Nhờ vào sự thay đổi giá trị của tín hiệu này để so sánh điều khiển khi nghiêng đầu qua trái hoặc nghiêng đầu qua phải.

4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 4.5.1 Viết tài liệu hướng dẫn sử dụng 4.5.1 Viết tài liệu hướng dẫn sử dụng

Bước 1: Cấp nguồn cho bộ điều khiển động cơ bằng cách bật cơng tắt ở acquy

qua vị trí ON.

Bước 2: Cấp nguồn cho tai nghe điều khiển bằng cách gạt cơng tắt qua vị trí ON.

Bước 3: Đeo tai nghe lên và thực hiện việc điều khiển xe lăn bằng các cử chỉ

Bảng 4. 1 Hướng dẫn sử dụng xe lăn

Cử chỉ của đầu Hướng xe chạy

Gật đầu tới trước khoảng hơn 10 độ rồi về vị trí ban đầu

Đi thẳng

Ngửa đầu ra sau khoảng hơn 10 độ giữ ở vị trí này Đi lùi Nghiêng đầu qua trái giữ ở vị trí này Rẽ trái Nghiêng đầu qua phải giữ ở vị trí này Rẽ phải Quay đầu ra sau theo cả 2 hướng trái hoặc phải giữ ở

vị trí này

Đi lùi

Lưu ý:

 Khi bật công tắc xe vẫn chưa sử dụng được các lệnh tiến, lùi. Để điều khiển được thực hiện bằng cách nghiêng đầu qua trái hoặc phải mới cho phép sử dụng được các lệnh điều khiển tiến hoặc lùi. Sau đó, các lệnh điều khiển được sử dụng bình thường theo các cử chỉ như bảng trên.

 Khi xe đi thẳng các lệnh lẽ trái và phải vẫn được sử dụng. Sau khi rẽ trái hoặc phải xe tiếp tục đi thẳng.

 Khi xe đang đi thẳng để dừng được ngửa đầu ra sau rồi quay về vị trí ban đầu hoặc ngửa đầu ra sau cho đến khi xe dừng và có xu hướng đi lùi thì quay về vị trí ban đầu.

 Khi muốn dừng xe lại thì điều khiển đầu với vị trí ngược lại. Ví dụ: khi xe đang đi trước muốn dừng lại thì ngửa đầu ra sau hoặc khi xe đang lùi muốn dừng lại thì gật đầu tới trước.

 Khi gặp sự cố trong quá trình điều khiển mà vẫn cịn tín hiệu Bluetooth thì chỉ cần tháo tai nghe xuống đặt nằm ngang xe sẽ dừng hoặc tắt công tắc của tai nghe và bật lại.

CHƯƠNG 5: KẾT QUẢ – NHẬN XÉT – ĐÁNH GIÁ 5.1 KẾT QUẢ 5.1 KẾT QUẢ

a. Kết quả thi cơng bộ điều khiển xe lăn

Trong q trình thực hiện đồ án, nhóm đã đạt được một số thành cơng nhất định thơng qua việc tìm hiểu, nghiên cứu các đối tượng liên quan đến đồ án; thiết kế được một hệ thống điều khiển xe lăn điện sử dụng cảm biến gia tốc. Cụ thể như sau:

 Thi công được tai nghe chứa bộ xử lý tín hiệu điều khiển gọn gàng, dễ sử dụng.  Thi công được hộp chứa bộ điều khiển động cơ gọn gàng, tương thích với các loại xe lăn điện trên thị trường hiện nay. Khách hàng có thể dễ dàng sử dụng bộ điều khiển này với các loại xe trên thị trường.

 Thi công được hộp đựng cảm biến khoảng cách gọn gàng, cứng cáp, đảm bảo yêu cầu kỹ thuật và có thể tháo rời, dễ lắp đặt ở các vị trí khác nhau tùy vào địa hình sử dụng xe lăn để phát hiện vật cản một cách chính xác nhất.

 Tìm hiểu về các chuẩn truyền thơng UART, I2C, …

Hình 5. 2 Hình ảnh tai nghe điều khiển hồn thiện

Hình 5. 4 Hình ảnh xe lăn đã lắp hộp cảm biến và bộ điều khiển.

b. Kết quả thí nghiệm diều khiển xe lăn bằng bộ điều khiển

Bắt đầu sử dụng, ngồi lên xe và đeo tai nghe như trong hình 5.5. Bật cơng tắc nguồn acquy và tai nghe điều khiển, sau khoảng 5s để 2 module bluetooth kết nối, khi để tai nghe ở vị trí như hình hoặc để nằm tai nghe thì nó sẽ ở chế độ standby. Chế độ standby giúp cho người dùng có thể đặt tai nghe ở vị trí bất kỳ khi khơng sử dụng mà khơng cần tắt công tắc, và giúp dừng xe ở trường hợp khẩn cấp.

Hình 5. 6 Động tác cúi đầu để điều khiển đi trước

Hình 5.6 thực hiện động tác cúi đầu về trước để điều khiển xe lăn đi về phía trước, sau khi thực hiện động tác cúi đầu, tín hiệu điều khiển động cơ bị trễ khoảng 1s thì động cơ bắt đầu chạy. Sau khi động cơ chạy thì người điều khiển có thể ngước mặt lên để nhìn đường và điều khiển dễ dàng như hình 5.7

Hình 5. 8 Động tác nghiêng đầu sang trái

Hình 5.8 và hình 5.9 là 2 động tác để điều khiển xe lăn rẽ trái hoặc phải.

Hình 5. 10 Động tác ngửa đầu ra phía sau

Hình 5. 11 Động tác quay nhìn ra đằng sau

Hình 5.10 thể hiện động tác ngửa đầu ra sau để điều khiển xe lăn lùi về phía sau. Tuy nhiên, khi ngửa đầu như vậy thì người sử dụng sẽ khơng nhìn thấy được phía sau là gì, gây mất an tồn. Vì thế, nhóm đã tính tốn và lập trình để người sử dụng có thể quay lại phía sau nhìn và điều khiển xe lùi như hình 5.11.

c. Kết quả thí nghiệm khối cảm biến phát hiện vật cản VL53L0X

 Thử vật cản là bức tường khi xe đang đi tới trước.

Hình 5. 12 Hình ảnh xe dừng khi gặp tường

Xe chạy trong mơi trường ngồi trời, ánh sáng đầy đủ thì khoảng cách thực tế khi xe dừng cách tường khoảng 50cm, so với khoảng cách trên lí thuyết lập trình là 80cm. Khả năng phát hiện chính xác khi phát hiện vật cản trong trường hợp này là 62,5%.

 Thử vật cản là bức tường khi xe dang lùi về phía sau.

Hình 5. 13 Hình ảnh xe dừng khi lùi gặp tường

Xe chạy trong mơi trường ngồi trời, ánh sáng đầy đủ thì khoảng cách thực tế khi xe dừng cách tường khoảng 70cm, so với khoảng cách trên lí thuyết lập trình là

50cm

80cm. Khả năng phát hiện chính xác khi phát hiện vật cản trong trường hợp này là 87.5%.

 Thử vật cản là tủ máy tính màu trắng.

Hình 5. 14 Xe dừng khi đi trước gặp tủ máy tính

Xe chạy trong mơi trường ngồi trời, ánh sáng đầy đủ thì khoảng cách thực tế khi xe dừng cách tủ khoảng 30cm, so với khoảng cách trên lí thuyết lập trình là 80cm. Khả năng phát hiện chính xác khi phát hiện vật cản trong trường hợp này là 37.5%. Sở dĩ khả năng phát hiện vật cản như tủ máy tính thấp vì tủ có bề mặt lồi lõm, phức tạp, khả năng quét tia lazer của cảm biến bị ảnh hưởng bởi ánh sáng môi trường.

 Thử vật cản khi xe đi trước gặp người đang đứng.

Hình 5. 15 Xe dừng khi đi trước gặp người

30cm

Xe chạy trong mơi trường ngồi trời, ánh sáng đầy đủ thì khoảng cách thực tế khi xe dừng cách chân người khoảng 40cm, so với khoảng cách trên lí thuyết lập trình là 80cm. Khả năng phát hiện chính xác khi phát hiện vật cản trong trường hợp này là 50%.

 Thử vật cản khi xe lùi gặp người đang đứng

Hình 5. 16 Xe lùi gặp người đang đứng

Xe chạy trong môi trường ngồi trời, ánh sáng đầy đủ thì khoảng cách thực tế khi xe dừng cách chân người khoảng 70cm, so với khoảng cách trên lí thuyết lập trình là 80cm. Khả năng phát hiện chính xác khi phát hiện vật cản trong trường hợp này là 87.5%.

5.2 NHẬN XÉT, ĐÁNH GIÁ

Nhìn chung các kết quả thì nhóm đã đạt được mục tiêu ban đầu mà nhóm đã đề ra khi thực hiện đồ án. Trên cơ sở nghiên cứu tổng quan nghiên cứu tính ứng dụng cao để tạo ra được một bộ điều khiển không dây cho người khuyết tật, chúng tôi đã thi công được một hệ thống tương đối hoàn thiện về mặt thẩm mỹ và an toàn. Về độ ổn định, xe lăn sử dụng nguồn acquy an tồn, tai nghe điều khiển sử dụng cơng nghệ Bluetooth ổn định về kết nối và truyền dữ liệu.

Tuy nhiên, vẫn còn một số lỗi do khối cảm biến phát hiện vật cản sử dụng cảm biến lazer nên khi xe đi ra ngoài ánh sáng ban ngày khoảng cách phát hiện vật của lazer bị thu hẹp vì nhiễu của mơi trường ngồi, khoảng cách đo ảnh hưởng bởi bề mặt của vật cản phức tạp, nhưng vẫn giữ dược ngưỡng an toàn cho người sử dụng. Vật

cản có độ mỏng như bàn học, ghế thì thì cảm biến phát hiện được khoảng 20% về độ chính xác nhưng có thể xử lý sự cố này để cho xe dừng lại bằng cách tháo tai nghe ra khỏi đầu.

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN

Sau một thời gian nghiên cứu và làm việc chăm chỉ thì nhóm đã được những thành công như sau:

 Thi công dược một hệ thống bao gồm tai nghe xử lý tín hiều điều khiển từ cảm biến gia tốc, hộp điều khiển động cơ, khối các cảm biến phát hiện khoảng cách bằng lazer.

 Điều khiển được xe lăn đi các hướng chính xác.

 Thêm vào các tính năng của tai nghe điều khiển để xử lý các tính huống phát sinh gây mất an tồn cho người sử dụng xe lăn như ngủ gật, trạng thái gật đầu liên tục.

6.2 HƯỚNG PHÁT TRIỂN

 Sử dụng vi điều khiển có thể lập trình Machine Learning để hộp điều khiển có thể học được các trường hợp xe bị tai nạn trong quá trình sử dụng để nâng cao triến trình xử lý các tình huống

 Thiết kế một bộ xử lý tín hiều điều khiển nhỏ gọn hơn, xử lý tín hiệu chính xác hơn.

 Sử dụng camea xử lý ảnh để phát hiện và giúp xe tránh được vật cản .  Thương mại hoá được sản phẩm ra thị trường . .

TÀI LIỆU THAM KHẢO

[1] Việt Nam công bố kết quả Điều tra Quốc gia quy mô lớn đầu tiên về người khuyết tật (2016) – www.unicef.org – 1/2019

[2] Gyro-Accelerometer based Control of an Intelligent Wheelchair Received 19 December 2017, Published online: 9 June2018

[3] An Introduction to MEMS (Micro-electromechanical Systems) - Prime Faraday Technology Watch – 01/ 2002

[4] Ryan Goodrich – Accelerometer - What They Are and How They Work - LiveScience Contributor – 01/10/2013

[5] Con quay hồi chuyển - www.wikipedia.org

[6] A Guide to using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications - www.starlino.com – 12/2009

[7] Gadget Gangster - Accelerometer & Gyro Tutorial - www.instructables.com [8] InverseSense Inc. (2011), “MPU-6000 and MPU-6050 Product Specification Revision 3.1”, PS-MPU-6000A-00 Rev 3.1, 24/10/2011.

[9] BTS 7960 high current PN half bridge datasheet – 12/2004 [10] Stmicroelectronics - VL53L0X datasheet – 4/2018

[11] Giới Thiệu Giao Diện Arduino IDE – www.hourofcode.vn [12] Introduction to Kalman Filter – www.kalmanfilter.net

SÁCH THAM KHẢO

[13] Nguyễn Đình Phú, “Giáo trình vi xử lý”, NXB Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM,2016.

[14] Phạm Quang Huy, “Arduino dành cho người tự học” , NXB Thanh Niên , 2019 [15] Hanoi Aptech , “Giáo trình lập trình C cơ bản “ , NXB Hà Nội

[16] Rafia Hassani, Mohamed Boumehraz, Maroua Hamzi, Zineb Habba – Gyro- Accelerometer based Control of an Intelligent Wheelchair – 06/2018.

PHỤ LỤC

1. Chương trình xử lý tín hiệu cảm biến MPU-6050

#include <Wire.h> //Thư viện giao tiếp I2C #include <SimpleKalmanFilter.h>

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(3, 4); // RX | TX

const int MPU_addr=0x68; //Địa chỉ I2C của MPU6050 int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

float accX,accY,accZ;

float gyroX, gyroY, gyroZ;

float angleAccX,angleAccY,angleAccZ; float gyroXoffset,gyroYoffset,gyroZoffset; float angleX,angleY,angleZ ; float angleGyroX,angleGyroY,angleGyroZ; float preInterval,interval; float gyroX_K,gyroY_K,gyroZ_K; float angleX_K,angleY_K,angleZ_K; boolean straight_sig,back_sig,right_sig,left_sig; boolean flat_straight,flat_back_1,flat_back_2,allow_straight,allow_back,enable; int a,b,c,d; int a1; //khai báo 3 bộ lọc SimpleKalmanFilter simpleKalmanFilter_angleX(1, 1, 0.01); SimpleKalmanFilter simpleKalmanFilter_angleY(1, 1, 0.001); SimpleKalmanFilter simpleKalmanFilter_angleZ(1, 1, 0.001); SimpleKalmanFilter simpleKalmanFilter_GyroX(1, 1, 0.01); SimpleKalmanFilter simpleKalmanFilter_GyroY(1, 1, 0.001); SimpleKalmanFilter simpleKalmanFilter_GyroZ(1, 1, 0.001); void calcGyroOffsets(){ float x=0,y=0,z=0; int16_t rx, ry, rz;

for (int i = 0;i<3000;i++) {

Wire.beginTransmission(0x68);//địa chỉ I2C của MPU Wire.write(0x43); //đia chi thanh ghi gyro

Wire.endTransmission(false);

Wire.requestFrom(0x68,6); // sử dụng 6 thanh ghi

rx=Wire.read()<<8|Wire.read(); ry=Wire.read()<<8|Wire.read(); rz=Wire.read()<<8|Wire.read(); x += rx / 131.0; y += ry / 131.0; z += rz / 131.0; } gyroXoffset = x / 3000; gyroYoffset = y / 3000; gyroZoffset = z / 3000;

Một phần của tài liệu Nghiên cứu, thiết kế và thi công bộ điều khiển xe lăn điện sử dụng cảm biến gia tốc (Trang 74)

Tải bản đầy đủ (PDF)

(107 trang)