0 Bình luận
Hướng dẫn Module cảm biến siêu âm HY-SRF05
Ứ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ý:
+ Chế độ 1: Tách biệt, kích hoạt và phản hồi
Để đo khoảng cách, cần 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
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
- Dây nối.
Đấu nối:
Cắm dây USB 5V vào Arduino. Như vậy ta đã chuẩn bị xong phần cứng
Code
#define TRIG_PIN 8 // Chân Trig nối chân 8
#define ECHO_PIN 7 // Chân Echo nối chân 7
#define TIME_OUT 5000 // Time_out pulseIn : 5000 microsecond
// Chương trình tính khoảng cách
float getDistance()
{
long duration, distanceCm;
// Phát 1 xung 10uS từ chân Trig
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Thời gian tín hiệu phản hồi chân Echo
duration = pulseIn(ECHO_PIN, HIGH, TIME_OUT);
// Tính khoảng cách
distanceCm = duration / 29.1 / 2;
// giá trịnh tính được
return distanceCm;
}
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
// call chương trình getDistance
long distance = getDistance();
if (distance <= 0)
{
Serial.println("Echo time out !!"); // khi thời gian phản hồi vượt Time_out của hàm pulseIn
}
else
{
// Hiển thị khoảng cách đo được vào Serial Monitor
Serial.print("Distance to nearest obstacle (cm): ");
Serial.println(distance);
}
// Chờ 1s sau đó lặp lại chu kỳ trên
delay(1000);
}
Chúc bạn thành công.