Tải bản đầy đủ (.pdf) (35 trang)

thiết kế mạch đo khoảng cách dùng cảm biến siêu âm và vi xử lý

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 (1.22 MB, 35 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
KHOA TỰ ĐỘNG HÓA

ĐỒ ÁN I
ĐỀ TÀI: THIẾT KẾ MẠCH ĐO KHOẢNG CÁCH DÙNG CẢM
BIẾN SIÊU ÂM VÀ VI XỬ LÍ 8051
Giảng viên hướng dẫn: ThS. Đặng Văn Mỹ
Sinh viên thực hiện: Nguyễn Minh Tuấn
Mã số sinh viên: 20192146
Lớp: Tự động hóa 03 - K64

Hà Nội, tháng 8 năm 2022


MỤC LỤC
LỜI MỞ ĐẦU ..................................................................................................................... 4
CHƯƠNG I: ........................................................................................................................ 5
CƠ SỞ LÍ THUYẾT ........................................................................................................... 5
I. Giới thiệu về vi điều khiển AT89S52 ......................................................................... 5
1. Sơ lược về vi điều khiển AT89S52......................................................................... 5
2. Khảo sát vi điều khiển AT89S52 của hãng Intell ................................................ 5
II.CÁC PHƯƠNG PHÁP ĐO KHOẢNG CÁCH ..................................................... 14
1.Đo thủ công ............................................................................................................ 14
2. Sử dụng Lase để đo khoảng cách ........................................................................ 14
3. Phương pháp đo khoảng cách bằng sóng siêu âm bằng cảm biến SRF05 ...... 14
III. Ứng dụng của ngơn ngữ lập trình Assembler, C điều khiển ............................. 20
1. Ngơn ngữ lập trình Assembler ............................................................................ 20
2. Ngơn ngữ lập trình C ........................................................................................... 20
CHƯƠNG II: .................................................................................................................... 22
THIẾT KẾ PHẦN CỨNG ............................................................................................... 22


I. Các linh kiện trong đề tài ......................................................................................... 22
1. Điện trở .................................................................................................................. 22
2. Biến trở. ................................................................................................................. 22
3. Tụ điện ................................................................................................................... 23
4. LCD 1602 ............................................................................................................... 23
5. Trở băng ................................................................................................................ 26
II. Sơ đồ nguyên lí của mạch ....................................................................................... 27
CHƯƠNG III: ................................................................................................................... 28
THIẾT KẾ PHẦN MỀM ................................................................................................. 28
CHƯƠNG IV: ................................................................................................................... 32
MẠCH THẬT ................................................................................................................... 32
2


I. Chuẩn bị linh kiện ..................................................................................................... 32
II. Sơ đồ mạch in ........................................................................................................... 33
III. Hình ảnh thực tế..................................................................................................... 33
KẾT LUẬN ....................................................................................................................... 34
TÀI LIỆU THAM KHẢO................................................................................................ 35

3


LỜI MỞ ĐẦU
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong
dân dụng. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một
chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện
gọn nhẹ, dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà cịn góp phần to lớn vào
việc phát triển thơng tin. Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là

điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành tự động hóa phải hết sức
quan tâm. Đó chính là một nhu cầu cần thiết và cấp bách đối với mỗi sinh viên, đề tài này
được thực hiện chính là đáp ứng nhu cầu đó.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng đươc
lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc vào con người, đó
chính là chương trình hay phần mềm. Nếu khơng có sự tham gia của con người thì hệ thống
vi điều khiển cũng chỉ là một vật vơ tri. Do vậy khi nói đến vi điều khiển cũng giống như
máy tính bao gồm 2 phần là phần cứng và phần mềm.
Trên cơ sở những kiến thức đã học và sự hướng dẫn của thầy Đặng Văn Mỹ, em xin được
trình bày đồ án I với đề tài: “Thiết kế mạch đo khoảng cách dùng cảm biến siêu âm và vi
xử lí 8051”.
Vì là lần đầu thiết kế đồ án nên trong quá trình thiết kế em cịn nhiều thiếu sót, kính mong
thầy cơ thông cảm. Em rất mong nhận được những ý kiến đóng góp từ thầy cơ để em trau
dồi thêm nhiều kinh nghiệm và kiến thức.
Em xin chân thành cảm ơn GVHD là ThS. Đặng Văn Mỹ đã tận tình hướng dẫn để em có
thể hồn thiện đồ án này.

4


CHƯƠNG I:
CƠ SỞ LÍ THUYẾT
I. Giới thiệu về vi điều khiển AT89S52
1. Sơ lược về vi điều khiển AT89S52
- Là một vi điều khiển 8 bit, chế tạo theo công nghệ CMOS.
- 4KB bộ nhớ, có thể lập trình lại nhanh, có khả năng ghi xóa tới 1000 chu kì.
- Tần số hoạt động từ 0 Hz đến 24 MHz.
- 3 mức khóa bộ nhớ lập trình.
- 2 bộ Timer/Couter 16 bit.
- 128byte RAM nội.

- 4 Port xuất/nhập (I/O) 8 bit.
- Giao tiếp nối tiếp.
- 64 KB vùng nhớ mã ngồi.
- 64 KB vùng nhớ dữ liệu ngồi.
- Xử lí Boolean (hoạt động trên bit đơn).
- 210 vị trí nhớ có thể định vị bit.
- 4µs cho hoạt động nhân hoặc chia.
2. Khảo sát vi điều khiển AT89S52 của hãng Intell
2.1. Sơ đồ chân của vi điều khiển AT89S52
a) Sơ đồ chân
AT89S52 thuộc họ 8051 có 40 chân cho các chức năng khác nhau như vào ra I/O, đọc RD,
ghi WR, địa chỉ, dữ liệu và ngắt.

