You are on page 1of 25

XÂY DỰNG HỆ THỐNG BÁO ĐỘNG BỊ TÉ NGÃ DÙNG CẢM BIẾN GIA TỐC

1. Tìm hiểu về các loại cảm biến gia tốc


1.1. Giới thiệu
Khi bạn sử dụng ứng dụng la bàn trên điện thoại thông minh, bằng cách nào đó, điện thoại
sẽ biết hướng điện thoại đang chỉ. Với các ứng dụng tuyệt vời, bằng cách nào đó, nó biết nơi
bạn đang tìm kiếm để hiển thị đúng các chòm sao. Điện thoại thông minh và công nghệ di động
khác xác định hướng của chúng thông qua việc sử dụng máy gia tốc (cảm biến gia tốc hay gia
tốc kế).
1.2. Khái niệm cảm biến gia tốc
Một cảm biến gia tốc (gia tốc kế) là một thiết bị đo gia tốc và khả năng tăng tốc chính xác
của vật thể, là khả năng tăng tốc (hoặc tốc độ thay đổi của vận tốc ) của một vật thể ngay lập
tức, là không giống như phối hợp khả năng tăng tốc, là sự tăng tốc trong một cố định hệ tọa độ
Ví dụ, gia tốc kế ở phần còn lại trên bề mặt Trái đất sẽ đo gia tốc do trọng lực của Trái đất ,
hướng thẳng lên (theo định nghĩa) của g ≈ 9,81 m / s 2 . Ngược lại, gia tốc kế rơi tự do(rơi về
phía trung tâm Trái đất với tốc độ khoảng 9,81 m / s 2 ) sẽ đo bằng không.
Gia tốc kế có nhiều ứng dụng trong công nghiệp và khoa học. Gia tốc kế có độ nhạy cao là
thành phần của hệ thống dẫn đường quán tính cho máy bay và tên lửa. Gia tốc kế được sử dụng
để phát hiện và theo dõi độ rung trong máy móc quay.
Gia tốc kế được sử dụng trong máy tính bảng và máy ảnh kỹ thuật số để hình ảnh trên màn
hình luôn được hiển thị thẳng đứng.
Gia tốc kế được sử dụng trong máy bay không người lái để ổn định chuyến bay. Gia tốc kế
phối hợp có thể được sử dụng để đo sự khác biệt về gia tốc thích hợp, đặc biệt là trọng lực, qua
sự phân tách của chúng trong không gian; tức là độ dốc của trường hấp dẫn .
Phép đo trọng lực này là hữu ích vì trọng lực tuyệt đối là một hiệu ứng yếu và phụ thuộc
vào mật độ cục bộ của Trái đất khá thay đổi.
Các mô hình gia tốc đơn và đa trục có sẵn để phát hiện cường độ và hướng của gia tốc
thích hợp, dưới dạng đại lượng vectơ và có thể được sử dụng để cảm nhận hướng (vì hướng thay
đổi trọng lượng), gia tốc phối hợp, rung, sốc và rơi trong môi trường điện trở (trường hợp gia
tốc thích hợp thay đổi, vì nó bắt đầu từ 0, sau đó tăng).
Gia tốc kế của hệ thống vi cơ điện tử (MEMS) ngày càng hiện diện trong các thiết bị điện
tử cầm tay và bộ điều khiển trò chơi video, để phát hiện vị trí của thiết bị hoặc cung cấp cho đầu
vào trò chơi.
1.3. Các loại cảm biến gia tốc
Về căn bản có 3 loại cảm biến gia tốc, đó là cảm biến gia tốc kiểu tụ, áp điện và áp điện trờ.
1.3.1.Cảm biến gia tốc kiểu tụ
Có nhiều phương pháp được sử dụng để đo gia tốc. Một trong những phương pháp đó là sử
dụng cảm biến gia tốc kiểu tụ. Cảm biến gia tốc MEMS kiểu tụ xác định gia tốc thông qua sự
thay đổi giá trị điện dung của tụ điện, đây là một phương pháp rất linh hoạt được sử dụng nhiều
trong các vi cảm biến quán tính. Người ta thường dùng cảm biến gia tốc kiểu tụ vi phân do độ
nhạy cao, nhiễu thấp, ít hao phí năng lượng, đặc tính một chiều ổn định, ít chịu tác dụng của
nhiệt độ và đáp ứng tuyến tính.
Hình 1. Mô hình đo gia tốc kiểu vòng mở
Cảm biến gia tốc đơn giản gồm một gia trọng m được gắn với một khung cố định nhờ một
hay nhiều thanh dầm có hệ số đàn hồi k (Hình 1). Cảm biến gia tốc vòng mở kiểu tụ tiêu biểu
nhất có hai điện cực cố định ở bên ngoài và điện cực ở giữa có thể chuyển động được, tạo thành
tụ vi sai. Bất kì một gia tốc nào làm cho gia trọng chuyển động khỏi vị trí cân bằng sẽ tạo ra
thay đổi giá trị tụ. Mô hình năng lượng của một cảm biến gia tốc MEMS kiểu tụ hoạt động theo
chế độ vòng mở được trình bày bằng một mô hình tương đương như trên hình 2.

