HC-SR04: tất cả về cảm biến siêu âm

Cảm biến HC-SR04

Đôi khi nó là cần thiết Đo khoảng cách và để bạn có thể sử dụng một số cảm biến. Chúng tôi đã dành riêng một bài báo để nói về một cảm biến khoảng cách chính xác cao như VL52L0X. Cảm biến này thuộc loại ToF và dựa trên các phép đo rất chính xác nhờ tia laser của nó. Nhưng nếu độ chính xác không quan trọng đối với bạn và bạn muốn thứ gì đó cho phép bạn đo khoảng cách với mức giá thấp, thì một khả năng khác là bạn có trong tầm tay là HC-SR04.

Trong trường hợp của Cảm biến khoảng cách HC-SR04, khoảng cách được đo bằng sóng siêu âm. Hệ thống này tương tự như phương pháp quang học của VL52L0X. Có nghĩa là, nó được phát ra, có một phản hồi và nó được nhận lại, nhưng trong trường hợp này thay vì là tia laser hoặc IR, nó là sóng siêu âm. Nếu bạn đam mê điện tử, rô bốt hoặc nhà sản xuất nghiệp dư, bạn có thể sử dụng nó cho vô số dự án DIY như hệ thống phát hiện chướng ngại vật cho rô bốt, cảm biến hiện diện, v.v.

HC-SR04 là gì?

Vâng, điều đó là hiển nhiên, như tôi đã nhận xét trong các đoạn trước, HC-SR04 là cảm biến khoảng cách có độ chính xác thấp dựa trên sóng siêu âm. Với nó, nó cho phép đo khoảng cách một cách đơn giản và nhanh chóng, mặc dù về nguyên tắc nó không thường được sử dụng cho việc đó. Thông thường, nó được sử dụng như một bộ chuyển đổi để phát hiện chướng ngại vật và tránh chúng thông qua các cơ chế khác liên quan đến phản ứng của cảm biến.

Sự xuất hiện của HC-SR04 rất đặc biệt và dễ nhận biết. Ngoài ra, nó là một vật phẩm rất phổ biến trong bộ khởi động Arduino và cần thiết cho vô số dự án. Nó dễ dàng được xác định bởi vì nó có hai "mắt" thực sự là thiết bị siêu âm mà mô-đun này tích hợp. Một trong số đó là máy phát siêu âm và máy còn lại là máy thu. Nó hoạt động ở tần số 40 Khz, do đó nó không thể nghe được đối với con người.

Nguyên lý của cảm biến siêu âm

Nguyên tắc trong đó Nó dựa trên việc mô phỏng phương pháp được sử dụng khi bạn ném một viên đá vào giếng để đo độ sâu của nó. Bạn ném hòn đá và thời gian bao lâu để nó rơi xuống đáy. Sau đó, bạn tính toán tốc độ theo thời gian trôi qua và bạn sẽ có được quãng đường mà viên đá đã đi được. Nhưng trong trường hợp đó, cảm biến là bạn.

Đặc biệt
Bài viết liên quan:
ESP8266: mô-đun WIFI cho Arduino

Trong HC-SR04, bộ phát sẽ phát ra sóng siêu âm và khi chúng bật ra khỏi vật thể hoặc chướng ngại vật cản đường chúng sẽ bị bộ thu bắt. Các mạch sẽ thực hiện các tính toán cần thiết của tiếng vang đó để xác định khoảng cách. Điều này cũng có thể quen thuộc với bạn nếu bạn biết hệ thống mà một số loài động vật như cá heo, cá voi hoặc dơi sử dụng để xác định vị trí chướng ngại vật, con mồi, v.v.

Bằng cách đếm thời gian từ khi phát xung cho đến khi nhận được phản hồi, thời gian và do đó có thể xác định chính xác khoảng cách. Nhớ lấy [Không gian = thời gian vận tốc] nhưng trong trường hợp của HC-SR04, bạn phải chia đại lượng này cho / 2, vì thời gian được đo từ khi siêu âm đi ra và truyền trong không gian cho đến khi nó chạm chướng ngại vật và quay trở lại, vì vậy nó sẽ xấp xỉ một nửa trong số này ...

