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

MÔ PHỎNG CHUYỂN ĐỘNG BẰNG cảm BIẾN GIA tốc (có code và sơ đồ mạch)

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 (413.22 KB, 20 trang )

MÔ PHỎNG CHUYỂN ĐỘNG BẰNG
CẢM BIẾN GIA TỐC

1


MỤC LỤC

2


DANH MỤC CÁC HÌNH VẼ

3


DANH MỤC CÁC TỪ VIẾT TẮT
I2C

Inter-Intergrated Circuit.

MIMO

Multi-Input Multi-Output

UART

Universal Asynchronous Receiver – Transmitter.

4



Trang 5/18

CHƯƠNG 1.

-

GIỚI THIỆU ĐỀ TÀI

1.1 Giới thiệu
Khi xã hội ngày càng phát triển thì các ứng dụng về công nghệ sẽ ngày một
được quan tâm.

-

MPU-6050 tức cảm biến gia tốc mang lại khá nhiều tiện ích do đó đề tài “Mô
phỏng chuyển động bằng cảm biến gia tốc” là một đề tài rất hay giúp ta hiểu
rõ hơn chuyển động cũng như cách dùng của một cảm biến là như thế nào.
Hiểu được các thông số của nó.

-

MPU-6050 được ứng dụng rất nhiều vào cuộc sống như máy bay đồ chơi, xe
tự cân bằng, thiết bị chơi cầm tay, bộ điều khiển dựa trện sự chuyển động cơ
thể, thiết bị đeo tay dùng cho sức khỏe, thể dục thể thao.

Mô Phỏng Dáng Chạy


Trang 6/18


Hình 1-1: Sơ đồ nối MPU6500 với Arduino [1]

1.2 Định hướng đề tài

Mô Phỏng Dáng Chạy


Trang 7/18

-

Tìm hiểu nguyên lý hoạt động của MPU6050.

-

Tìm hiểu nguyên lý hoạt động của Bluetooth.

-

Tìm hiểu cách kết nối MPU6050 với Arduino.

-

Tìm hiểu cách kết nối Bluetooth với Arduino.

-

Lấy giá trị thực của MPU6050.


-

Kết nối với phần mềm Matlab thông qua cổng COM.

-

Mô phỏng chuyển động theo mong muốn.

-

Vẽ mạch và thi công.

CHƯƠNG 2.
1.3 Sơ đồ khối

Mô Phỏng Dáng Chạy

NỘI DUNG CỦA ĐỀ TÀI


Trang 8/18

Hình 2-1: Sơ đồ của hệ thống

-

1.4 Khái niệm
MPU-6050 do hãng InvenSense sản xuất.

-


MPU-6050 một trong những cảm biến chuyển động đầu tiên trên thế giới có
tới 6 (mở rộng tới 9) trục cảm biến tích hợp trong một chip duy nhất và rất dễ
sử dụng.

-

MPU-6050 có một đơn vị tăng tốc phần cứng chuyên xử lý tín hiệu cảm biến
thu thập và thực hiện các tính toán tùy ý.

-

MPU-6050 giúp giảm bớt đáng kể phần xử lý tính toán của vi điều khiển, cải
thiện tốc độ xử lý và cho ra phản hồi nhanh hơn, chính xác hơn.

Hình 2-2: MPU-6050 thực tế [2]

-

MPU-6050 sử dụng bộ chuyển đổi tương tự - số 16 bit.Với 16 bit sẽ có 2^16
= 65536 giá trị cho 1 cảm biến.

-

Tùy thuộc vào yêu cầu mà cảm biến MPU-6050 có thể hoạt động ở chế độ
tốc độ xử lý cao hoặc chế độ đo góc quay chính xác.

-

MPU-6050 có thể đo ở phạm vi:

o Con quay hồi chuyển: ± 250 500 1000 2000 dps
o Gia tốc: ± 2 ± 4 ± 8 ± 16g

-

MPU-6050 có sẵn bộ đệm dữ liệu 1024 byte giúp vi điều khiển phát lệnh cho
cảm biến, và nhận về dữ liệu sau khi MPU-6050 tính toán xong.
1.5 Bộ lọc Kalman

