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

Thiết kế hệ thống tự động đo khoảng cá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 (3.53 MB, 26 trang )

Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN
ĐỒ ÁN VI XỬ LÍ
ĐỀ TÀI:
THIẾT KẾ HỆ THỐNG TỰ ĐỘNG ĐO
KHOẢNG CÁCH
GVHD

: TS.Ngơ Đình Thanh

1


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

MỤC LỤC
Chương 1. Ngun lí hoạt động của hệ thống vi điều khiển...............................................4
1.1 Xây dựng mục tiêu....................................................................................................4
1.2 Nguyên lí hoạt động của hệ thống.............................................................................4
Chương 2. Tính chọn các linh kiện sử dụng trong hệ thống:..............................................7
2.1

.Giới thiệu về các linh kiện chính trong hệ thống:................................................7

2.1.1. Tổng quan về họ vi điều khiển PIC:......................................................................7


2.1.2. Vi điều khiển PIC 18F4520:..................................................................................7
2.1.3. LED 7 đoạn:........................................................................................................16
2.1.4. SRF05................................................................................................................. 16
2.2. Tính tốn các linh kiện có trong hệ thống:.............................................................17
2.2.1. Tính tốn thơng số đọc từ cảm biến:...................................................................17
2.2.2. Tính tốn các điện trở nối LED 7 đoạn:..............................................................18
2.2.3. Tính chọn trở và LED đơn chỉ thị:......................................................................18
2.2.4. Chọn bộ nguồn cấp điện cho mạch:....................................................................18
Chương 3. Mô phỏng hệ thống:.......................................................................................19
3.1. Thiết kế mạch ngun lí:........................................................................................19
3.2. Chương trình lập trình C:.......................................................................................19
3.3. Chạy thử nghiệm trên testboard:............................................................................22

2


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

Danh sách hình ảnh

3


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

Chương 1. Ngun lí hoạt động của hệ thống vi điều khiển

1.1 Xây dựng mục tiêu
Với sự phát triển ngày càng mạnh mẽ và rộng lớn của nền khoa học kỹ
thuật. Các công nghệ mới thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời
để đáp ứng như cầu của xã hội, và trong đó phải để đến sự phát minh ra Vi điều
khiển.
Vi điều khiển quản lý và điều khiển hoạt động của hệ thống thơng qua
phần mền, nhờ vậy mà ta có thể mở rộng và thay đổi hoạt động theo chương
trình đã nạp sẵn, đọc các tín hiệu từ bên ngồi đưa vào sau đó lưu trữ và xử lý,
trên cơ sở đưa ra các thơng báo, tín hiệu điều khiển các thiết bị bên ngồi hoạt
động theo đúng thơng số và u cầu của hệ thống.
Hệ thống điện tử số sử dụng bộ vi điều khiển cà máy tính trong các dây
chuyền sản xuất công nghiệp, thực hiển nhiệm vụ điều khiển và giám sát hệ
thống. Ngồi ra vì điều khiển cũng có mặt trong các sản phẩm cơng nghiệp và
tiêu dùng như: lò vi ba, lò sưỡi, máy giặt, hệ thống cảnh báo và giám sát của
các phương tiện giao thông … và trong nhiều thiết bị công nghiệp khác.
Với việc sử dụng các bộ vi điều khiển đễ điều khiển các cơng việc mang
tính đi lặp đi lặp lại và thực hiện phép đo các đại lượng một cách tự động thay
thế sự giám xác của con người. Trong tập đồ án này, em xin trình bày đề tài
“Thiết kế hệ thống tự động đo khoảng cách”

1.2 Nguyên lí hoạt động của hệ thống
Sơ đồ thiết kế nguyên lí của hệ thống:

4


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh


Hình 1. Ngun lí thiết kế hệ thống

 Nguyên lí hoạt động của từng khối:
-Khối nguồn: cung cấp nguồn cho hệ thống.
-Khối hiển thị: gồm 3 led 7 đoạn hiển thị thông số đo được là giá trị khoảng
cách. Đưa tín hiệu ra đèn xanh đỏ vàng để nhận biết
-Khối cảm biến: phát ra sóng rồi thu về khi có vật cản rồi truyền tín hiệu vào
PIC.
-Khối xử lí trung tâm: PIC 18F4520 nhận tín hiệu từ cảm biến từ đó xuất tín
hiệu ra cho khối hiển thị
5


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

