Điều khiển cảm biến khoảng cách HC-SR04

Cập nhật vào : Thứ bảy - 05/01/2019 02:52


Để đo khoảng cách, ta sẽ 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 lại được sóng phản xạ ở pin 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 và quay trở lại.

Cảm biến đo khoảng cách HC-SR04

Cảm biến sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 -> 300 cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình.

Cảm biến HC-SR04 có 4 chân là: Vcc, Trig, Echo, GND.

Vcc

5V

Trig

Một chân Digital output

Echo

Một chân Digital input

GND

GND

Sơ đồ nối chân giữa HC-SR04 và Arduino

Nguyên lý hoạt động

Để đo khoảng cách, ta sẽ 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 lại được sóng phản xạ ở pin 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 và quay trở lại. 

Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (106 / (340*100)). Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.

Lắp mạch


	const int trig = 8;     // chân trig của HC-SR04
	const int echo = 7;     // chân echo của HC-SR04
	 
	void setup()
	{
	    Serial.begin(9600);     // giao tiếp Serial với baudrate 9600
	    pinMode(trig,OUTPUT);   // chân trig sẽ phát tín hiệu
	    pinMode(echo,INPUT);    // chân echo sẽ nhận tín hiệu
	}
	 
	void loop()
	{
	    unsigned long duration; // biến đo thời gian
	    int distance;           // biến lưu khoảng cách
    
	    /* Phát xung từ chân trig */
	    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
	    
	    /* Tính toán thời gian */
	    // Đo độ rộng xung HIGH ở chân echo. 
	    duration = pulseIn(echo,HIGH);  
	    // Tính khoảng cách đến vật.
	    distance = int(duration/2/29.412);
	    
	    /* In kết quả ra Serial Monitor */
	    Serial.print(distance);
	    Serial.println("cm");
	    delay(200);
	}


Sửa lần cuối vào : Thứ bảy - 05/01/2019 03:30

 

HỖ TRỢ 24/7

Kinh doanh:

Di động: 086.924.3838

Email: info@vinagon.com

VĂN PHÒNG HÀ NỘI

  • P628 HH1A Linh Đàm - Hoàng Mai - Hà Nội
  • 086.924.3838 Fax: 086.924.3838
  • Kinh Doanh : info@vinagon.com

XƯỞNG SẢN XUẤT

  • C6,C7 Khuất Duy Tiến, Thanh Xuân Bắc, Thanh Xuân, Hà Nội.
  • Hotline: 085.99999.25