Đo khoảng cách bằng cảm biến siêu âm HC-SRF04

04 Tháng 04 2019 | Đăng bởi: Lực Nguyễn

 

Tổng quan

Sóng siêu âm (Sonar) là một loại sóng cao tầng mà con người không thể nghe thấy được. Tuy nhiên, ta có thể thấy được sự hiện diện của sóng siêu âm ở khắp mọi nơi trong tự nhiên. Ở các loài động vật như dơi, cá heo ... dùng sóng siêu âm để liên lạc với nhau, để săn mồi hay định vị trong không gian.

Cảm biến siêu âm (HC - SRF04)

Cảm biến siêu âm (SRF-04)

 

Các chân chức năng

VCC Cấp nguồn cho cảm biến (5V) hoặc 3.3V ở cảm biến 3V3
TRIGGER Chân phát sóng âm. Là chu kỳ của của điện cao /thấp diễn ra.
ECHO Trạng thái ban dầu là 0V, khi có tín hiệu trả về sẽ là 5V và sau đó trở về 0V
GND Nối cực âm của mạch
OUT Không sử dụng

Sơ đồ

 

Các linh kiện cần thiết

-----------------------

----------------------

Code mẫu

#define TRIG_PIN 3
#define ECHO_PIN 2
#define TIME_OUT 5000
 
float GetDistance()
{
  long duration, distanceCm;
   
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  duration = pulseIn(ECHO_PIN, HIGH, TIME_OUT);
 
  // convert to distance
  distanceCm = duration / 29.1 / 2;
  
  return distanceCm;
}
 
void setup() {  
  Serial.begin(9600);
 
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}
 
void loop() {
  long distance = GetDistance();
 
  if (distance <= 0)
  {
    Serial.println("Echo time out !!");
  }
  else
  {   
    Serial.print("Distance to nearest obstacle (cm): ");
    Serial.println(distance);
  }
  delay(1000);
}

Giải thích Code

duration = pulseIn(ECHO_PIN, HIGH, TIME_OUT);

Trong chương trình chúng ta cần chú ý hàm pulseIn

Hàm pulseIn có tác dụng trả về thời gian (tính bằng milisec) kể từ khi hàm này được gọi cho đến khi có tín hiệu tại PIN chỉ định trước, hay trả về 0 nếu không nhận được tín hiệu / quá thời gian timeout. 

Các tham số:

ECHO_PIN: Pin chờ

HIGH: Giá trị chờ

TIME_OUT: Thời gian chờ tín hiệu, mặc định là 1s

 

distanceCm = duration / 29.1 / 2;

Ta biết thời gian âm thanh truyền trong không khí ở 20°C là 344 m/s. Bằng quy tắc tam suất đơn giản ta có thể dễ dàng tính được sóng âm di chuyển 1 cm trong không khí sẽ mất 1000 / 344 * 100 ~= 29.1 ms. Do thời gian được tính từ lúc phát tín hiệu tới khi sóng âm phản xạ lại, vì vậy ta chia đôi sẽ ra được quãng đường mà sóng âm đã đi.

Bài viết liên quan

Mới học Arduino nên chọn board nào?

 

Viết bình luận: