Làm thế nào để đo khoảng cách giữa hai điểm bằng Arduino?

Trong Điện tử, phần lớn thời gian Cảm biến siêu âm được sử dụng để đo khoảng cách từ điểm cụ thể này đến điểm cụ thể khác. Rất dễ dàng để viết mã trên bảng Arduino và tích hợp thiết bị cảm biến sóng siêu âm để thực hiện nhiệm vụ này. Nhưng trong bài viết này, chúng tôi sẽ áp dụng một cách tiếp cận khác. Chúng tôi sẽ sử dụng hai cảm biến siêu âm riêng biệt sẽ được tích hợp với hai Arduino riêng biệt. Hai mô-đun này sẽ được đặt ở hai điểm khác nhau mà giữa đó khoảng cách sẽ được đo. Một cảm biến sẽ được làm bộ thu và bộ còn lại sẽ được làm bộ phát. Bằng cách đó, chúng tôi sẽ có thể đo khoảng cách giữa chúng chỉ bằng cách xác định vị trí của máy phát bằng cách sử dụng nhiều máy thu siêu âm. Kỹ thuật chúng tôi đang sử dụng ở đây được gọi là Phương pháp tam giác.

Kỹ thuật được sử dụng ở đây chỉ hữu ích trên các hệ thống quy mô nhỏ, nơi cần một khoảng cách nhỏ. Để thực hiện nó trên quy mô lớn, chắc chắn cần phải có một số sửa đổi. Tất cả những thách thức phải đối mặt khi thực hiện dự án này được thảo luận dưới đây.

Làm thế nào để sử dụng Arduino và cảm biến siêu âm để đo khoảng cách?

Như chúng ta đã biết tóm tắt đằng sau dự án, chúng ta hãy tiếp tục và thu thập thêm thông tin để bắt đầu dự án.

Bước 1: Thu thập các thành phần (Phần cứng)

Nếu bạn muốn tránh bất kỳ sự bất tiện nào khi ở giữa bất kỳ dự án nào, cách tốt nhất là lập một danh sách đầy đủ tất cả các thành phần mà chúng ta sẽ sử dụng. Bước thứ hai, trước khi bắt đầu chế tạo mạch, bạn phải tìm hiểu sơ qua về tất cả các thành phần này. Dưới đây là danh sách tất cả các thành phần mà chúng tôi cần trong dự án này.

Bước 2: Thu thập các thành phần (Phần mềm)

Sau khi tải xuống Proteus 8 Professional, hãy thiết kế mạch trên đó. Tôi đã đưa các mô phỏng phần mềm vào đây để có thể thuận tiện cho những người mới bắt đầu thiết kế mạch và tạo các kết nối thích hợp trên phần cứng.

Bước 3: Làm việc của HCR-05

Như bây giờ chúng ta đã biết tóm tắt chính về dự án của mình, chúng ta hãy tiếp tục và đi qua một nghiên cứu ngắn gọn về hoạt động của HCR-05. Bạn có thể hiểu hoạt động chính của cảm biến này qua sơ đồ sau.

Cảm biến này có hai chân, chốt kích hoạt, mã pin sinh thái cả hai đều được sử dụng để đo khoảng cách giữa hai điểm cụ thể. Quá trình này được bắt đầu bằng cách gửi một sóng siêu âm từ cảm biến. Nhiệm vụ này được thực hiện bằng cách kích hoạt pin trig cho 10us. Một chùm sóng siêu âm 8 âm được gửi từ máy phát ngay sau khi nhiệm vụ này được thực hiện. sóng này sẽ truyền trong không khí và ngay sau khi nó chạm vào một vật thể theo cách của nó, nó sẽ tấn công trở lại và được nhận bởi bộ thu được tích hợp trong cảm biến.

Khi sóng siêu âm sẽ được nhận bởi bộ thu sau khi phản xạ lại cảm biến, nó sẽ đặt mã pin sinh tháilên trạng thái cao. Chân này sẽ duy trì ở trạng thái cao trong khoảng thời gian sẽ chính xác bằng thời gian sóng siêu âm đi từ máy phát và quay trở lại máy thu của cảm biến.