5


Mô tả các chân của vi điều khiển AT89S52
b) Chức năng các chân
Chân VCC:
Chân số 40 là VCC cấp điện áp nguồn cho chip. Nguồn điện áp là +5V.
Chân GND:
Chân số 20 là GND.
Chân Reset:
Chân số 9 là chân tái lập reset. Nó là một đầu vào tích cực mức cao (bình thường mức thấp).
Nhằm làm cho đầu vào RESET có hiệu quả thì nó phải có tối thiểu 2 chu kì máy, hay nói
cách khác, xung cao phải kéo dài 2 chu kì máy trước khi nó xuống thấp.Trong 8051 một
chu kì máy bằng 12 chu kì dao động.
Chân XTAL1 và XTAL2:
89S52 có một bộ giao động trên chip nhưng nó u cầu có một xung đồng hồ ngồi để chạy
nó. Bộ giao động thạch anh thường xuyên nhất được nối tới các chân đầu vào XTAL1 (chân

6


19) và XTAL2 (chân 18). Bộ giao động thạch anh được nối tới XTAL1 và XTAL2 cũng
cần hai tụ điện giá trị 33pF. Một phía của tụ điện được nối xuống đất.

Chân Reset:
Chân số 9 là chân tái lập reset. Nó là một đầu vào tích cực mức cao (bình thường mức thấp).
Nhằm làm cho đầu vào RESET có hiệu quả thì nó phải có tối thiểu 2 chu kì máy, hay nói
cách khác, xung cao phải kéo dài 2 chu kì máy trước khi nó xuống thấp.Trong 8051 một
chu kì máy bằng 12 chu kì dao động.

Chân EA:
Tín hiệu vào EA ở chân 31 thường được mắ lên mức 1 hoặc mức 0.
Nếu ở mức 1, 89S52 thi hành chương trình từ bộ nhớ nội.
Nếu ở mức 0, 89S52 sẽ thi hành chương trình từ bộ nhớ ngoại.
Chân PSEN (program store enable):

7


Tín hiệu xuất ra từ vi điều khiển để điều khiển đọc bộ nhớ chương trình. Nếu sử dụng bộ
nhớ chương trình ngồi thì PSEN được nối với OE của ROM, nếu khơng sử dụng thì bỏ
trống chân này.
Chân ALE (address latch enable):
Cho phép chốt địa chỉ. Tín hiệu ALE sẽ được nối với chân LE của IC chốt.
Các PORT:
Port 0 (chân 32 – 39): là port có hai chức năng. Trong các thiết kế cỡ nhỏ không dùng
bộ nhớ mở rộng, nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ
nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu.

Port 1 (chân 1 – 8): là port IO, các chân P1.0, P1.1, P1.2, có thể dùng cho giao tiếp với
các thiết bị ngoài nếu cần. Ngoài ra chân P1.0 cũng là ngõ vào của timer 2, chân P1.1
là ngõ vào ngắt ngoài timer 2 của 8952.
Port 2 (chân 21 – 28): là 1 port đa năng được dùng như các đường xuất nhập hoặc là
byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.
Port 3 (chân 10 – 17): là port đa năng nếu khơng sử dụng thì port 3 dùng làm IO; nếu
có sử dụng thì có các chức năng đặc biệt sau:
▪ P3.0 - RxD: dùng để nhận dữ liệu nối tiếp trong khi giao tiếp UART hay giao tiếp
máy tính.
▪ P3.1 - TxD: dùng để truyền dữ liệu nối tiếp trong khi giao tiếp UART hay giao tiếp
máy tính.
▪ P3.2 - INT0: tín hiệu ngắt ngồi thứ 0.
▪ P3.3 - INT1: tín hiệu ngắt ngồi thứ 1.
▪ P3.4 - T0: ngõ vào nhận xung ngoại cho timer / counter 0.
▪ P3.5 - T1: ngõ vào nhận xung ngoại cho timer / counter 1.
▪ P3.6 - WR: điều khiển ghi dữ liệu.
▪ P3.7 - RD: điều khiển đọc dữ liệu.
2.2. Sơ đồ khối
a) Sơ đồ