Hình 2. Mô hình tương đương của một gia tốc vòng mở


1.3.2.Cảm biến gia tốc kiểu áp điện
Cấu tạo chung của gia tốc kế áp điện gồm một khối lượng rung M và một phần tử áp điện
đặt trên giá đỡ cứng, và toàn bộ được đặt trong một vỏ hộp kín.
Thông thường cần phải đo gia tốc theo hai hướng dọc theo trục nhạy cảm. Tuỳ thuộc vào
bản chất lực tác dụng (nén, kéo hoặc cắt) trong bộ cảm biến phải có bộ phận cơ khí tạo ứng lực
cơ học đặt trước lên phần tử áp điện để mở rộng dải đo gia tốc theo hai chiều.

hình 18.8 trình bày sơ đồ cấu tạo của các gia tốc kế áp điện kiểu nén.
1) Khối lượng rung 2) Phiến áp điện 3) Đai ốc 4) Đế 5) Vỏ hộp
Cảm biến loại này có tần số cộng hưởng cao, kết cấu chắc chắn, nhạy với ứng lực của đế.
Sơ đồ cấu tạo của gia tốc kế kiểu uốn cong trình bày trên hình 18.9.
Phần tử áp điện của cảm biến gồm hai phiến áp điện mỏng dán với nhau, một đầu gắn cố
định lên vỏ hộp cảm biến, một đầu gắn với khối lượng rung. Cảm biến loại này cho độ nhạy rất
cao nhưng tần số và gia tốc rung đo được bị hạn chế.

Hình 18.9: Sơ đồ cấu tạo gia tốc kế áp điện kiểu uốn cong
1) Khối lượng rung 2) Phiến áp điện 3) Vỏ hộp
1.3.3.Cảm biến gia tốc kiểu áp điện trở

Cảm biến gia tốc áp điện trở ba chiều (hình 1) với kích thước nhỏ 1.5×1.5×0.5 mm3 đã
được chế tạo. Hiệu ứng áp điện trở đã được ứng dụng để xác định các gia tốc tác động vào cảm
biến. Hiện tượng thay đổi điện trở của vật liệu tinh thể dưới tác dụng của ứng suất cơ được gọi
là hiệu ứng áp điện trở [6, 7]. Nguyên nhân đó là đặc tính dị hướng của độ phân giải mức năng
lượng trong không gian tinh thể. Trong silíc chỉ tồn tại ba hệ số áp điện trở không phụ thuộc vào
nhau là (liên hệ dọc), (liên hệ ngang) và (cho liên hệ trượt). Đối với silíc đơn tinh thể có mật độ
tạp dẫn thấp thì có thể coi những hệ số áp điện trở , và là các hằng số. Người ta ứng dụng vật
liệu biến dạng cơ là màng mỏng hay cấu trúc thanh dầm. Để đạt được độ dãn ngang (chiều dài
và chiều rộng) lớn thì cần chiều dày nhỏ và do vậy có thể bỏ qua ứng suất dọc. Lúc này phần tử
áp điện trở được cấy trên vật biến dạng cơ và mạch điện xử lý bên ngoài được thiết kế một cách
thích ứng.
Trong các cảm biến gia tốc áp điện trở thì độ dịch chuyển của khối gia trọng sẽ làm thanh
dầm biến dạng. Điện trở được cấy trên các thanh dầm sẽ biến đổi tỷ lệ thuận với gia tốc tác dụng
lên khối gia trọng. Các cảm biến loại này thường được chế tạo theo công nghệ vi cơ khối 2 mặt.
Cấu trúc thanh dầm và khối gia trọng sẽ được tạo hình bằng ăn mòn nhiều bước. Việc cấy tạp
chất nồng độ cao sẽ tạo ra áp điện trở trên cấu trúc thanh dầm treo vật nặng.

Hình 2. Độ dịch chuyển của cấu trúc khi tác dụng các gia tốc tuyến tính