-Khối điều khiển: gồm các nút nhấn tương ứng với các công việc
 Nguyên tắc hoạt động chung của hệ thống:
-Cảm biến (cụ thể là SRF05) phát ra sóng siêu âm truyền đi được trong khơng
khí với vận tốc 343m/s. Khi gặp vật cản thì các sóng này phản xạ trở về.
-PIC đo khoảng thời gian mà sóng đã di chuyển từ lúc phát đến lúc về, sử dụng
các cơng thức được lập trình sẵn để tính ra khoảng cách.
-PIC đưa tín hiệu và hiển thị trên LED 7 đoạn và các LED đơn.

Chương 2. Tính chọn các linh kiện sử dụng trong hệ thống:
2.1.Giới thiệu về các linh kiện chính trong hệ thống:
2.1.1. Tổng quan về họ vi điều khiển PIC:
6



Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

PIC là một họ vi điều khiển RISC được sản xuất bởi cơng ty Microchip
Technology. Dịng PIC đầu tiên là PIC1650 được phát triển bởi
Microelectronics Division thuộc General_Instrument. PIC bắt nguồn từ chữ viết
tắt của “Programmable Intelligent Computer” (Máy tính khả trình thơng minh)
là một sản phẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên
của họ là PIC1650. Lúc này, PIC 1650 được dùng để giao tiếp với các thiết bị
ngoại vi cho máy chủ 16 bit CP1600, vì vậy, người ta cũng gọi PIC với tên
“Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi). CP1600 là
một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit
được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho
CP1600. PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ
RISC chưa được sử dụng thời bấy giờ, nhưng PIC thực sự là một vi điều khiển
với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động).
Năm 1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu
mới hủy bỏ hầu hết các dự án lúc đó quá lỗi thời. Tuy nhiên, PIC được bổ sung
EPROM để tạo thành 1 bộ điều khiển vào ra khả trình. Ngày nay rất nhiều dịng
PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như
USART,PWM, ADC…), với bộ nhớ chương trình từ 512 Word đến 32K Word.

2.1.2. Vi điều khiển PIC 18F4520:
 Vi điều khiển PIC 18F4520:

Hình 2. Vi điều khiển 18F4520

Vi điều khiển PIC18F4520 có các đặc điểm cơ bản:


 Sử dụng công nghệ nanoWatt: Hiệu năng cao, tiêu thụ năng lượng ít.

7


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

 Kiến trúc RISC:
-75 lệnh mạnh, hầu hết các lệnh thực hiện trong bốn chu kì xung.
-Tốc độ thực hiện lên tới 10 triệu lệnh trong 1s với tần số 40Mhz.
-Có bộ nhân cứng.
+ Các bộ nhớ chương trình và dữ liệu cố định:
-32 Kbytes bộ nhớ flash có khả năng tự lập trình trong hệ thống có thể thực
hiện được 100.000 lần ghi/xóa.
-256 bytes EEPROM có thể thực hiện được 1.000.000 lần ghi/xóa.
-256 bytes SRAM.
+ Những bộ ngoại vi tiêu biểu:
-4 bộ định thời/bộ đếm 8 bit với các chế độ tỉ lệ đặt trước và chế độ so sánh.
-Bộ đếm thời gian thực với bộ tạo dao động riêng biệt.
-2 kênh PWM.
-13 kênh ADC 10 bit.
-Bộ truyền tin nối tiếp USART khả trình.
-Watchdog Timer khả trình với bộ tạo dao động bên trong riêng biệt.
-Bộ so sánh tương tự.
+ Các đặc điểm đặc biệt khác:
-Power on Reset và Brown Out Reset.
-Bộ tạo dao động nội RC.

-Các nguồn ngắt bên trong và bên ngoài.
+ I/O và các kiểu đóng gói:
-Đóng gói 40-pin PDIP, 44-lead TQFP, và 44-pad MLF.