Sơ đồ chân và bảng dữ liệu

Bạn đã biết rằng để xem toàn bộ dữ liệu của mô hình mà bạn đã có được, điều tốt nhất là tìm bảng dữ liệu bê tông của nhà sản xuất. Ví dụ, đây là một Biểu dữ liệu Sparkfun, nhưng có nhiều hơn nữa có sẵn trong PDF. Tuy nhiên, đây là dữ liệu kỹ thuật quan trọng nhất của HC-SR04:

  • pinout: 4 chân cấp nguồn (Vcc), kích hoạt (Trigger), thu (Echo) và tiếp đất (GND). Bộ kích hoạt chỉ ra thời điểm nên kích hoạt cảm biến (khi siêu âm được phóng), và do đó có thể biết được thời gian trôi qua khi bộ thu nhận được tín hiệu.
  • Alimentacion: 5 V
  • Tần số siêu âm: 40 Khz, tai người chỉ nghe được từ 20Hz đến 20Khz. Mọi thứ dưới 20Hz (sóng hạ âm) và trên 20Khz (sóng siêu âm) sẽ không thể cảm nhận được.
  • Tiêu thụ (chờ): <2mA
  • Tiêu dùng hoạt động: 15mA
  • Góc hiệu quả: <15º, tùy thuộc vào góc của đối tượng mà bạn có thể có kết quả tốt hơn hoặc kém hơn.
  • Khoảng cách đo được: từ 2cm đến 400cm, mặc dù từ 250 cm độ phân giải sẽ không tốt lắm.
  • Độ phân giải trung bình: Chênh lệch 0.3 cm giữa khoảng cách thực tế và phép đo, vì vậy mặc dù không được coi là có độ chính xác cao như tia laser, nhưng phép đo khá chấp nhận được cho hầu hết các ứng dụng.
  • giá: từ khoảng € 0,65

Tích hợp với Arduino

HC-SR04 với Arduino

đến kết nối nó với Arduino không thể dễ dàng hơn. Bạn chỉ cần chịu trách nhiệm kết nối GND với đầu ra tương ứng của Arduino được đánh dấu như vậy, Vcc với nguồn điện Arduino 5v và hai chân khác của HC-SR04 với các đầu vào / đầu ra được chọn cho dự án của bạn. Bạn có thể thấy rằng nó đơn giản trong sơ đồ Fritzing trên ...

Bạn chỉ có một cân nhắc, rằng trình kích hoạt phải nhận được một xung điện ít nhất 10 micro giây để nó kích hoạt đúng cách. Trước đó, bạn phải đảm bảo rằng nó ở giá trị THẤP.

Khi đến mã cho Arduino IDE, bạn không phải sử dụng bất kỳ thư viện nào hoặc bất kỳ thứ gì tương tự như với các thành phần khác. Chỉ cần tạo công thức để tính khoảng cách và một chút nữa ... Tất nhiên, nếu bạn muốn dự án của mình thực hiện điều gì đó để đáp ứng với phép đo của cảm biến HC-SR04, bạn sẽ phải thêm mã bạn cần. Ví dụ: thay vì chỉ hiển thị các phép đo trên bảng điều khiển, bạn có thể làm cho động cơ servo di chuyển theo hướng này hoặc hướng khác trong những khoảng cách nhất định để tránh chướng ngại vật hoặc để động cơ dừng lại, một cảnh báo sẽ được kích hoạt khi phát hiện sự gần gũi, v.v. .

 Thông tin thêm về lập trình: Hướng dẫn sử dụng Arduino (PDF miễn phí)

Ví dụ, bạn có thể thấy điều này mã cơ bản để sử dụng làm cơ sở:

//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger
const int EchoPin = 8;
const int TriggerPin = 9;
 
void setup() {
   Serial.begin(9600);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}

//Aquí la muestra de las mediciones
void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia medida: ");
   Serial.println(cm);
   delay(1000);
}

//Cálculo para la distancia
int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
   
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
   
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
   
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;
}


Một bình luận, để lại của bạn

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Jose dijo

    Tôi thấy lời giải thích rất hữu ích và đơn giản.