Mô Phỏng Dáng Chạy


Trang 9/18

-

Bộ lọc Kalman thực hiện phương pháp truy hồi đối với chuỗi các giá trị đầu
vào bị nhiễu, giúp tối ưu hóa giá trị ước đoán trạng thái của hệ thống tối đa

-

nhất.
Bộ lọc Kalman rất dễ lập trình trong Arduino nhưng lại mang lại hiệu quả

-

khá cao giúp giảm tối nhiễu không mong muốn.
Bộ lọc Kalman được ứng dụng rộng rãi trong kỹ thuật, tiêu biểu trong các
ứng dụng định hướng, định vị và điều khiển các phương tiện di chuyển nhằm


-

cho ra giá trị chính xác nhất.
Ngoài ra, bộ lọc Kalman còn được ứng dụng để phân tích dữ liệu trong các
lĩnh vực xử lý tín hiệu, kinh tế và sản xuất.

-

1.6 Bluetooth HC-06
Module HC-06 là module thu phát không dây thông qua sóng bluetooth, có
thể thu sóng bluetooth từ điện thoại đi động, máy tính.
Các thông số kỹ thuật HC-06 như sau:
o Điện áp hoạt động : 5V-3.3V.
o Chuẩn giao tiếp UART.
o Khoảng cách thu phát không dây: bán kính 12m.
o Hỗ trợ chế độ Master, Slave, Loopback. Chế độ đặt lệnh AT từ máy
tính, vi điều khiển.
o Baud rate: 9600, 19200

Hình 2-4: HC-06 với Arduino [4]

Mô Phỏng Dáng Chạy


Trang 10/18

CHƯƠNG 3.

KẾT QUẢ MÔ PHỎNG


1.7 Sơ đồ giải thuật

Hình 3-1: Sơ đồ giải thuật

1.8 Mô hình mô phỏng
1.1.1 Sơ đồ nguyên lý

Mô Phỏng Dáng Chạy


Trang 11/18

Hình 3-2: mạch nguyên lý hoạt động

-

Đầu tiên, viết chương trình code để đọc giá trị của cảm biến MPU-6050. Sau
đó, nạp giá trị bằng Arduino. Các giá trị của các trục tìm được sẽ được

-

chuyển lên Matlab để mô phỏng tùy mong muốn.
Do MPU-6050 biểu diễn giá trị thực sẽ dẫn đến có thời gian trôi để khắc
phục ta cần dùng bộ lọc Kalman để lọc nhiễu. Để thiết bị nhỏ gọn và sử dụng
thuận tiện ở nhiều môi trường khác nhau ta dùng Bluetooth HC-06 để thiết bị
trở thành không dây.
1.1.2 Sơ đồ mạch in

Mô Phỏng Dáng Chạy



Trang 12/18

Hình 3-3: Sơ đồ mạch in

1.1.3 Mạch thực tế

Mô Phỏng Dáng Chạy


Trang 13/18

Hình 3-4: mạch thực tế

1.9 Kết quả mô phỏng
1.1.4 Giao diện với Matlab

Hình 3-5: Giao diện với Matlab

Mô Phỏng Dáng Chạy


Trang 14/18

1.1.5 Kết quả mô phỏng

Hình 3-6: Kết quả mô phỏng

Mô Phỏng Dáng Chạy



Trang 15/18

CHƯƠNG 4.

-

NHẬN XÉT

1.10 Nhận xét
MPU-6050 cho nhận dữ liệu chính xác, góc quay không bị lệch nếu có thì
không đáng kể, có bị trôi do nhiễu nhưng khắc phục bằng cách dùng bộ lọc
Kalman sẽ hạn gần như tối đa khả năng nhiễu không mong muốn.

-

1.11 Ưu điểm
Dễ sử dụng, ứng dụng rộng rãi.
Đọc được giá trị thực và mô phỏng được thời gian thực.
Mạch có chi phí thi công thấp do đó dễ được ứng dụng rộng rãi vào đời sống

-

phục vụ tiện ích của con người.
Mạch nhỏ gọn dễ di chuyển, chống nhiễu đơn giản.

-