Để tạo cảm biến siêu âm của bạn chỉ máy phát,chỉ cần tạo chân trig làm chân đầu ra của bạn và gửi một xung cao đến chân này trong 10us. Một vụ nổ siêu âm sẽ được bắt đầu ngay sau khi điều này được thực hiện. Vì vậy, bất cứ khi nào sóng được truyền đi, chỉ cần điều khiển chân kích hoạt của cảm biến siêu âm.

Không có cách nào để làm cho cảm biến siêu âm như một chỉ người nhận bởi vì sự tăng lên của chân ECO không thể được điều khiển bởi vi điều khiển vì nó liên quan đến chân trig của cảm biến. Nhưng có một điều mà chúng tôi có thể làm là, chúng tôi có thể che bộ phát của cảm biến siêu âm này bằng băng keo để không có sóng UV lọt ra ngoài. Khi đó chân ECO của bộ phát này sẽ không bị ảnh hưởng bởi bộ phát.

Bước 4: Làm việc của mạch

Bây giờ, khi chúng tôi đã làm cho cả hai cảm biến hoạt động riêng biệt như một máy phát và máy thu, có một vấn đề lớn đang phải đối mặt ở đây. Máy thu sẽ không biết thời gian sóng siêu âm truyền từ máy phát đến máy thu vì nó không biết chính xác thời điểm sóng này truyền đi.

Để giải quyết vấn đề này, những gì chúng ta phải làm là gửi một CAO tín hiệu đến ECO của máy thu ngay khi sóng siêu âm được truyền đi bu cảm biến máy phát. Hay nói một cách đơn giản, chúng ta có thể nói rằng ECO của bộ thu và bộ kích hoạt của bộ phát nên được gửi lên HIGH cùng một lúc. Vì vậy, để đạt được điều này, bằng cách nào đó chúng ta sẽ làm cho kích hoạt của máy thu tăng cao ngay khi kích hoạt của máy phát lên cao. Kích hoạt này của bộ thu sẽ ở mức cao cho đến khi chân ECO đi THẤP. Khi một tín hiệu siêu âm sẽ được nhận bởi chân ECO của máy thu, nó sẽ ở mức THẤP. Điều này có nghĩa là bộ kích hoạt của cảm biến máy phát chỉ nhận được tín hiệu CAO. Bây giờ, ngay khi ECO xuống thấp, chúng tôi sẽ đợi độ trễ đã biết và đặt bộ kích hoạt của bộ thu lên CAO. Bằng cách đó, kích hoạt của cả hai cảm biến sẽ được đồng bộ hóa và khoảng cách sẽ được tính bằng cách biết thời gian trễ của sóng truyền.

Bước 5: Lắp ráp các thành phần

Mặc dù chúng tôi chỉ sử dụng bộ phát của một cảm biến siêu âm và bộ thu của cảm biến kia, nhưng bắt buộc phải kết nối tất cả bốn chân của thiết bị cảm biến sóng siêu âm đến Arduino. Để kết nối mạch, hãy làm theo các bước dưới đây:

  1. Lấy hai cảm biến siêu âm. Che đầu thu của cảm biến thứ nhất và đầu phát của cảm biến thứ hai. Sử dụng băng keo trắng cho mục đích này và đảm bảo rằng hai tấm này được che hoàn toàn để không có tín hiệu nào rời khỏi bộ phát của cảm biến thứ hai và không có tín hiệu nào đi vào bộ thu của cảm biến thứ nhất.
  2. Kết nối hai Arduino trên hai bảng mạch riêng biệt và kết nối các cảm biến tương ứng với chúng. Kết nối Chân kích hoạt với chân 9 của Arduino và ecoPin với chân 10 của Arduino. Cấp nguồn cho cảm biến siêu âm bằng 5V của Arduino và thông thường tất cả các cơ sở.
  3. Tải mã bộ thu lên Arduino của Bộ thu và mã bộ phát lên Arduino của bộ phát.
  4. Bây giờ mở màn hình nối tiếp của phía nhận và ghi lại khoảng cách đang được đo.