8


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

Hình 3. Sơ đồ khối kiến trúc của vi điều khiển 18F4520

 Sơ đồ chân I/O:

9


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

Hình 4. Sơ đồ chân vi xử lí PIC 18F4520

Sau đây là giới thiệu cấu tạo chân loại 40 chân (40 Pin PDIP):

• Chân 1( MCLR /VPP/RE3) .
- MCLR là đầu vào Master Clear (reset) hoạt động ở mức
thấp dể reset toàn bộ thiết bị.
- VPP dùng để thay đổi điện áp đầu vào.

- RE3 đầu vào số.
Các chân thuộc cổng vào ra Port A:
• Chân 2(RA0/AN0):với RA0 là cổng vào ra số, AN0 là đầu
vào tương tự Input0.
• Chân 3(RA1/AN1): RA1 là cổng vào ra số, AN1 là đầu
vào tương tự Input1.
• Chân 4(RA2/AN2/VREF+): RA2 là cổng vào ra số, AN2 là
đầu vào tương tự Input2. VREF+ đầu vào tương tự chuyển đổi
A/D điện áp tham chiếu(mức thấp), còn CVREF là đầu ra tương
tự để so sánh điện áp chuẩn.
• Chân 5(RA3/AN3/VREF-/CVREF ): RA3 là cổng vào ra số,
AN3 là đầu vào tương tự Input3. VREF- đầu vào tương tự
chuyển đổi A/D điện áp tham chiếu(mức cao).
10


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

• Chân 6(RA4/T0CKI/C1OUT): RA4 là đầu vào ra số,T0CKI
dầu vào xung bên ngoài của Timer0, C1OUT là đầu ra bộ so
sánh 1.
• Chân 7(RA5/AN4/ SS /HLVDIN/C2OUT): trong đó RA5 là
cổng vào ra só, AN4 là đầu vào tương tự Input 4, SS chọn đầu
vào phụ thuộc SPI, HLVDINđầu vào tương tự để dò điện áp,
C2OUT đầu ra bộ so sánh 2.
• Chân 13(OSC1/CLKI/RA7): với OSC1là đầu vào bộ dao
động thạch anh hoặc là đầu vào nguồn xung từ bên ngoài, khi
ta nối dây với các thiết bị tương tự thì đầu vào này dạng ST

(Schmitt Trigger input ưith CMOS levels). CLKI là đầu vào CMOS
cho nguồn xung bên ngồi và ln được ghép nối với chân
OSC1. Cịn RA7 là chân vào ra sử dụng chung .
• Chân 14(OSC2/CLKO/RA6): OSC2 là đầu ra bộ dao động
thạch anh được nối với thạch anh hoặc bộ công hưởng dể lựa
chọn dạng bộ dao động thạch anh. CLK0 có tần số bằng tần số
của OSC1 đọ rộng chu kì lệnh, RA6 là đầu vào ra chung.
Các chân cổng vào ra hai chièu Port B. Port B có thể lập
trình bằng phần mềm khi cho kéo đầu vào bên trong yếu lên
trên toàn bộ đầu vào.
• Chân 33(RB0/INT0/FLT0/AN12): Với RB0 là cổng vào ra
số, INT0 là đầu vào ngắt ngoài Interrup 0, FLT0 là đầu vào báo
lỗi PWM được tăng cường CCP1, AN12 đầu vào tương tự Input
12.
• Chân 34(RB1/INT1/AN10): RB1 là đầu vào ra số, INT1
đầu vào ngắt ngoài Interrup1, AN10 đầu tương tự Input 10.
• Chân 35(RB2/INT2/AN8): RB2 là đầu vào ra số, INT2 đầu
vào ngắt ngoài Interrup2, AN8 đầu tương tự Input 8.
• Chân 36 (RB3/AN9/ccp2): RB3 là đầu vào ra số, AN9 đầu
tương tự Input 9, CCP2 ( Capture 2 input/Compare 2
output/PWM2 output.)
• Chân 37(RB4/KBI0/AN11):): RB4 là đầu vào ra số, KBI0
thay đổi mở ngắt, AN11 đầu tương tự Input 9.
• Chân 38(RB5/KBI1/PGM): RB5 đầu vào ra số, KBI1 thay
đổi mở ngắt, PGM cho phép có thể lập trình ISCPTM ở điện áp
thấp.

