ĐO KHOẢNG CÁCH TRONG KHÔNG GIAN VỚI SRF05 VÀ ARDUINO Người hướng dẫn: TS... LỜI CẢM ƠN Trong quá trình thực hiện đề tài “Đồ án 2: Đo khoảng cách trong không gian với SRF05 và Arduino”,
Trang 1ĐO KHOẢNG CÁCH TRONG KHÔNG
GIAN VỚI SRF05 VÀ ARDUINO
Người hướng dẫn: TS VÕ PHÚ THOẠI
Người thực hiện: HOÀNG SƠN TÙNG
Lớp : 13040203
Khoá : 17
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2016
Trang 2LỜI CẢM ƠN
Trong quá trình thực hiện đề tài “Đồ án 2: Đo khoảng cách trong không gian với SRF05 và Arduino”, Tôi đã nhận được rất nhiều sự giúp đỡ, tạo điều kiện của tập thể cán bộ, giảng viên khoa Điện – Điện Tử, tập thể Ban Giám Hiệu nhà trường, cán bộ các phòng, ban chức năng Trường Đại Học Tôn Đức Thắng Tôi xin bày tỏ lòng cảm ơn chân thành về sự giúp đỡ đó Tôi xin bày tỏ lòng biết ơn sâu sắc tới
TS Võ Phú Thoại – Đã trực tiếp hướng dẫn và chỉ bảo cho tôi hoàn thành đồ án này Tôi xin chân thành cảm ơn bạn bè của Tôi đang học tập tại Trường Đại Học Tôn Đức Thắng và gia đình đã động viên, khích lệ, tạo điều kiện và giúp đỡ Tôi trong suốt quá trình thực hiện và hoàn thành đồ án này
Tôi xin chân thành cảm ơn …
TP Hồ Chí Minh, ngày tháng năm
Tác giả
Trang 3CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng dẫn khoa học của TS Võ Phú Thoại Các nội dung nghiên cứu, kết quả trong
đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây Những số liệu trong các bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong phần tài liệu tham khảo
Ngoài ra, trong luận văn còn sử dụng một số nhận xét, đánh giá cũng như số liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn gốc
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội dung luận văn của mình Trường đại học Tôn Đức Thắng không
liên quan đến những vi phạm tác quyền, bản quyền do tôi gây ra trong quá trình
thực hiện (nếu có)
TP Hồ Chí Minh, ngày tháng năm
Tác giả (ký tên và ghi rõ họ tên)
Trang 4MỤC LỤC
MỤC LỤC… IV DANH MỤC CÁC HÌNH VẼ VI DANH MỤC CÁC BẢNG BIỂU VII DANH MỤC CÁC TỪ VIẾT TẮT VIII
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 1
1.1 GIỚI THIỆU 1
1.1.1 Đề tài 1
1.1.2 Yêu cầu của để tài 1
1.2 GIẢI QUYẾT VẤN ĐỀ 1
CHƯƠNG 2 THIẾT KẾ HỆ THỐNG 2
2.1 SƠ ĐỒ KHỐI CỦA HỆ THỐNG 2
2.2 CÁC LINH KIỆN CHÍNH TRONG MẠCH 2
2.2.1 Arduino UNO R3 3
2.2.2 LCD 1602 6
2.2.3 Cảm biến siêu âm SRF05 9
2.3 NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH 10
CHƯƠNG 3 LẬP TRÌNH ĐIỀU KHIỂN 12
3.1 SƠ ĐỒ GIẢI THUẬT 12
3.2 LẬP TRÌNH ĐIỀU KHIỂN 13
CHƯƠNG 4 KẾT QUẢ THI CÔNG MẠCH 14
4.1 MÔ HÌNH 14
4.2 KẾT QUẢ 14
4.2.1 Thi công mạch in 14
4.2.2 Thi công mạch 16
CHƯƠNG 5 ỨNG DỤNG 19
5.1 ĐO KHOẢNG CÁCH Ô TÔ 19
Trang 55.2 ĐO MỨC NƯỚC 19
5.3 ỨNG DỤNG KHÁC 19
CHƯƠNG 6 NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN 20
6.1 NHẬN XÉT 20
6.2 HƯỚNG PHÁT TRIỂN 20
TÀI LIỆU THAM KHẢO 21
PHỤ LỤC… 22
Trang 6DANH MỤC CÁC HÌNH VẼ
HÌNH 2-1: SƠ ĐỒ KHỐI CỦA HỆ THỐNG 2
HÌNH 2-2: VI XỬ LÝ ATMEGA328 TRÊN ARDUINO UNO R3 [3] 3
HÌNH 2-3: CÁC CHÂN NĂNG LƯỢNG 4
HÌNH 2-4: CÁC CỔNG VÀO RA CỦA ARDUINO UNO R3 [3] 5
HÌNH 2-5: CỬA SỔ LÀM VIỆC CỦA PHẦN MÊM ARDUINO IDE 6
HÌNH 2-6: LCD 1602 MÀU XANH LÁ [4] 7
HÌNH 2-7: HÌNH ẢNH CÁC CHÂN CHỨC NĂNG CỦA LCD 1602 [6] 8
HÌNH 2-8: MẠCH CHUYỂN GIAO TIẾP LCD1602 SANG I2C 8
HÌNH 2-9: CẢM BIẾN SIÊU ÂM SRF05 [7] 9
HÌNH 2-10: CÁC CHÂN SRF05 10
HÌNH 3-1: SƠ ĐỒ GIẢI THUẬT 12
HÌNH 3-2: LẬP TRÌNH ĐIỀU KHIỂN TRÊN PHẦN MỀM ARDUINO IDE 13
HÌNH 4-1: SƠ ĐỒ KẾT NỐI 14
HÌNH 4-2: SƠ ĐỒ NỐI DÂY 14
HÌNH 4-3: MẠCH IN 15
HÌNH 4-4: MẶT SAU CỦA MẠCH IN THỰC TẾ 15
HÌNH 4-5: MẶT TRƯỚC CỦA MẠCH 16
HÌNH 4-6: MẠCH SAU KHI THI CÔNG 16
HÌNH 4-7: HIỆN THỊ KHOẢNG CÁCH TRÊN LCD 17
HÌNH 4-8: KHI KHOẢNG CÁCH NHỎ HƠN 5CM 17
HÌNH 4-9: KHI KHOẢNG CÁCH LỚN HƠN 400CM 18
Trang 7DANH MỤC CÁC BẢNG BIỂU
BẢNG 2-1: CÁC LINH KIỆN CHÍNH TRONG MẠCH 2 BẢNG 2-2: MỘT VÀI THÔNG SỐ 3 BÀNG 2-3: CHỨC NĂNG CÁC CHÂN CỦA LCD 1602 7
Trang 8DANH MỤC CÁC TỪ VIẾT TẮT
LCD Liquid Crystal Display
LED Light-Emitting Diode
Vin Voltage Input
SRAM Static Random Access Memory
EEPROM Electrically Eraseble Programmable Read Only Memory USB Universal Serial Bus
MHz Megahertz
PWM Pulse Width Modulation
MPU Multiple Port Unit
I2C Inter- Integrated Circuit
SDA Serial Data
SCL Serial Clock
RS Register select
R/W Read/Write
Trang 9ixSPI Peripheral Interface Serial TTL Transistor-Transistor Logic
Trang 10ĐỒ ÁN 2 Trang 1/25
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu
1.1.1 Đề tài
Nội dung đề tài: là một mạch điện tử đơn giản sử dụng cảm biến siêu âm SRF05
và Arduino UNO R3 để đo khoảng cách trong không gian và hiện thị kết quả ra màn hình LCD
1.1.2 Yêu cầu của để tài
- Tìm hiểu Arduino UNO R3
- Tìm hiểu cảm biến siêu âm SRF05
- Tìm hiểu nguyên lý hoạt động của mạch
Trang 11ĐỒ ÁN 2 Trang 2/25
CHƯƠNG 2 THIẾT KẾ HỆ THỐNG
2.1 Sơ đồ khối của hệ thống
Hình 2-1: Sơ đồ khối của hệ thống
Ý nghĩa của các khối
- Khối nguồn: cung cấp năng lượng cho các linh kiện trong mạch hoạt động
- Khối cảm biến: là cảm biến siêu âm SRF05 có tác dụng đo khoảng cách dựa trên nguyên lý thu phát siêu âm
- Khối điều khiển: có chức năng tính toán và xuất kết quả ra LCD
- Khối hiện thị: hiện thị kết quả
2.2 Các linh kiện chính trong mạch
Bảng 2-1: Các linh kiện chính trong mạch
Trang 12ĐỒ ÁN 2 Trang 3/25
2.2.1 Arduino UNO R3
2.2.1.1 Một vài thông số
Bảng 2-2: Một vài thông số
Điện áp hoạt động 5V DC (nguồn đƣợc cấp qua cổng USB)
Số chân Digital I/O 14 (có sáu chân hardware PWM)
Số chân Analog 6 (có độ phân giải là 10bit)
Dòng tối đa trên mỗi chân I/O 30mA
Dòng ra tối đa (chân 5V) 500mA
Dòng ra tối đa (chân 3.3V) 50mA
Trang 13ĐỒ ÁN 2 Trang 4/25
2.2.1.3 Nguồn cung cấp điện
Arduino có thể được cấp nguồn qua cổng USB hoặc cấp nguồn ngoài có điện áp
Chân GND: là cực âm nguồn điện nối với Arduino
Chân 5V: điện áp ra 5V, dòng tối đa cho phép là 500mA
Chân 3.3V: điện áp ra 3.3V, dòng tối đa cho phép là 50mA
Chân Vin: dùng để cấp nguồn ngoài cho Arduino hoạt động
Chân IOREF: có điện áp là 5V nhưng chức năng của nó không phải là cấp nguồn Chân RESET: dùng để reset vi điều khiển
Hình 2-3: Các chân năng lượng
2.2.1.5 Bộ nhớ
Vi điều khiển Atmega328 cung cấp:
- 32KB bộ nhớ Flash: đây là nơi lưu trữ các lệnh lập trình Thường thì có khoảng vài KB được dùng cho bootloader nhưng ít khi nào sử dụng quá 20KB
- 2KB cho SRAM: đây là nơi lưu trữ các biến được khai báo Khi mất điện,
dữ liệu trên SRAM sẽ bị mất
- 1KB cho EEPROM: là nơi có thể đọc và ghi dữ liệu và không bị mất khi cúp điện
Trang 14ĐỒ ÁN 2 Trang 5/25
2.2.1.6 Các cổng vào ra
Hình 2-4: Các cổng vào ra của Arduino UNO R3 [3]
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chỉ có hai mức điện áp là 0V và 5V với dòng vào/ ra tối đa là 40mA Một số chân digital đặc biệt như sau:
- Hai chân Serial: 0 (chân RX) và 1 (chân TX) dùng để gửi và nhận dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua hai chân này
- Chân PWM (~): các chân 3, 5, 6, 9, 10, và 11 cho phép xuất ra xung PWM với độ phân giải 8bit có giá trị từ 0 → 255 tương ứng với 0V → 5V
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng thông thường, bốn chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
- Chân 13: trên Arduino UNO có một đèn led màu cam Khi nhấn nút Reset, đèn này sẽ nhấp nháy để báo hiệu Đèn này được nối với chân số
13 của Arduino Khi chân này được sử dụng, LED sẽ sáng
Ngoài ra, Arduino UNO có sáu chân analog từ A0 → A5 cung cấp độ phân giải tín hiệu 10bit có giá trị từ 0 → 1023 để đọc giá trị điện áp trong khoảng 0V → 5V
Trang 15ĐỒ ÁN 2 Trang 6/25
Đặc biệt, Arduino UNO có hai chân A4 (chân SDA) và A5 (chân SCL) có khả năng hỗ trợ giao tiếp I2C/TWI với các thiết bị khác như LCD
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (IC HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết
Trang 16ĐỒ ÁN 2 Trang 7/25
Hình 2-6: LCD 1602 màu xanh lá [4]
2.2.2.2 Chức năng các chân
Bàng 2-3: Chức năng các chân của LCD 1602
Chân Ký hiệu Mô tả
1 Vss Chân nối cực âm của nguồn cho LCD
3 Vo Điều chỉnh độ tương phản của LCD
5 R/W Chân chọn chế độ đọc/ghi
7 - 14 DB0 - DB7 Tám đường của bus dữ liệu dùng để trao đổi thông tin
với MPU
Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua các chân DBx
Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD thông qua các chân DBx
Trang 17ĐỒ ÁN 2 Trang 8/25
Hình 2-7: Hình ảnh các chân chức năng của LCD 1602 [6]
2.2.2.3 Giao tiếp I2C
I2C, viết tắt của từ tiếng Anh “Inter-Integrated Circuit”, là một loại bus nối tiếp đƣợc phát triển bởi hãng sản xuất linh kiện điện tử Philips Ban đầu, loại bus này chỉ đƣợc dùng trong các linh kiện điện tử của Philips Sau đó, do tính ƣu việt và đơn giản của nó, I2C đã đƣợc chuẩn hóa và đƣợc dùng rộng rãi trong các mô đun truyền thông nối tiếp của vi mạch tích hợp ngày nay
Hình 2-8: Mạch chuyển giao tiếp LCD1602 sang I2C
Trang 18ĐỒ ÁN 2 Trang 9/25
Với mạch chuyển giao tiếp LCD1602 sang I2C chỉ cần hai chân tín hiệu (chân SDA và SCL) để truyền dữ liệu cần hiển thị từ Arduino tới LCD thay vì bảy chân nhƣ khi kết nối trực tiếp LCD với Arduino
2.2.3 Cảm biến siêu âm SRF05
2.2.3.1 Thông số và các chân
Hình 2-9: Cảm biến siêu âm SRF05 [7]
Thông số kỹ thuật của linh kiện điện tử cảm biến siêu âm SRF05:
- Điện áp hoạt động 5V
- Dòng tiêu thụ: nhỏ hơn 2mA
- Khoảng cách đo 3cm – 5m (mạch thực tế khoảng cách đo là 5cm đến 4m
để dễ thực hiện)
- Góc quét nhỏ hơn 15 độ
Chức năng chân của SRF05:
- Chân Vcc là chân nối nguồn 5V
- Chân Trigger là chân phát
- Chân Echo là chân thu
- Chân Out là chân có thể tự phát và thu không cần hai chân Trigger và Echo
- Chân GND là chân nối cực âm của nguồn
Trang 19ĐỒ ÁN 2 Trang 10/25
Hình 2-10: Các chân SRF05
2.2.3.2 Nguyên lý hoạt động
SRF05 là linh kiện điện tử sử dụng nguyên lý phản xạ của sóng âm để đo khoảng cách Khi muốn đo khoảng cách cảm biến siêu âm SFR05 sẽ phát ra một xung tín hiệu có tần số 40KHz với thời gian là 10microsecond
Khi phát xung và chờ xung phản hồi về, chân Echo được kéo lên mức cao, khi
có xung phản xạ về chân Echo sẽ được kéo xuống thấp hoặc sau 30ms mà không có xung phản xạ về chân Echo thì cũng được kéo xuống thấp Sau đó SRF05 sẽ phát ra xung về Arduino để bắt đầu đo
2.3 Nguyên lý hoạt động của mạch
Mạch hoạt động chủ yếu dựa vào hoạt động của cảm biến siêu âm SRF05 dưới
sự điều khiển của Arduino
Tốc độ của âm thanh trong không khí là 340m/s, tương ứng với
29,412microseconds/cm
Khi đã tính được thời gian, ta sẽ chia cho 58,842microseconds để nhận được khoảng cách do khoảng thời gian đo được là hai lần khoảng cách (phát, thu)
Dựa trên nguyên lý hoạt động của SRF05, ta có:
- Khoảng cách tối đa đo được là 30ms/58.842us =509cm
- Tối thiểu là 20us/58.842us=0.3cm
- Tuy nhiên, để thuận tiện cho việc thực hiện ta chọn khoảng cách đo là từ 5cm đến 400cm
Trang 20ĐỒ ÁN 2 Trang 11/25
Khi tính toán xong, Arduino sẽ gửi tín hiệu cho LCD thông qua giao tiếp I2C để hiện thị kết quả
Trang 21ĐỒ ÁN 2 Trang 12/25
CHƯƠNG 3 LẬP TRÌNH ĐIỀU KHIỂN
3.1 Sơ đồ giải thuật
Hình 3-1: Sơ đồ giải thuật
Bắt đầu
Đo khoảng cách
5<=khoảngcách<=400 Đúng
Khoảng cách<5 Đúng
Khoảng cách quá xa
Trang 22ĐỒ ÁN 2 Trang 13/25
3.2 Lập trình điều khiển
Tiến hành lập trình cho mạch bằng phần mềm Arduino IDE
Hình 3-2: Lập trình điều khiển trên phần mềm Arduino IDE
Trang 23ĐỒ ÁN 2 Trang 14/25
CHƯƠNG 4 KẾT QUẢ THI CÔNG MẠCH
Mô phỏng sơ đồ nối dây trên phần mềm Proteus
Hình 4-2: Sơ đồ nối dây
Trang 24ĐỒ ÁN 2 Trang 15/25
Mô phỏng mạch in
Hình 4-3: Mạch in
Mạch in thực tế
Hình 4-4: Mặt sau của mạch in thực tế
Trang 25ĐỒ ÁN 2 Trang 16/25
Hình 4-5: Mặt trước của mạch
4.2.2 Thi công mạch
Mạch sau khi hoàn thành
Hình 4-6: Mạch sau khi thi công
Trang 26ĐỒ ÁN 2 Trang 17/25
Hiện thị khoảng cách khi khoảng cách từ 5cm đến 400cm
Hình 4-7: Hiện thị khoảng cách trên LCD
Khi khoảng cách quá gần tức là nhỏ hơn 5cm
Hình 4-8: Khi khoảng cách nhỏ hơn 5cm
Trang 27ĐỒ ÁN 2 Trang 18/25
Khi khoảng cách quá xa tức là lớn hơn 400cm
Hình 4-9: Khi khoảng cách lớn hơn 400cm
Trang 28ĐỒ ÁN 2 Trang 19/25
CHƯƠNG 5 ỨNG DỤNG
5.1 Đo khoảng cách ô tô
Với khả năng đo được khoảng cách từ 4cm đến 500cm, ta có thể sử dụng mạch
để đo khoảng cách giữa hai ô tô với nhau hoặc khoảng cách với vật cản (bức tường,
xe …) trong bãi đỗ xe
Có thể cảnh báo nguy hiểm khi khoảng cách quá gần và báo an toàn khi khoảng cách đủ xa
tự động cho động cơ bơm nước
5.3 Ứng dụng khác
Chống trộm: sử dụng khả năng phát hiện vật cản trong khoảng cách từ 3cm đến 500cm ta có thể thi công một mạch chống trộm đơn giản với còi báo động hoặc đèn Làm xe tự động: có thể sử dụng mạch có ba cảm biến siêu âm SRF05 để thiết kế một mô hình xe điều khiển tự động có khả năng phát hiện các vật cản ở phía trước, bên phải và đằng sau
Trang 29ĐỒ ÁN 2 Trang 20/25
CHƯƠNG 6 NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN
6.1 Nhận xét
Mạch chạy tương đối ổn định Tuy nhiên, một số trường hợp không đo được khoảng cách do vật cản không đủ lớn, góc đo không đủ hoặc vật cản gồ ghề không bằng phẳng
Chỉ đo được khoảng cách nhỏ hơn 5m, do vậy chỉ ứng dụng được vào các mô hình nhỏ
6.2 Hướng phát triển
Có thể đo được khoảng cách xa hơn
Ứng dụng vào các mạch phức tạp hơn như xe điều khiển tự động
Trang 30ĐỒ ÁN 2 Trang 21/25
TÀI LIỆU THAM KHẢO
Tiếng Việt:
Tiếng Việt:
[1] http://arduino.vn, Ngôn ngữ lập trình trên Arduino
[2] http://smart-techvn.com, Hướng dẫn sử dụng Module cảm biến siêu âm SRF05
HY-[3] http://arduino.vn, Arduino UNO R3 là gì?
[4] https://embed.vn, Màn hình LCD 16×2
[5] http://arduino.vn, Điều khiển LCD bằng Arduino UNO
[6] http://howtomechatronics.com/, Arduino LCD Tutorial
[7] http://smdchip.vn/, Cảm biến siêu âm SRF05
Tiếng Anh:
[8] https://www.arduino.cc, Arduino/Genuino UNO
Trang 31ĐỒ ÁN 2 Trang 22/25
int led2 = 12;
unsigned long thoigian = 0; //Đặt thời gian ban đầu là 0
unsigned long khoangcach = 0; //Đặt khoảng cách ban đầu là 0
void setup() {
lcd.init(); //Khởi động màn hình Bắt đầu cho phép Arduino sử dụng màn hình lcd.backlight(); //Bật đèn nền
pinMode(trigPin, OUTPUT); //Đầu ra trig
pinMode(echoPin, INPUT); // Đầu vào echo
pinMode(led1, OUTPUT); //Đầu ra led1
pinMode(led2, OUTPUT); //Đầu ra led2
Trang 32ĐỒ ÁN 2 Trang 23/25
}
void loop() //Vòng lặp
{
digitalWrite(led1, LOW); //led1 tắt
digitalWrite(led2, LOW); //led2 tắt
// Bắt đầu gửi một xung tại chân trigger
digitalWrite(trigPin, HIGH); // Đầu ra trigPin HIGH
delayMicroseconds(10); // Tạo trễ 10mcrosecond = phát xung 10us digitalWrite(trigPin, LOW); // Đầu ra trigPin HIGH
thoigian = pulseIn(echoPin, HIGH); //Lệnh tính độ rộng xung của tín hiệu khoangcach = thoigian/58.824; // Tính toán khoảng cách, với tốc độ âm thanh 29.412us/cm
if ((khoangcach>=5) && (khoangcach<=400)) //Giới hạn khoảng cách đo {
//In ra màn hình lcd dòng chữ KHOANG CACH LA