Sơ đồ mạch của dự án này trông như sau:

Bước 6: Bắt đầu với Arduino

Nếu bạn chưa quen với Arduino IDE, đừng lo lắng vì quy trình từng bước để thiết lập và sử dụng Arduino IDE với bảng vi điều khiển được giải thích dưới đây.

  1. Tải xuống phiên bản Arduino IDE mới nhất từ ​​Arduino.
  2. Kết nối bảng Arduino Nano với máy tính xách tay của bạn và mở bảng điều khiển. trong bảng điều khiển, nhấp vàoPhần cứng và Âm thanh. Bây giờ bấm vàoCác thiết bị và máy in.Tại đây, hãy tìm cổng mà bảng vi điều khiển của bạn được kết nối. Trong trường hợp của tôi, nó là COM14nhưng nó khác nhau trên các máy tính khác nhau.
  3. Nhấp vào menu Công cụ. và đặt bảng thành Arduino Nano từ menu thả xuống.
  4. Trong cùng một menu Công cụ, hãy đặt cổng thành số cổng mà bạn đã quan sát trước đó trong Các thiết bị và máy in.
  5. Trong cùng một menu Công cụ, Đặt Bộ xử lý thành ATmega328P (Bộ nạp khởi động cũ).
  6. Tải xuống mã được đính kèm bên dưới và dán nó vào IDE Arduino của bạn. Bấm vào tải lên để ghi mã trên bảng vi điều khiển của bạn.

Để tải xuống mã, bấm vào đây.

Bước 7: Tìm hiểu Quy tắc

Mã được sử dụng trong dự án này rất đơn giản và được nhận xét khá tốt. Có hai tệp mã trong thư mục đính kèm. Mã cho máy phát và mã cho phía máy thu đều được cung cấp riêng biệt. Chúng tôi sẽ tải lên các mã này trong cả hai bảng Arduino tương ứng. Mặc dù nó là tự giải thích, nó được mô tả ngắn gọn dưới đây.

Mã cho phía máy phát

1. Khi bắt đầu, các chân của bảng Arduino được khởi tạo sẽ được kết nối với Cảm biến siêu âm. Sau đó, các biến được khai báo sẽ được sử dụng để lưu trữ các giá trị cho việc tính toán thời gian và khoảng cách trong thời gian chạy mã.

// định nghĩa số chân const int trigPin = 9; // Kết nối chân trig của cảm biến siêu âm với chân9 của Arduino const int echoPin = 10; // Kết nối chân sinh thái của cảm biến siêu âm với chân 10 của Arduino // xác định thời gian dài của các biến; // biến để đo thời gian sóng siêu âm di chuyển int khoảng cách; // biến để lưu trữ khoảng cách được tính

2. void setup ()là chức năng chỉ chạy một lần khi khởi động bo mạch hoặc nhấn nút bật. Ở đây, cả hai chân của Arduino đều được khai báo để sử dụng như ĐẦU VÀOĐẦU RA. Baudrate được đặt trong chức năng này. Tốc độ truyền là tốc độ tính bằng bit trên giây mà vi điều khiển giao tiếp với cảm biến siêu âm.

