Uploaded by Son Nguyen (ShynxSn)

Thuyết minh

advertisement
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
LỜI NÓI ĐẦU
Từ khi ra đời đến nay, công nghệ thông tin không ngừng phát triển và
đạt được những tiến bộ vượt bậc. Sự phát triển của phần cứng, cũng như
phần mềm giúp cho việc giải quyết các công việc của con người trở nên dễ
dàng, thuận tiện và nhanh chóng.
Bên cạnh đó, kỹ thuật điện tử cũng có những bước đột phá và ứng dụng
rộng rãi trong các lĩnh vực đời sống, trong đó có việc kiểm tra, giám sát. Việc
thu thập thông tin không cần phải có tác động trực tiếp của con người mà
được thực hiện thông qua các máy móc thiết bị, mọi thông tin được tổng hợp,
lưu trữ và quản lý một cách dễ dàng nhờ hệ thống máy tính. Do đó, cùng với
những kiến thức tích lũy được trong quá trình học tập ở trường, em lựa chọn
đề tài “Thiết kế, chế tạo mạch xử lý tín hiệu cảm biến siêu âm, truyền phát
qua sóng Radio và hiển thị trên máy tính”.
Em xin chân thành cảm ơn sự hướng dẫn, chỉ bảo của Thầy Trịnh Tuấn
Dương, các thầy cô giáo bộ môn cùng các bạn đã giúp đỡ để em có thể hoàn
thành đồ án này.
Mặc dù đã rất cố gắng nhưng kiến thức và thời gian có hạn nên chắc
chắn đồ án này của em không tránh khỏi những sai sót. Kính mong nhận
được sự chỉ bảo của thầy cô và sự góp ý của các bạn để đồ án của em được
hoàn thiện hơn.
SVTH:
Sơn
1
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Sinh viên thực hiện
Nguyễn Hoài Sơn
TÓM TẮT ĐỀ TÀI
Để hoàn thành được mục tiêu của đề tài là chế tạo được hệ thống xử lý
tín hiệu từ cảm biến siêu âm, truyền sóng không dây và hiển thị trên máy
tính, em đã tìm hiểu về đặc tính các linh kiện sử dụng, cách thức hoạt động
của các linh kiện. Trên cơ sở đó, xây dựng sơ đồ nguyên lý, định hình cơ bản
về nguyên lý hoạt động của hệ thống. Sau khi hình thành được sơ đồ nguyên
lý, em tiến hành thiết kế mạch nguyên lý, mô phỏng mạch nguyên lý bằng
các phần mềm, viết code điều khiển hệ thống và chạy thử. Sau khi hoàn thành
việc mô phỏng, công việc tiếp theo là thiết kế, chế tạo mạch in và xây dựng
hoàn chỉnh chương trình điều khiển, giao tiếp giữa các khối trong hệ thống.
Về cơ bản, đồ án bao gồm các phần:
Chương 1: Tổng quan về sóng siêu âm và đặc tính linh kiện sử dụng.
Chương 2: Thiết kế sơ đồ nguyên lý và mạch nguyên lý.
Chương 3:Thiết kế mạch in và chương trình điều khiển.
SVTH:
Sơn
2
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
MỤC LỤC
LỜI NÓI ĐẦU
TÓM TẮT ĐỀ TÀI
MỤC LỤC
DANH SÁCH BẢNG BIỂU
DANH SÁCH HÌNH VẼ
CHƯƠNG 1: TỔNG QUAN VỀ SÓNG SIÊU ÂM VÀ ĐẶC TÍNH CÁC
LINH KIỆN SỬ DỤNG
Sóng siêu âm
1.1
1.1.1 Tổng quan
1.1.2 Các tính chất của siêu âm
1.1.3 Ứng dụng của siêu âm
Đặc tính các linh kiện sử dụng
1.2
1.2.1 Cảm biến siêu âm
1.2.2 Module nRF24L01+
1.2.3 Tổng quan PIC 16F887
1.2.4 LCD text 16x2
1.2.5 IC Max232
CHƯƠNG 2:THIẾT KẾ SƠ ĐỒ NGUYÊN LÝ VÀ MẠCH NGUYÊN
LÝ
2.3
2.1
Ý tưởng thiết kế
2.2
Sơ đồ khối hệ thống
Chức năng của từng khối trong hệ thống
2.4
SVTH:
Sơn
3
Nguyên lý hoạt động
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Mạch nguyên lý của hệ thống
2.5
2.5.1 Khối cung cấp nguồn
2.5.2 Khối xử lý trung tâm 1
2.5.3 LCD hiển thị
2.5.4 Khối Max232
2.5.5 Khối xử lý trung tâm 2
2.5.6 Module nRF24L01+
CHƯƠNG 3: THIẾT KẾ MẠCH IN VÀ CHƯƠNG TRÌNH ĐIỀU
KHIỂN
3.1
Thi công mạch in
3.2
Thiêt kế phần mềm
3.2.1 Xây dựng chương trình cho PIC
3.2.2 Xây dựng chương trình nhận dữ liệu trên máy tính
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
TÀI LIỆU THAM KHẢO
PHỤ LỤC 1
PHỤ LỤC 2
SVTH:
Sơn
4
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
DANH SÁCH BẢNG BIỂU
Bảng 1. 1 Vận tốc của siêu âm trong một số vật liệu[1]
Bảng 1. 2 Chức năng các chân LCD
Bảng 1. 3 Mã lệnh điều khiển LCD
DANH SÁCH HÌNH VẼ
Hình 1. 1 Các dải tần số âm thanh
Hình 1. 2 Khúc xạ sóng
Hình 1. 3 Cấu trúc của cảm biến siêu âm kiểu hở
Hình 1. 4 Mô phỏng quá trình rung
Hình 1. 5 Cấu trúc cảm biến siêu âm kiểu kín
Hình 1. 6 Cấu tạo cảm biến siêu âm cao tần
Hình 1. 7 Nguyên lý TOF
Hình 1. 8 Hiện tượng Forecasting
Hình 1. 9 Hiện tượng đọc chéo
Hình 1. 10 Mô-đun cảm biến siêu âm SRF05
Hình 1. 11 Sơ đồ timing SRF05 – chế độ1
Hình 1. 12 Sơ đồ timing SRF05 – chế độ 2
Hình 1. 13 Module nRF24L01+
Hình 1. 14 Sơ đồ khối nRF24L01+
Hình 1. 15 Sơ đồ trạng thái hoạt động của nRF24L01+
Hình 1. 16 Sơ đồ chân vi điều khiển PIC 16F887
Hình 1. 17 Sơ đồ khối PIC 16F887
Hình 1. 18 Sơ đồ bộ nhớ chương trình PIC 16F887
SVTH:
Sơn
5
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 19 Tổ chức bộ nhớ của PIC 16F887
Hình 1. 20 LCD 16x2
Hình 1. 21 IC Max232
Hình 1. 22 Sơ đồ kết nối với IC Max232
Hình 2. 1 Sơ đồ nguyên lý phần xử lý tín hiệu siêu âm
Hình 2. 2 Sơ đồ nguyên lý phần nhận dữ liệu qua RF và gửi lên máy tính
Hình 2. 3 Mạch nguyên lý nguồn ra 12V, 9V, 5V
Hình 2. 4 Mạch nguyên lý nguồn 3.3V
Hình 2. 5 Mạch nguyên lý khối xử lý tín hiệu nhận từ SRF05
Hình 2. 6 Mạch reset vi điều khiển
Hình 2. 7 Mạch nguyên lý LCD
Hình 2. 8 Mạch nguyên lý Max232
Hình 2. 9 Mạch nguyên lý giao tiếp với máy tính
Hình 2. 10 Sơ đồ nguyên lý module nRF23L01+
Hình 3. 1 Phần mềm Altium Designer
Hình 3. 2 Giao diện thiết kế mạch nguyên lý của chương trình
Hình 3. 3 Giao diện thiết kế mạch nguyên lý của chương trình
Hình 3. 4 Mạch in SRF05
Hình 3. 5 Mạch hiển thị LCD
Hình 3. 6 Mạch nguồn 5V
Hình 3. 7 Mạch nguồn 3.3V
Hình 3. 8 Mạch giao tiếp với máy tính
Hình 3. 9 Sơ đồ thuật toán chương trình chính PIC1
SVTH:
Sơn
6
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 10 Sơ đồ thuật toán chương trình đọc khoảng cách
Hình 3. 11 Sơ đồ thuật toán chương trình PIC2
Hình 3. 12 Phần mềm CCS
Hình 3. 13 Giao diện chương trình giao tiếp
CHƯƠNG 1: TỔNG QUAN VỀ SÓNG SIÊU ÂM VÀ ĐẶC TÍNH
CÁC LINH KIỆN SỬ DỤNG
1.1 Sóng siêu âm
1.1.1 Tổng quan
Siêu âm là âm thanh có tần số cao hơn tần số tối đa mà tai người nghe
thấy được. Tần số tối đa này tùy thuộc vào từng người, nhưng thông thường
nó vào khoảng 20kHz.
Hình 1. 1 Các dải tần số âm thanh
Siêu âm có thể lan truyền trong nhiều môi trường tương tự như môi
trường của âm thanh, như không khí, các chất lỏng và chất rắn với tốc độ
bằng tốc độ âm thanh.
SVTH:
Sơn
7
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Siêu âm có thể tạo ra từ một số loại loa, từ dao động của tinh thể áp
điện. Trong tự nhiên, nhiều loài động vật có thể tạo ra hoặc cảm nhận được
siêu âm, ví dụ như dơi là loài có khả năng tạo ra sóng siêu âm và cảm nhận
siêu âm để xác định vật thể trong không gian. Cá voi, cá heo dùng siêu âm
để liên lạc và định vị đối tượng xung quanh.
1.1.2 Các tính chất của siêu âm
Vận tốc siêu âm
Vận tốc siêu âm truyền qua những môi trường khác nhau có vận tốc
khác nhau. Với môi trường có mật độ phân tử thấp như không khí và các chất
khí, khi bị tác động, các phân tử dịch chuyển một khoảng cách tương đối lớn
trước khi chúng tác động đến các phần tử lân cận. Trong những môi trường
đó, vận tốc truyền của sóng siêu âm là tương đối thấp. Trong chất rắn, sự
chuyển động của các phân tử bị hạn chế, vận tốc siêu âm là tương đối cao.
Vận tốc siêu âm trong chất lỏng nằm ở giữa vận tốc truyền trong chất khí và
chất rắn.
Bảng 1. 1 Vận tốc của siêu âm trong một số vật liệu[1]
Môi trường truyền
SVTH:
Sơn
8
Nguyễn
Vận tốc m/s
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Nhôm
Đồng thau
Đồng nguyên chất
Vàng
Chì
Thép nhẹ
Niken
Bạch kim
Bạc
Thiếc
Nylon
Nhựa Perspex
Silic
PZT( vật liệu áp điện)
Glycerol
Dầu nhờn
Nước
Không khí
6400
4400
4800
3200
2200
6000
5600
3300
3700
3400
2600
2700
6000
4800
1900
1400 – 1800
1500
330
Phản xạ
Mức độ phản xạ âm phụ thuộc vào âm trở của môi trường truyền âm.
Âm trở của môi trường phụ thuộc vào mật độ môi trường ρ và vận tốc
của siêu âm c trong môi trường đó:
(1.1)
Trong đó:
Z – là âm trở (kg/m2s)
ρ – là mật độ môi trường
(kg/m3)
c – là vận tốc truyền âm trong môi trường (m/s)
SVTH:
Sơn
9
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Với sóng siêu âm vuông góc với mặt phẳng phân cách giữa hai môi
trường, ta có hệ số phản xạ
được tính theo công thức:
(1.2)
Trong đó:
Z1, Z2 – là âm trở của 2 môi trường.
– là hệ số phản xạ.
Một phần năng lượng của chùm tia siêu âm truyền từ môi trường 1 qua
môi trường 2 thể hiện qua hệ số truyền qua
được tính theo công thức:
(1.3)
Với những bề mặt có âm trở lớn, phần lớn năng lượng siêu âm bị phản
xạ và chỉ có một phần nhỏ truyền qua mặt phân cách giữa hai môi trường.
Khúc xạ
Khi một chùm tia siêu âm tới mặt phân cách giữa hai môi trường theo
một góc xiên, chùm tia này sẽ bị đổi hướng khi qua mặt phân cách và được
gọi là khúc xạ.
SVTH:
Sơn
10
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 2 Khúc xạ sóng
Mối quan hệ giữa góc tới và góc khúc xạ được mô tả bằng định luật
Snell:
𝑠𝑠𝑠 𝑠ó𝑠 𝑠ớ𝑠
𝑠𝑠𝑠 𝑠ó𝑠 𝑠ℎú𝑠 𝑠ạ
=
𝑠ậ𝑠 𝑠ố𝑠 â𝑠 𝑠ℎ𝑠𝑠ℎ 𝑠ô𝑠 𝑠𝑠ườ𝑠𝑠 𝑠ớ𝑠
𝑠ậ𝑠 𝑠ố𝑠 â𝑠 𝑠ℎ𝑠𝑠ℎ 𝑠ô𝑠 𝑠𝑠ườ𝑠𝑠 𝑠ℎú𝑠 𝑠ạ
(1.4)
Với: i – là góc tới
r – là góc khúc xạ
Tán xạ
SVTH:
Sơn
11
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hiện tượng này xảy ra khi chùm tia siêu âm gặp các cấu trúc nhỏ (có
kích thước << λ) hoặc với bề mặt không đồng đều, khi đó tia siêu âm sẽ bị
tán xạ theo mọi hướng và chỉ có một phần nhỏ tới được đầu thu.
Sự suy giảm siêu âm
Tất cả các dạng tương tác: phản xạ, tán xạ, khúc xạ, hấp thụ… đều làm
ảnh hưởng đến cường độ chùm siêu âm. Sự hấp thu năng lượng là quá trình
làm suy giảm chùm tia siêu âm nhiều nhất và năng lượng bị hấp thụ này
thường chuyển thành nhiệt năng.
1.1.3 Ứng dụng của siêu âm
Sóng siêu âm ngày càng được sử dụng rộng rãi trong các lĩnh vực khác
nhau của đời sống, khoa học và công nghệ.
Trong công nghiệp, một số ứng dụng của siêu âm như dùng để kiểm tra
chất lượng sản phẩm: siêu âm kiểm tra độ dày, độ đồng đều, phát hiện khuyết
tật trong vật đúc, siêu âm phát hiện vị trí, đường kính cốt thép và chiều dày
lớp bê tông bảo vệ trong bê tông cốt thép; siêu âm dùng trong gia công vật
liệu cứng; hàn bằng siêu âm bằng cách sử dụng các dao động siêu âm tần số
cỡ 20kHz được kích thích bởi máy phát dao động điện công suất lớn tác động
vào một vùng nhỏ của mối hàn làm cho vùng hàn trở nên dẻo sau đó dùng
lực ép đẩy các chi tiết cần nối lại với nhau tương tự như phương pháp hàn
ma sát...
Trong lĩnh vực nông nghiệp, siêu âm được dùng để xử lý hạt giống một
cách hiệu quả. “Sóng siêu âm làm thay đổi cấu trúc phân tử, thay đổi các
SVTH:
Sơn
12
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
thành phần của các acide amyl, đồng thời làm tăng nhanh quá trình oxy hóa
hạt giống”[4] . Sóng siêu âm được dùng để xử lý đất do siêu âm có tác dụng
kích thích phát triển đối với vi sinh vật trong đất làm tăng tỷ lệ mùn hoặc
tiêu diệt vi sinh vật có hại tồn tại trong đất.
Trong y học, siêu âm dùng để chẩn đoán các khối u trong cơ thể bằng
cách chiếu một chùm siêu âm định hướng rất hẹp vào cơ thể và ghi nhận tín
hiệu phản hồi từ đó xác định được vị trí cũng như mức độ phát triển của khối
u. Sóng siêu âm được dùng điều trị bệnh một cách có hiệu quả như các bệnh
viêm dây thần kinh, viêm khớp, các bệnh về mắt…
1.2 Đặc tính các linh kiện sử dụng
1.2.1 Cảm biến siêu âm
1.2.1.1 Tổng quan cảm biến siêu âm
Đầu dò cảm biến siêu âm có nhiệm vụ phát ra chùm tia siêu âm và thu
nhận chùm tia siêu âm phản xạ ngược lại. Dựa trên hiện tượng áp điện, người
ta có thể chế tạo được các đầu dò siêu âm từ các phần tử áp điện.
1.2.1.2 Phân loại và cấu tạo cảm biến
Cảm biến siêu âm kiểu hở
Hình 1.3 thể hiện sơ đồ cấu trúc của một đầu dò cảm biến siêu âm kiểu
hở, một bộ rung tích hợp được gắn cố định lên đế. Bộ rung tích hợp này bao
gồm một hốc cộng hưởng và một bộ rung cấu tạo từ một đĩa kim loại và một
phiến gốm áp điện. Hốc cộng hưởng có hình nón để tăng hiệu quả của việc
SVTH:
Sơn
13
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
phát sóng siêu âm cũng như tăng hiệu quả tập trung sóng siêu âm ở trung
tâm bộ rung.
Hình 1. 3 Cấu trúc của cảm biến siêu âm kiểu hở
SVTH:
Sơn
14
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 4 Mô phỏng quá trình rung
Cảm biến siêu âm kiểu kín
SVTH:
Sơn
15
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 5 Cấu trúc cảm biến siêu âm kiểu kín
Bộ cảm biến siêu âm để sử dụng ngoài trời được đóng gói kín để bảo
vệ khỏi sương, mưa và bụi. Thành phần gốm áp điện được gắn phía trong
trên đỉnh của vỏ hợp kim. Đường dẫn của vỏ được bọc lớp vỏ nhựa.
Cảm biến siêu âm cao tần
SVTH:
Sơn
16
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 6 Cấu tạo cảm biến siêu âm cao tần
Được sử dụng trong robot công nghiệp, độ chính xác đạt đến 1mm và
có độ nhạy cao. Do độ cung rung của bộ cong thông thường không có khả
năng thu được tần số cao hơn 70kHz trong thực tế, do đó chế độ rung dọc
theo chiều dày của lớp vật liệu gốm áp điện được sử dụng để phát hiện tần
số cao. Trong trường hợp này, sự kết hợp của trở kháng âm của gốm áp điện
và không khí trở nên quan trọng. Trở kháng âm của gốm áp điện là 2.6×10 7
kg/m2s, trong khi đó của không khí là 4.3×102 kg/m2s. Sự khác biệt này gây
tổn hao lớn trên bề mặt phát rung của gốm áp điện.
Phối hợp trở kháng âm với không khí được thực hiện bằng cách ghép
thêm một lớp vật liệu đặc biệt với gốm áp điện, được gọi là lớp phối hợp trở
SVTH:
Sơn
17
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
kháng âm. Cấu trúc này cho phép các cảm biến siêu âm có thể làm việc với
các tần số lên đến vài trăm kHz.
1.2.1.3 Nguyên lý TOF (Time Of Flight)
Hình 1. 7 Nguyên lý TOF
Nguyên lý TOF (Time Of Flight) là nguyên lý đo khoảng cách bằng
thời gian truyền của sóng. Phương pháp này được đặc biệt ứng dụng với các
thiết bị sử dụng sóng siêu âm do vận tốc di chuyển của sóng trong không khí
SVTH:
Sơn
18
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
và trong các vật liệu khác tương đối chậm, và người ta có thể đo được khoảng
cách với sai số nhỏ (khoảng 343m/s trong không khí).
Phương pháp này không được dùng trong các thiết bị thu nhận sóng
điện từ, vì vận tốc sóng điện từ rất cao bằng với vận tốc ánh sáng (300.000
km/s).
Khoảng cách từ thiết bị phát đến chướng ngại vật được tính bằng vận
tốc của sóng trong môi trường tương ứng nhân với một nửa thời gian truyền
của sóng.
(1.5)
Trong đó:
d – là khoảng cách cần đo (m).
v – là vận tốc siêu âm trong môi trường truyền sóng (m/s).
t – là thời gian từ lúc sóng phát đi đến lúc sóng được ghi
nhận lại (s).
Phương pháp này có một nhược điểm là khi sóng phát ra, ta không quản
lý được các sóng tán xạ và phản xạ, chỉ biết rằng đa số năng lượng sóng phản
xạ tập trung vào tia phản xạ theo nguyên lý góc tới bằng góc phản xạ.
1.2.1.4 Các sai số nhiễu phổ biến đối với cảm biến siêu âm
❖ Hiện tượng Forecasting
SVTH:
Sơn
19
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 8 Hiện tượng Forecasting
Hiện tượng Forecasting là hiện tượng phản xạ góc sai lệch của cảm
biến. Trong nguyên lý TOF, để có khoảng cách đúng, cảm biến siêu âm phải
hướng vuông góc với bề mặt chướng ngại vật cần đo. Tuy nhiên, các chướng
ngại vật không phải bao giờ cũng phẳng, mịn, nên tia phản xạ có thể không
tương ứng với góc tới, các chùm phản xạ này có năng lượng phản xạ thấp
hơn. Tuy vậy, ở một khoảng cách nào đó, cảm biến siêu âm vẫn có thể ghi
nhận được những tín hiệu phản xạ này. Do đó, thông số đọc về của cảm biến
siêu âm bị lệch do góc mở của cảm biến siêu âm lớn.
❖ Hiện tượng đọc chéo Crosstalk
Hiện tượng đọc chéo là hiện tượng mà cảm biến siêu âm này ghi nhận
tín hiệu phản xạ hoặc trực tiếp từ cảm biến siêu âm khác, hoặc sau quá trình
sóng siêu âm truyền đi và phản xạ qua các bề mặt quay lại cảm biến một cách
không mong muốn.
SVTH:
Sơn
20
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 9 Hiện tượng đọc chéo
SVTH:
Sơn
21
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.1.5 Cảm biến siêu âm SRF05
Hình 1. 10 Mô-đun cảm biến siêu âm SRF05
Cảm biến siêu âm SRF05 là một loại cảm biến khoảng cách dựa trên
nguyên lý thu phát siêu âm. Cảm biến gồm một bộ phát và một bộ thu sóng
siêu âm. Sóng siêu âm từ đầu phát truyền đi trong không khí, gặp vật cản
(vật cần đo khoảng cách) sẽ phản xạ ngược trở lại và được đầu thu ghi lại.
Cảm biến siêu âm SRF05 (SRF05) là một bước cải tiến từ SRF04 và đã
được thết kế lại để tăng tính linh hoạt và phạm vi hoạt động cùng với đó là
giảm chi phí. Phạm vi đo được của SRF05 có thể lên đến 4 mét. Một chế độ
hoạt động mới (nối chân Out xuống đất) cho phép SRF05 sử dụng một chân
cho cả Trigger và Echo.
Các chế độ hoạt động của SRF05:
❖ Chế độ 1: Tách chân Trigger và Echo dùng riêng
SVTH:
Sơn
22
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Ở chế độ này, hai chân Trigger và Echo sử dụng riêng biệt, và đây là
chế độ sử dụng đơn giản nhất. Để sử dụng chế độ này chỉ cần để chân Out
không kết nối – SRF05 có điện trở nội kéo lên trên chân này.
Hình 1. 11 Sơ đồ timing SRF05 – chế độ1
❖ Chế độ 2: Sử dụng chung chân Trigger và Echo
Chế độ này sử dụng một chân cho cả tín hiệu Trigger và Echo, và được
thết kế để tiết kiệm chân cho vi điều khiển. Để sử dụng chế độ này, kết nối
chân Out xuống 0V chân Ground. Tín hiệu Echo sẽ được trả về trên cùng
một chân với tín hiệu Trigger. Sau 700 µs kể từ lúc kết thúc tín hiệu điều
khiển, từ chân Trigger – Echo có thể đọc ra một xung mà độ rộng tỉ lệ với
khoảng cách từ cảm biến tới vật thể.
SVTH:
Sơn
23
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 12 Sơ đồ timing SRF05 – chế độ 2
❖ Xác định khoảng cách từ tín hiệu do SRF05 trả về
Để đọc được tín hiệu từ cảm biến SRF05, ta cần kích một xung có độ
rộng tối thiểu 10µs trên chân Trigger. SRF05 sẽ phát ra 8 chu kỳ sóng siêu
âm với tần số 40kHz và kéo chân Echo lên mức cao (hoặc chân Trigger ở
chế độ 2). Sau đó sẽ chờ tín hiệu phản hồi, ngay khi có tín hiệu phản hồi chân
Echo được kéo xuống thấp. Bằng cách đo thời gian chân Echo ở mức cao ta
xác định được thời gian từ lúc phát sóng đi đến khi nhận tín hiệu truyền về.
Nếu không xác định được vật cản, chân Echo sẽ được kéo xuống thấp sau 30
ms.
SRF05 trả về xung tỷ lệ với khoảng cách. Nếu độ rộng của xung được
đo trong thời gian t tính bằng µs, lấy t/58 ta nhận được khoảng cách tính
bằng cm, hoặc t/148 ta nhận được khoảng cách tính bằng inch.
SVTH:
Sơn
24
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
(1.6)
Với:
d – là khoảng cách cần đo
t – là thời gian chân Echo ở mức cao (µs)
SRF05 có thể đọc tín hiệu sau mỗi 50 ms hoặc 20 lần trong một giây.
Do đó, cần chờ 50 ms trước khi kích xung chân trigger cho lần đọc tiếp theo,
ngay cả khi cảm biến xác định một vật ở gần với xung phản hồi ngắn. Điều
này đảm bảo các sóng siêu âm phát ra trước đó không gây sai số ở lần đọc
kế tiếp.
1.2.2 Module nRF24L01+
1.2.2.1 Giới thiệu về nRF24L01+
Module nRF24L01+ là bộ thu phát được thiết kế hoạt động trong băng
tần số miễn phí ISM từ 2.4 GHz đến 2.4835 GHz.
nRF24L01+ sử dụng giao tiếp SPI để giao tiếp với vi điều khiển. Các
thanh ghi liên quan đến hoạt động và cấu hình nRF24L01+ có thể truy cập
và thiết lập qua giao tiếp SPI.
SVTH:
Sơn
25
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 13 Module nRF24L01+
Sử dụng giao thức Enhanced ShockBurst (ESB) để giao tiếp giữa các
module nRF24L01+ với nhau. Ngoài ra cho phép giao tiếp và các module
khác sử dụng giao thức ESB như: nRF2401A, nRF2402, nRF24E1…
Bộ FIFOs nội đảm bảo luồng dữ liệu thông suốt giữa việc truyền dữ liệu
qua sóng vô tuyến và dữ liệu gửi đến module từ hệ thống vi điều khiển.
Tốc độ truyền dữ liệu 250kbps, 1Mbps và 2Mbps. Tốc độ truyền cao
kết hợp với hai chế độ tiết kiệm năng lượng giúp nRF20L01+ thích hợp với
các hệ thống có mức điện năng thấp.
1.2.2.2 Một số tính năng của module
Radio
Hoạt động ở dải tần số 2.4GHz
126 kênh RF
SVTH:
Sơn
26
Truyền nhận dữ liệu 2 chiều
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Điều chế GFSK
Tốc độ truyền 250 kbps, 1Mbps và 2Mbps
Bộ truyền
Công suất đầu ra khả trình: 0, –6, –12, hoặc –18dBm
Dòng ra tại 0dBm là 11.3mA
Bộ thu
Bộ khuếch đại tự động (AGC) giúp tăng phạm vi hoạt động
Bộ lọc kênh tích hợp
Quản lý nguồn
Bộ điều chỉnh điện áp tích hợp, hỗ trợ nguồn vào từ 1.9V – 3.6V
Điện năng tiêu thụ thấp ở các chế độ chờ: 26µA ở chế độ
Standby – I, 900nA chế độ ngủ
Giao tiếp ngoại vi
Giao tiếp SPI tốc độ tối đa 10Mbps
Chịu được điện áp vào 5V trên các chân giao tiếp
SVTH:
Sơn
27
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.2.3 Sơ đồ khối nRF24L01+
Hình 1. 14 Sơ đồ khối nRF24L01+
SVTH:
Sơn
28
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.2.4 Các chế độ hoạt động của nRF24L01+
SVTH:
Sơn
29
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
SVTH:
Sơn
30
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Không xác
định
Hình 1. 15 Sơ đồ trạng thái hoạt động của nRF24L01+
Chế độ Power down
SVTH:
Sơn
31
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Tất cả giá trị của thanh ghi được duy trì, giao tiếp SPI vẫn hoạt động,
cho phép thay đổi cấu hình và truy cập vào giá trị các thanh ghi. Chế độ
Power down được kích hoạt bằng cách thay đổi giá trị bit PWR_UP trong
thanh ghi CONFIG về giá trị 0.
Chế độ Standby
Chế độ Standby – I
Bằng cách thiết lập giá trị bit PWR_UP trong thanh ghi CONFIG lên 1,
chế độ Standby – I được kích hoạt. Chế độ này được sử dụng để tiết kiệm
điện năng tiêu thụ trong khi vẫn duy trì được việc khởi động thiết bị nhanh.
Trong chế độ này chỉ có một phần của bộ dao động thạch anh hoạt động. Khi
có cạnh xuống trên chân CE, từ chế độ RX hoặc TX sẽ chuyển về chế dộ
Standby – I.
Chế độ Standby – II
Chế độ Standby – II được kích hoạt khi chân CE ở mức cao và trong
chế độ phát TX, bộ đệm TX_FIFO không chứa dữ liệu. Nếu một gói dữ liệu
mới được gửi đến bộ đệm TX_FIFO, chế độ TX được khởi động ngay lập
tức, và dữ liệu được truyền đi sau khoảng thời gian thiết lập chế độ TX thông
thường khoảng 130µs.
Chế độ nhận dữ liệu (chế độ RX)
Để module hoạt động ở chế độ nhận dữ liệu, các bit PWR_UP và bit
PRIM_RX trong thanh ghi CONFIG bằng 1, chân CE ở mức cao.
SVTH:
Sơn
32
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Trong chế độ RX, bộ giải điều chế liên tục giải mã tín hiệu nhận được
từ sóng vô tuyến và gửi dữ liệu đã giải mã về bộ xử lý baseband. Bộ xử lý
baseband liên tục kiểm tra các gói dữ liệu hợp lệ. Nếu có một gói dữ liệu hợp
lệ (một địa chỉ phù hợp, mã CRC hợp lệ) đoạn dữ liệu gốc (payload) của gói
dữ liệu được lưu trong bộ đệm RX_FIFOs. Nếu bộ đệm này đầy, dữ liệu tiếp
theo sẽ bị loại bỏ.
nRF24L01+ tiếp tục hoạt động ở chế độ nhận dữ liệu đến khi nó được
cấu hình sang chế độ Standby – I hoặc chế độ Power down.
Chế độ truyền dữ liệu (chế độ RX)
Để nRF24L01+ hoạt động ở chế độ này cần thiết đặt bit PWR_UP = 1,
bit PRIM_RX = 0, dữ liệu cần truyền chứa trong bộ đệm TX_FIFO, một xung
cao trên chân CE lớn hơn 10µs.
nRF24L01+ hoạt động ở chế độ truyền dữ liệu đến khi dữ liệu được
truyền xong. Nếu chân CE = 0, nRF24L01+ chuyển sang chế độ Standby –
I. Nếu chân CE = 1, trạng thái hoạt động tiếp theo sẽ được xác định theo
trạng thái của bộ đệm TX_FIFO. Nếu bộ đệm trống chế độ Standby – II được
kích hoạt, ngược lại dữ liệu sẽ được tiếp tục truyền đi.
1.2.2.5 Tốc độ truyền
Tốc độ truyền nhận của nRF24L01+ có thể truyền với 250kbps, 1Mbps
hoặc 2Mbps; tốc độ truyền nhận thấp hơn cho độ nhạy tốt hơn.
SVTH:
Sơn
33
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Tốc độ truyền thiết lập thông qua hai bit RF_DR_LOW và
RF_DR_HIGH trong thanh ghi RF_SETUP. Bộ truyền và bộ thu phải thiết
lập cùng tốc độ truyền nhận để giao tiếp được với nhau.
1.2.2.6 Tần số sóng vô tuyến
Tần số sóng vô tuyến được cài đặt bởi thanh ghi RF_CH theo công thức:
(1.7)
Với:
F0 – là tần số sóng
RF_CH – là kênh truyền
Bộ thu và bộ phát phải cài đặt cùng tần số để giao tiếp với nhau.
SVTH:
Sơn
34
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.3 Tổng quan PIC 16F887
1.2.3.1 Tại sao chọn PIC 16F887?
Hiện nay trên thị trường có rất nhiều họ vi điều khiển phục vụ cho mục
đích học tập, nghiên cứu, ứng dụng vào thực tiễn như AVR, ARM, 8051…
Bản thân người viết chọn họ vi điều khiển PIC để sử dụng trong đồ án
vì một số nguyên nhân sau:
● Được tìm hiểu và sử dụng vi điều khiển họ PIC trong quá trình
học tập và nghiên cứu.
● Họ vi điều khiển này tìm mua dễ dàng ở thị trường trong nước.
● Giá thành không quá đắt, phù hợp cho việc học tập nghiên cứu.
● Số lượng người sử dụng vi điều khiển PIC: ở Việt Nam cũng như
trên thế giới, họ vi điều khiển này được sử dụng và ứng dụng
rộng rãi. Điều này tạo điều kiện thuận lợi cho việc mở rộng kiến
thức về họ vi điều khiển này, dễ dàng trong việc tìm kiếm tài liệu,
giải đáp thắc mắc cũng như ứng dụng vào thực tế nhiều hơn…
● Các chương trình biên dịch, công cụ lập trình, chương trình nạp
đa dạng và được hỗ trợ từ nhà sản xuất.
● Các tính năng đa dạng của vi điều khiển PIC và các tính năng
không ngừng phát triển.
1.2.3.2 Đặc điểm vi điều khiển PIC 16F887
Một vài nét sơ lược về vi điều khiển PIC 16F887:
Tính năng ngoại vi
SVTH:
Sơn
35
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
35 chân I/O điều khiển trực tiếp độc lập:
Dòng soure/sink cao cho việc điều khiển LED
Ngắt khi thay đổi trạng trái trên chân
Lập trình điện trở kéo lên một cách độc lập
Module so sánh tương tự
Hai bộ so sánh tương tự
Khả năng lập trình điện áp tham chiếu
Có thể truy cập vào đầu và đầu ra bộ so sánh
Cổng ngoại vi Timer1
Bộ chuyển đổi A/D
14 kênh chuyển đổi độ phân giải 10-bit
Timer0: bộ định thời/bộ đếm 8-bit với tỉ lệ chia khả trình
Timer1
Bộ định thời 16-bit
Chế độ đầu vào cổng ngoài
Timer2: bộ định thời/bộ đếm 8-bit
Module PWM+
Module PWM độ phân giải 10-bit với 1, 2 hoặc 4 kênh
có khả năng lập trình “dead time”, tần số tối đa
20kHz.
Cơ chế điều khiển đầu ra PWM
SVTH:
Sơn
36
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Module USART tăng cường
Hỗ trợ giao tiếp RS-485, RS-232 và LIN 2.0
Tự động xác định tốc độ Baud
Tự động đánh thức với bit Start
Khả năng lập trình trực tiếp trên mạch ứng dụng thông qua hai
chân (ICSPTM)
SVTH:
Sơn
37
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.3.3 Sơ đồ chân vi điều khiển PIC 16F887
Hình 1. 16 Sơ đồ chân vi điều khiển PIC 16F887
Chức năng các chân vi điều khiển PIC 16F887
Chân RA0/AN0/ULPWU/C12IN0- : chân I/O thông thường/
đầu vào A/D kênh 0/ đầu vào đánh thức điện áp thấp/ đầu vào
âm của bộ so sánh C1 hoặc C2.
RA1/AN1/C12IN1- : chân I/O thông thường/ đầu vào A/D kênh
1/ đầu vào âm của bộ so sánh C1 hoặc C2.
SVTH:
Sơn
38
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
RA2/AN2/VREF-/CVREF/C2IN+: chân I/O thông thường/ A/D
kênh 2/ đầu vào điện áp tham chiếu âm bộ A/D/ đầu ra điện
áp tham chiếu bộ so sánh/ đầu vào dương C1 bộ so sánh.
RA4/T0CKI/C1OUT: chân I/O thông thường/ đầu vào xung
nhịp Timer0/ đầu vào C1 bộ so sánh.
RA5/AN4/SS/C2OUT: chân I/O thông thường/ A/D kênh 4/ đầu
vào chọn chip Slave (SPI)/ đầu ra C2 bộ so sánh.
RA6/OSC2/CLKOUT: chân I/O thông thường/ thạch anh/ đầu
ra FOSC/4.
RA7/OSC1/CLKIN: chân I/O thông thường/ thạch anh/ đầu vào
xung ngoài/kết nối bộ dao động RC.
RB0/AN12/INT: chân I/O thông thường; ngắt thay đổi trạng thái
chân được điều khiển một cách độc lập; cho phép điện trở kéo
lên độc lập/ A/D kênh 12/ ngắt ngoại vi.
RB1/AN10/C12IN3-: chân I/O thông thường; ngắt thay đổi
trạng thái chân được điều khiển một cách độc lập; cho phép
điện trở kéo lên độc lập/ A/D kênh 10/ đầu vào C1 hoặc C2
bộ so sánh.
RB2/AN8: chân I/O thông thường; ngắt thay đổi trạng thái chân
được điều khiển một cách độc lập; cho phép điện trở kéo lên
độc lập/ A/D kênh 8.
RB3/AN9/PGM/C12IN2-: chân I/O thông thường; ngắt thay đổi
trạng thái chân được điều khiển một cách độc lập; cho phép
SVTH:
Sơn
39
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
điện trở kéo lên độc lập/ A/D kênh 9/ chân lập trình điện áp
thấp/ đầu vào âm C1 hoặc C2 bộ so sánh.
RB4/AN11: chân I/O thông thường; ngắt thay đổi trạng thái
chân được điều khiển một cách độc lập; cho phép điện trở kéo
lên độc lập/ A/D kênh 11.
RB5/AN13/T1G: chân I/O thông thường; ngắt thay đổi trạng
thái chân được điều khiển một cách độc lập; cho phép điện
trở kéo lên độc lập/ A/D kênh 13/ đầu vào cổng Timer1.
RB6/ICSPCLK: chân I/O thông thường; ngắt thay đổi trạng thái
chân được điều khiển một cách độc lập; cho phép điện trở kéo
lên độc lập/ xung nhịp cho lập trình nối tiếp.
RB7/ICSPDAT: chân I/O thông thường; ngắt thay đổi trạng thái
chân được điều khiển một cách độc lập; cho phép điện trở kéo
lên độc lập/ dữ liệu I/O ICSPTM.
RC0/T1OSO/T1CKI: chân I/O thông thường/ đầu ra bộ dao
động Timer1/ đầu vào xung nhịp cho Timer1.
RC1/T1OSI/CCP2: chân I/O thông thường/ đầu vào bộ dao động
Timer1/ Capture/So sánh/PWM2.
RC2/P1A/CCP1: chân I/O thông thường/ đầu ra PWM/
Capture/So sánh/PWM1.
RC3/SCK/SCL: chân I/O thông thường/ xung nhịp SPI/ xung
nhịp I2C.
SVTH:
Sơn
40
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
RC4/SDI/SDA: chân I/O thông thường/ đầu ra dữ liệu SPI/ đầu
vào/ra dữ liệu I2C.
RC5/SDO: chân I/O thông thường/ đầu ra dữ liệu SPI.
RC6/TX/CK: chân I/O thông thường/ chân truyền EUSART
không đồng bộ/ xung nhịp EUSART đồng bộ.
RC7/RX/DT: chân I/O thông thường/ chân nhận EUSART
không đồng bộ/ dữ liệu EUSART đồng bộ.
RD<0:4>: chân I/O thông thường.
RD5/P1B: chân I/O thông thường/ đầu ra PWM.
RD6/P1C: chân I/O thông thường/ đầu ra PWM.
RD7/P1D: chân I/O thông thường/ đầu ra PWM.
RE0/AN5: chân I/O thông thường/ A/D kênh 5.
RE1/AN6: chân I/O thông thường/ A/D kênh 6.
RE2/AN7: chân I/O thông thường/ A/D kênh 7.
RE3/MCLR/VPP: chân đầu vào/ chân reset với điện trở nội kéo
lên/ nguồn cho lập trình.
Vss, Vdd: chân nguồn cho PIC.
SVTH:
Sơn
41
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.3.4 Sơ đồ khối PIC 16F887
SVTH:
Sơn
42
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
SVTH:
Sơn
43
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 17 Sơ đồ khối PIC 16F887
SVTH:
Sơn
44
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.3.5 Tổ chức bộ nhớ
SVTH:
Sơn
45
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 18 Sơ đồ bộ nhớ chương trình PIC 16F887
Bộ nhớ chương trình
Bộ nhớ chương trình của vi điều khiển PIC 16F887 là bộ nhớ flash,
dung lượng bộ nhớ 8K word (1 word = 14-bit) có khả năng chứa được
8*1024 = 8192 lệnh.
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình cần bộ đếm
chương trình có dung lượng 13-bit (PC<12:0>). Khi vi điều khiển được reset,
bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector). Khi có ngắt
xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector).
Bộ nhớ chương trình không bao gồm bộ nhớ Stack và không được địa
chỉ hóa bởi bộ đếm chương trình.
Bộ nhớ dữ liệu :
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều
bank. Bộ nhớ dữ liệu PIC 16F887 được chia ra làm 4 bank, bao gồm các
thanh ghi mục đích chung GPR (General Purpose Register) và các thanh ghi
có chức năng đặc biệt SFG (Special Function Register). Các thanh ghi đặc
biệt SFR nằm ở 32 vị trí đầu trong mỗi bank. Các thanh ghi mục đích chung
GPR được sử dụng như RAM tĩnh, nằm ở 96 vị trí cuối mỗi bank. Vị trí các
thanh ghi từ F0h – FFh trong Bank 1, 170h – 17Fh trong Bank 2 và 1F0h –
1FFh trong Bank 3, con trỏ địa chỉ 70h – 7Fh trong Bank 0. Tất cả các RAM
khác chưa được thi hành và trả về ‘0’ khi đọc. Các bit RP<1:0> của thanh
ghi STATUS là các bit lựa chọn bank:
SVTH:
Sơn
46
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
RP1
RP0
0
0
Bank 0 được chọn
0
1
Bank 1 được chọn
1
0
Bank 2 được chọn
1
1
Bank 3 được chọn
Sơ đồ cụ thể của bộ nhớ dữ liệu PIC 16F887 như sau:
SVTH:
Sơn
47
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
SVTH:
Sơn
48
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 19 Tổ chức bộ nhớ của PIC 16F887
Các thanh ghi chức năng đặc biệt
Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả
thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cần
truy xuất trong bộ nhớ dữ liệu.
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc
và ghi, cho phép điều khiển chức năng pull-up của các chân trong PORTB,
xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ
đếm Timer0.
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh): thanh ghi cho phép đọc
và ghi, chứa các bit điều khiển và các bit cờ hiệu khi Timer0 bị tràn, ngắt
ngoại vi RB0/INT và ngắt interrput-on-change tại các chân của PORTB.
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của
các khối chức năng ngoại vi.
SVTH:
Sơn
49
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối
chức năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ
EEPROM.
Thanh ghi PIR1 (0Ch): chứa cờ ngắt của các khối chức năng ngoại vi,
các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1.
Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại
vi, các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi
PIE2.
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế
độ reset của vi điều khiển.
SVTH:
Sơn
50
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.3.6 Các cổng nhập xuất PIC 16F887
PORTA bao gồm 8 chân I/O. Đây là các chân “hai chiều” (bidirectional
pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này được điều khiển
bởi thanh ghi TRISA (địa chỉ 85h). Bên cạnh đó PORTA còn là ngõ vào của
bộ ADC, bộ so sánh, ngõ vào xung clock của Timer0 và ngõ vào của bộ giao
tiếp MSSP (Master Synchronous Serial Port).
Các thanh ghi SFR liên quan đến PORTA bao gồm: ADCON0, ANSEL,
CM1CON0, CM2CON0, CM2CON1, PCON, OPTION_REG, PORT1,
SSPCON, TRISA.
PORTB gồm 8 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá
trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau.
PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn được
tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến PORTB bao gồm: ANSELH,
CCP1CON, CM2CON1, IOCB, INTCON, OPTION_REG, PORTB, TRISB,
WPUB.
PORTC gồm 8 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh,
bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Các thanh ghi điều khiển liên quan đến PORTC: CCP1CON,
CCP2CON, PORTC, PSTRCON, RCSTA, SSPCON, T1CON, TRISC.
SVTH:
Sơn
51
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
PORTD gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là
TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel
Slave Port).
Các thanh ghi liên quan đến PORTD bao gồm: PORTD, PSTRCON,
TRISD.
PORTE gồm 4 chân I/O. Thanh ghi điều khiển xuất nhập tương ứng là
TRISE. Các chân của PORTE có ngõ vào tương tự.
Các thanh ghi liên quan đến PORTE bao gồm: PORTE, TRISE, ANSEL.
1.2.3.7 Các bộ định thời
Timer0
Module Timer0 là một bộ định thời/ bộ đếm 8-bit với các tính năng:
● Thanh ghi định thời/ bộ đếm 8-bit.
● Bộ chia (prescaler) 8-bit (sử dụng chung với Watchdog Timer)
● Lập trình chọn nguồn xung clock nội hoặc nguồn xung ngoài.
● Lập trình chọn cạnh của xung ngoài.
● Xảy ra ngắt khi tràn.
Các thanh ghi liên quan đến hoạt động của Timer0 gồm: TMR0,
INTCON, OPTION_REG, TRISA.
Timer1
Module Timer1 là bộ định thời/ bộ đếm 16-bit với các chức năng như:
● Cặp thanh ghi định thời/ bộ đếm 16-bit (TMR1L:TMR1H).
SVTH:
Nguyễn
Hoài
Sơn
52
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
● Lập trình chọn nguồn xung clock nội hoặc nguồn xung ngoài.
● Tùy chọn bộ dao động tần số thấp (LP).
● Ngắt khi tràn timer.
● Đánh thức vi điều khiển khi tràn
Các thanh ghi liên quan đến hoạt động của Timer1 gồm: CM2CON1,
INTCON, PIE1, PIR1, TMR1H, TMR1L, T1CON.
Timer2
Timer2 là bộ định thời 8-bit và được hỗ trợ bởi hai bộ chia tần số
prescaler và postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2.
Timer2 có một thanh ghi PR2. Giá trị đếm trong thanh ghi TMR2 sẽ tăng từ
00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h. Khi reset
thanh ghi PR2 được nhận giá trị mặc định FFh.
Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức
chia từ 1:1 đến 1:16 để tạo ra một ngắt TMR2.
Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó
Timer2 còn đóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP.
Các thanh ghi liên quan đến Timer2 bao gồm: INTCON, PIE1, PIR1,
TMR2, T2CON.
1.2.3.8 Ngắt (interrupts)
PIC 16F887 có nhiều nguồn tạo ra hoạt động ngắt được điều khiển bởi
thanh ghi INTCON (bit GIE). Bên cạnh đó mỗi ngắt còn có một bit điều khiển
SVTH:
Sơn
53
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
và cờ ngắt riêng. Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều
kiện ngắt xảy ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắt
vẫn phụ thuộc vào bit GIE và các bit điều khiển khác. Bit điều khiển ngắt
RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn chứa
bit cho phép các ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm trong thanh
ghi PIE1 và PIE2. Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2.
Trong một thời điểm chỉ có một chương trình ngắt được thực thi,
chương trình ngắt được kết thúc bằng lệnh RETFIE. Khi chương trình ngắt
được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương
trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ
đến địa chỉ 0004h. Lệnh RETFIE được dùng để thoát khỏi chương trình ngắt
và quay trở về chương trình chính, đồng thời bit GIE cũng sẽ được set để cho
phép các ngắt hoạt động trở lại. Các cờ hiệu được dùng để kiểm tra ngắt nào
đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếp
tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt
xảy ra.
Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay
đổi trạng thái các chân của PORTB (PORTB Interrupt on change), việc xác
định ngắt nào xảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra
ngắt.
Trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trình
được lưu vào trong Stack, trong khi một số thanh ghi quan trọng sẽ không
được lưu và có thể bị thay đổi giá trị trong quá trình thực thi chương trình
SVTH:
Nguyễn
Hoài
Sơn
54
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
ngắt. Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên
xảy ra.
Ngắt ngoài INT
Ngắt này dựa trên sự thay đổi trạng thái của chân RB0/INT. Cạnh tác
động gây ra ngắt có thể là cạnh lên hay cạnh xuống và được điều khiển bởi
bit INTEDG (thanh ghi OPTION_ REG <6>). Khi có cạnh tác động thích
hợp xuất hiện tại chân RB0/INT, cờ ngắt INTF được set bất chấp trạng thái
các bit điều khiển GIE và PEIE. Ngắt này có khả năng đánh thức vi điều
khiển từ chế độ sleep nếu bit cho phép ngắt được set trước khi lệnh SLEEP
được thực thi.
Ngắt do sự thay đổi trạng thái trên các chân PortB
Các chân PORTB<7:4> được dùng cho ngắt này và được điều khiển
bởi bit RBIE (thanh ghi INTCON<4>). Cờ ngắt của ngắt này là bit RBIF.
1.2.4 LCD text 16x2
LCD 16x2 là LCD hiển thị được 2 hàng, mỗi hàng hiển thị được 16 ký
tự.
● Kích thước hiển thị: 16x2 dòng.
● Màu hiển thị: đen, trắng
● Chế độ giao tiếp: 8 hoặc 4-bit
● Cỡ chữ hiển thị: 5x7 hoặc 5x10
● Số chân: 16
SVTH:
Sơn
55
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Bảng 1. 2 Chức năng các chân LCD
Chân số
1
2
3
4
Tên
VSS
VDD
V0
RS
5
6
RW
E
7-14
D0-D7
15
16
A
K
Chức năng
Chân nối đất của LCD
Chân nối nguồn của LCD
Dùng để điều chỉnh độ tương phản cho LCD
Chân chọn thanh ghi
+ Nếu RS = 0 ở chế độ ghi lệnh
+ Nếu RS = 1 ở chế độ ghi dữ liệu
RW=1: đọc dữ liệu, RW=0: ghi dữ liệu
Chân cho phép (enable). Sau khi các tín hiệu được đặt
lên D<0:7>. Các lệnh chỉ được chấp nhận khi có một
xung cho phép của chân E.
Ở chế độ ghi: dữ liệu ở bus sẽ được LCD chuyển vào
thanh ghi ở bên trong nó khi xuất hiện một xung cạnh
xuống của chân tín hiệu E.
Ở chế độ đọc: dữ liệu sẽ được LCD xuất ra DB<0:7>
khi phát hiện cạnh lên ở chân E và dữ liệu sẽ được giữ
cho tới khi chân E xuống mức thấp.
Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin
lên LCD hoặc đọc nội dung của thanh ghi trong LCD.
Đèn LCD
Đèn LCD
Hình 1. 20 LCD 16x2
SVTH:
Sơn
56
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.4.1 Thanh ghi và tổ chức bộ nhớ
Thanh ghi
LCD có 2 thanh ghi 8-bit là thanh ghi INSTRUCTION REGISTER (IR)
và DATA REGISTER (DR). Thanh ghi IR là thanh ghi chứa mã lệnh điều
khiển LCD và là thanh ghi chỉ ghi, thanh ghi DR là thanh ghi chứa dữ liệu.
Cả hai thanh ghi đều được nối với đường dữ liệu D<0:7> của LCD, và được
điều khiển lựa chọn qua chân RW và RS.
Bộ nhớ
Có 3 loại bộ nhớ, đó là bộ nhớ RAM dữ liệu cần hiển thị DDRAM
(Didplay Data RAM), bộ nhớ chứa ROM chứa bộ font tạo ra ký tự CGROM
(Character Generator ROM) và bộ nhớ RAM chứa bộ font tạo ra các symbol
tùy chọn CGRAM (Character Generator RAM).
Bộ nhớ DDRAM là bộ nhớ tạm chứa các ký tự cần hiển thị lên LCD,
bộ nhớ này gồm có 80 ô được chia thành 2 hàng, mỗi ô có độ rộng 8-bit và
được đánh số từ 0 – 39 cho dòng 1 và từ 64 – 103 cho dòng 2. Tuy nhiên, chỉ
có 16 ô nhớ có địa chỉ từ 0 – 15 và 64 – 79 được hiển thị trên LCD.
Bộ nhớ CGROM là vùng nhớ cố định chứa định nghĩa font cho các ký
tự. Các vùng nhớ này không truy xuất trực tiếp mà chip điều khiển trên LCD
sẽ tự thực hiện khi có yêu cầu đọc font để hiển thị. Địa chỉ font của mỗi ký
tự vùng nhớ CGROM chính là mã ASCII của ký tự đó.
Bộ nhớ CGRAM là vùng nhớ chứa các ký tự do người dùng tự định
nghĩa.
SVTH:
Sơn
57
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2.4.2 Điều khiển LCD
Các chân điều khiển LCD gồm RS, RW và E.
Chân RS: chân lựa chọn thanh ghi. Nếu RS = 0, thanh ghi IR được chọn
và ngược lại thanh ghi DR được lựa chọn.
Chân RW: lựa chọn việc đọc và ghi. RW = 0, dữ liệu được ghi từ vi điều
khiển vào LCD, khi RW = 1 thì dữ liệu được đọc từ LCD ra ngoài.
Chân E: chân cho phép LCD hoạt động. Để đọc và ghi dữ liệu từ LCD
cần tạo một xung cạnh xuống trên chân E.
Tập lệnh điều khiển LCD
Bảng 1. 3 Mã lệnh điều khiển LCD
Mã (hex)
0x01
0x02
0x04
0x05
0x06
0x07
0x08
0x0A
0x0C
0x0E
0x0F
0x10
0x14
0x18
0x1C
0x80
0xC0
SVTH:
Sơn
58
Lệnh đến thanh ghi của LCD
Xóa màn hình hiển thị.
Trở về đầu dòng.
Dịch con trỏ sang trái.
Dịch con trỏ sang phải.
Dịch hiển thị sang trái.
Dịch hiển thị sang phải.
Tắt con trỏ, tắt hiển thị.
Tắt hiển thị, bật con trỏ.
Bật hiển thị, tắt con trỏ.
Bật hiển thị, nhấp nháy con trỏ.
Tắt con rỏ, nhấp nháy hiển thị.
Dịch vị trí con trỏ sang trái.
Dịch vị trí con trỏ sang phải.
Dịch toàn bộ hiển thị sang trái.
Dịch toàn bộ hiển thị sang phải.
Ép con trỏ về đầu dòng thứ nhất.
Ép con trỏ về đầu dòng thứ hai.
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
0x36
Hai dòng, ma trận 5x7.
1.2.4.3 Giao tiếp với LCD
Có hai phương pháp để giao tiếp với LCD với vi điều khiển.
Phương pháp 1: nối thẳng 8 chân của vi điều khiển với 8 chân dữ liệu
D<0:7> của LCD. Phương pháp này dữ liệu được đọc ghi nhanh, điều khiển
đơn giản nhưng hạn chế là tốn chân của vi điều khiển để giao tiếp với LCD.
Phương pháp 2: điều khiển LCD theo chế độ 4 bit. Chỉ các chân từ
D<4:7> của LCD được kết nối, 4 chân dữ liệu còn lại của LCD bỏ trống.
Các câu lệnh và dữ liệu gửi từ vi điều khiển đến LCD được chưa thành 2
phần, gọi là các nibbles. Các nibbles cao được xử lý trước, các nibbles thấp
xử lý sau. Ưu điểm của phương pháp này là tiết kiệm được số chân cho vi
điều khiển tuy nhiên việc đọc và ghi dữ liệu lại phức tạp hơn việc giao tiếp
8-bit.
1.2.5 IC Max232
Hầu hết các vi điều khiển được xây dựng theo chuẩn UARTs có thể
được sử dụng để nhận hay chuyển dữ liệu nối tiếp. Phương pháp giao tiếp
nối tiếp này đôi khi được nhắc đến như giao tiếp nối tiếp TTL (transistortransistor logic). Giao tiếp nối tiếp TTL luôn luôn nằm giữa điện áp giới hạn
0V và Vcc, thường là 5V hay 3.3V.
Cổng nối tiếp trên máy tính phù hợp với chuẩn giao tiếp RS-232
(Recommeded Standard 232). Tín hiệu của RS-232 cũng tương tự với tín
hiệu của vi điều khiển ở chỗ đều chuyển một bit trong một đơn vị thời gian,
SVTH:
Sơn
59
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
với một tốc độ truyền cụ thể. Tuy nhiên, chuẩn RS-232 mức logic cao được
gán cho điện áp âm – giá trị nào đó trong khoảng -3V tới -25V, trong khi đó
mức logic thấp lại là điện áp trong khoảng từ +3V tới +25V. Hầu hết các
máy tính cá nhân có mức tín hiệu này tại -13V tới +13V. Tín hiệu cực đại
của chuẩn RS-232 khiến nó ít bị tác động bởi nhiễu, tiếng ồn và sự suy cấp.
Điều này có nghĩa tín hiệu của RS-232 có thể truyền được các khoảng cách
vật lý xa hơn mà dữ liệu vẫn đầy đủ so với TTL.
Do vậy khi giao tiếp giữa vi điều khiển và máy tính cần phải chuyển
đổi mức điện áp cho phù hợp. IC Max 232 được dùng cho mục đích này.
Hình 1. 21 IC Max232
Max232 sử dụng nguồn 5V, do vậy ta có thể dùng chung nguồn với vi
điều khiển. Max232 có hai bộ chuyển đổi điện áp cho giao tiếp RS-232, các
bộ điều khiển được dùng cho chân truyền được gọi là T1 và T2, cho chân
nhận gọi là R1 và R2. Tuy nhiên, trong nhiều ứng dụng ta chỉ sử dụng một
bộ điều khiển.
SVTH:
Sơn
60
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 1. 22 Sơ đồ kết nối với IC Max232
CHƯƠNG 2:THIẾT KẾ SƠ ĐỒ NGUYÊN LÝ VÀ MẠCH
NGUYÊN LÝ
1.1 Ý tưởng thiết kế
Cảm biến siêu âm đo khoảng cách từ cảm biến đến vật cản, tín hiệu trả
về từ cảm biến được vi điều khiển xử lý. Dữ liệu sau khi được xử lý sẽ hiển
thị lên LCD 16x2, đồng thời dữ liệu được gửi đến vi điều khiển thứ hai thông
qua module nRF24L01+. Vi điều khiển hai sau khi nhận dữ liệu từ module
nRF24L01+ sẽ gửi dữ liệu lên máy tính cá nhân qua giao tiếp RS-232.
SVTH:
Sơn
61
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Với hoạt động trên, hệ thống sẽ được thiết kế theo hướng các module,
thuận tiện cho việc kiểm tra cũng như thay thế các bộ phận khi xảy ra hư
hỏng. Cơ bản hệ thống gồm có hai phần chính:
Phần thứ nhất:
Cảm biến siêu âm SRF05.
Bộ xử lý trung tâm sử dụng vi điều khiển.
Bộ truyền nhận dữ liệu không dây RF.
Hiển thị LCD.
Phần thứ thứ hai:
Bộ xử lý thứ 2 gửi dữ liệu lên máy tính.
Bộ truyền nhận dữ liệu không dây RF.
Cổng COM DB9
Khối nguồn dùng chung cho cả hai phần của hệ thống.
SVTH:
Sơn
62
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.2 Sơ đồ khối hệ thống
Hình 2. 1 Sơ đồ nguyên lý phần xử lý tín hiệu siêu âm
Hình 2. 2 Sơ đồ nguyên lý phần nhận dữ liệu qua RF và gửi lên máy
tính
1.3 Chức năng của từng khối trong hệ thống
Khối SRF05: có chức năng nhận tín hiệu điều khiển từ vi điều khiển
của bộ xử lý trung tâm 1. Khi có tín hiệu từ bộ xử lý trung tâm 1,
SVTH:
Sơn
63
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
SRF05 hoạt động gửi xung phát sóng siêu âm và chờ tín hiệu
phản hồi về. Khi bắt đầu phát sóng siêu âm, SRF05 sẽ kéo điện
áp trên chân Echo lên mức cao, ngay khi nhận được tín hiệu phản
hồi trở về của sóng siêu âm, chân Echo sẽ được kéo xuống thấp
và chờ tín hiệu tiếp theo từ khối xử lý trung tâm 1.
Khối xử lý trung tâm 1: hạt nhân của khối xử lý trung tâm 1 là PIC
16F887. Khối xử lý trung tâm gửi tín hiệu điều khiển cảm biến
siêu âm SRF05 sau một khoảng thời gian định trước và lặp lại.
Vi điều khiển sau khi phát xung khởi tạo SRF05 sẽ tiến hành đo
thời gian chân Echo của cảm biến SRF05 ở mức cao bằng cách
sử dụng Timer1 và ngắt ngoài trên chân RB0. Thời gian đo được
sẽ được dùng để tính toán khoảng cách từ cảm biến đến vật cản.
Khoảng cách tính toán được sẽ được gửi lên hiển thị trên LCD và
thông qua module nRF24L01+ gửi đến bộ xử lý trung tâm 2. Bộ
xử lý trung tâm thực thi việc đọc dữ liệu từ SRF05 và gửi dữ liệu
sau khi xử lý đi một cách liên tục.
nRF20L01+: module này có chức năng nhận dữ liệu từ các bộ xử lý
trung tâm tương ứng và tiến hành truyền dữ liệu đến bộ xử lý bên
kia. Ở trạng thái bình thường, nRF24L01+ được thiết lập ở chế
độ luôn nhận do khoảng thời gian truyền dữ liệu giữa các bộ xử
lý là rất ngắn.
Khối hiển thị LCD: là khối hiển thị thông tin về khoảng cách đo
SVTH:
Sơn
64
được từ bộ xử lý trung tâm 1.
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Bộ xử lý trung tâm 2: nhận tín hiệu từ module nRF24L01+ gửi về
sau khi giải mã tín hiệu thu được từ bộ xử lý 1. Dữ liệu nhận được
sẽ được gửi lên máy tính thông qua giao tiếp RS-232. Bộ xử lý
trung tâm 2 nhận tín hiệu điều khiển từ máy tính gửi xuống và
thực thi các lệnh điều khiển.
Khối COM DB9: có nhiệm vụ chuyển đổi điện áp phù hợp giữa tín
hiệu TTL và RS-232 đảm bảo dữ liệu được truyền tốt giữa máy
tính và vi điều khiển.
Khối nguồn: khối nguồn cung cấp nguồn nuôi cho toàn hệ thống.
Mức điện áp 5V cho hoạt động của vi điều khiển và các khối khác
trong hệ thống, mức điện áp 3.3V cho bộ truyền nhận dữ liệu
không dây nRF24L01+.
1.4 Nguyên lý hoạt động
Hệ thống tự động reset khi được cấp nguồn. Sau khi hệ thống reset, bộ
xử lý trung tâm 1 gửi xung khởi động cảm biến siêu âm và khởi tạo Timer1.
Khi nhận được tín hiệu khởi động, cảm biến siêu âm sẽ phát ra sóng siêu âm
đồng thời kéo chân Echo lên mức cao. Ngay khi nhận được tín hiệu phản hồi
trở lại, cảm biến siêu âm kéo chân Echo xuống mức thấp. Chân Echo của
cảm biến siêu âm được nối với chân RB0 của vi điều khiển dùng làm tín hiệu
đầu vào cho ngắt ngoài. Khi có cạnh xuống trên chân RB0, ngắt được kích
hoạt, chương trình phục vụ ngắt có nhiệm vụ đọc giá trị của Timer1 phục vụ
cho việc tính toán khoảng cách. Khoảng cách từ cảm biến siêu âm đến vật
SVTH:
Sơn
65
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
cản tỉ lệ với thời gian chân Echo ở mức cao. Dựa vào nguyên lý TOF ta có
thể tính được khoảng cách khi đo được thời gian chân Echo ở mức cao.
Khoảng cách sau khi tính toán được sẽ được hiển thị lên LCD và thông
qua module nRF24L01+ gửi đến bộ xử lý trung tâm 2. Bộ xử lý trung tâm 2
sau khi nhận được dữ liệu giải mã từ nRF24L01+ sẽ gửi giá trị khoảng cách
lên máy tính.
Việc nhận dữ liệu trên máy tính qua giao tiếp RS-232 được thực hiện
bằng chương trình viết bởi phần mềm Visual Basic 6.0.
1.5 Mạch nguyên lý của hệ thống
1.5.1 Khối cung cấp nguồn
Bất kì một hệ thống điện nào hoạt động cũng cần có một nguồn cung
cấp năng lượng cho mạch hoạt động. Khối nguồn trên có ba mức điện áp đầu
ra gồm 12V, 9V và 5V phục vụ cho mục đích khác nhau. Đầu ra 9V được
lấy ra thông qua IC LM7809, đầu vào IC LM7809 là một adapter được đưa
vào thông qua jack kết nối DC in.
SVTH:
Sơn
66
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 2. 3 Mạch nguyên lý nguồn ra 12V, 9V, 5V
Để lấy được điện áp 5V cung cấp cho hệ thống vi điều khiển, các
module liên quan ta sử dụng IC ổn áp LM7805, IC này đảm bảo cung cấp
nguồn điện áp ổn định là 5V và dòng lớn nhất tạo ra được là 1A. Các tụ trong
mạch có nhiệm vụ lọc nguồn vào và ra của các IC ổn áp.
Hình 2. 4 Mạch nguyên lý nguồn 3.3V
SVTH:
Sơn
67
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Mạch nguồn 3.3V sử dụng IC LM1117 có đầu vào điện áp 5V lấy từ
mạch nguồn 5V. Nguồn 3.3V có nhiệm vụ cung cấp nguồn cho module
nRF24L01+ hoạt động.
Trên mạch nguồn có đèn LED. Khi nguồn hoạt động cấp điện cho
mạch thì đèn sáng báo hiệu đã có điện. Đèn LED có dòng bé khoảng 20mA
và hoạt động ở mức điện áp 2.2V nên cần một điện trở R1 có giá trị 330Ω
đảm bảo LED hoạt động bình thường.
1.5.2 Khối xử lý trung tâm 1
Hình 2. 5 Mạch nguyên lý khối xử lý tín hiệu nhận từ SRF05
Trung tâm của mạch là vi điều khiển PIC 16F887. Để PIC hoạt động
cần cấp nguồn vào cả hai chân VDD và hai chân VSS.
SVTH:
Nguyễn
Sơn
68
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Chân RB0 được nối với chân Echo của SRF05, mục đích để nhận tín
hiệu trả về từ SRF05 tạo nguồn kích hoạt ngắt ngoài trên chân này.
Chân RB1 nối với chân Trigger của SRF05 gửi xung kích hoạt SRF05
phát sóng siêu âm.
PortE của vi điều khiển được nối với các chân E, RS, RW của LCD để
điều khiển hoạt động của LCD, chân RD<4:7> của PortD được nối với 4
chân dữ liệu của LCD.
Các chân PGC, PGD, MCLR được nối với cổng kết nối mạch nạp trực
tiếp trên board mà không cần tháo chip ra để nạp chương trình.
Chân PortC từ RC<0:3> và chân RD0 kết nối với module nRF24L01+
để truyền nhận dữ liệu thông qua giao tiếp SPI.
Mạch reset gồm 2 điện trở, một điện trở 10k hạn dòng vào vi điều khiển,
cấp mức điện áp 5V cho vi điều khiển hoạt động, điện trở 4k7 dùng để hạn
dòng từ tụ điện phóng trả về khi tắt nguồn. Tụ hóa 10uF được dùng để mạch
tự động reset khi mới cấp nguồn cho hệ thống. Và để reset được vi điều khiển
cần một nút bấm nối chân MCLR của điều khiển xuống GND thông qua nút
bấm (chân MCLR tích cực ở mức thấp).
SVTH:
Sơn
69
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 2. 6 Mạch reset vi điều khiển
Bộ dao động sử dụng thạch anh tần số 20MHz và 2 tụ gốm 33pF, kết
nối với hai chân OSC1 và OSC2 của vi điều khiển.
1.5.3 LCD hiển thị
Hình 2. 7 Mạch nguyên lý LCD
Mạch LCD hiển thị được thiết kế theo hướng module thuận tiện cho
việc tháo lắp và thay thế khi xảy ra hư hỏng. Điện trở 4k7 được dùng để hạn
dòng vào LCD. Biến trở 10k dùng để điều chỉnh độ tương phản của LCD.
SVTH:
Sơn
70
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
1.5.4 Khối Max232
Hình 2. 8 Mạch nguyên lý Max232
Mạch nguyên lý Max232 được thiết kế dựa trên mạch nguyên lý của
nhà sản xuất đưa ra. Cổng COM DB9 có chân số 3 là chân truyền dữ liệu
TxD và chân số 2 là chân nhận dữ liệu RxD. Để truyền được dữ liệu giữa vi
điều khiển và máy tính ta cần nối chéo chân TxD của cổng COM với chân
Rx của vi điều khiển và chân RxD nối với chân Tx của vi điều khiển.
1.5.5 Khối xử lý trung tâm 2
Chân PortC từ RC<0:3> và chân RD0 kết nối với module nRF24L01+
để truyền nhận dữ liệu thông qua giao tiếp SPI.
Các chân PGC, PGD, MCLR được nối với cổng kết nối mạch nạp trực
tiếp trên board mà không cần tháo chip ra để nạp chương trình.
Hai chân Rx và Tx được sử dụng cho giao tiếp RS-232.
SVTH:
Nguyễn
Sơn
71
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 2. 9 Mạch nguyên lý giao tiếp với máy tính
1.5.6 Module nRF24L01+
Các giá trị điện trở và tụ điện trên mạch nguyên lý được chọn theo chỉ
dẫn do nhà sản xuất chip nRF24L01+ Nordic cung cấp.
SVTH:
Sơn
72
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 2. 10 Sơ đồ nguyên lý module nRF23L01+
CHƯƠNG 3: THIẾT KẾ MẠCH IN VÀ CHƯƠNG TRÌNH ĐIỀU
KHIỂN
2.1 Thi công mạch in
Sau khi thiết kế được mạch nguyên lý ta tiến hành xây dựng mạch in.
Để hỗ trợ trong việc thiết kế mạch nguyên lý và mạch in, nhiều phần
mềm đã được phát triển có thể như: OrCad, Proteus, Eagle, Altium… Đặc
điểm chung của các phần mềm này đều được nhà sản xuất thiết kế sẵn các
bộ thư viện linh kiện và chân cắm tùy theo thiết kế của mình mà người sử
dụng chọn linh kiện và chân cắm phù hợp từ thư viện.
SVTH:
Sơn
73
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Phần mềm Altium Designer là một phần mềm của hãng Altium. Altium
là một phần mềm có giao diện thân thiện, và dễ sử dụng. Chúng ta có thể tạo
ra những sơ đồ nguyên lý, mạch in, mô phỏng hình ảnh 3D của sản phẩm,
thiết kế các hệ thống FPGA... Bộ thư viện được cập nhật từ nhà sản xuất với
các linh kiện khá đầy đủ của các hãng sản xuất như TL, Microchip…, bên
cạnh đó phần mềm còn hỗ trợ người dùng tạo thư viện các linh kiện và chân
cắm cho riêng mình cũng như chia sẻ thư viện của mình. Các hệ thống phím
tắt giúp người thiết kế thao tác nhanh và tiện lợi.
Hình 3. 1 Phần mềm Altium Designer
Điểm mạnh của Altium là có thể chỉnh sửa được các file thiết kế từ các
phần mềm khác như Orcad, Eagle… cũng như việc xuất các file ra định dạng
của các chương trình khác.
SVTH:
Sơn
74
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 2 Giao diện thiết kế mạch nguyên lý của chương trình
Sau khi thiết kế mạch nguyên lý trên phần mêm Altium, ta chuyển sang
giao diện thiết kế mạch in.
SVTH:
Sơn
75
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 3 Giao diện thiết kế mạch nguyên lý của chương trình
Mạch in các khối trong hệ thống
SVTH:
Sơn
76
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 4 Mạch in SRF05
SVTH:
Sơn
77
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 5 Mạch hiển thị LCD
Hình 3. 6 Mạch nguồn 5V
SVTH:
Sơn
78
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 7 Mạch nguồn 3.3V
Hình 3. 8 Mạch giao tiếp với máy tính
SVTH:
Sơn
79
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
2.2 Thiêt kế phần mềm
2.2.1 Xây dựng chương trình cho PIC
SVTH:
Sơn
80
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
SVTH:
Sơn
81
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 9 Sơ đồ thuật toán chương trình chính PIC1
2.2.1.1 Xác định khoảng thời gian đọc SRF05
Trong chương trình chính, khoảng thời gian vi điều khiển đọc tín hiệu
từ cảm biến siêu âm không phải là liên tục, đồng thời vi điều khiển phải thực
hiện các công việc khác nên ta chỉ đọc tín hiệu cảm biến siêu âm 2 lần trong
1s.
Trong quá trình đọc tín hiệu từ cảm biến, ta sử dụng bộ Timer0 để xác
định khoảng thời gian giữa các lần đọc. Chọn tỉ lệ chia của Timer0 bằng 256.
Như vậy, với tần số thạch anh là 20MHz, tần số f của Timer0 là:
(3.1)
Như vậy cứ sau 51.2 us, Timer0 tăng 1 đơn vị và tràn sau 13107.2 us.
Ta tính toán giá trị khởi tạo cho Timer0:
Khởi tạo giá trị đếm ban đầu Timer0 = 0, Timer0 tràn sau khoảng 13
ms, nên để đạt được giá trị 500ms ta cần một biến đếm phụ dem đếm số lần
Timer0 tràn.
(3.2)
Tuy nhiên, ta chọn giá trị khởi tạo khác cho Timer0, chọn giá trị khởi
tạo là 60. Vậy Timer0 tràn sau:
(3.3)
SVTH:
Sơn
82
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Vậy cần tăng biến dem 50 lần. Khi giá trị dem = 50, biến docSRF được
gán bằng 1 cho phép chương trình con layKhoangCach() hoạt động.
Trong chương trình con layKhoangCach() có sử dụng ngắt ngoài. Do
đó, ta không đưa chương trình layKhoangCach() vào trong chương trình
phục vụ ngắt tràn Timer0 vì dòng vi điều khiển 16F không cho phép ngắt
trong ngắt xảy ra. Để thực hiện được đọc khoảng cách ta phải dùng một biến
phụ docSRF cho phép thực hiện chương trình layKhoangCach().
SVTH:
Sơn
83
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
2.2.1.2 Xử lý tín hiệu từ cảm biến siêu âm
SVTH:
Sơn
84
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
SVTH:
Sơn
85
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 10 Sơ đồ thuật toán chương trình đọc khoảng cách
Để SRF05 bắt đầu phát sóng siêu âm, cần kích chân Trigger ở mức cao
tối thiểu 10us. Khi nhận được xung kích, vi điều khiển trên module SRF05
sẽ phát 8 chu kỳ xung có tần số 40kHz đồng thời kéo chân Echo lên mức
cao.
Để đo được thời gian chân Echo mức cao, ta sử dụng Timer1 và ngắt
ngoài của vi điều khiển PIC 16F887. Thời gian tối đa mà chân Echo ở mức
cao lên đến 30ms, nên chọn tỉ lệ chia cho Timer1 bằng 8. Như vậy tần số
thạch anh là 20MHz thì Timer1 tăng 1 đơn vị sau:
(3.4)
Thời gian tối đa mà Timer1 có thể đếm được là 104857.6 us, đáp ứng
được việc đo thời gian chân Echo ở mức cao.
Timer1 được khởi tạo với giá trị ban đầu bằng 0, ngay khi chân Echo
được kéo lên cao. Giá trị Timer1 được lấy khi chân Echo xuống thấp. Chân
Echo được nối với chân RB0, làm đầu vào cho ngắt ngoài của vi điều khiển.
Ngắt ngoài xảy ra khi có cạnh xuống. Chương trình con phục vụ ngắt ngoài
gồm 2 câu lệnh get_timer1() và en=0. Giá trị Timer1 sẽ được lưu vào biến
demTimer1 và được sử dụng để tính toán khoảng cách. en=0 đảm bảo sẽ
không có tín hiệu đọc cảm biến siêu âm được gửi đi cho đến khi giá trị của
Timer1 ở lần đọc vừa rồi được xử lý.
SVTH:
Sơn
86
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Sau 30ms, giá trị của Timer1 sẽ là
, do đó nếu giá trị
của biến demTimer1 > 18750, khoảng cách trả về là 0. Nếu demTimer1<
18750, ta tiến hành tính toán khoảng cách đo được.
thoiGian tính bằng us. Vận tốc truyền âm trong không khí là 340m/s,
từ đó ta tính được khoảng cách từ cảm biến đến vật cản.
(3.5)
Sau khi tính toán, trả về khoảng cách, biến en được gán bằng 1, chuẩn
bị cho lần đọc tiếp theo.
2.2.1.3 Hiển thị giá trị tính toán lên LCD
Thư viện điều khiển LCD, chỉ xử lý được kiểu dữ liệu là ký tự, mảng
ký tự. Do đó, giá trị khoảng cách được định dạng ở dạng số nguyên 16-bit
cần được chuyển sang chuỗi.
LCD hiển tối đa 16 ký tự trên một dòng, do đó cần một mảng str[16]
kiểu ký tự gồm 16 phần tử. Dùng hàm sprintf trong CCS in giá trị khoảng
cách lên mảng ký tự vừa khai báo.
sprintf( str, “D: %3Lucm”,khoangCach)
SVTH:
Sơn
87
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Vì biến khoangCach là kiểu nguyên 16-bit nên định dạng in trong câu lệnh
sprintf là Lu, tương ứng với long unsigned integer, lúc này mảng str có 8
phần tử bao gồm ký tự kết thúc chuỗi.
2.2.1.4 Thiết lập nRF24L01+
Thư viện điều khiển nRF24L01+ được viết dựa trên thư viện điều khiển
nRF24L01+ của nhà sản xuất viết cho 8051.
Các thiết lập thông số chung cho nRF24L01+:
● Giá trị địa chỉ truyền gồm 5 bytes trong thanh ghi địa chỉ
TX_ADDR
của
nRF24L01+.
Địa
chỉ
của
nRF:
{0x34,0x43,0x10,0x10,0x01}
● Địa chỉ nhận gồm 5 byte, ghi vào thanh ghi RX_ADDR_P0 có
địa chỉ giống với địa chỉ truyền.
● Ghi giá trị 0x01 vào thanh ghi EN_AA, cho phép tự động xác
nhận (Enable Auto ACK).
● Ghi giá trị 0x01 vào thanh ghi EN_RXADDR, sử dụng đường
truyền số 0 cho truyền nhận dữ liệu (data pipe 0). nRF24L01+ có
thể nhận dữ liệu từ 6 module nRF24L01+ khác, tuy nhiên, ta chỉ
giao tiếp với 1 module nRF nên chỉ mở đường giao tiếp số 0.
● Chọn kênh cho nRF24L01+, cả module truyền và nhận phải thiết
lập cùng kênh. Sử dụng kênh 0 bằng cách ghi giá trị 0 vào thanh
ghi RF_CH.
SVTH:
Sơn
88
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
● Thiết lập bộ nhớ đệm nhận và đệm truyền cho nRF24L01+, chọn
bộ đệm nhận và truyền có độ rộng 32 byte, ghi giá trị 32 vào
thanh ghi RX_PW_P0.
● Thiết lập tốc độ truyền và công suất của module truyền, chọn tốc
độ truyền 1Mbps, công suất nguồn phát 0dBm. Giá trị 0x07 được
ghi vào thanh ghi RF_SETUP.
Thiết lập module ở chế độ nhận, và sẵn sàng nhận dữ liệu:
● Chân CE kéo lên mức cao.
● Giá trị 0x0F được ghi vào thanh ghi CONFIG, bật nguồn cho
nRF24L01+, thiết lập chế độ nhận (bit PRIM_RX = 1), sử dụng
2 byte cho kiểm tra lỗi CRC.
Thiết lập module ở chế độ truyền dữ liệu:
● Giá trị 0x0e được ghi vào thanh ghi CONFIG, bật nguồn cho
nRF24L01+, thiết lập chế độ truyền (bit PRIM_RX = 0), sử dụng
2 byte cho kiểm tra lỗi CRC.
● Chân CE kéo lên mức cao.
Địa chỉ ô nhớ từ 0x61đến 0x9F được dùng làm bộ đệm nhận, đọc dữ
liệu nhận về ta bắt đầu đọc từ địa chỉ 0x61.
Địa chỉ ô nhớ từ 0xA0 đến 0xE0 được dùng làm bộ đệm truyền, ghi dữ
liệu cần truyền vào bộ đệm truyền và thiết lập module nRF24L01+ ở chế độ
truyền, dữ liệu sẽ được tự động truyền đi cho đến khi hết dữ liệu trong bộ
đệm truyền.
SVTH:
Sơn
89
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Gửi dữ liệu khoảng cách
Giá trị khoảng cách được chuyển thành ký tự và lưu trong mảng chuỗi
ký tự Tx_Buf bằng lệnh sprintf. Dữ liệu trong mảng Tx_Buf được ghi vào bộ
nhớ
đệm
truyền
của
SPI_Write_Buf(WR_TX_PLOAD,
nRF24L01+
tx_buf,
bằng
lệnh
TX_PLOAD_WIDTH);
WR_TX_PLOAD là địa chỉ bộ đệm truyền 0xA0, TX_PLOAD_WIDTH độ
rộng bộ nhớ đệm là 32 byte.
Đọc dữ liệu từ nRF24L01+
Dữ liệu gửi đến được nRF24L01+ giải mã và lưu trong bộ đệm nhận.
Lệnh SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH); lưu dữ
liệu nhận được vào mảng Rx_Buf và là một chuỗi.
SVTH:
Sơn
90
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 11 Sơ đồ thuật toán chương trình PIC2
2.2.1.5 Gửi dữ liệu nhận được từ nRF24L01+ lên máy tính.
Sử dụng giao tiếp RS-232 để gửi dữ liệu từ vi điều khiển PIC lên máy
tính.
Thiết lập các thông số cơ bản cho giao tiếp:
● Chân kết nối: sử dụng chân có sẵn trên vi điều khiển chân truyền
TX là PIN_C6, chân nhận dữ liệu RX là PIN_C7.
● Dữ liệu truyền 8 bits, không có bít kiểm tra chẵn lẻ
● Tốc độ Baud: chọn tốc độ 9600. Với khung truyền gồm 1 bit start,
1 bit stop và 8 bits dữ liệu, tốc độ truyền sẽ là 960kbps. Tốc độ
SVTH:
Sơn
91
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
truyền đảm bảo khả năng xảy ra sai lệch thông tin trong đường
truyền thấp.
Để thiết lập các thông số như trên cho PIC, trong CCS dùng lệnh:
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Khi truyền nhận dữ liệu bằng RS-232 ta phải nối chéo chân TX của vi
điều khiển với chân RxD của cổng COM, chân RX với chân TxD.
Gửi dữ liệu lên PC, sử dụng câu lệnh putc() dùng để gửi một biến kiểu
int ra RS-232. Lệnh printf() dùng để gửi một chuỗi hoặc gửi biến kiểu số.
Vì dữ liệu nhận được từ nRF24L01+ trong biến Rx_Buf là một chuỗi
nên ta gửi thẳng giá trị nhận được lên máy tính bằng lệnh printf(Rx_Buf);.
2.2.1.6 Nhận lệnh gửi xuống từ máy tính
Dùng ngắt khi nhận dữ liệu RS-232 RDA. Khi có dữ liệu từ máy tính
gửi xuống sẽ xảy ra ngắt.
Chương trình phục vụ ngắt:
Biến data sẽ đọc dữ liệu mà máy tính gửi xuống. Nếu data nhận được
các giá trị ‘2’ và ‘4’,chân A0 và A1 bị kéo xuống mức thấp làm sáng đèn led.
Nếu data nhận được giá trị ‘1’ và ‘3’ sẽ làm tắt đèn. Các chân dương của đèn
led được nối lên nguồn, chân âm nối vào vi điều khiển.
Viết chương trình
Sau khi xây dựng sơ đồ thuật toán ta tiến hành viết code và biên dịch
chương trình cho PIC.
SVTH:
Sơn
92
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Sử dụng phần mềm CCS C Complier để viết chương trình và biên dịch
cho PIC.
Hình 3. 12 Phần mềm CCS
CCS (Custom Computer Services) là trình biên dịch dùng ngôn ngữ C
lập trình cho vi điều khiển. Đây là ngôn ngữ lập trình bậc cao nên người học
có thể tiếp cận nhanh chóng hơn so với ngôn ngữ Assembly.
Mã lệnh được tối ưu khi biên dịch.
CCS chứa rất nhiều hàm phục vụ cho mọi mục đích và có nhiều cách
lập trình mã cho một vấn đề dẫn đến tốc độ thực hiện chương trình cũng như
độ dài chương trình sẽ khác nhau.
CCS có đủ khả năng để không cần chèn thêm bất kỳ dòng lệnh
Assembly nào nhưng vẫn cho phép phối hợp Assembly cùng với C. Tuy
nhiên CCS không đảm bảo chương trình chạy chính xác.
SVTH:
Sơn
93
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
CCS cung cấp nhiều công cụ tiện ích hỗ trợ người dùng trong việc biên
dịch, bắt lỗi chương trình và quản lý bộ nhớ.Tuy nhiên C không phải là vạn
năng, có thể thực hiện mọi việc theo ý muốn nên trong một số trường hợp có
thể xuất hiện lỗi.
2.2.2 Xây dựng chương trình nhận dữ liệu trên máy tính
Để xây dựng chương trình giao tiếp RS-232, ta sử dụng chương trình
Visual Basic 6.0(VB 6.0). Trong VB 6.0 có bộ điều khiển Active X
Microsoft Communication 6.0(MSComm) cho phép thiết lập các thông số để
thực hiện giao tiếp RS-232.
Các tham số cho cổng COM:
● CommPort: dạng object.CommPort = value. Value là chỉ số của
cổng Com có giá trị từ 1 – 16 và mặc định có giá trị = 1. Cần phải
thiết lập thông số này trước khi mở cổng.
● InBuferSize: thiết lập hoặc trả lại kích thước của bộ đệm nhận,
tính bằng byte. Mặc định là 1024 byte.
● InputLen: object.InputLen = value, thiết lập hoặc trả lại số byte
mỗi lần thuộc tính đọc Input đọc trong bộ nhớ đệm nhận.
● InputMode:
object.InputMode=Value.
Value
=
comInputModeText dữ liệu nhận được dạng văn bản kiểu ký tự
theo chuẩn ANSI. Dữ liệu nhận được sẽ là một sâu. Value =
comInputModeBinary dùng nhận mọi kiểu dữ liệu như ký tự điều
SVTH:
Sơn
94
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
khiển nhúng, ký tự NULL,... Giá trị nhận được từ Input sẽ là một
mảng kiểu byte.
● PortOpen: thiết lập và trả lại tính trạng của cổng (đóng hoặc mở).
object.PortOpen = value . Value = True cổng mở, value = False
cổng đóng và xóa toàn bộ dữ liệu trong bộ đệm nhận và truyền.
● RthresHold: object.Rthreshold = value. value kiểu số nguyên.
Thiết lập số kí tự nhận được trước khi gây lên sự kiện
comEvReceive. Mặc định = 0 tức là không có sự kiện OnComm
khi nhận được dữ liệu. Thiết lập = 1 tức là sự kiện OnComm xảy
ra khi bất kì ký tự nào được chuyển đến bộ đệm nhận.
● Settings: object.Settings = value. Thiết lập hoặc trả lại các thông
số tần số baud, bit dữ liệu, bít chẵn lẻ, bit stop.
● SThreshold: thiết lập và và trả lại số kí tự nhỏ nhất được cho phép
trong bộ đệm gửi để xảy ra sự kiện OnComm = comEvSend.
Trên cơ sở đó, ta tiến hành xây dựng giao diện chương trình điều khiển
SVTH:
Sơn
95
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Hình 3. 13 Giao diện chương trình giao tiếp
Sử dụng VB 6.0 ta được giao diện như hình.
Kết nối
Thiết lập các thông số cho cổng COM:
MSComm1.InBufferSize = 1024
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
MSComm1.RThreshold = 1
MSComm1.SThreshold = 0
SVTH:
Sơn
96
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Sử dụng Command1 để quản lý việc kết nối cổng COM. Các thông số
MSComm1.CommPort và MSComm1.Settings được chọn ở Combo1 và
Combo2.
Combo1 cho phép chọn cổng COM để kết nối.
MSComm1.CommPort = Switch(Combo1.Text = "COM 1", 1,
Combo1.Text = "COM 2", 2, Combo1.Text = "COM 3", 3, Combo1.Text =
"COM 4", 4, Combo1.Text = "COM 5", 5) . Nếu giá trị Combo1 là COM 1
thì cổng MSComm1.CommPort =1. Tương tự với các cổng giá trị Combo
còn lại.
Combo2 cho phép lựa chọn tốc độ kết nối, gồm có: 4800, 9600, 14400,
19200.
Để thực hiện được việc cho phép kết nối và không cho phép kết nối
cổng COM, Caption của Commad1 được sử dụng.
Khi chưa kết nối, Caption của Command1 là “CONNECT”. Khi có
hành động click, thông số MSComm1.Settings sẽ được cài đặt với tốc độ
Baud là giá trị của Combo2 + ",n,8,1" là không sử dụng bit chẵn lẻ, 8 bits dữ
liệu, độ dài stop bit là 1 và MSComm1.PortOpen = True mở cổng COM kết
nối. Caption của Command1 chuyển thành “DISCONNECT”.
Khi Caption của Command1 là “DISCONNECT”, có hành động click,
thuộc tính MSComm1.PortOpen = False. Cổng COM bị đóng, Caption
chuyển thành “CONNECT”.
SVTH:
Sơn
97
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Trên máy tính xách tay ngày nay hầu như không còn cổng COM, do đó,
muốn giao tiếp RS-232 giữa máy tính và vi điều khiển ta cần cáp chuyển đổi
USB to COM. Cáp có driver đi kèm để tạo một cổng COM trên máy tính cho
ta sử dụng.
Vì mỗi cáp chỉ tạo được một cổng COM nên, để tránh lỗi làm dừng
chương trình khi chọn cổng COM không tồn tại trên máy tính, một đoạn code
thông báo lỗi được thêm vào trong Command1.
On Error GoTo loi
loi:
If Err.Number = 8002 Then
MsgBox "Vui long chon cong ket noi co tren may!"
End If
Khi gặp lỗi 8002 không phát hiện cổng COM, dòng thông báo sẽ hiện
ra, và tiến hành chọn lại cổng COM.
Dữ liệu gửi lên
Dữ liệu nhận được được hiển thị trong Text1. Với thuộc tính InputMode
= comInputModeText thì MSComm sẽ gửi và nhận dữ liệu dạng xâu theo
chuẩn ANSI. Khi dùng giá trị khoảng cách gửi lên để tính toán ta dùng hàm
Val() để chuyển chuỗi ký tự biểu diễn số về dạng số.
Điều khiển
SVTH:
Sơn
98
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Command6: hành động click xảy ra sẽ thực hiện hàm End kết thúc
chương trình.
Command2, Command4: hành động click xảy ra sẽ gửi ký tự “2” và “4”
xuống PIC, bật đèn led sáng. Command3, Command5: hành động click xảy
ra sẽ gửi ký tự “1” và “3” xuống PIC, tắt đèn led.
Label7 cập nhật giá trị ngày giờ của hệ thống.
SVTH:
Sơn
99
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
❖ Kết luận
Sau khoảng thời gian nghiên cứu, thiết kế và chế tạo, đồ án cơ bản được
hoàn thành. Đồ án đã đạt được những yêu cầu cơ bản là thiết kế, chế tạo
mạch xử lý tín hiệu cảm biến siêu âm, truyền phát qua sóng Radio và hiển
thị trên máy tính. Trong quá trình hoàn thành đồ án, em đã thu được những
kết quả nhất định sau:
● Củng cố được một số kiến thức đã học, được tiếp xúc và làm việc
với những linh kiện mới.
● Thiết kế, chế tạo hoàn chỉnh mạch thực hiện được các yêu cầu
của đề tài đưa ra.
● Hệ thống được chạy thử nghiệm và hoạt động tương đối ổn định.
● Xây dựng được chương trình giao tiếp với hệ thống trên máy tính.
❖ Hướng phát triển đề tài
Bên cạnh những kết quả đạt được, do thời gian có hạn và kiến thức chưa
nhiều nên đồ án còn tồn tại những thiếu sót. Một số hạn chế tồn tại như: việc
truyền nhận dữ liệu hai chiều chỉ thực hiện giữa máy tính và vi điều khiển
thứ hai, chưa thực hiện được việc truyền nhận dữ liệu hai chiều giữa hai vi
điều khiển qua sóng radio; việc cấp nguồn cho hệ thống hoạt động còn tồn
tại một số khuyết điểm; code của chương trình còn chưa tối ưu.
Vì vậy, để đề tài ứng dụng vào thực tế nhiều hơn, em có một số kiến
nghị sau:
SVTH:
Sơn
100
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
● Xây dựng hệ thống cụ thể công việc cho cảm biến siêu âm như
đo chiều cao vật thể, chiều cao mực nước…, sử dụng cảm biến
siêu âm có độ tin cậy cao để ứng dụng trong công nghiệp.
● Thực hiện việc truyền nhận dữ liệu, tín hiệu điều khiển giữa hai
vi điều khiển tới cơ cấu chấp hành.
● Thực hiện nhận diện cổng COM, tự động khi kết nối thiết bị với
máy tính (sử dụng RS-232).
● Có thể thay thế giao tiếp RS-232 bằng giao tiếp USB có tốc độ
cao hơn và thông dụng hơn.
Với hướng phát triển nêu trên cùng với những ý tưởng khác của những
người đi sau sẽ phát triển hơn nữa đề tài này, khắc phục những hạn chế của
đề tài, làm cho đề tài trở nên phong phú hơn, mang tính ứng dụng cao hơn
trong thực tế.
SVTH:
Sơn
101
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
TÀI LIỆU THAM KHẢO
[1] Blitz, J. & Simpson, G. (1996). Ultrasonic Methods of Nondestructive Testing. Chapman & Hall.
[2] C Compiler Reference Manual – Custom Computer Services, Inc.
(8/2009).
[3] Giang, N.T (2012). Bài giảng kỹ thuật vi xử lý. Đại học Giao thông
Vận tải.
[4] Hà, P.T (2014). Một vài ứng dụng của siêu âm. Tạp chí thông tin
công nghệ & khoa học Quảng Bình, 3/2014, 38 – 39.
[5] Khang, P.H (2004). Kỹ xảo lập trình VB6. NXB Lao động – Xã hội.
[6] nRF24L01+ Product Specification – Nordic Semiconductor
(9/2008).
[7] PIC16F882/883/884/886/887 Data Sheet – Microchip Technology
Inc.
[8] Ultrasonic Sensor Application Manual – Murata, Manufacturing
Co., Ltd.
SVTH:
Sơn
102
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
PHỤ LỤC 1
Code chương trình cho vi điều khiển 1:
#include <16F887.h>
#device adc=16
#FUSES NOWDT
#FUSES HS
//No Watch Dog Timer
//High speed Osc (> 4mhz for PCM/PCH)
(>10mhz for PCD)
#FUSES NOPUT
//No Power Up Timer
#FUSES NOBROWNOUT
#FUSES NOLVP
//No brownout reset
//No low voltage prgming, B3(PIC16) or
B5(PIC18) used for I/O
#FUSES NOCPD
//No EE protection
#FUSES NOWRT
//Program memory not write protected
#FUSES NODEBUG
#FUSES NOPROTECT
//No Debug mode for ICD
//Code not protected from reading
#use delay(clock=20000000)
#include <DEF_16F877A.h>
//___________________
Khai
bao
chan
cho
nRF
__________________
#define CE
PORTC0
#define SCK PORTC1
SVTH:
Sơn
103
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
#define MISO PORTC2
#define CSN PORTC3
#define MOSI PORTD0
// Khai bao Tris
#define CE_DDR
#define SCK_DDR
#define MISO_DDR
#define CSN_DDR
#define MOSI_DDR
DDRC0
DDRC1
DDRC2
DDRC3
DDRD0
//____________________
Khai
bao
chan
cho
LCD
___________________
#define
LCD_D4
PORTD4
#define
LCD_D5
PORTD5
#define
LCD_D6
PORTD6
#define
LCD_D7
PORTD7
//Khai bao Tris
#define
LCD_D4_DDR
DDRD4
#define
LCD_D5_DDR
DDRD5
#define
LCD_D6_DDR
DDRD6
#define
LCD_D7_DDR
DDRD7
#define
LCD_RS
#define
LCD_RW
SVTH:
Sơn
104
PORTE2
PORTE1
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
#define
LCD_EN
PORTE0
//Khai bao Tris
#define
LCD_RS_DDR
#define
LCD_RW_DDR
DDRE1
#define
LCD_EN_DDR
DDRE0
//___________________
DDRE2
Khai
bao
chan
cho
SRF05
_________________
#define echo PIN_B0
#define trig PIN_B1
//____________________Khai
bao
cac
thu
vien
su
dung
______________
#include <nRF24L01.c>
#include <lcd_16x2.c>
#include <lcd_16x2.h>
//=====================
Khai
bao
bien
=====================
extern char TxBuf[32];
char RxBuf[32];
unsigned int8 str[16];
int1 en, docSRF;
int16 demTimer1, thoiGian, khoangCach;
SVTH:
Sơn
105
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
//=================
Khai
bao
chuong
trinh
con
===============
void batDau();
void hienThi();
void loiChao();
void guiDuLieu(int16 dim);
int16 layKhoangCach();
//=================
Chuong
trinh
phuc
vu
ngat===============
#int_ext
void ngatNgoai()
{
demTimer1 = get_timer1();
en = 0;
}
#int_timer0
void ngatTimer0()
{
int8 dem;
set_timer0(60);
SVTH:
Sơn
106
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
dem++;
if(dem==50)
{
docSRF = 1;
dem = 0;
}
}
//==================Chuong
trinh
chinh====================
void main()
{
CE_DDR = 0;
SCK_DDR = 0;
MISO_DDR = 1;
CSN_DDR = 0;
MOSI_DDR = 0;
set_tris_b(0x01);
LCD_Init();
init_NRF24L01();
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);
SVTH:
Sơn
107
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
ext_int_edge(H_TO_L);
enable_interrupts(INT_EXT);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
set_timer0(60);
SetRX_Mode();
loiChao();
while(TRUE)
{
if(nRF24L01_RxPacket(RxBuf)==1)
{
LCD_Clear();
LCD_Gotoxy(0,0);
LCD_Puts(RxBuf);
delay_ms(50);
}
if(docSRF==1)
{
disable_interrupts(INT_TIMER0);
khoangCach=layKhoangCach();
SVTH:
Sơn
108
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
hienThi();
guiDuLieu(khoangCach);
docSRF=0;
enable_interrupts(INT_TIMER0);
}
}
}
//=================Chuong
trinh
con======================
//__________________batDau_______________________________
___
void batDau()
{
while(en)
{
output_high(trig);
delay_ms(50);
output_low(trig);
delay_us(50);
while(!input(echo));
set_timer1(0);
while(en);
SVTH:
Sơn
109
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
}
}
//__________________hienThi_______________________________
____
void hienThi()
{
LCD_Gotoxy(0,0);
sprintf(str,"KHOANG CACH:");
LCD_Puts(str);
if(khoangCach==0)
{
LCD_Gotoxy(0,1);
sprintf(str,"
NON
");
LCD_Puts(str);
delay_ms(10);
}
else
{
LCD_Gotoxy(0,1);
sprintf(str,"D: %3Lucm",khoangCach);
LCD_Puts(str);
delay_ms(10);
}
SVTH:
Sơn
110
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
}
//________________loiChao_________________________________
____
void loiChao()
{
LCD_Gotoxy(0,0);
sprintf(str,"DO AN TOT NGHIEP");
LCD_Puts(str);
LCD_Gotoxy(0,1);
sprintf(str,"DAI HOC GTVT CS2");
LCD_Puts(str);
delay_ms(1000);
LCD_Clear();
LCD_Gotoxy(0,0);
sprintf(str,"GVHD:");
LCD_Puts(str);
LCD_Gotoxy(0,1);
sprintf(str,"TRINH TUAN DUONG");
LCD_Puts(str);
delay_ms(1000);
LCD_Clear();
LCD_Gotoxy(0,0);
SVTH:
Sơn
111
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
sprintf(str,"SVTH:");
LCD_Puts(str);
LCD_Gotoxy(0,1);
sprintf(str,"NGUYEN HOAI SON");
LCD_Puts(str);
delay_ms(1000);
LCD_Clear();
}
//________________
guiDuLieu
_________________________________
void guiDuLieu(int16 dim)
{
SetTX_Mode();
delay_ms(10);
sprintf(TxBuf,"%3Lu",dim);
nRF24L01_TxPacket(TxBuf);
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);
SetRX_Mode();
delay_us (1);
}
//________________layKhoangCach__________________________
____
int16 layKhoangCach()
SVTH:
Sơn
112
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
{
int16 bienTam;
batDau();
if(demTimer1 > 18750)
{
demTimer1 = 0;
en = 1;
return 0;
}
else
{
thoiGian = demTimer1*1.6;
bienTam = thoiGian/58;
demTimer1 = 0;
en = 1;
return bienTam;
}
}
Code chương trình vi điều khiển 2:
#include <16F877A.h>
#device adc=16
#FUSES NOWDT
SVTH:
Sơn
113
//No Watch Dog Timer
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
#FUSES HS
//High speed Osc (> 4mhz for PCM/PCH)
(>10mhz for PCD)
#FUSES NOPUT
//No Power Up Timer
#FUSES NOBROWNOUT
#FUSES NOLVP
//No brownout reset
//No low voltage prgming, B3(PIC16) or
B5(PIC18) used for I/O
#FUSES NOCPD
//No EE protection
#FUSES NOWRT
//Program memory not write protected
#FUSES NODEBUG
//No Debug mode for ICD
#FUSES NOPROTECT
//Code not protected from reading
#use delay(clock=20000000)
#include <DEF_16F877A.h>
//______________________ Khai bao chan cho nRF __________________
#define CE
PORTC0
#define SCK PORTC1
#define MISO PORTC2
#define CSN PORTC3
#define MOSI PORTD0
//Khai bao Tris
#define CE_DDR
#define SCK_DDR
#define MISO_DDR
SVTH:
Sơn
114
DDRC0
DDRC1
DDRC2
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
#define CSN_DDR
#define MOSI_DDR
DDRC3
DDRD0
#include <nRF24L01.c>
#use
rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PO
RT1)
extern char TxBuf[32];
#INT_RDA
void guiDuLieu()
{
char data;
data=getc();
switch (data){
case '1':output_high(PIN_A0);
break;
case '2':output_low(PIN_A0);
break;
case '3':output_high(PIN_A1);
break;
case '4':output_low(PIN_A1);
break;
SVTH:
Sơn
115
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
}
}
void main()
{
char RxBuf[32];
CE_DDR = 0;
SCK_DDR = 0;
MISO_DDR = 1;
CSN_DDR = 0;
MOSI_DDR = 0;
init_NRF24L01();
SetRX_Mode();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while(TRUE)
{
if(nRF24L01_RxPacket(RxBuf)==1)
{
printf(RxBuf);
SPI_RW_Reg(WRITE_REG+STATUS,0XFF);
SetRX_Mode();
}
SVTH:
Sơn
116
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
}
}
Chương trình giao tiếp trên máy tính:
Option Explicit
Private Sub Command1_Click()
On Error GoTo loi
If Command1.Caption = "CONNECT" Then
Command1.BackColor = &HC0&
MSComm1.CommPort = Switch(Combo1.Text = "COM 1", 1,
Combo1.Text = "COM 2", 2, Combo1.Text = "COM 3", 3, Combo1.Text =
"COM 4", 4, Combo1.Text = "COM 5", 5)
MSComm1.Settings = Combo2.Text + ",n,8,1"
MSComm1.PortOpen = True
Command1.Caption = "DISCONNECT"
ElseIf Command1.Caption = "DISCONNECT" Then
MSComm1.PortOpen = False
Command1.Caption = "CONNECT"
Command1.BackColor = vbGreen
SVTH:
Sơn
117
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
End If
loi:
If Err.Number = 8002 Then
MsgBox "Vui long chon cong ket noi co tren may!"
End If
End Sub
Private Sub Command2_Click()
On Error GoTo loi
MSComm1.Output = "2"
Command2.BackColor = vbGreen
loi:
If Err.Number = 8018 Then
MsgBox "Vui long nhan CONNECT!"
End If
End Sub
Private Sub Command3_Click()
On Error GoTo loi
SVTH:
Sơn
118
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
MSComm1.Output = "1"
Command2.BackColor = &H8000&
loi:
If Err.Number = 8018 Then
MsgBox "Vui long nhan CONNECT!"
End If
End Sub
Private Sub Command4_Click()
On Error GoTo loi
MSComm1.Output = "4"
Command4.BackColor = vbGreen
loi:
If Err.Number = 8018 Then
MsgBox "Vui long nhan CONNECT!"
End If
End Sub
Private Sub Command5_Click()
SVTH:
Sơn
119
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
On Error GoTo loi
MSComm1.Output = "3"
Command4.BackColor = &H8000&
loi:
If Err.Number = 8018 Then
MsgBox "Vui long nhan CONNECT!"
End If
End Sub
Private Sub Form_Load()
Combo1.AddItem "COM 1"
Combo1.AddItem "COM 2"
Combo1.AddItem "COM 3"
Combo1.AddItem "COM 4"
Combo1.AddItem "COM 5"
Command2.Caption = "ON 1"
Command3.Caption = "OFF 1"
Command4.Caption = "ON 2"
Command5.Caption = "OFF 2"
SVTH:
Sơn
120
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Combo2.AddItem "4800"
Combo2.AddItem "9600"
Combo2.AddItem "14400"
Combo2.AddItem "19200"
With MSComm1
.InBufferSize = 1024
.InputLen = 0
.InputMode = comInputModeText
.RThreshold = 1
.SThreshold = 0
End With
End Sub
Private Sub MSComm1_OnComm()
Dim a As String
a = MSComm1.Input
Text1.Text = Val(a)
End Sub
SVTH:
Sơn
121
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Private Sub Timer1_Timer()
Label7.Caption = Now() ' lay thoi gian cua he thong
End Sub
SVTH:
Sơn
122
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
PHỤ LỤC 2
Một số hình ảnh trong quá trình thực hiện đồ án
Chuẩn bị nước ngâm
mạch
SVTH:
Sơn
123
Ăn mòn đồng
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Mạch sau khi ăn mòn đồng
Mạch sau khi khoan
Mạch sau khi tẩy mực in
Mạch giao tiếp máy tính
SVTH:
Sơn
124
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Mạch nguồn 3.3V
Mạch
nguồn
Cảm biến siêu âm SRF05
5V
SVTH:
Sơn
125
Nguyễn
Hoài
Cơ điện tử – K53
Đồ án tốt
nghiệp
GVHD: Trịnh Tuấn Dương
Mạch hiển thị LCD
Mạch nhận tín hiệu cảm biến
SRF05
Hình ảnh sản phẩm
SVTH:
Sơn
126
Nguyễn
Hoài
Cơ điện tử – K53
Download