Khi cảm biến chịu tác dụng của gia tốc tịnh tiến theo phương Z (hình 2.a) thì khối gia trọng
sẽ chuyển động lên hoặc xuống.
Khi cảm biến chịu tác dụng của gia tốc tịnh tiến theo phương ngang (hình 2.b) thì khối gia
trọng bị lệch theo X hoặc Y. Độ lệch của thanh dầm khi chịu gia tốc tác dụng sẽ gây nên ứng
suất tuyến tính. Sự thay đổi điện trở sẽ được biến đổi thành tín hiệu điện nhờ sử dụng mạch điện
xử lý bên ngoài là các mạch cầu Wheaston. Trong thiết kế này, 12 áp điện trở đã được cấy trên 4
thanh dầm.
Ngôn ngữ lập trình ANSYS đóng vai trò quyết định trong việc xây dựng cấu trúc cũng như
vị trí cấy các áp điện trở [13]. Chương trình thiết kế mask L-EDIT đã được sử dụng để thiết kế
các mặt nạ phục vụ cho việc chế tạo (hình 3).

Hình 3.Chồng lấp các mặt nạ sử dụng phần mềm L-EDIT

Cảm biến được chế tạo thành công sử dụng công nghệ vi cơ khối. Hình 4.a và 4.b là ảnh
chup cảm biến sau quá trình bonding và được gắn vào mạch PCB phục vụ cho quá trình đo
chuẩn và áp dụng.
Hình 4.a

Hình 4.b
2. Tìm hiểu giao thức kết nối các cảm biến gia tốc với vi điều khiển (Arduino, atmega, …)
2.1. Khái niệm giao thức kết nối
Khái niệm: Giao thức kết nối (Communication Protocol gọi tắt là Protocol) hay còn được
dịch là giao thức giao tiếp, giao thức tương tác, giao thức truyền thông hay giao thức trao đổi
thông tin, là một tập hợp các quy tắc chuẩn cho phép hai hoặc nhiều thực thể trong một hệ thống
thông tin liên lạc để trao đổi thông tin, dữ liệu qua các kênh truyền thông.
Dẫn: Giao thức truyền thông đóng một vai trò quan trọng trong việc tổ chức giao tiếp
giữa các thiết bị. Nó được thiết kế theo nhiều cách khác nhau dựa trên các yêu cầu của hệ thống
và các giao thức này có một quy tắc cụ thể được thống nhất giữa các thiết bị để việc truyền dữ
liệu được thực hiện thành công.
2.2. Giới thiệu về các loại giao thức kết nối cảm biến gia tốc với vi điều khiển
2.2.1.Giao thức kết nối SPI
2.2.1.1. Giới thiệu về giao thức kết nối SPI

SPI (Serial Peripheral Interface) hay Giao tiếp Ngoại vi Nối tiếp, phát triển bởi
Motorola vào giữa những năm 1980, là một chuẩn truyền thông nối tiếp đồng bộ được sử
dụng để truyền dữ liệu ở chế độ song công toàn phần trong khoảng cách ngắn.
* truyền thông nối tiếp (serial communication): quá trình gửi dữ liệu tuần tự theo
từng bit, qua một kênh truyền thông hoặc bus, trái ngược với truyền thông song
song (parallel communication) trong đó một số bit được gửi toàn bộ và cùng lúc,
trên một đường truyền hoặc liên kết (link hoặc communication link) gồm nhiều
kênh song song.
* đồng bộ: giao tiếp đồng bộ hay truyền đồng bộ là một trong hai loại truyền thông
nối tiếp trong đó bất cứ quá trình gửi và nhận giữa Master-Slave cũng đếu được
đồng bộ hóa bởi một tín hiệu đồng hồ chuyên dụng (xung clock) sinh ra bởi thiết bị
phát dữ liệu (Master) để giúp cho thiết bị thu dữ liệu tìm kiếm dữ liệu trên bus.
*song công toàn phần: hay gọi là " full – duplex ". Nghĩa là tại 1 thời điểm có thể
xảy ra đồng thời quá trình truyền và nhận.
Giao tiếp ngoại vi nối tiếp (SPI) là một loại giao thức kiểu Master – Slave cung
cấp một giao diện chi phí đơn giản và chi phí thấp giữa vi điều khiển và các thiết bị ngoại
vi của nó.
Điều làm cho SPI trở nên phổ biến trong các giao thức truyền thông đồng bộ nối
tiếp khác (hoặc bất kỳ giao tiếp nối tiếp nào) là nó cung cấp tốc độ truyền dữ liệu bảo mật
cao với phần cứng khá đơn giản giống như thanh ghi dịch với chi phí tương đối thấp.
2.2.1.2. Phân tích giao thức SPI
Dẫn: SPI hoặc giao tiếp ngoại vi nối tiếp được Motorola phát triển vào những
năm 1980 như một giao diện tiêu chuẩn, chi phí thấp và đáng tin cậy giữa vi điều
khiển (Vi điều khiển của Motorola lúc đầu) và các IC ngoại vi của nó. Nhờ giao
diện đơn giản, linh hoạt và dễ sử dụng, SPI đã trở thành một tiêu chuẩn và các nhà
sản xuất bán dẫn khác bắt đầu sử dụng giao thức này trong các chip của mình.
Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ Master –
Slave trong một giao diện đa điểm (node). Trong loại giao diện này, một thiết bị
được coi là Master của bus (thường là một vi điều khiển) và tất cả các thiết bị khác
(IC ngoại vi hoặc thậm chí các vi điều khiển khác) đều được coi là Slave. Trong
giao thức SPI, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị Slave.