8


Sơ đồ khối của AT89S52
b) Tổ chức bộ nhớ
- Vi điều khiển 89S52 có bộ nhớ nội bên trong và có khả năng giao tiếp với bộ nhớ
bên ngồi nếu bộ nhớ bên trong khơng có đủ khả năng lưu trữ chương trình.
- Bộ nhớ bên trong gồm có 2 loại bộ nhớ: bộ nhớ dữ liệu và bộ nhớ chương trình.
Bộ nhớ dữ liệu có 256 byte, bộ nhớ chương trình có dung lượng 8 kbyte.
- Bộ nhớ mở rộng bên ngồi cũng gồm có 2 loại: bộ nhớ dữ liệu và bộ nhớ chương

trình. Khả năng giao tiếp là 64kbyte cho mỗi loại.
- Bộ nhớ mở rộng bên ngồi và bộ nhớ chương trình bên trong và bộ nhớ chương
trình bên trong khơng có gì đặc biệt – chỉ có chức năng lưu trữ dữ liệu và mã chương trình
nên khơng cần phải khảo sát.
- Bộ nhớ chương trình bên trong của vi điều khiển thuộc loại bộ nhớ FLASH ROM
cho phép xoá bằng xung điện và lập trình lại.
- Bộ nhớ RAM nội bên trong là một bộ nhớ đặc biệt người sử dụng vi điều khiển
cần phải nắm rõ cách tổ chức và các chức năng đặc biệt của bộ nhớ này.
9


- Bản đồ bộ nhớ Data trên chip như sau:

- Hai đặc tính cần chú ý là:
+ Các thanh ghi và các port xuất nhập đã được định vị (xác định) trong bộ nhớ và
có thể truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác.
+ Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoại như trong các bộ
Microcontroller khác.
- RAM bên trong 89S52 được phân chia như sau:
▪ Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
▪ RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
▪ RAM đa dụng từ 30H đến 7FH. Từ hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ
từ 30H đến 7FH, 32 byte dưới từ 00H đến 1FH cũng có thể dùng với mục đích tương tự
(mặc dù các địa chỉ này đã có mục đích khác).Mọi địa chỉ trong vùng RAM đa dụng
đều có thể truy xuất tự do dùng kiểu địa chỉ trực tiếp hoặc gián tiếp.
▪ Các thanh ghi chức năng đặc biệt 80H đến FFH.
+ Vùng RAM đa dụng:

10



Từ hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H đến 7FH, 32 byte
dưới từ 00H đến 1FH cũng có thể dùng với mục đích tương tự (mặc dù các địa chỉ này đã
có mục đích khác).Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng
kiểu địa chỉ trực tiếp hoặc gián tiếp.
+ RAM có thể truy xuất từng bit:
AT89C51 chứa 256 bit được địa chỉ hóa, trong đó có 128 bit có chứa các byte chứa
các địa chỉ từ 20H đến 2FH và các bit còn lại chứa trong nhóm thanh ghi có chức năng đặc
biệt. Ý tưởng truy xuất từng bit bằng phần mềm là các đặc tính mạnh của microcontroller
xử lý chung. Các bit có thể được đặt, xóa, AND, OR… với 1 lệnh đơn. Đa số các
microcontroller xử lý đòi hỏi một chuỗi lệnh đọc - sửa - ghi để đạt được mục đích tương
tự. Ngồi ra các port cũng có thể truy xuất được từng bit, 128 bit có chứa các byte có địa
chỉ từ 00H -1FH cũng có thể truy xuất như các byte hoặc các bit phụ thuộc vào lệnh được
dùng.
+ Các bank thanh ghi: 32 byte thấp của bộ nhớ nội được dành cho các bank thanh
ghi. Bộ lệnh 8951 hổ trợ 8 thanh ghi có tên là R0 - R7 và theo mặc định sau khi reset hệ
thống, các thanh ghi này có các địa chỉ từ 00H - 07H.
c) Các thanh ghi có chức năng đặc biệt
Các ơ nhớ có địa chỉ 80H, 90H, A0h, B0h: Là các Port của 89S52 bao gồm port 0 có địa
chỉ là 80H, Port 1 có địa chỉ 90H, Port 2 có địa chỉ A0H và Port 3 có địa chỉ B0H. Tất cả
các Port này có thể truy xuất từng bit nên rất thuận tiện trong điều khiển IO.
● Ơ nhớ có địa chỉ 81H: Là thanh ghi con trỏ ngăn xếp SP (stack pointer) - có chức năng
quản lý địa chỉ của bộ nhớ ngăn xếp. Bộ nhớ ngăn xếp dùng để lưu trữ dữ liệu tạm thời
trong quá trình vi điều khiển thực hiện chương trình.
● Ơ nhớ có địa chỉ 82h và 83h: Là 2 thanh ghi dpl (byte thấp) có địa chỉ là 82H và dph
(byte cao) có địa chỉ 83H. Hai thanh ghi này có thể sử dụng độc lập nếu lưu trữ dữ liệu và
có thể kết hợp lại tạo thành 1 thanh ghi 16 bit có tên là dptr và gọi là con trỏ dữ liệu – được
dùng để lưu địa chỉ 16 bit khi truy xuất dữ liệu bên ngồi.
● Ơ nhớ có địa chỉ 87H: Là thanh ghi pcon (power control) có chức năng điều khiển công
xuất khi vi điều khiển làm việc hay ở chế độ chờ.