1.12 Nhược điểm
Giá trị của các trục là vô hạn để mô phỏng chỉ lấy được một khoảng giá trị cụ


-

thể.
Mô phỏng giữa các cảm biến với nhau còn nhiều hạn chế.
Dễ bị nhiễu ở đầu vào cần khắc phục bằng cách dùng bộ lọc để truy xuất
được giá trị thực.

CHƯƠNG 5.
1.13 Kết luận

Mô Phỏng Dáng Chạy

KẾT LUẬN


Trang 16/18

-

MPU6050 đang được phát triển rộng rãi, phục vụ khá nhiều trong đời sống

-

hiện nay.
Để tránh thời gian trôi ta cần dùng thêm bộ lọc Kalman nó có tác dụng chống

-

nhiễu xác định đúng thời gian mà ta mong muốn.

Để dễ dàng di chuyển và sử dụng ta có thể kết nối không dây thông qua HC06.

-

1.14 Hướng phát triển
Cảm biến gia tốc MPU6050 được ứng dụng rộng hiện nay. Ta có thể phát
triển làm chuột không dây trên không, hay làm mô phỏng chuyển động của
toàn cơ thể người được ứng dụng rất cao giúp ta quan sát được hoạt động và
tình trạng sức khỏe của con người.

Mô Phỏng Dáng Chạy


Trang 17/18

TÀI LIỆU THAM KHẢO
[1]

/>
[2]

/>
[3]

/>
[4]

arduino.vn/tags/hc-06

Mô Phỏng Dáng Chạy



Trang 18/18

PHỤ LỤC A
clear all;
close all;
delete(instrfind);
BaudRate=19200;
buffSize=100;
simulation_duration=10;
arduino=serial('COM4','BaudRate',BaudRate);
fopen(arduino);
str=fscanf(arduino);
str=fscanf(arduino);
str=read_MPU6050(arduino);
dt=str(1);
truc_x=str(2);
truc_y=str(3);
truc_z=str(4);
loc_goc_x=str(5);
loc_goc_y=str(6);
loc_goc_z=str(7);
goc_x=str(8);
goc_y=str(9);
goc_z=str(10);
xc=0; yc=0; zc=0;
L=3;

Mô Phỏng Dáng Chạy



Trang 19/18

alpha=0.6;
X = [0 0 0 0 0 1; 1 0 1 1 1 1; 1 0 1 1 1 1; 0 0 0 0 0 1];
Y = [0 0 0 0 1 0; 0 1 0 0 1 1; 0 1 1 1 1 1; 0 0 1 1 1 0];
Z = [0 0 1 0 0 0; 0 0 1 0 0 0; 1 1 1 0 1 1; 1 1 1 0 1 1];
C= [0.1 0.5 0.9 0.9 0.1 0.5];
X = L*(X-0.5) + xc;
Y = L/1.5*(Y-0.5) + yc;
Z = L/3*(Z-0.5) + zc;
V=[reshape(X,1,24); reshape(Y,1,24); reshape(Z,1,24)];
tic;
while(tocstr=read_MPU6050(arduino);
dt=str(1);
truc_x=str(2)*pi/180;
truc_y=str(3)*pi/180;
truc_z=str(4)*pi/180;
loc_goc_x=str(5)*pi/180;
loc_goc_y=str(6)*pi/180;
loc_goc_z=str(7)*pi/180;
goc_x=str(8)*pi/180;
goc_y=str(9)*pi/180;
goc_z=str(10)*pi/180;
dcm_filtered = goc2dcm( goc_z, goc_x, goc_y)
VR_filtered=dcm_filtered*V;

Mô Phỏng Dáng Chạy



Trang 20/18

XR_filtered=reshape(VR_filtered(1,:),4,6);
YR_filtered=reshape(VR_filtered(2,:),4,6);
ZR_filtered=reshape(VR_filtered(3,:),4,6);
figure(1)
fill3(XR_filtered,YR_filtered,ZR_filtered,C,'FaceAlpha',alpha);
xlim([-3 3]);
ylim([-3 3]);
zlim([-3 3]);
box on;
drawnow
end
close all;
delete(instrfind);

Mô Phỏng Dáng Chạy



×