Bus SPI bao gồm 4 tín hiệu hoặc chân. Chúng là


 Master – Out / Slave – In (MOSI hay SI): cổng ra
của bên Master, cổng vào của bên Slave, dành cho
việc truyền dữ liệu từ thiết bị Master đến thiết bị
Slave.
 Master – In / Slave – Out (MISO hay SO): cổng vào
của bên Master, cổng ra của bên Slave, dành cho
việc truyền dữ liệu từ thiết Slave đến thiết bị Master.
 Serial Clock (SCK hay SCLK): xung giữ nhịp cho
giao tiếp SPI
 Chip Select (CS) hay Slave Select (SS): chọn chip

Bởi vì bus SPI được thực hiện bằng cách sử dụng 4 tín hiệu hay 4 dây nên đôi khi
nó được gọi là chuẩn giao tiếp 4 dây (four-wire). Đầu tiên chúng ta hãy xem một
giao diện đơn giản giữa một Master và một Slave được kết nối bằng giao thức SPI
và sau đó chúng ta sẽ tìm hiểu về 4 dây này.
Hình ảnh sau mô tả một thiết bị Master (Bộ xử lý) được kết nối với thiết bị Slave
(Ngoại vi) sử dụng bus SPI.
Master – Out / Slave – In hay MOSI, như tên cho thấy, là dữ liệu được tạo ra
bởi Master và nhận bởi Slave. Do đó, các chân MOSI trên cả Master và Slave được
kết nối với nhau.
Master – In / Slave – Out hay MISO là dữ liệu được tạo ra bởi Slave và phải
được truyền tới Master. Các chân MISO trên cả Master và Slave được kết nối với
nhau. Mặc dù tín hiệu trong MISO được tạo ra bởi Slave, đường tín hiệu này được
điều khiển bởi Master.
Serial Clock hay CK là thiết bị mà Master dùng tạo xung clock tín hiệu và cung
cấp cho Slave. Xung này có chức năng giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn
truyền đồng bộ nên cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ
liệu đến hoặc đi. Sự tồn tại của xung SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc
độ truyền của SPI có thể đạt rất cao.
Chip Select (CS) hoặc Slave Select (SS) được sử dụng để chọn một Slave cụ thể
bởi Master. Nếu Master kéo đường SS của một Slave nào đó xuống mức thấp thì
việc giao tiếp sẽ xảy ra giữa Master và Slave đó.
2.2.1.3. Yêu cầu phần cứng SPI
Yêu cầu phần cứng để thực hiện SPI rất đơn giản. Xem xét một Master và một
Slave đơn được kết nối bằng bus SPI.

Từ hình ảnh trên cho thấy thiết bị Master bao gồm một thanh ghi dịch (Shift
Register), một mạch chốt dữ liệu (Latch) và một bộ tạo xung nhịp (Clock
Generator). Thiết bị Slave bao gồm phần cứng tương tự: một thanh ghi dịch (Shift
Register) và một mạch chốt dữ liệu (Latch). Cả hai thanh ghi dịch được kết nối để
tạo thành một vòng. Thông thường, kích thước của thanh ghi là 8 – bit nhưng thanh
ghi kích thước lớn hơn 16 bit cũng rất phổ biến.
2.2.1.4. Nguyên tắc hoạt động của giao thức SPI
 Như đã nói ở phần trước xung clock đồng hồ được tạo ra bởi Master nên
luồng dữ liệu được điều khiển bởi Master. Với mỗi chu kỳ đồng hồ, một
bit dữ liệu được truyền từ Master đến Slave và một bit dữ liệu được
truyền từ Slave đến Master.
 Quá trình này xảy ra đồng thời và sau 8 chu kỳ đồng hồ, một byte dữ liệu
được truyền theo cả hai hướng và do đó, SPI là một giao tiếp song công
toàn phần (full – duplex).
 Quá trình trao đổi dữ liệu bắt đầu khi Master tạo 1 xung clock từ bộ tạo
xung nhịp (Clock Generator) và kéo đường SS của Slave mà nó truyền
dữ liệu xuống mức Low.
 Cứ 1 xung clock, Master sẽ gửi đi 1bit từ thanh ghi dịch (Shift Register)