void setup () {pinMode (trigPin, OUTPUT); // Đặt trigPin làm Mã pin đầu ra (echoPin, INPUT); // Đặt echoPin làm Input Serial.begin (9600); // Bắt đầu giao tiếp nối tiếp}

3. void loop ()là một hàm chạy đi chạy lại trong một vòng lặp. Ở đây chúng tôi đã mã hóa bộ vi điều khiển để nó gửi tín hiệu CAO đến chân Trigger của cảm biến siêu âm, hoạt động trong 20 micro giây và gửi tín hiệu THẤP đến nó.

void loop () {// Đặt trigPin ở trạng thái CAO trong 10 micro giây digitalWrite (trigPin, HIGH); // gửi tín hiệu CAO trên kích hoạt của cảm biến đầu tiên delayMicroseconds (10); // chờ 10 micro giây digitalWrite (trigPin, LOW); // gửi tín hiệu LOW tới bộ kích hoạt của độ trễ cảm biến đầu tiên (2); // đợi 0,2 giây}

Mã cho phía người nhận

1. Khi bắt đầu, các chân của bảng Arduino được khởi tạo sẽ được kết nối với Cảm biến siêu âm. Sau đó, các biến được khai báo sẽ được sử dụng để lưu trữ các giá trị cho việc tính toán thời gian và khoảng cách trong thời gian chạy mã.

// định nghĩa số chân const int trigPin = 9; // Kết nối chân trig của cảm biến siêu âm với chân9 của Arduino const int echoPin = 10; // Kết nối chân sinh thái của cảm biến siêu âm với chân 10 của Arduino // xác định thời gian dài của các biến; // biến để đo thời gian sóng siêu âm di chuyển int khoảng cách; // biến để lưu trữ khoảng cách được tính

2. void setup ()là chức năng chỉ chạy một lần khi khởi động bo mạch hoặc nhấn nút bật. Ở đây cả hai chân của Arduino đều được khai báo sử dụng như INPUT và OUTPUT. Baudrate được đặt trong chức năng này. Tốc độ truyền là tốc độ tính bằng bit trên giây mà vi điều khiển giao tiếp với cảm biến siêu âm.

void setup () {pinMode (trigPin, OUTPUT); // Đặt trigPin làm Mã pin đầu ra (echoPin, INPUT); // Đặt echoPin làm Input Serial.begin (9600); // Bắt đầu giao tiếp nối tiếp}

3. void Trigger_US () là một chức năng sẽ được gọi cho Kích hoạt giả của chân trig của cảm biến siêu âm thứ hai. Chúng tôi sẽ đồng bộ hóa thời gian kích hoạt của chân trig của cả hai cảm biến.

void Trigger_US () {// Giả mạo kích hoạt cảm biến Hoa Kỳ digitalWrite (trigPin, HIGH); // Gửi tín hiệu CAO đến chân kích hoạt của cảm biến thứ hai delayMicroseconds (10); // đợi 10 micro giây digitalWrite (trigPin, LOW); // gửi một tín hiệu THẤP tới bộ gửi thứ hai của chân kích hoạt}

4. void Calc ()là một chức năng được sử dụng để tính toán thời gian cần thiết để tín hiệu siêu âm đi từ cảm biến thứ nhất đến cảm biến thứ hai.

void Calc () // hàm tính thời gian sóng siêu âm di chuyển {thời gian = 0; // thời lượng ban đầu được đặt thành không Trigger_US (); // gọi hàm Trigger_US while (digitalRead (echoPin) == HIGH); // trong khi trạng thái của chân eo ở độ trễ cao (2); // đặt độ trễ 0,2 giây Trigger_US (); // gọi thời lượng của hàm Trigger_US = xungIn (echoPin, HIGH); // tính thời gian thực hiện}

5. Đây trong void loop (), chúng tôi đang tính toán khoảng cách bằng cách sử dụng thời gian mà tín hiệu siêu âm đi từ cảm biến thứ nhất đến cảm biến thứ hai.

void loop () {Pdistance = khoảng cách; Calc (); // gọi hàm Calc () distance = length * 0.034; // tính khoảng cách được bao phủ bởi sóng siêu âm if (Pdistance == distance || Pdistance == distance + 1 || Pdistance == distance-1) {Serial.print ("Đã đo được khoảng cách:"); // in trên màn hình nối tiếp Serial.println (distance / 2); // in trên màn hình nối tiếp} //Serial.print("Distance: "); //Serial.println(distance/2); chậm trễ (500); // đợi 0,5 giây}
Facebook Twitter Google Plus Pinterest