Đo khoảng cách dùng SRF-05
Trang 1
TPHCM, Ngày 07 Tháng 10 Năm 2015
Chữ kí của giáo viên hướng dẫn
GVHD: Nguyễn Kim Suyên
Trang 2LỜI CẢM ƠN
ời đầu tiên nhóm xin chân thành cảm thầy Nguyễn Kim Suyên người trực tiếp hướng dẫn và chỉ bảo hết sức tận tình cho nhóm hoàn thành đề tài “Mạch đo khoảng cách dùng cảm biến siêu âm” Nhóm cũng xin gởi lời cảm ơn tới tất cả các bạn
bè trong lớp đã cùng hỗ trợ nhóm hoàn thành đề tài này
Vì thời gian có hạn cùng với kiến thức hạn chế nên sản phẩm của nhóm sẽ không tránh khỏi sai sót
Với mong muốn học hỏi, nhóm rất mong nhận được sự góp ý của các thầy cô giáo chỉ bảo, hướng dẫn thêm để rút kinh nghiệm lần sau
hóm xin chân thành cảm ơn
L
Trang 3LỜI NÓI ĐẦU
Ngày nay khoa học công nghệ ngày càng phát triển, vi điều khiển AVR và vi điều khiển PIC ngày càng thông dụng và hoàn thiện hơn, nhưng có thể nói sự xuất hiện của Arduino vào năm 2005 tại Italia đã mở ra một hướng đi mới cho vi điều khiển Sự xuất hiện của Arduino đã hỗ trợ cho con người rất nhiều trong lập trình và thiết kế, nhất là đối với những người bắt đầu tìm tòi về vi điều khiển mà không có quá nhiều kiến thức, hiểu biết sâu sắc
về vật lý và điện tử Phần cứng của thiết bị đã được tích hợp nhiều chức năng cơ bản và là
mã nguồn mở Ngôn ngữ lập trình trên nền Java lại vô cùng dễ sử dụng tương thích với ngôn ngữ C và hệ thư viện rất phong phú và được chia sẻ miễn phí Chính vì những lý do như vậy nên Arduino hiện đang dần phổ biến và được phát triển ngày càng mạnh mẽ trên toàn thế giới Trên cơ sở kiến thức đã học trong môn học : vi điều khiển… cùng với những
hiểu biết về các thiết bị điện tử, nhóm đã chọn đề tài: Đo Khoảng Cách Bằng Sóng Siêu
Âm với mục đích để tìm hiểu thêm về Arduino, làm quen với các thiết bị điện tử,cách lập
trình giao tiếp với máy tính và nâng cao hiểu biết cho bản thân Do kiến thức còn hạn hẹp, thêm vào đó đây là lần đầu em thực hiện đồ án nên chắc chắn không tránh khỏi những thiếu sót, hạn chế vì thế nhóm rất mong có được sự góp ý và nhắc nhỡ từ thầy giáo để có thể hoàn thiện đề tài của mình
Em xin chân thành cảm ơn thầy giáo Nguyễn Kim Xuyên đã giúp đỡ nhóm rất nhiều trong quá trình tìm hiểu, thiết kế và hoàn thành đề tài đồ án 1 này
TP HCM, ngày 07 tháng 10 năm 2015 Sinh viên thực hiện
Nhóm 6
Trang 4Mục lục
Nhận xét của giáo viên hướng dẫn 1
Lời cảm ơn 2
Lời nói đầu 3
A Giới thiệu các module sử dụng trong mạch I.Giới thiệu cảm biến siêu âm SRF-05 4
II.Giới thiệu module Arduino Nano 8
III.Giới thiệu LCD 16x02 13
B.Thiết kế và thi công mạch I Mạch mô phỏng 15
II Mạch nguyên lí 16
III Mạch layout 17
IV Mã code 18
V Kết luận và hướng phát triển 20
Tài liệu tham khảo 21
Trang 5A Giới thiệu các module sử dụng
I Giới thiệu module HC-SR05:
- HC-SR05 là module cảm biến siêu âm dùng để đo khoảng cách bằng sóng siêu âm Sóng siêu âm là sóng âm thanh thuộc nhóm sóng cơ học với tốc độ lan truyền trong không khí không cao, lợi dụng điều này mà người ta có thể đo đạt khoảng cách dựa trên sóng này Nguyên lý như sau, đầu tiên máy sẽ phát đi một chùm sóng siêu âm, khi lan truyền nếu gặp được vật cản sóng sẽ dội về máy thu, từ thời gian phát đi và nhận về của chùm sóng này
- Hình ảnh module HC-SR05 :
Trang 6+ Out khi nối mass thì lúc này chân trig và chân echo sẽ hoạt động trên cùng
1 chân, khi bỏ trống thì chân trig và echo sẽ hoạt động riêng biệt như SRF 04
- GND GND Arduino
Nguyên lý hoạt động :
MODE 1: 2 chân trig và echo hoạt động riêng biệt
Trang 7
Nguyên lí hoạt động:
Module hoạt động rất đơn giản, như hình bên trên bạn cần một chân IO với chức năng output (Trigger) để kích hoạt module mà một chân input (echo) để đo thời gian xung nhận về đại diện cho khoảng cách
Các bước kích hoạt và đo như sau:
+ Đầu tiên ở chân Trigger bạn phát 1 xung mức cao có độ rộng tối thiểu là 10us cho module + Bước tiếp theo module sẽ trả về cho bạn một xung mức cao có độ rộng xung bằng với thời gian sóng siêu âm truyền từ module đến vật cản và từ vật cản về module
+ Từ thời gian thu được từ xung echo bên trên ta suy ra khoảng cách vật cản dựa trên công thức sau :
→ Distance (mm) = (Measured Echo Time*344)*1000/2
Trong đó :- Measured Echo Time là thời gian đo xung mức cao từ chân echo, đơn
vị là s
- 344 là vận tốc âm thanh lan truyền trong không khí
- 1000 là hệ số nhân để đưa khoảng cách đo được về đơn vị mm
- 2 là hệ số chia do chỉ lấy ½ quảng đường đo được tức là chỉ từ vật cản đo đến module
Sơ đồ kết nối phần cứng :
Trang 8 MODE 2: Chân trig và echo cùng hoạt động trên 1 chân
Nguyên lí hoạt động:
Ở chế độ này, một chân của vi xử lý sẽ điều khiển quá trình phát xung của cảm biến siêu âm và việc đọc tín hiệu trả về Yêu cầu lúc đó chân MODE cần được nối đất (GND) Đầu tiên xuất một xung với độ rộng tối thiểu 10uS vào chân TRIGGER-ECHO (chân số 3) của cảm biến Sau đó vi xử lý tích hợp trên cảm biến sẽ phát ra tín hiệu điều khiển đầu phát siêu âm Sau 700uS 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ể
II Giới thiệu Arduino Nano :
Điều đầu tiên chúng mình muốn chia sẻ với các bạn khi tiếp xúc với Arduino Nano, đó là sự tiện dụng, đơn giản, có thể lập trình trực tiếp bằng máy tính (nhưArduino Uno R3) và đặc biệt hơn cả đó là kích thước của nó
Trang 9 Kích thước của Arduino Nano cực kì nhỏ chỉ tương đương đồng 2 nghìn gấp lại 2 lần thôi (1.85cm x 4.3cm), rất thích hợp cho các newbie, vì giá rẻ hơn Arduino Uno nhưng dùng được tất cả các thư việt của mạch này
Hôm nay, tớ viết bài này nhằm mục đích giới thiệu về mạch Arduino Nano và các thông số kĩ thuật, cùng với đó là những gợi ý ứng dụng khi bắt đầu với mạch này
Trang 10 Một vài thông số của Arduino UNO R3 :
Các thông số kĩ thuật của Arduino Nano hầu như giống hoàn Arduino Uno R3, vì vậy các thư viện trên Arduino Uno đều hoạt động tốt trên Arduino Nano Tuy nhiên, ở Nano
có một lợi thế cực kì quan trọng, nhờ đó Arduino Nano đã được ứng dụng rất nhiều trong các dự án DIY, đó chính là kích hước của nó Đồng thời Nano còn số lượng chân Analog nhiều hơn Uno (2 chân A6, A7 chỉ dùng để đọc) cùng với dùng ra tối đa của mỗi chân IO lên đến 40mA Nhưng, có một điểm trừ nhẹ cho Nano, đó là mạch này Nano cần đến 2KB
bộ nhớ cho bootloader (ở Uno là 0.5KB) Tuy nhiên bạn còn đến tận 30KB bộ nhớ flash để lập trình, để dùng hết được 30KB này đó là cả "một vấn đề lập trình"
Cổng kết nối với Arduino Nano :
- Khác với Arduino Nano sử dụng cổng USB Type B, Nano lại sử dụng một cổng nhỏ hơn có tên là mini USB
Trang 11Vì sử dụng cổng này nên kích thước board (vê chiều cao) cũng giảm đi khá nhiều, ngoài
ra bạn có thể lập trình thẳng trực tiếp cho Nano từ máy tính - điều này tạo nhiều điện thuận lợi cho newbie
Lập trình cho Arduno Nano :
- Cũng tương tự như bên Arduino Uno R3, Arduino Nano sử dụng chương trình Arduino IDE để lập trình, và ngôn ngữ lập trình cho Arduino cũng tên là Arduino (được xây dựng trên ngôn ngữ C) Tuy nhiên, nếu muốn lập trình cho Arduino Nano, bạn cần phải thực hiện một số thao tác trên máy tính Sau đây
là các bước hướng dẫn để có thể lập trình cho Arduino Nano :
1 Đầu tiên, bạn cần cài Driver của Arduino Nano và tải về bản Arduino IDE mới nhất cho máy tính, các bước cài đặt hoàn toàn tương tự như Arduino Uno R3, bạn
có thể tham khảo http://arduino.vn/ Sau khi cài đặt, bạn sẽ thấy một thông báo dạng "Cổng COMx đã được cài đặt thành công" (chữ "x" này sẽ được thay bằng một số nguyên dương, bạn hãy nhớ lấy số này, vì sau này bạn sẽ dùng cổng COMx này để lập trình cho Arduino Nano)
2 Sau đó, bạn cần lại loại board và cổng Serial mới như hình sau là được Lưu ý, cổng COM trong hình dưới đây là chỉ là hình minh họa trong máy tính của mình thôi nhé
Trang 13III Giới thiệu module LCD 16x02
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của VĐK LCD có rất nhiều ưu điểm so với các dạng hiển thị khác: Nó
có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ …
Chức năng các chân của LCD 16x02:
Chân Ký
hiệu
Mô tả
1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND
của mạch điều khiển
2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VCC=5V của mạch điều khiển
3 VEE Điều chỉnh độ tương phản của LCD
4 RS Chân chọn thanh ghi (Register select) Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
Trang 14trong LCD
5 R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD
ở chế độ đọc
6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
7 - 14 DB0 -
DB7
Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU
Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB
Trang 15B Thiết kế và thi công mạch
I Mạch mô phỏng:
Trang 16III Mạch layout
5 Nguyên lý hoạt động :
Khi bắt đầu thì vđk sẽ phát 1 xung vào pin Trigger có độ rộng là 10us
Trang 17 Ngay sau đó pin Echo ở vdk sẽ đẽ kéo lên cao và đợi sóng âm thanh phản xạ lại khi gặp sóng phản xạ thì pin Echo sẽ được kéo xuống thấp Như vậy, thời gian pin Echo
ở mức cao sẽ chính là thời gian sóng âm thanh đi và về trên quãng đường từ cảm biến tới vật cản chúng ta sẽ dùng timer để đếm khoảng thời gian này
Kết quả trả về sẽ được hiển thị lên LCD và cảnh báo bằng 2 led đơn Nếu khoảng cách <= 20cm thì led đỏ và lcd sẽ nháy liên tục, nếu khoảng cách > 20cm thì led xanh sẽ nháy
IV Code cho HC- SR05:
const int trig = 7;// khai báo chân phát xung
const int echo = 8;// chân nhận xung
#include <LiquidCrystal.h>// khai báo thư viện lcd
pinMode(13, OUTPUT);// chân ngõ ra led
pinMode(6, OUTPUT);// chân ngõ ra led
Trang 18void loop()
{
digitalWrite(trig,0);// tắt chân trig
delayMicroseconds(2);
digitalWrite(trig,1);// phát xung từ chân trig
delayMicroseconds(5);// xung có độ dài 5 microSeconds
digitalWrite(trig,0); // tắt chân trig
duration = pulseIn(echo,HIGH);//đo độ rộng xung HIGH ở chân echo
distance = int(duration/2/29.412);//tính khoảng cách đến vật
digitalWrite(13, HIGH); // bật led
delay(100); // thời gian delay
digitalWrite(13, LOW); // bật led
Trang 20PHẦN V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong thời gian thực hiện đề tài nhóm đã đạt được những kết quả sau:
- Học hỏi được nhiều hơn và có thêm nhiều kiến thức
-Biết cách lập trình phần cứng
Hướng phát triển
-Chế tạo robot dò đường
- Chế tạo công cụ giúp người mù
Trang 21Tài liệu tham khảo
arduino-uno
http://arduino.vn/bai-viet/273-arduino-nano-nho-tien-loi-mang-tren-minh-tinh-hoa-cua-http://www.dientu4u.com/news/946/Cam-bien-sieu-am-SRF05.html