của nó đến thanh ghi dịch của Slave thông qua đường MOSI. Đồng thời
Slave cũng gửi lại 1 bit đến cho Master qua đường MISO.Như vậy sau 8
chu kỳ clock thì hoàn tất việc truyền và nhận 1 byte dữ liệu.
Lưu ý: mặc dù nhiều Slave được kết nối với Master trong bus SPI, ở một thời
điểm bất kỳ thì chỉ có một Slave hoạt động. Để chọn Slave, Master sẽ kéo đường
SS (Slave Select) hoặc CS (Chip Select) của Slave tương ứng xuống tích cực mức
thấp. Do đó, phải có một chân CS riêng trên Master tương ứng với từng thiết bị
Slave.
2.2.1.5. Chế độ hoạt động của SPI
Chúng ta đã thấy rằng công việc của thiết bị Master là tạo ra tín hiệu đồng hồ và
phân phối nó tới Slave để đồng bộ dữ liệu giữa Master và Slave. Công việc của
Master không chỉ dừng lại ở việc tạo tín hiệu đồng hồ ở tần số cụ thể.
Trong thực tế, Master và Slave phải đồng ý về các giao thức đồng bộ hóa nhất
định. Đối với điều này, hai đặc điểm của xung đồng hồ là cực tính đồng hồ (Clock
Polarity – CPOL hoặc CKP) và pha đồng hồ (Clock Phase – CPHA) được đưa vào
để xem xét.
 Clock Polarity (CPOL hoặc CKP) xác định trạng thái của đồng hồ. Khi
CPOL ở mức thấp, xung đồng hồ được tạo bởi Master tức là SCK sẽ ở
mức thấp khi nhàn rỗi (idle) và chuyển sang mức cao trong trạng thái
hoạt động (trong khi truyền dữ liệu). Tương tự, khi CPOL ở mức cao,
SCK ở mức cao khi nhàn rỗi và chuyển sang mức thấp trong trạng thái
hoạt động.
 Phase Clock (CPHA) xác định quá trình chuyển đổi trạng thái của xung
đồng hồ tức là lên (thấp lên cao) hoặc xuống (cao xuống thấp), tại đó dữ
liệu được truyền đi. Khi CPHA bằng 0, dữ liệu được truyền ở cạnh lên
của xung đồng hồ. Dữ liệu được truyền ở cạnh xuống khi CPHA là 1.
Tùy thuộc vào các giá trị của Clock Polarity (CPOL) và Clock Phase (CPHA), có
4 chế độ hoạt động của SPI.

 Mode 0 (mặc định) – xung nhịp


của đồng hồ ở mức thấp (CPOL
= 0) và dữ liệu được lấy mẫu khi
chuyển từ thấp sang cao (cạnh
lên) (CPHA = 0).
 Mode 1 - xung nhịp của đồng hồ
ở mức thấp (CPOL = 0) và dữ
liệu được lấy mẫu khi chuyển từ
cao sang thấp (cạnh xuống)
(CPHA = 1).
 Mode 2 - xung nhịp của đồng hồ
ở mức cao (CPOL = 1) và dữ
liệu được lấy mẫu khi chuyển từ
cao sang thấp (cạnh xuống)
(CPHA = 0).
 Mode 3 - xung nhịp của đồng hồ
ở mức cao (CPOL = 1) và dữ
liệu được lấy mẫu khi chuyển từ
thấp sang cao (cạnh lên) (CPHA
= 1).

2.2.1.6. Sơ đồ kết nối nối tiếp SPI


 1 thiết bị Master và 1 thiết bị Slave
 1 thiết bị Master và nhiều thiết bị Slave
o Chế độ độc lập –
Independent: Ở chế
độ này, mỗi thiết bị
Slave kết nối với
Master được quy
định riêng bởi
những chân SS
khác nhau. Khi
thiết bị Master
muốn giao tiếp với
Slave nào thì kéo
chân SS tương ứng
xuống mức 0,
những chân SS còn
lại giữ ở mức 1.

o Chế độ dây
chuyền - Daisy: Ở
chế độ này, chỉ có
một đường Slave
Select được kết
nối với tất cả các
Slave. MOSI của
Master được kết
nối với MOSI của
Slave 1. MISO
của Slave 1 được
kết nối với MOSI
của Slave 2 và
vv .. MISO của
Slave cuối cùng
được kết nối với
MISO của Master.
2.2.2.Giao thức kết nối I2C
2.2.2.1. Giới thiệu về giao thức kết nối I2C