11



Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

• Chân 39(RB6/KBI2/PGC): RB6 là đầu vào ra số, KBI2
thay đổi mở ngắt, PGC chân dùng trong mạch chạy và xung lập
trình ICSP.
• Chân 40(RB7/KBI3/PGD): RB7 đầu vào ra số, KBI3 thay
đổi mở ngắt, PGD chân dung trong mạch chạy và xung lập trình
ICSP.
Các chân cơng Port C:
• Chân 15(RC0/T1OSO/T13CKI):RC0 đầu vào ra số, T1OSO
đầu ra bộ dao động Timer1, T13CKI đầu vào xung bên ngồi
Timer1/Timer3.
• Chân 16(RC1/T1OSI/CCP2): RC1 đầu vào ra số, T1OSI
đầu vào bộ dao động Timer1, CCP2(Capture 2 input/Compare 2
output/PWM2 output.).
• Chân 17(RC2/CCP1/P1A): RC2 lầ đầu vào ra số,
CCP1(Capture1 input/Compare 1 output/PWM1 output.), P1A
đầu ra tăng cường CCP1.
• Chân 18(RC3/SCK/SCL): RC3 là đầu vào ra số, SCK đầu
vào ra đư chuỗi xung vào ra cho SPI lựa chọn, SCL đầu vào ra
đưa chuỗi xung vào ra cho I2CTM lựa chọn.
• Chân 23(RC4/SDI/SDA): RC4 là đầu vào ra số, SDI đầu
vào dữ liệu API, SDA đầu vào ra dữ liệu cho I2C.
• Chân 24(RC5/SDO): RC5 đầu vào ra số, SDO đầu ra dữ
liệu SPI.
• Chân 25(RC6/TX/CK): RC6 đầu vào ra số, TX đầu ra
chuyển
đổi