● Các ơ nhớ có địa chỉ từ 88H đến 8DH: Là các thanh ghi phục vụ cho 2 timer/ counter T1,
T0. Thanh ghi TH0 và TL0 kết hợp lại tạo thành 1 thanh ghi 16 bit có chức năng lưu trữ
11


xung đếm cho timer/counter T0. Tương tự cho 2 thanh ghi TH1 và TL1 kết hợp lại lưu trữ
xung đếm cho timer/counter T1. Khả năng lưu trữ số lượng xung đếm là 65536 xung. Việc
khởi động timer được SET bởi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển
Timer (TCON) ở địa chỉ 88H. Chỉ có TCON được địa chỉ hóa từng bit.
● Các ơ nhớ có chức năng 98H đến 99H: Là 2 thanh ghi scon và sbuf: scon (series control):
thanh ghi điều khiển truyền dữ liều nối tiếp. Sbuf (series buffer): thanh ghi đệm dữ liệu
truyền nối tiếp.
● Các ơ nhớ có địa chỉ từ A8H đến B9H: Là 2 thanh ghi IE và IP – thanh ghi IE (interrupt
enable): thanh ghi điều khiển cho phép / không cho phép ngắt. IP (interrupt priority): thanh
ghi điều khiển ưu tiên ngắt.
● Thanh ghi trạng thái chương trình (PSW: Program Status Word): Thanh ghi trạng thái
chương trình có địa chỉ D0H được tóm tắt như sau:

Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag): Cờ nhớ có tác dụng kép. Thơng thường nó được dùng
cho các lệnh toán học: C=1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược
lại C=0 nếu phép tốn cộng khơng tràn và phép trừ khơng có mượn.

12


- Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng những giá trị BCD (Binary
Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trong phạm vi điều
khiển 0AH - 0FH. Ngược lại AC=0.
- Cờ 0 (Flag 0): Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng

Những bit chọn bank thanh ghi truy xuất:
- RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi reset hệ
thống và được thay đổi bởi phần mềm khi cần thiết.
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là Bank
0, Bank1, Bank2, Bank3.
RS1

RS0

BANK

0

0

0

0

1

1

1

0

2

1


1

3

- Cờ tràn OV (Over Flag): Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn
tốn học. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này
để xác định xem kết quả có nằm trong tầm xác định khơng. Khi các số khơng có dấu được
cộng bit OV được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ hơn -128 thì bit OV=1.
-Bit Parity (P): Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn với
thanh ghi A. Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity ln ln chẵn. Ví dụ
A chứa 10101101B thì bit P set lên 1 để tổng số bit 1 trong A và P tạo thành số chẵn.
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối tiếp để tạo ra
bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.
● Thanh ghi B: Thanh ghi B có địa chỉ F0H được dùng cùng với thanh ghi A để thực hiện
các phép toán nhân chia. Lệnh MUL AB: sẽ nhận giá trị không dấu 8 bit với 8 bit trong hai
thanh ghi A và B, rồi trả về kết quả 16 bit trong A (byte cao) và B(byte thấp). Lệnh DIV
AB: lấy giá trị trong thanh ghi A chia cho giá trị trong thanh ghi B, kết quả nguyên lưu
trong A, số dư lưu trong B.

13


● Con trỏ Ngăn xếp SP (Stack Pointer): Khi thực hiện các chương trình, các bộ vi xử lý và
các bộ vi điều khiển luôn cần một vùng nhớ gọi là ngăn xếp dùng để cất các thông số của
các chương trình chính khi làm việc với các chương trình con.
Ngăn xếp là một cấu trúc một chiều, các phần tử được cất vào lấy ra theo nguyên tắc vào
sau ra trước. Phần tử cất vào ngăn xếp cuối cùng gọi là đỉnh ngăn xếp và sẽ được lấy ra đầu
tiên.
Thanh ghi SP luôn trỏ vào đỉnh ngăn xếp, nội dung của nó sẽ tự động thay đổi khi thực hiện

các lệnh tác động đến ngăn xếp như: PUSH, POP, CALL…
Vùng ngăn xếp của 8051 được lưu giữ trong RAM nội và giá trị mặc định của SP (khi động
hệ thống) là 07h. Điều này có nghĩa vùng ngăn xếp sẽ từ 08h – 7Fh vì SP sẽ được tăng lên
một trước khi cất dữ liệu vào ngăn xếp. Như vậy nếu ta không thay đổi giá trị khởi đầu của
SP thì các dãy thanh ghi 1,2 và 3 sẽ không được phép sử dụng. Để khởi đầu cho SP đặt
ngăn xếp tại địa chỉ bắt đầu 60h ta có thể dùng lệnh: MOV SP, #5FH
Lệnh trên sẽ đưa vào SP giá trị 5Fh, và do đó vùng ngăn xếp được giới hạn là 32Byte bắt
đầu từ địa chỉ 60h – 7Fh.

II.CÁC PHƯƠNG PHÁP ĐO KHOẢNG CÁCH
1.Đo thủ công
Đo thủ cơng bằng các loại thước đo đơn giản, độ chính xác khá cao nhưng phụ thuộc
nhiều vào người đo.
2. Sử dụng Lase để đo khoảng cách
Đo khoảng cách dựa trên nguyên lý điều biến pha.
Nguyên lý chung của phương pháp điều biến pha là đo độ khác biệt giữa pha của ánh sáng
phát ra với ánh sáng nhận được sau khi phản hồi từ vật. Tuy nhiên khơng có một loại
photodetector nào có thể đáp ứng được với sự thay đổi của tần số trực tiếp của ánh sáng lên
đến 100THz. Vì thế phương pháp điều biến pha sử dụng tần số trực tiếp của ánh sáng không
thể nào tạo ra được. Do đó để có thể dễ dàng đo được thì ta phải điều biến tần số ánh sáng
theo một tần số thấp hơn mà các linh kiện thu quang học và mạch điện tử cịn có thể đáp
ứng được. Vì thế dùng phương pháp điều biến sóng sin để điều khiển laser diot và sử dụng
photodetector để thu ánh sáng laser phản hồi.
3. Phương pháp đo khoảng cách bằng sóng siêu âm bằng cảm biến SRF05
Siêu âm là dạng sóng âm được ứng dụng rộng rãi trong việc đo khoảng cách và định vị
vật thể. Báo cáo giới thiệu một phương pháp đo khoảng cách và xác định vị trí vật thể bằng
sóng siêu âm với sự kết hợp phương pháp xác suất Bayes trong xử lý tín hiệu. Phương pháp
14



sử dụng cơng thức xác suất tồn phần Bayes để đánh giá khả năng không gian bị chiếm bởi
vật thể, và tỉ lệ chiếm giữa các ô lưới trên bản đồ nhằm xác định vị trí xác suất cao nhất có
vật thể. Sóng siêu âm được truyền đi trong khơng khí với vận tốc khoảng 343m/s. Nếu một
cảm biến phát ra sóng siêu âm và thu về các sóng phản xạ đồng thời, đo được khoảng thời
gian từ lúc phát đi tới lúc thu về, thì máy tính có thể xác định được quãng đường mà sóng
đã di chuyển trong khơng gian. Qng đường di chuyển của sóng sẽ bằng 2 lần khoảng cách
từ cảm biến tới chướng ngoại vật, theo hướng phát của sóng siêu âm.
3.1. Cảm biến SRF05
SRF05 là một bước phát triển từ SRF04, được thiết kế làm tăng tính linh hoạt, tăng phạm
vi, ngồi ra cịn giảm bớt chi phí. SRF05 là hồn tồn tương thích với SRF04.
Khoảng cách được tăng từ 3 – 4m.

Cảm biến siêu âm SRF 05
SRF05 cho phép sử dụng một chân duy nhất cho cả kích hoạt và phản hồi, do đó tiết kiệm
giá trị trên chân điều khiển. Khi chân chế độ khơng kết nối, thì SRF05 hoạt động riêng biệt
chân kích hoạt và chân hồi tiếp, như SRF04. SRF05 bao gồm một thời gian trễ trước khi
xung phản hồi để mang lại điều khiển chậm hơn hẳn như bộ điều khiển thời gian cơ bản
Stamps và Picaxe để thực hiện các xung lệnh.
Cảm biến siêu âm SRF05 có 5 chân, bao gồm:
+ Chân cấp nguồn VCC: 5V.
+ Chân Trigger: Chân kích hoạt sóng siêu âm.
15


+ Chân Echo: Sử dụng để nhận biết có sóng siêu âm phản hồi.
+ Chân Out: Chân chọn chế độ.
+ Chân GND: Cấp nguồn 0V.
Cảm biến SRF05 thiết lập 2 mode hoạt động khác nhau thông qua các chân điều khiển
MODE. Nối hoặc không nối chân MODE xuống GND cho phép cảm biến thông qua giao
tiếp dùng một chân hay 2 chân I/O. Trong bài này ta sẽ sử dụng MODE 1.


Cấu hình SRF05 mode 1
-Mode 1: Tách chân TRIGGER & ECHO dùng riêng:
Trong mode này SRF05 sử dụng cả hai chân TRIGGER và ECHO cho việc giao tiếp với
CPU. Để sử dụng mode này ta chỉ cần đẻ chống chân Mode (chân Out) của module, điện
trở bên trong module sẽ kéo chân pin lên mức 1.
Để điều khiển SRF05, ta chỉ cần cấp cho chân TRIGGER một xung điều khiển với độ rộng
tối thiểu 10uS. Sau đó một khoảng thời gian, đầu phát song siêu âm sẽ phát ra song siêu
âm, vi xử lý tích hợp trên module sẽ xác định thời điểm phát song siêu âm và thu song siêu
âm. Vi xử lý tích hợp này sẽ đưa kết quả thu được ra chân ECHO. Độ rộng xung vông tại
chân ECHO tỉ lệ với khoảng cách từ cảm biến đến vật thể.
-Mode 2: Tách chân TRIGGER & ECHO dùng chung. (không dùng ở bài này)
3.2. Hoạt động phát và nhận phản hồi song âm cơ bản của SRF05
Nguyên tắc cơ bản của sonar: là tạo ra một xung âm thanh điện tử và sau đó lắng nghe
tiếng vọng tạo ra khi các làn sóng âm thanh số truy cập một đối tượng và được phản xạ trở
16


lại. Để tính thời gian cho phản hồi trở về, một ước tính chính xác có thể được làm bằng
khoảng cách tới đối tượng. Xung âm thanh tạo ra bởi SRF05 là siêu âm, nghĩa là nó ở trên
phạm vi nhận xét của con người. Trong khi tần số thấp hơn có thể được sử dụng trong các
loại ứng dụng, tần số cao hơn thực hiện tốt hơn cho phạm vi ngắn, nhu cầu độ chính xác
cao.

Phản xạ sóng – nguyên lí cơ bản của cảm biến siêu âm
- Một số đặc điểm khác của cảm biến siêu âm SRF05
Mức độ của sóng âm hồi tiếp phụ thuộc vào cấu tạo của đối tượng và góc phản xạ của nó.

Phản xạ sóng với 1 số vật
Một đối tượng mềm có thể cho ra tín hiệu phản hồi yếu hoặc khơng có phản hồi. Một đối

tượng ở một góc cân đối thì mới có thể chuyển thành tín hiệu phản chiếu một chiều cho
cảm biến nhận.
- Vùng phát hiện của SRF05
Nếu ngưỡng để phát hiện đối tượng được đặt quá gần với cảm biến, các đối tượng trên
một đường có thể bị va chạm tại một điểm mù. Nếu ngưỡng này được đặt ở một khoảng
cách quá lớn từ các cảm biến thì đối tượng sẽ được phát hiện mà khơng phải là trên một
đường va chạm.
17


Vùng phát hiện vật của SRF 05
Một kỹ thuật phổ biến để làm giảm các điểm mù và đạt được phát hiện chiều rộng lớn
hơn cự ly gần là thêm một cải tiến bằng cách thêm một đơn vị SRF05 bổ sung và gắn kết
của hai đơn vị hướng về phía trước. Thiết lập như vậy thì có một khu vực mà hai khu vực
phát hiện chồng chéo lên nhau.
3.3. Thơng số kỹ thuật:

3.4. Cách tính tốn khoảng cách
18


Sóng siêu âm được truyền đi trong khơng khí với tốc độ khoảng 343m/s. Nếu một
cảm biến phát ra sóng siêu âm và thu về các sóng phản xạ đồng thời, đo được khoảng
thời gian từ lúc phát đi tới lúc thu về, thì máy tính có thể xác định được qng
đường mà sóng đã di truyền tring khơng gian. Quãng đường đi của sóng sẽ bằng 2 lần
khoảng cách từ cảm biến tới chướng ngại vật, theo hướng phát sóng của siêu âm. Hay
khoảng cách từ cảm biến đến chướng vật sẽ được tính theo nguyên lý TOF:
d=v*t/2.

Biểu đồ thời gian xung của SRF 05

Dựa vào giản đồ xung ở trên ta thấy:
Để SRF05 hoạt động chúng ta cần tạo 1 xung có độ rộng tối thiểu là 10µs trên chân Trigger.
Sau khi có xung được kích trên chân Trigger, SRF05 sẽ phát ra chuỗi 8 xung để phát sóng
siêu âm.
Sau kết thúc việc phát 8 xung, SRF05 sẽ kéo chân Echo lên mức cao. Chúng ta sẽ dựa vào
thời gian tồn tại mức cao (Độ rộng xung mức cao) của chân Echo để tính khoảng cách.
Nếu độ rộng xung mức cao nằm trong khoảng 100µs-25ms thì nghĩa là có vật cản nằm
trong phạm vi phát hiện của SRF05. Và khoảng cách từ cảm biến tới vật cản được tính theo
cơng thức:
Khoảng cách = (((Độ rộng mức cao(µs))/58) (cm) = (((Độ rộng mức cao(µs))/148) (inch).
Nếu độ rộng xung mức cao lớn hơn hoặc bằng 300ms nghĩa là khơng có vật nằm trong
phạm vi của cảm biến SRF05.
-Phương pháp đo khoảng cách với 8051:

19


Dựa vào tính chất độ rộng xung mức cao trên chân Echo có liên quan với khoảng cách từ
cảm biến SRF05 đến vật, ta sẽ dùng vi điều khiển AT89S52 để đo độ rộng xung mức cao
trên chân Echo.
Ở đây sẽ sử dụng Timer để tính độ rộng xung mức cao trên chân Echo. Nghĩa là sau khi
chân Echo được SRF05 kéo lên mức 1, sẽ cho Timer hoạt động, sau đó, khi chân Echo
xuống mức 0, ta sẽ dừng Timer và từ giá trị đếm được trong thanh ghi TH và TL của Timer
để tính ra khoảng cách.

III. Ứng dụng của ngơn ngữ lập trình Assembler, C điều khiển
1. Ngơn ngữ lập trình Assembler
Ngơn ngữ lập trình Assembler là một ngôn ngữ bậc thấp dùng trong việc viết các chương
trình máy tính. Ngơn ngữ Assembler sử dụng các từ có thính chất gọi nhớ, các từ viết tắt
giúp chúng ta ghi nhớ các chỉ thị phức tạp và làm cho việc lập trình Assembler được dễ

dàng hơn. Mục đích việc dùng các từ gợi nhớ là nhằm thay thế việc lập trình trực tiếp bằng
ngơn ngữ máy được sử dụng trong các máy tính đầu tiên thường gặp nhiều lỗi và tốn thời
gian.
-Ưu điềm:
+ Chạy nhanh.
+ Tiết kiệm bộ nhớ.
+ Có thể lập trình truy cập qua các giao diện vào ra nhưng hiện nay các ngôn ngữ bậc cao
cũng có thể làm được.
-Nhược điểm:
+ Khó viết bởi yêu cầu người lập trình rất am hiểu về phần cứng.
+ Khó tìm sai bao gồm cả cú pháp và sai về thuật tốn.
+ Khơng chuyển chương trình Assembler cho các máy tính có cấu trúc khác nhau.
2. Ngơn ngữ lập trình C
Ngơn ngữ lập trình C là ngơn ngữ lập trình tương đối nhỏ gọn vận hành gần với phần cứng
và nó giống với ngơn ngữ Assember. C cịn được đánh giá như là có khả năng di động, cho
thấy sự khác nhau quan trọng giữa nó với ngơn ngữ bậc thấp như là Assember. C được tạo
ra với một mục tiêu làm cho nó thuận tiện để viết các chương trình lớn hơn với số lỗi ít hơn
-Ưu diểm:
+ Tiết kiệm bộ nhớ.
+ Câu lệnh được thực hiện nhanh.
+ Cho phép người lập trình dễ dàng kiểm sốt được những gì mà chương trình thực thi.
-Nhược điểm:
20


+ Điều chỉnh bằng tay chậm hơn Assembler.

21



CHƯƠNG II:
THIẾT KẾ PHẦN CỨNG
Đề tài: “Thiết kế mạch đo khoảng cách dùng cảm biến siêu âm và vi xử lí 8051” bao
gồm các phần chính sau:
-Sử dụng cảm biến siêu âm SRF05 để đo khoảng cách.
-Sử dụng Timer1 để lấy thời gian lúc đo.
-Hiện thị kết quả đo được lên LCD.
-Nguồn cung cấp 5VDC.

I. Các linh kiện trong đề tài
1. Điện trở
Điện trở là đại lượng vật lý đặc trưng cho tính chất cản trở dịng điện của một vật dẫn điện.
Nó được định nghĩa là tỉ số của hiệu điện thế giữa hai đầu vật thể với cường độ dịng điện
đi qua nó.
Nó được xác định bởi cơng thức: 𝑅 =

𝑈
𝐼

Trong đó:
U: là hiệu điện thế giữa hai đầu vật dẫn điện, đo bằng Vôn (V)
I: là cường độ dòng điện đi qua vật dẫn điện, đo bằng Ampe(A)
R: là điện trở của vật dẫn điện, đo bằng Ohm(Ω)
Ký hiệu:

Ký hiệu và hình dạng điện trở
Điện trở là linh kiện thu động có tác dụng cản trở điện áp và dòng điện.
Điện trở được sử dụng rất nhiều trong mạch điện tử.
2. Biến trở.
Biến trở là điện trở thay đổi được, có tác dụng là thay đổi điện áp theo yêu cầu người sử

dụng.
Ký hiệu:
22


Ký hiệu và hình dạng của biến trở
3. Tụ điện
Tụ điện là linh kiện thụ động cấu tạo của tụ điện là hai bản cực bằng kim loại ghép cách
nhau một khoảng d ở giữa hai bản tụ là dung dịch hay chất điện mơi cách điện có điện dung.
Đặc điểm của tụ là cho dòng xoay chiều đi qua, ngăn cản dịng điện một chiều.
Ký hiệu:

Ký hiệu và hình dạng của tụ điện
4. LCD 1602
LCD là tên viết tắt của Liquid Crystal Display hay còn được gọi là màn hình tinh thể lỏng.
Có rất nhiều loại màn hình LCD khác nhau. Với những ứng dụng nhỏ thường sử dụng loại
màn hình cỡ nhỏ đơn giản là loại LCD1602. Các ký tự được hiển thị trên màn hình với 2
hàng, mỗi hàng hiển thị được 16 ký tự.

23


LCD 1602
LCD 1602 là mành hình được sử dụng rộng rãi cho các ứng dụng của vi điều khiển.
LCD 1602 có rất nhiều ưu điểm so với các dạng hiển thị khác như: khả năng hiển thị kí tự
đa dạng (chữ, số, kí tự đồ họa); dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao
tiếp khác nhau, tiêu tốn rất ít tài nguyên hệ thống, giá thành rẻ,…
Có 2 thanh ghi rất quan trọng bên trong LCD 1602 là thanh ghi dữ liệu và thanh ghi
lệnh. Thanh ghi lệch được suer dụng để gửi các lệnh như xóa màn hình, chỉnh con trỏ ở đầu
tiên… Thanh ghi dữ liệu được sử dụng để gửi dữ liệu cần hiển thị trên màn hình LCD 1602.

Thơng số kĩ thuật của sản phẩm LCD 1602:
- Điện áp MAX: 7V
- Điện áp MIN: - 0,3V
- Hoạt động ổn định: 2.7-5.5V
- Điện áp ra mức cao: > 2.4
- Điện áp ra mức thấp: <0.4V
- Dòng điện cấp nguồn: 350uA - 600uA
- Nhiệt độ hoạt động: - 30 - 75 độ C

24


Sơ đồ chân của LCD 1602
Chức năng của từng chân LCD 1602:
- Chân số 1 - VSS: chân nối đất cho LCD được nối với GND của mạch điều khiển
- Chân số 2 - VDD: chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều
khiển
- Chân số 3 – VEE (V0): điều chỉnh độ tương phản của LCD
- Chân số 4 - RS: chân chọn thanh ghi, được nối với logic "0" hoặc logic "1":
+ Logic “0”: Bus D0 - D7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi”write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus D0 - D7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD
- Chân số 5 - RW: chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0” để
ghi hoặc nối với logic “1” đọc
- Chân số 6 - E: chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus D0-D7,
các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân này như sau:
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi bên trong khi
phát hiện một xung (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra D0-D7 khi phát hiện cạnh lên (lowto-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
- Chân số 7 đến 14 - D0 đến D7: 8 đường của bus dữ liệu dùng để trao đổi thông tin
với MPU. Có 2 chế độ sử dụng 8 đường bus này là: Chế độ 8 bit (dữ liệu được truyền trên

cả 8 đường, với bit MSB là bit D7) và Chế độ 4 bit (dữ liệu được truyền trên 4 đường từ
D4 tới D7, bit MSB là D7)
- Chân số 15 - A: nguồn dương cho đèn nền
- Chân số 16 - K: nguồn âm cho đèn nền

25


×