I2C (Inter-Integrated Circuit), được phát triển năm 1982 bởi hãng sản xuất linh
kiện điện tử Philips (nay là hãng NXP Semiconductors) cho quá trình giao tiếp giữa các
IC. I2C là một chuẩn truyền thông nối tiếp đồng bộ được sử dụng để truyền dữ liệu ở chế
độ song công toàn phần trong khoảng cách ngắn.
* truyền thông nối tiếp (serial communication): quá trình gửi dữ liệu tuần tự theo
từng bit, qua một kênh truyền thông hoặc bus, trái ngược với truyền thông song
song (parallel communication) trong đó một số bit được gửi toàn bộ và cùng lúc,
trên một đường truyền hoặc liên kết (link hoặc communication link) gồm nhiều
kênh song song.
* đồng bộ: giao tiếp đồng bộ hay truyền đồng bộ là một trong hai loại truyền thông
nối tiếp trong đó bất cứ quá trình gửi và nhận giữa Master-Slave cũng đếu được
đồng bộ hóa bởi một tín hiệu đồng hồ chuyên dụng (xung clock) sinh ra bởi thiết bị
phát dữ liệu (Master) để giúp cho thiết bị thu dữ liệu tìm kiếm dữ liệu trên bus.
*song công toàn phần: hay gọi là " full – duplex ". Nghĩa là tại 1 thời điểm có thể
xảy ra đồng thời quá trình truyền và nhận.
Chuẩn giao tiếp I2C là một loại giao thức kiểu Master – Slave. I²C phù hợp với
các ngoại vi mà sự ưu tiên về kết nối đơn giản và chi phí sản xuất thấp quan trọng hơn là
yêu cầu về tốc độ truyền.
2.2.2.2. Cấu tạo giao thức I2C
Trong giao thức I2C, các thiết bị được kết nối trong một mối quan hệ Master –
Slave trong một giao diện đa điểm (node). Trong loại giao diện này, một thiết bị
được coi là Master của bus (thường là một vi điều khiển) và tất cả các thiết bị khác
(IC ngoại vi hoặc thậm chí các vi điều khiển khác) đều được coi là Slave. Trong
giao thức I2C, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị Slave.

I2C sử dụng 2 đường truyền tín hiệu. Chúng là


 SCL - Serial Clock Line : Tạo xung nhịp đồng hồ do
Master phát đi.
 SDA - Serial Data Line : Đường truyền nhận dữ liệu.

Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng
hồ (clock) từ SCL. Tất cả các thiết bị / IC trên mạng I2C được kết nối với cùng
đường SCL và SDA.

Cả hai đường bus I2C (SDA, SCL) đều hoạt động như các bộ lái cực máng hở
(Open Drain). Nó có nghĩa là bất kỳ thiết bị / IC trên mạng I2C có thể lái SDA và
SCL xuống mức thấp, nhưng không thể lái chúng lên mức cao. Vì vậy, một điện trở
kéo lên (khoảng 1 kΩ đến 4,7 kΩ) được sử dụng cho mỗi đường bus, để giữ cho
chúng ở mức cao (ở điện áp dương) theo mặc định.

*Giải thích cho Open Drain: Lý do sử dụng một hệ thống cực máng hở (open
drain) là để không xảy ra hiện tượng ngắn mạch, điều này có thể xảy ra khi một
thiết bị cố gắng kéo đường dây lên cao và một số thiết bị khác cố gắng kéo đường
dây xuống thấp.
Các thiết bị kết nối với bus I2C được phân loại hoặc là thiết bị Chủ (Master) hoặc
là thiết bị Tớ (Slave). Ở bất cứ thời điểm nào thì chỉ có duy nhất một thiết bị
Master ở trang thái hoạt động trên bus I2C.

Tất cả các thiết bị đáp ứng các hướng dẫn từ thiết bị Master này đều là Slave. Để
phân biệt giữa nhiều thiết bị Slave được kết nối với cùng một bus I2C, mỗi thiết bị
Slave được gán một địa chỉ vật lý 7-bit cố định.
2.2.2.3. Khung truyền I2C
Dữ liệu được truyền giữa thiết bị Master và các thiết bị Slave thông qua một
đường dữ liệu SDA duy nhất, thông qua các chuỗi có cấu trúc gồm các số 0 và 1
(bit). Mỗi chuỗi số 0 và 1 được gọi là giao dịch (transaction) và dữ liệu trong mỗi
giao dịch có cấu trúc như sau:

 Khối bit địa chỉ (7 Address Bits): Nó bao gồm 7 bit và được lấp đầy với địa chỉ của
thiết bị Slave đến / từ đó thiết bị Master cần gửi / nhận dữ liệu. Tất cả các thiết bị
Slave trên bus I2C so sánh các bit địa chỉ này với địa chỉ của chúng.
 Bit R/W (Bit Read/Write): Bit này xác định hướng truyền dữ liệu. Nếu thiết bị
Master / IC cần gửi dữ liệu đến thiết bị Slave, bit này được thiết lập là ‘0’. Nếu IC
Master cần nhận dữ liệu từ thiết bị Slave, bit này được thiết lập là ‘1’.
 Bit ACK/NACK (Bit Acknowledged/Not-Acknowledged): Nếu địa chỉ vật lý của
