Ứng dụng : dùng đo khoảng cách, đo mực chất lỏng, robot dò đường,phát hiện các vết đứt gãy trong dây cáp.
Thông số kỹ thuật:
-Điện áp vào: 5V
-Dòng tiêu thụ : <2mA
-Tín hiệu đầu ra: xung HIGH(5V) và LOW(0V)
-Khoảng cách đo : 2cm – 450cm
-Độ chính xác : 0.5cm
-Kích thước: 20*45*15mm
-Góc cảm biến :<15 độ
Sơ đồ chân: có 5 chân
1.VCC : 5V.
2.Trig(T) : digital input.
3.echo (R): digital output.
4.OUT.
5.GND.
Nguyên lý hoạt động:
+Ở chế độ 1: Tách biệt, kích hoạt và phản hồi
Để đo khoảng cách, ta phát 1 xung rất ngắn (5 microSeconds) từ chân TRIG. Sau đó cảm biến sẽ tạo ra 1 xung HIGH ở chân ECHO cho đến khi nhận được xung phản xạ ở chân này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biến quay trở lại. Tốc độ của âm thanh trong không khí là 340 m/s tương đương với 29,412 microSeconds/cm(1000000/(340*100)). Khi đã tính được thời gian ta chia cho 29,412 để được khoảng cách cần đo.
+Ở chế độ 2: Dùng 1 chân cho cả kích hoạt và phản hồi
Ta sử dụng chân OUT để nó vừa phát ra xung rồi nhận xung phản xạ về,chân chế độ thì nối đất.Tín hiệu hồi tiếp sẽ suất hiện trên cùng 1 chân với tín hiệu kích hoạt.SR05 sẽ không tăng dòng phản hồi cho đến 700uS sau khi kết thúc các tín hiệu kích hoạt và bạn đã có thời gian để kích hoạt pin xoay quanh và làm cho nó trở thành 1 đầu vào.
Ứng dụng minh họa: Thiết bị đo khoảng cách và hiển thị kết quả lên LCD.
Chuẩn bị phần cứng
-1 Arduino Uno R3.
-1Module cảm biến siêu âm HY-SRF05.
-1 LCD 1206 Keypad Shield.
-Dây nối.
Bạn có thể xem hình dưới đây:
Cắm dây USB 5V vào Arduino. Như vậy ta đã chuẩn bị xong phần cứng
Phần lập trình , các bạn mở Arduino IDE lên và copy đoạn code dưới vào
/*********** DO KHOANG CACH***********
* *******************************
*/
#include<LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int echoPin = 2; // the SRF05's echo pin
int initPin = 3; // the SRF05's init pin
unsigned long pulseTime = 0; // variable for reading the pulse
unsigned long distance = 0; // variable for storing the distance
void setup() {
pinMode(initPin, OUTPUT); // set ouput
pinMode(echoPin, INPUT); // set input
lcd.begin(16,2); // lcd 16x2
Serial.begin(115200); // ket noi uart, baudrate 115200
}
void loop() {
// Send the sensor a 10us pulse (trigger)
digitalWrite(initPin, HIGH); // dau ra initPin HIGH
delayMicroseconds(10); // delay 10mcrosecond
digitalWrite(initPin, LOW); // dau ra initPin HIGH
pulseTime = pulseIn(echoPin, HIGH);
distance = pulseTime/58; // tinh khoang cach cm
Serial.print('A');
Serial.print(distance);
Serial.println('B');
// display result on LCD
lcd.setCursor(0,0);
lcd.print("KHOANG CACH");
lcd.setCursor(3,1);
lcd.print(distance);// hien thi khoang cach
lcd.setCursor(7,1);
lcd.print("cm");
delay(200);
lcd.setCursor(3,1);
lcd.print(" ");
}