ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ
KHẢO SÁT CẢM BIẾN GIA TỐC
Sinh viên thực hiện
Cán bộ hướng dẫn
Trần Thanh Sang 1101041
TS. Trần Thanh Hùng
Cần Thơ, tháng 11 năm 2013
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
1
KHẢO SÁT CẢM BIẾN GIA TỐC
Trần Thanh Sang1, Trần Thanh Hùng2
ABSTRACT
Nowadays, the acceleration sensor is one of many sensors that are popular in many modern
devices. Therefore, this project is researched to survey the data of acceleration sensor in
order to provide an overview about this sensor, they are useful for other projects which use
the same or different type of acceleration sensor, or the development of related applications
(such as control applications, orientation in space,…). In this project, the MSP430
microcontroller is used to read out data of acceleration sensor and transmit them to a
computer for plotting a graph by Matlab software. The collected data are updated
continuously with a high accuracy to meet the requirement of applications, which need high
sensitivity, in many areas such as space science, biomedical, automotive industry,
electronics civil,…
Keyword: accleleration sensor, I2C interface, UART, MSP430G2452, Matlab GUI,…
Title: Survey of Acceleration sensor
TÓM TẮT
Ngày nay, cảm biến gia tốc là một trong những loại cảm biến được sử dụng rộng rãi trong
nhiều thiết bị hiện đại. Do vậy, đề tài thực hiện khảo sát dữ liệu của cảm biến gia tốc nhằm
cung cấp cái nhìn khái quát về cảm biến gia tốc, cũng như cung cấp các thông tin hữu ích
cho các đề tài khác sử dụng cùng loại hoặc khác loại cảm biến gia tốc, hoặc phát triển các
ứng dụng có liên quan (các ứng dụng điều khiển, định hướng trong không gian,…). Để thực
hiện đề tài, vi điều khiển MSP430 được sử dụng để đọc dữ liệu rồi truyền đến máy tính để
có thể vẽ đồ thị dữ liệu bằng phần mềm Matlab. Dữ liệu thu thập được cập nhật liên tục
với độ chính xác khá cao, đáp ứng được yêu cầu của các ứng dụng đòi hỏi độ nhạy cao
trong nhiều lĩnh vực như khoa học không gian, y sinh, công nghiệp ô tô, điện tử dân dụng,…
Từ khóa: cảm biến gia tốc, giao tiếp I2C, UART, MSP430G2452, Matlab GUI,…
1 GIỚI THIỆU
Gia tốc là một đại lượng vật lí quan trọng dùng để mô tả chuyển động. Ngày nay,
với sự phát triển vượt bậc của khoa học – công nghệ, việc đo đạc gia tốc trở nên dễ
dàng và chính xác hơn nhờ các loại cảm biến gia tốc. Cảm biến gia tốc được ứng
dụng rộng rãi trong nhiều thiết bị như các thiết bị y tế hiện đại, bộ phận định hướng
và điều khiển vận tốc trong ô tô, bộ phận định vị trên tên lửa, tàu không gian, các
thiết bị đo độ rung, độ chấn động,…Do đó, đề tài được nghiên cứu nhằm cung cấp
những thông tin cơ bản nhất về cảm biến gia tốc, tạo cơ sở cho những nghiên cứu
khác. Đề tài chọn cảm biến gia tốc BMA150 của hãng Bosch Sensortec để khảo sát.
Nguồn tài liệu tham khảo để thực hiện đề tài bao gồm datasheet của cảm biến gia
tốc BMA150 và các thông tin sưu tầm được trên Internet.
1 Sinh viên lớp Kỹ thuật máy tính K36, Mã số SV: 1101041, Số ĐT: 01678767576,
email: sang101041@student.ctu.edu.vn
2 Bộ môn Tự động hóa, Khoa Công Nghệ, ĐH Cần Thơ
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
2
Kết quả mong muốn khi thực hiện đề tài là khảo sát được dữ liệu của cảm biến bằng
cách vẽ được đồ thị dữ liệu một cách trực tiếp trên máy tính.
2 PHƯƠNG PHÁP THỰC HIỆN
2.1 Sơ đồ khối tổng quát
Để thực hiện khảo sát dữ liệu của cảm biến gia tốc BMA150, đề tài đã sử dụng các
khối chức năng sau:
Hình 1: Sơ đồ khối tổng quát phần cứng của đề tài
‒ Khối cảm biến gia tốc: Sử dụng cảm biến gia tốc BMA150 để thu thập dữ
liệu gia tốc sau đó gửi dữ liệu này đến vi điều khiển.
‒ Khối vi điều khiển: Sử dụng vi điều khiển MSP430G2452 để giao tiếp với
cảm biến và máy tính.
‒ Khối máy tính: Sử dụng UART của máy tính cá nhân và phần mềm Matlab
để vẽ đồ thị dữ liệu.
2.1.1 Giới thiệu về cảm biến gia tốc BMA150 [1]
BMA150 là cảm biến gia tốc 3 trục có tầm đo thấp với ngõ ra số, được chế tạo
theo công nghệ MEMS (Micro Eletro Mechanical Systems), do hãng Bosch
Sensortec sản xuất.
BMA150 được chế tạo theo kiểu tụ, cho phép đo gia tốc 3 trục trực giao X, Y,
Z, hoặc ứng dụng để đo độ nghiêng, hoặc đo các chuyển động hoặc các rung động.
Trên cảm biến còn được tích hợp sẵn một cảm biến nhiệt độ.
Nguyên tắc hoạt động:
Để đo được giá trị gia tốc, bên trong cảm biến tích hợp 3 cảm biến con bao gồm cảm
biến X (đo trục X), cảm biến Y (đo trục Y) và cảm biến Z (đo trục Z) hoạt động theo
nguyên tắc thay đổi điện dung. Cấu tạo của mỗi cảm biến con là một hệ khối lượng
– lò xo như Hình 2(a), trong đó khối m gắn với bản tụ nằm giữa hệ 2 tụ điện mắc
nối tiếp có khoảng cách giữa hai bản tụ có thể thay đổi được, như Hình 2(b).
(a)
(b)
Hình 2: Hệ khối lượng – lò xo để đo gia tốc (a) và mô hình hai tụ mắc nối tiếp (b)
CẢM BIẾN
GIA TỐC
MÁY TÍNH
VI ĐIỀU KHIỂN
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
3
Dưới tác động của lực bên ngoài làm điện dung của hai tụ điện này thay đổi
(∆C = CA – CB), có thể tính được độ dịch chuyển của bản tụ trung gian dựa vào công
thức (với x nhỏ):
Trong đó: x là độ dịch chuyển, x0 là khoảng cách giữa 2 bản tụ, C là điện dung của
tụ. Tính được độ dịch chuyển x, ta có thể suy ra gia tốc qua công thức:
Trong đó: a là gia tốc, k là hệ số tỉ lệ, m là khối lượng cảm biến.
Do đó, chỉ cần đo sự biến thiên điện dung của tụ là có thể tính được gia tốc. Cảm
biến X, Y, Z có ngõ ra là giá trị điện dung của tụ bên trong. Giá trị này được đưa
vào một mạch chuyên biệt (ASIC) để xử lí. Quá trình này đi qua nhiều mạch như
mạch dồn kênh, bộ lọc…trước khi được đưa vào bộ biến đổi ADC 10 bit để đưa vào
mạch logic điều khiển và phục vụ ngắt, cuối cùng là mạch phục vụ các chuẩn giao
tiếp I2C và SPI (xem Hình 3). Đơn vị của gia tốc ở ngõ ra được ước lượng theo gia
tốc trọng trường g (1g ≈ 9.81m/s2).
Đặc điểm kĩ thuật của cảm biến gia tốc BMA150:
˗ Sử dụng nguồn thấp từ 1.62 – 3.6V, dòng điện khoảng 200μA.
˗ Dữ liệu gia tốc 3 trục X, Y, Z được là một số nhị phân 10 bit được biểu diễn
dưới dạng số bù 2, bao gồm 3 thang đo là ±2g (độ nhạy 256 LSB/g), ±4g (độ
nhạy 128 LSB/g) và ±8g (độ nhạy 64 LSB/g), với g là gia tốc trọng trường.
Dữ liệu cập nhật liên tục với tần số 3KHz, độ phân giải là 4 mg (±2g), có thể
chọn băng thông từ 25Hz đến 1500Hz.
˗ Tích hợp cảm biến nhiệt độ có với bộ biến đổi ADC 8 bit, đo nhiệt độ trong
khoảng từ -30 oC đến 97.5 oC, có thể thay đổi thang đo theo yêu cầu sử dụng.
˗ Hỗ trợ các chuẩn giao tiếp bao gồm I2C, SPI với các phím ngắt có thể lập
trình để thông báo dữ liệu mới đã được cập nhật.
˗ Hỗ trợ nhiều loại ngắt có thể được lập trình để đo sự chuyển động hoặc nâng
cao tầm đo của cảm biến hoặc để thiết lập các chức năng nâng cao.
˗ Hỗ trợ 2 chế độ hoạt động là normal mode (chế độ bình thường) và sleep
mode (chế độ ngủ) để tối ưu năng lượng tiêu thụ.
Sơ đồ các khối chức năng, sơ đồ chân và chức năng các chân của cảm biến
BMA150 được hiển thị lần lượt trong Hình 3, Hình 4 và Bảng 1.
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
4
Hình 3: Sơ đồ các khối chức năng bên trong cảm biến gia tốc BMA150
Hình 4: Sơ đồ chân cảm biến gia tốc BMA150
Bảng 1: Chức năng các chân của BMA150
PIN
Tên
Chức năng
1
Chân dành riêng
Không kết nối
2
VDD
Nguồn cung cấp
3
GND
Ground
4
INT
Interrupt
5
CSB
Chọn chip
6
SCK
Ngõ vào xung clock (giao tiếp I2C, SPI)
7
SDO
Ngõ ra dữ liệu nối tiếp
8
SDI
Ngõ vào/ra dữ liêu nối tiếp
9
VDDIO
Nguồn cung cấp cho giao tiếp số (I2C, SPI)
10,11,12
Chân dành riêng
Không kết nối
BMA150 được thiết kế bao gồm 127 thanh ghi (có địa chỉ từ 00h-7Fh), được
chia làm 7 loại: thanh ghi dữ liệu, thanh ghi trạng thái, thanh ghi điều khiển, thanh
ghi cài đặt, thanh ghi kèm theo (tăng offset của thanh ghi dữ liệu), thanh ghi dành
riêng và một số thanh ghi không sử dụng. Bảng 2 trình bày một số thanh ghi thông
dụng sử dụng trong đề tài.
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
5
Bảng 2: Một số thanh ghi quan trọng của BMA150
Địa chỉ
Loại thanh ghi
Chức năng
02h
Dữ liệu
Byte thấp trục X<7:6>, new_data_x<0>
03h
Dữ liệu
Byte cao trục X<7:0>
04h
Dữ liệu
Byte thấp trục Y<7:6>, new_data_y<0>
05h
Dữ liệu
Byte cao trục Y<7:0>
06h
Dữ liệu
Byte thấp trục Z<7:6>, new_data_z<0>
07h
Dữ liệu
Byte cao trục Z<7:0>
08h
Dữ liệu
Nhiệt độ<7:0>
14h
Điều khiển
Thang đo<4:3>, băng thông<2:0>
Đề tài sử dụng cảm biến gia tốc BMA150 được tích hợp trên board Inertial One
Sensors Xplained [2], vị trí của cảm biến và các chân phục vụ giao tiếp I2C được
xác định như Hình 5. Board Inertial One Sensors Xplained được tích hợp 3 loại cảm
biến 3 trục, bao gồm cảm biến gia tốc BMA150, cảm biến con quay hồi chuyển
ITG3200 và cảm biến la bàn AK9875. Board hỗ trợ giao tiếp I2C giữa các cảm biến
với vi điều khiển qua các chân SCL và SDA. Trong board Inertial One Sensors
Xplained, địa chỉ để giao tiếp I2C (slave address) của BMA150 là 38h.
Hình 5: BMA150 trên board Inertial One Sensors Xplained
2.1.2 Giới thiệu về vi điều khiển MSP430G2452[3] và kit Launchpad
Vi điều khiển MSP430G2452 thuộc họ vi điều khiển MSP430 do Texas
Instrument (TI) sản xuất, có các đặc điểm chung của họ MSP430 như: thiết kế theo
cấu trúc RISC 16-bit, là dòng vi điều khiển siêu tiết kiệm năng lượng, công suất tiêu
thụ cực thấp, điện áp nguồn khoảng 1.8V – 3.6V và một số tính năng khác. Đề tài
sử dụng module USI được hỗ trợ trong MSP430G2452 để giao tiếp I2C với cảm biến
gia tốc BMA150.
Kit Launchpad (Hình 6) là một kit ứng dụng nhỏ do TI sản xuất, hỗ trợ nhiều
loại MSP430 nạp chương trình và giao tiếp dữ liệu. Đề tài dùng kit Launchpad sử
dụng vi điều khiển MSP430G2452 để tiến hành giao tiếp I2C với cảm biến, sau đó
gửi dữ liệu nhận được lên máy tính bằng giao tiếp UART được giả lập (do
MSP430G2452 không hỗ trợ UART).
BMA150
SCL
VCC
GND
SDA
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
6
Hình 6: Kit Launchpad sử dụng MSP430G2452
2.2 Thiết kế phần cứng, phần mềm
2.2.1 Phần cứng
Thành phần sử dụng: Đề tài sử dụng các phần cứng sẵn có bao gồm cảm biến gia
tốc BMA150 tích hợp trên board Inertial One Sensors Xplained, MSP430G2452 trên
kit Lauchpad và máy tính cá nhân.
Kết nối chi tiết: Các chân VCC, GND, SCL, SDA của board Inertial One Sensors
Xplained lần lượt kết nối với các chân VCC, GND, P1.6, P1.7 trên kit Launchpad;
kit Lauchpad được kết nối với máy tính qua cổng USB. Kết nối phần cứng thực tế
được thể hiện qua Hình 7.
Hình 7: Kết nối phần cứng chi tiết
2.2.2 Phần mềm
Phần mềm IAR Embedded Workbench: Sử dụng để lập trình và nạp chương trình
vào MSP430G2452 thông qua kit Launchpad. Lưu đồ giải thuật của chương trình
đọc dữ liệu cảm biến và truyền lên máy tính được thể hiện ở Hình 8. Có thể chia giải
thuật này làm 2 phần: Vi điều khiển đọc dữ liệu cảm biến và Vi điều khiển truyền
dữ liệu nhận được đến máy tính để vẽ đồ thị.
˗ Vi điều khiển đọc dữ liệu cảm biến: Đầu tiên, MSP430G2452 tiến hành giao
tiếp I2C với BMA150 để thiết lập thanh ghi chọn thang đo và băng thông (địa
chỉ 14h) để chọn độ rộng thang đo và băng thông mong muốn (có thể để mặc
MSP430G2452
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
7
định). Sau đó, việc đọc các thanh ghi chứa giá trị gia tốc 3 trục X, Y, Z và
nhiệt độ được thực hiện lặp lại với tần số ( < 3
). Đề tài tiến hành đọc
dữ liệu này với tần số 20Hz.
˗ Vi điều khiển truyền dữ liệu nhận được đến máy tính để vẽ đồ thị: Sau khi
nhận được dữ liệu từ cảm biến, vi điều khiển sẽ tiến hành gửi từng byte dữ
liệu này đến máy tính thông qua giao tiếp UART nếu nhận được yêu cầu nhận
dữ liệu từ máy tính (do Matlab GUI gửi qua cổng COM). Dữ liệu này sẽ được
hiển thị hoặc vẽ đồ thị trực tiếp trong Matlab GUI.
Hình 8: Lưu đồ giải thuật khảo sát cảm biến BMA150
Phần mềm Matlab:
˗ Phiên bản sử dụng: Matlab R2010a của hãng MathWorks.
˗ Thiết kế giao diện: Đề tài sử dụng chức năng tạo giao diện GUI của Matlab
để vẽ đồ thị dữ liệu (sau đây gọi ngắn gọn là Matlab GUI). Giao diện Matlab
Định nghĩa địa chỉ các
thanh ghi trong BMA150
Định nghĩa các chân và các biến thiết lập
I2C (SCL, SDA), UART (TXD, RXD)
Begin
Khai báo biến toàn cục được sử dụng
Khai báo chương trình con
Khởi tạo I2C và UART
Chọn giới hạn đo (thang đo), băng thông
ĐÚNG
SAI
Nhận được tín hiệu yêu cầu
đọc dữ liệu từ máy tính?
Gọi hàm truyền các byte dữ liệu gia tốc
và nhiệt độ lên máy tính thông qua UART
Đọc giá trị gia tốc 3 trục X, Y, Z
và giá trị nhiệt độ
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
8
GUI được thiết kế như Hình 9, bao gồm: 1 toggle button “ON/OFF” để điều
khiển việc mở/tắt chức năng vẽ đồ thị; 1 static text hiển thị tên đồ thị là
“ACCELERATION DATA”; 2 panel để hiển thị 2 nhãn “ON/OFF READ”
và “TEMPERATURE”; 1 edit text để hiển thị dữ liệu nhiệt độ; 3 đồ thị dữ
liệu tương ứng với 3 trục X, Y, Z. Khi nhấn nút ON/OFF, việc nhận dữ liệu
được kích hoạt và Matlab GUI sẽ vẽ đồ thị dữ liệu này cho đến khi nút
ON/OFF được nhấn lần nữa.
Hình 9: Giao diện GUI trong Matlab để vẽ đồ thị dữ liệu
3 KẾT QUẢ VÀ ĐÁNH GIÁ
Dữ liệu cảm biến được đọc một cách liên tục và truyền lên máy tính với tần số 96Hz,
sau đó hiển thị trực tiếp lên đồ thị trong Matlab GUI như Hình 10.
Hình 10: Đồ thị biểu diễn dữ liệu gia tốc 3 trục theo thời gian
thay đổi trục Y
thay đổi trục Z
thay đổi trục X
thay đổi cả 3 trục X,Y,Z
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
9
Theo đó, giá trị gia tốc trục X được thay đổi trong khoảng thời gian từ 3.7s – 6.6s.
Để làm được điều này, dựa vào định hướng của board Inertial One Sensors Xplained
trên Hình 11, ta đặt board ở vị trí sao cho trục Z vuông góc với mặt phẳng nằm
ngang, tiến hành di chuyển qua lại theo phương trục X. Tương tự, giá trị trục Y thay
đổi trong khoảng từ 8.7s – 11.4s và trục Z thay đổi trong khoảng từ 13.7s – 16.3s.
Để làm được điều này, định hướng tương tự trục X, ta di chuyển board theo phương
của Y (nếu muốn thay đổi Y) hoặc Z (nếu muốn thay đổi Z). Trong khoảng thời gian
từ 17.6s – 21.4s, giá trị cả 3 trục đều thay đổi do board được thay đổi theo cả 3
phương X, Y, Z trong không gian. (Ghi chú: giá trị thời gian trên 3 đồ thị được chia
10 nếu tính theo đơn vị giây).
Hình 11: Định hướng 3 trục X, Y, Z trong không gian
Nhận xét:
Tần số truyền nhận dữ liệu trên cổng COM: Do tần số baurd là 9600, khung
truyền là 10 bit nên số khung truyền hay số byte truyền nhận trong 1 giây là
9600/10 = 960 byte. Mặt khác, mỗi lần truyền nhận 10 byte dữ liệu, bao gồm 1 byte
yêu cầu nhận dữ liệu, 2 byte báo nhận, 6 byte giá trị gia tốc 3 trục và 1 byte giá trị
nhiệt độ. Từ đó suy ra tần số truyền nhận là 960/10 = 96 Hz.
Giá trị gia tốc trên 3 trục độc lập với nhau, khi di chuyển board theo phương của
một trục nào đó không làm ảnh hưởng đến giá trị gia tốc của hai trục còn lại. Ở vị
trí cân bằng, giá trị gia tốc của một trục bằng g (giá trị vector gia tốc trọng trường)
nếu cùng hướng với vector gia tốc trọng trường g (phương thẳng đứng và hướng từ
dưới lên) và bằng -g nếu ngược hướng.
Giá trị tuyệt đối của gia tốc trên một trục càng lớn khi di chuyển board với vận
tốc thay đổi càng nhanh (hay vận tốc biến thiên càng nhanh), giá trị này dương khi
di chuyển cùng hướng và âm khi di chuyển ngược hướng với trục đã chọn.
4 KẾT LUẬN VÀ ĐỀ NGHỊ
Đề tài đã ứng dụng vi điều khiển MSP430G2452 giao tiếp với cảm biến gia tốc
BMA150 theo chuẩn truyền thông I2C để đọc dữ liệu sau đó truyền UART lên máy
tính và sử dụng chức năng GUI trong Matlab để vẽ đồ thị dữ liệu. Kết quả đã đọc và
vẽ được đồ thị dữ liệu một cách liên tục, đáp ứng được yêu cầu đề tài.
Ưu điểm của đề tài là đã đọc và vẽ được dữ liệu một cách liên tục, việc đồng bộ giữa
các phần cứng khác nhau khá tốt, dữ liệu trả về có độ ổn định và tính chính xác khá
cao. Tuy vậy, giao diện GUI vẫn còn khá đơn điệu; việc khai thác thêm các chức
năng cũng như việc ứng dụng ngắt để đồng bộ dữ liệu còn nhiều hạn chế.
Y
X
Z
Đồ án kỹ thuật điện tử
Trường Đại học Cần Thơ
10
Đề tài có thể cải tiến thêm để đo độ nghiêng, hoặc kết hợp thêm các chức năng được
hỗ trợ từ cảm biến để việc đọc dữ liệu được chính xác nhất. Với những gì đã thực
hiện, đề tài là cơ sở cho những nghiên cứu và ứng dụng cụ thể sử dụng cùng hoặc
khác loại cảm biến gia tốc đã thực hiện.
CÁM ƠN
Xin cảm ơn thầy Trần Thanh Hùng đã tận tình hướng dẫn và giúp đỡ cũng như hỗ
trợ cho em board Inertial One Sensors Xplained; cảm ơn các bạn trên các diễn đàn
đã giúp đỡ em hoàn thành đề tài.
TÀI LIỆU THAM KHẢO
[1] Bosch Sensortec, 2008. Datasheet BMA150. http://ae-
bst.resource.bosch.com/media/products/dokumente/bma150/BST-BMA150-DS000-
07.pdf, truy cập ngày 3/9/2013.
[2] Atmel, 2011. Sensor Xplain Board.
http://www.atmel.com/tools/AVRSBIN1.aspx?tab=documents, truy cập ngày 3/9/2013
[3] Texas Instruments, 2004. MSP430x2xx Family User’s Guide.
http://www.ti.com/lit/ug/slau144j/slau144j.pdf, truy cập ngày 19/9/2013
[4] Pay It Forward Club, 2012. Giao tiếp I2C MSP430.
http://www.diendanti.com/showthread.php?111-MSP430-TUT-7.-I2C-%E1%BB%A8ng-
d%E1%BB%A5ng-v%E1%BB%9Bi-DS1307-v%C3%A0-C%E1%BA%A3m-
bi%E1%BA%BFn-nhi%E1%BB%87t-TMP100, truy cập ngày 15/10/2013
[5] Texas Instruments, 2010. Msp430g2xx2_ta_uart9600.c.
http://coecsl.ece.illinois.edu/ge423/datasheets/MSP430Ref_Guides/Cexamples/MSP430G
2xx2%20Code%20Examples/C/msp430g2xx2_ta_uart9600.c