bất kỳ thiết bị Slave nào trùng với địa chỉ được thiết bị Master phát, giá trị của bit
này được set là ‘0’ bởi thiết bị Slave. Ngược lại, nó vẫn ở mức logic ‘1’ (mặc định).
 Khối bit dữ liệu (8 Data Bits): Nó bao gồm 8 bit và chúng được thiết lập bởi bên
gửi, với các bit dữ liệu cần truyền tới bên nhận.

2.2.2.4. Nguyên tắc hoạt động của giao thức I2C


Trình tự hoạt động sau đây diễn ra khi một thiết bị Master gửi dữ liệu đến một
thiết bị Slave cụ thể thông qua bus I2C:
 Thiết bị Master quyết định bắt đầu một
giao dịch bằng cách gửi một xung bắt
đầu (Start) đến tất cả các thiết bị Slave.
Khi này, Master sẽ chuyển mạch SDA từ
mức điện áp cao xuống mức điện áp thấp
trước khi đường SCL chuyển từ cao
xuống thấp. Khi xung Start được gửi bởi
thiết bị Master, tất cả các thiết bị Slave
đều hoạt động ngay cả khi chúng ở chế
độ ngủ (sleep mode) và đợi bit địa chỉ.

 Thiết bị Master
gửi 7bit địa chỉ
của thiết bị Slave mà thiết bị Master muốn giao tiếp cùng với bit
Read/Write.

 Mỗi thiết bị Slave


so sánh địa chỉ
được gửi từ thiết
bị Master đến địa
chỉ riêng của nó.
Nếu địa chỉ trùng
khớp, thiết bị
Slave gửi về một
bit ACK bằng
cách kéo đường
SDA xuống thấp
và bit ACK /
NACK được thiết
lập là ‘0’,. Nếu
địa chỉ từ thiết bị
Master không khớp với địa chỉ riêng của thiết bị Slave thì đường SDA ở
mức cao và bit ACK / NACK sẽ ở mức ‘1’ (mặc định).
 Thiết bị Master gửi
hoặc nhận khung dữ
liệu. Nếu thiết bị
Master muốn gửi
dữ liệu đến thiết bị
Slave, bit Read /
Write là mức điện
áp thấp. Nếu thiết
bị Master đang
nhận dữ liệu từ thiết
bị Slave, bit này là
mức điện áp cao.

 Nếu khung dữ liệu


được thiết bị Slave
nhận được thành
công, nó sẽ thiết lập bit ACK / NACK thành ‘0’, báo hiệu cho thiết bị
Master tiếp tục

 Sau khi tất cả dữ liệu


được gửi đến thiết bị
Slave, thiết bị Master
gửi điều kiện dừng để
báo hiệu cho tất cả
các thiết bị Slave biết
rằng việc truyền dữ
liệu đã kết thúc.

2.2.2.5. Chế độ hoạt động của I2C


 Chế độ chuẩn (standard mode) với tốc độ 100 kBit/s.
 Chế độ tốc độ thấp (low speed mode) với tốc độ 10 kBit/s.
2.2.2.6. Sơ đồ kết nối nối tiếp I2C
 1 thiết bị Master và 1 thiết bị Slave

 1 thiết bị Master và nhiều thiết


bị Slave: Bởi vì I2C sử dụng
địa chỉ, nhiều thiết bị Slave có
thể được điều khiển từ một
thiết bị Master duy nhất. Với 7
bit địa chỉ tương ứng 128 (27)
địa chỉ duy nhất có sẵn. Để kết nối nhiều thiết bị Slave với một một thiết bị Master
duy nhất.

 Nhiều Master nhiều Slave: khác


với giao tiếp SPI chỉ có thể có 1
Master, giao tiếp I2C cho phép
chế độ truyền nhận dữ liệu giữa
nhiều thiết bị Master khác nhau
với thiết bị Slave.
Chú ý: Truyền/Nhận dữ liệu
theo chế độ này có hơi phức
tạp vì thiết bị Slave có thể nhận
1 lúc nhiều khung dữ liệu từ
các thiết bị Master khác nhau,
điều đó đôi khi dẫn đến xung
đột hoặc sai sót dữ liệu nhận
được. Để tránh điều đó, khi làm
việc ở chế độ này, mỗi thiết bị
Master cần phát hiện xem
đường SDA đang ở trạng thái
nào. Nếu SDA ở mức 0, nghĩa
là đang có 1 thiết bị Master
khác đang có quyền điều khiển
và phải chờ đến khi truyền
xong. Ngược lại nếu SDA ở mức 1, nghĩa là đường truyền SDA đã an toàn và có sử
dụng .

2.2.3.Giao thức kết nối UART