dị
bộ
EUSARRT, CK dầu vào ra xung đồng bộ EUSART.
• Chân 26(RC7/RX/DT): RC7 đầu vào ra số, RX đầu vào
nhận
dị
bộ
EUSART,
DT
đầu vào ra dữ liệu đồng bộ EUSART.
Các chân cổng Port D( Port D có thể vào ra hai hướng
hoặc cổng song song phụ thuộc(PSP) cho giao diên vi xử lý và
khi đó các đầu vào phải là TTL..
• Chân 19(RD0/PSP0): RD0 đầu vào ra số, PSP0 cổng dữ
liệu song song phụ thuộc.
• Chân 20(RD1/PSP1): RD1 đầu vào ra số, PSP1cổng dữ
liệu song song phụ thuộc.
• Chân 21(RD2/PSP2): RD2đầu vào ra số, PSP2 cổng dữ
liệu song song phụ thuộc.
12


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

• Chân 22(RD3/PSP3): RD3 đầu vào ra số, PSP3 cổng dữ
liệu song song phụ thuộc.
• Chân 27(RD4/PSP4): RD4 đầu vào ra số, PSP4 cổng dữ
liệu song song phụ thuộc.

• Chân 28(RD5/PSP5/P1B): RD5 đầu vào ra số, PSP5 cổng
dữ liệu song song phụ thuộc, P1B đầu ra được tăng cường
CCP1.
• Chân 29(RD6/PSP6/P1C): RD6 đầu vào ra số, PSP6 cổng
dữ liệu song song phụ thuộc, P1C đầu ra được tăng cường
CCP1.
• Chân 30(RD7/PSP7/P1D): RD7 đầu vào ra số, PSP7 cổng
dữ liệu song song phụ thuộc, P1D đầu ra được tăng cường
CCP1.
Các chân cổng Port E:
• Chân 8(RE0/ RD /AN5): RE0 đầu vào ra số, RD đầu vào
điều khiển đọc cho cổng PSP, AN5 đầu vào tương tự Input5.
• Chân 9(RE1/ WR /AN6): RE1 đầu vào ra số, WR đầu vào điều
khiển viết dữ liệu cổng PSP, AN6 đầu vào tương tự Input6.
• Chân 10(RE2/CS /AN7): RE2 đầu vào ra số, CS điều
khiển chọn Chip cho cổng PSP, AN7 đầu vào tương tự Input7.
- Đầu RE3 nằm ở chân 1.
Các chân khác:
• Chân 12,31(VSS): nối đất chuẩn cho I/O và logic.
• Chân 11,32(VDD): cungcấp nguồn dương cho I/O và
logic.
Loại 44 chân có thêm một số chân phụ khác khi cần thiết
ta có thể dễ dàng tra trong DataSheet. Chi tiết hơn chúng ta có
thể thấy qua sơ đồ khối của Pic18F4420/4520 trong tài liệu do
microchip cung cấp sẽ có hồn tồn đầy đủ thông tin đặc điểm
cấu tạo.
PORTA, TRISAand LATA Registers
Port A là cổng vào ra hai hướng 8 bit. Thanh ghi TRISA dùng điều khiển
dữ liệu có hướng. Khi bit TRISA(=1) thì tương ứng các chân Port A là đầu vào,
ngược lại (=0) tương ứng các chân Port A là đầu ra.. Thanh ghi LATA kiểm soát

hoạt động đọc viết hiệu chỉnh của Port A. Cụ thể chức năng các chân của cổng
này đã nói chi tiết ở cấu trúc chân của vi điều khiển.
PORTB, TRISB and LATB Registers
PORTC, TRISC and LATC Registers
13


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

PORTD, TRISD and LATD Registers
Về cơ bản Port B, PortC, PortD có ngun tắc hoạt động giống PortA.
Cịn các chức năng cơ bản khác trong sơ đồ chân phần cứng đã giải thích cụ
thể. Riêng PortD có thêm sự đặc biệt do nó có thể chuyển tiếp thành cổng song
song phụ thuộc(PSP).
PORTE, TRISE and LATE Registers
Port E có độ rộng 4 bit các chân chúng ta đã tìm hiểu ở trên. Hoạt động
thanh ghi TRISE cũng tươngtự như các thanh ghi có cùng chức năng ở các cổng
khác.

Hình 5. Sơ đồ bộ nhớ dữ liệu của PIC 18F4520

Những đặc tính ngoại vi:
 TIMER:
-Timer0 : 8-bit định thời/đếm với 8-bit prescaler.
14


Đồ án vi xử lý & vi điều khiển


GVHD: TS. Ngơ Đình Thanh

-Timer1: 16- bit định thời/đếm với prescaler, có thể được tăng lên trong
suốt chế độ Sleep qua thạch anh/xung clock bên ngoài.
-Timer2: 8-bit định thời/đếm với 8-bit prescaler và postscaler.


Hai module Capture,Compare, PWM:
-Capture có độ rộng 16 bit, độ phân giải 12,5ns.
-Compare có độ rộng 16 bit, độ phân giải 200ns.
-Độ phân giải lớn nhất của PWM là 10 bit.



Có 13 ngõ I/O có thể điều khiển trực tiếp:
 Dòng vào và dòng ra lớn:
-25mA dòng vào cho mỗi chân.
-20mA dịng ra cho mỗi chân.



8 kênh của bộ chuyển đổi tương tự sang số(A/D) 10-bit.
 Ngôn ngữ lập trình:
o Ngơn ngữ Assembler:

Ngơn ngữ Assembler là 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ó tí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
dùng 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 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. Việc sử dụng ngơn ngữu Assembler vào lập trình PIC rất
đơn giản.
-Ư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 cac ngơn ngữ
bậc cao cũng có thể làm được.
-Nhược điểm:
+ Khó viết bởi u cầu người lập trình rất am hiểu về phần cứng.
+ Khó tìm lỗi sai bao gồm cả cú pháp và sai về thuật toán.
+ Khơng chun chương trình Assembler cho các máy tính có cấu trúc khác nhau .
15


Đồ án vi xử lý & vi điều khiển
o

GVHD: TS. Ngơ Đình Thanh

Ngơn ngữ lập trình C:

Ngơn ngữ lập trình C là ngơn ngữu 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. Ngơn ngữ 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.
-Ưu điể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
đang thực thi.
-Nhược điểm:
+ Điều chỉnh bằng tay chậm hơn Assembler.

2.1.3. LED 7 đoạn:

Hình 6. LED 7 đoạn

Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình
dạng số 8 và có thêm một led đơn hình trịn nhỏ thể hiện dấu chấm trịn ở góc
dưới, bên phải của led 7 đoạn 8 led đơn trên led 7 đoạn có Anode(cực +) hoặc
Cathode(cực -) được nối chung với nhau vào một điểm, được đưa chân ra ngoài
để kết nối với mạch điện.
Phân loại:
- Led 7 đoạn anode chung
- Led 7 đoạn cathode chung
Một số thống số kĩ thuật:
- Điện áp rơi trên mỗi led nhỏ là 1.4V
- Dòng điện tối đa chạy qua mỗi led là 25mA
- Dịng điện bình thường 10mA
16


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

2.1.4. SRF05


Hình 7. SRF05

Module cảm biến siêu âm SRF05 dùng để đo khoảng cách đến vật chắn bằng sóng
siêu âm. Module có 2 đầu thu và phát sóng, khoảng cách được xác định bằng cách đo
khoảng thời gian mà sóng siêu âm được phát ra từ module truyền đến vật chắn rồi phản
hồi về. Sử dụng bằng cách truyền 1 xung vào chân trigger của module, sau đó chờ 1 xung
trả về trên chân echo, độ dài của xung phản hồi tương ứng với thời gian của sóng siêu âm
truyền trong khơng khí, từ đó tính ra được khoảng cách đến vật thể chắn.
Thông số kĩ thuật:
-Điện áp hoạt động: 5V
-Dòng điện tiêu thụ: 30mA
-Tần số: 40kHz
-Tầm đo: 3cm đến 3m

2.2. Tính tốn các linh kiện có trong hệ thống:
2.2.1. Tính tốn thơng số đọc từ cảm biến:

Hình 8. Biểu đồ thời gian của SRF05

17


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

Đo khoảng cách bằng cảm biến siêu âm chính là đo thời gian chân echo
ở mức cao.
Để đo thời gian chân ECHO ở mức cao có thể dùng một trong các bộ

timer của vi điều khiển
Để đo khoảng cách ta làm các bước như sau:
-Kích chân TRIGGER: Xuất mức 1 ra chân TRIGGER và delay tối thiểu 10mS.
-Đợi chân ECHO lên mức cao
-Sau khi chân ECHO lên mức cao, kích hoạt timer
-Khi chân ECHO xuống mức thấp, dừng timer và tính tốn giá trị thời gian từ
timer, từ đó suy ra được khoảng cách.
▪ Cách tính khoảng cách từ giá trị đo được:
Gọi S là quãng đường đi của sóng âm,
S=2 x d
(với d(cm) là khoảng cách từ sóng âm đến vật)
Gọi V là vận tốc sóng âm: V= 0.0344cm/us
T(us) là thời gian truyền, ta có:
S=2 x d= V x T
d= V x = 0.0344 x =

2.2.2. Tính tốn các điện trở nối LED 7 đoạn:
-Dịng định mức qua LED 7 đoạn: I=20mA
-Ta chọn dòng điện qua LED I=15mA
I

Vcc  Vr
R

R

=>

Vcc  Vr 5  1.4


 240
I
0.015

Chọn R=330 Ω

2.2.3. Tính chọn trở và LED đơn chỉ thị:
Chọn điện áp rơi trung bình trên mỗi LED là 2V và dòng qua LED là
khoảng 12mA.
I

=>

Vcc  Vr
R

R

Vcc  Vr 5  2

 250
I
0.012

Chọn R=330 Ω
18


Đồ án vi xử lý & vi điều khiển


GVHD: TS. Ngơ Đình Thanh

2.2.4. Chọn bộ nguồn cấp điện cho mạch:
-Dùng adapter 220VAC-5VDC để cấp nguồn cho mạch trong trường hợp
mạch giám sát đặt cố định và gần nguồn điện.

Chương 3. Mơ phỏng hệ thống:
3.1. Thiết kế mạch ngun lí:
Sơ đồ mạch ngun lí trong proteus:

Hình 9. Mơ phỏng proteus

3.2. Lưu đồ thuật toán:

19


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

20


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

21



Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

3.3. Thiết lập ban đầu dùng ngơn ngữ hợp ngữ:
MOVLW 0x00
MOVWF TRISC ; Thiết lập cổng C là cổng ra
MOVWF TRISD ; Thiết lập cổng D là cổng ra
MOVLW 0XF0
MOVWF TRISB ; Thiết lập cổng B
BSF INTCON,4 ; Thiết lập cho phép ngắt ngoài
BSF T1CON, 7 ; Cho timer 1 vận hành ở chế độ 16 bit
BCF T1CON, 5 ; gán bộ chia trước cho timer 1 là 1:1
BCF T1CON, 4
BCF T1CON, 3 ; tắt bộ dao động
BCF T1CON, 2 ; timer1 dùng xung clock bên trong
BCF T1CON, 1 ; Chọn xung nội bên trong
22


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

BSF T1CON, 0 ; Cho phép timer1 đếm

3.4. Chương trình lập trình C:
#INCLUDE <18F4520.H>
#FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP

#USE DELAY(CLOCK=20M)
Const unsigned int8
ma7doan[]={0xC0,0xF9,0xA4,0XB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned int8 led0,led1,led2,l,h;
int32 khoangcach=0;
float32 khoangcach1, dem;
#define echo PIN_B1
#define trig PIN_B7
#int_ext
void ngat(void){
while(pin_b0==0);
output_toggle(pin_d7);}
void giai_ma(int16 t)
// giai ma de hien thi
{
led0=ma7doan[khoangcach%10];
led1=ma7doan[khoangcach%100/10];
led2=ma7doan[khoangcach/100];
}
void hien_thi()
// hiên thi so tren led.... Quét led
{
output_c(led0); output_high(pin_d0); delay_ms(1); output_low(pin_d0);
output_c(led1); output_high(pin_d1); delay_ms(1); output_low(pin_d1);
output_c(led2); output_high(pin_d2); delay_ms(1); output_low(pin_d2);
}
void delay_hienthi(h)
150ms
{
for(l=0;l

{
hien_thi();
}

// co the thay duoc led. O day hien thi 50 lan trong

23


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

}
void en_srf(void) //kich hoat srf_05
{
output_high(trig);
delay_ms(15);
output_low(trig);

}
void wait_srf(void) //doi echo len cao
{
while(input(echo)==0){;};
set_timer1(0);
}
void start_srf(void)
{
en_srf();
wait_srf();

}
float32 distance_srf(void) //tinh khoang cach
{for(int x=0;x<5;x++){
int16 pulse;
float32 khoangcach1;
start_srf();
while(input(echo)==1){;}
pulse= get_timer1();
set_timer1(0);
dem+=(pulse/5)/58;
}
khoangcach1= dem/5;
dem=0;
return khoangcach1;
}
void denbao(){
if(khoangcach<10){
output_high(pin_d4);
output_low(pin_d5);
output_low(pin_d6);
24


Đồ án vi xử lý & vi điều khiển

GVHD: TS. Ngơ Đình Thanh

}
if(khoangcach>=10&& khoangcach <=70){
output_high(pin_d5);

output_low(pin_d4);
output_low(pin_d6);
}
if(khoangcach>70){
output_high(pin_d6);
output_low(pin_d4);
output_low(pin_d5);
}
}
void main()
{
set_tris_d(0xff);
set_tris_c(0xff);
enable_interrupts(int_ext);
ext_int_edge(H_TO_L);
enable_interrupts(global);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
output_float(echo);
output_drive(trig);
while(TRUE)
{
khoangcach=distance_srf();
if(khoangcach>100){khoangcach=100;}
denbao();
giai_ma(khoangcach);
hien_thi();
delay_hienthi(200);
}}

3.5. Sản phẩm dự án:

Chạy thử nghiệm trên testboard:

25


×