2.2.3.1. Giới thiệu về giao thức kết nối UART
UART là viết tắt của Universal Asynchronous Receiver / Transmitter. Đây là
chuẩn giao tiếp nối tiếp với sự hỗ trợ của phần cứng (hardware). UART hoàn toàn
khác biệt với chuẩn giao tiếp SPI hoặc I2C, những chuẩn này chỉ đơn tuần là giao
tiếp phần mềm. Mục đích chính của UART là truyền và nhận dữ liệu nối tiếp.
Chuẩn giao tiếp UART sử dụng 2 dây để truyền và nhận dữ liệu giữa các thiết bị:
- TX (Transmiter) - Dây truyền dữ liệu
- RX (Receiver) - Dây nhận dữ liệu
* Dữ liệu truyền từ chân Tx của UART truyền (Transmiter) đến chân Rx của
UART nhận (Receiver). UART truyền dữ liệu không đồng bộ, có nghĩa là không
có tín hiệu đồng hồ để đồng bộ hóa đầu ra của các bit từ UART truyền đến việc
lấy mẫu các bit bởi UART nhận. Thay vì tín hiệu đồng hồ, UART truyền thêm
các bit start và stop vào gói dữ liệu được chuyển. Các bit này xác định điểm bắt
đầu và điểm kết thúc của gói dữ liệu để UART nhận biết khi nào bắt đầu đọc các
bit.
2.2.3.2. Khung truyền giao thức UART

 Start Bit (Bit bắt đầu): là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị
nhận có một gói dữ liệu sắp được truyền đến.
 Data Bits (Khối bit dữ liệu): khung truyền dữ liệu, gồm các data bits thường có độ dài
5-9 bits
 Parity Bit (Bit chẵn lẽ): kiểm tra tính đúng sai của dữ liệu truyền. Có thể có hoặc không
 Stop Bit (Bit dừng): là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong.
Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của dữ
liệu.

2.2.3.3. Các thanh ghi dùng trong giao thức UART

 UDR: hay thanh ghi dữ liệu, là 1 thanh ghi 8 bit chứa giá trị nhận được và phát đi của
USART. Thực chất thanh ghi này có thể coi như 2 thanh ghi TXB(Transmit data Buffer)
và RXB (Reveive data Buffer) có chung địa chỉ. ĐọcUDR thu được giá trị thanh ghi đệm
dữ liệu nhận, viết giá trị vào UDR tươngđương đặt giá trị vào thanh ghi đệm phát, chuẩn
bị để gởi đi.

 UCSRA (USART Control and Status Register A): là 1 trong 3 thanh ghi điềukhiển hoạt
động của module USART. Chủ yếu chứa các bit trạng thái như bit báo quá trìnhnhận kết
thúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE), khung truyền
có lỗi (FE), dữ liệu tràn (DOR), kiểm tra parity có lỗi (PE), kiểm tra UDR đang trống
(UDRE), chỉ định gấp đôi tốc độ truyền (U2X), chọn chế độ đa xử lý (MPCM).

 UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng điều khiển
USART. Chứa các bit trạng thái như cho phép ngắt sau khi nhận (RXCIE), cho phép ngắt
sau khi gửi (TXCIE), cho phép ngắt nếu UDR trống (UDRIE), cho phép UART nhận dữ
liệu (RXEN), cho phép UART gửi dữ liệu (TXEN), bit thứ 9 trong khối bit dữ liệu khi
nhận (RXB8), bit thứ 9 trong khối bit dữ liệu khi nhận (TXB8)
 UCSRC (USART Control and Status Register C): thanh ghi này chủ yếu quy định khung
truyền và chế độ truyền. Gồm chọn chế độ truyền đồng bộ hay không (UMSEL=1 đồng
bộ và ngược lại), quy định bit parity (UMP0 + UMP1), quy định bit stop (USBS = 0->1
bit, USBS = 1 -> 2 bit), quy định độ dài truyền dữ liệu (UCSZ0, UCSZ1, UCSZ2 có
trong UCSRB).

 UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi thấp và cao quyđịnh tốc
độ baud.

2.2.3.4. Các thanh ghi dùng trong giao thức UART


 UART truyền nhận dữ liệu song song từ bus dữ liệu.

 UART truyền thêm bit start, bit chẵn lẻ và bit dừng vào
khung dữ liệu.
 Toàn bộ gói được gửi nối tiếp từ UART truyền đến UART nhận. UART nhận lấy mẫu
đường dữ liệu ở tốc độ truyền được định cấu hình trước.

 UART nhận loại bỏ bit start, bit chẵn lẻ và bit


stop khỏi khung dữ liệu.

 UART nhận chuyển đổi dữ liệu nối tiếp trở lại


thành song song và chuyển nó đến bus dữ liệu
ở đầu nhận.

You might also like