Sử dụng nhiều hơn một công cụ tìm phạm vi siêu âm Ping


7

Tôi đã thực hiện các ứng dụng khác nhau với dự án ví dụ siêu âm nhưng nó luôn sử dụng một pinger. Tôi muốn làm cho một máy quét nghỉ ngơi khi quét servo nhưng để giảm thời gian quét sử dụng nhiều hơn một kiểm duyệt.

tài liệu này là ping sonic khá cơ bản cho biết tín hiệu 40khz được sử dụng.

Xuống câu hỏi bây giờ. Có một phương tiện để nói với một người chơi sử dụng 40Khz và người khác nói 45Khz.

Điều này sẽ cho phép tôi quét hai khu vực (các hướng khác nhau) trong mỗi chu kỳ, giảm khung thời gian để hoàn thành quét một nửa khu vực.


@NickAlexeev, thực sự có thể không có câu trả lời, phần cứng pinger là chìa khóa không phải là chính Arduino - chu trình 40Khz thực sự có thể được sửa bởi phần cứng của nó. Tôi sẽ để nó ngồi một ngày và sau đó đưa ra gợi ý của bạn, cảm ơn bạn.

Câu hỏi cũng có thể hoạt động trên EE.SE , nhưng hãy xem xét bỏ thẻ Arduino nếu nó không cần thiết.

Nhân tiện. Với một cảm biến duy nhất, quá trình quét mất bao lâu? Có bao nhiêu số gia? Điều chỉnh servo mất bao nhiêu thời gian? Ping thực sự mất bao nhiêu thời gian?

Tôi đang quét 180 độ, khoảng 30 giây tất cả đã nói, tôi đoán từ bộ nhớ tôi không có thời gian. Nhưng tôi muốn giảm thời gian.

Bạn có thể muốn làm rõ câu hỏi một chút. Các cảm biến ping này hoạt động theo phương pháp "điều khiển xung". Arduino gửi xung kích hoạt và phát hiện sự khác biệt về thời gian từ sự trở lại (echo). Sử dụng hai (hoặc nhiều) cảm biến trên các chân I / O riêng biệt có nghĩa là mỗi cảm biến được kích hoạt (xung) riêng biệt, tín hiệu siêu âm của chúng KHÔNG gây nhiễu cho nhau vì chúng sẽ không tắt cùng lúc.
Ron J.

Câu trả lời:


4

Không có cách nào để thay đổi tần số, tuy nhiên có nhiều cách khác để làm những gì bạn muốn thực hiện. Tôi nghĩ rằng điều tốt nhất để làm là sắp xếp lại thời gian của các ping để chúng không xảy ra cùng một lúc.

Mã ví dụ, được sửa đổi bởi tôi:

#include <Servo.h> 
Servo servo; // create servo object to control a servo

int pingPins[] = {7,8}; //The pins for the two sensors
char *pingString[] = {"Ping1", "Ping2"};

void setup()
{
  servo.attach(10); // attaches a servo to pin 10
  Serial.begin(9600);
}

void loop()
{
  unsigned long ultrasoundValue;
  for(int i = 0; i < ultraSoundSignalPins.length; i++)
  {
    ultrasoundValue = ping(i);
    Serial.print(pingString[i]);
    Serial.print(": ");
    Serial.print(ultrasoundValue);
    Serial.print("in, ");    
    delay(50);
  }
  Serial.println();
  delay(50);
 } 

//Ping function
unsigned long ping(int i)
{
  unsigned long echo;

  pinMode(pingPins[i], OUTPUT);         // Switch signalpin to output
  digitalWrite(pingPins[i], LOW);       // Send low pulse
  delayMicroseconds(2);                 // Wait for 2 microseconds
  digitalWrite(pingPins[i], HIGH);      // Send high pulse
  delayMicroseconds(5);                 // Wait for 5 microseconds
  digitalWrite(pingPins[i], LOW);       // Holdoff
  pinMode(pingPins[i], INPUT);          // Switch signalpin to input
  digitalWrite(pingPins[i], HIGH);      // Turn on pullup resistor
  echo = pulseIn(pingPins[i], HIGH);    //Listen for echo
  return (echo / 58.138) * .39;         //convert to CM then to inches
}

Nguồn:


1

Cảm biến Ping))) sử dụng tinh thể để định thời gian. Một số loại trực tiếp giá rẻ thực sự sử dụng chip MAX3232 (là cổng nối tiếp / usart) để phát hiện xung trở lại, chỉ để phát hiện sóng mang. Nếu thị sai tương tự nhau, chúng có dải tần khá rộng mà chúng hoạt động, vì bạn không bao giờ biết tốc độ truyền tín hiệu mong đợi, từ 9600 đến 1mhz, mặc dù chúng cố tình không quá cầu kỳ về việc vô tình bắt các tần số gần đó. Vì có thể có một số logic khác trên các chip khác và mọi thứ có thể đang chạy khỏi một tinh thể, tôi khuyên bạn nên chuyển đến tần số thấp hơn, nếu không bạn đang ép xung. Ngoài ra, đảm bảo gửi xung kích hoạt dài hơn vì tất cả logic sẽ chậm hơn. Từ hình ảnh, nó trông giống như một tinh thể 16 MHz, phải được chia thành 40KHz. Vì vậy, hàn trong 14 MHz và 11 MHz,

Bên cạnh, bạn cũng có thể xem xét quét xa hơn. Nếu bạn mất 30 giây, có lẽ bạn đang kiểm tra mọi mức độ; có thể thử cứ sau 15 hoặc 30 độ (chỉ cần đảm bảo cho thời gian servo di chuyển)


0

Tôi không nghĩ việc thay đổi tần số sẽ rất dễ dàng trừ khi Parallax quyết định phát hành phần sụn cho Ping. Có thể sử dụng hai, miễn là bạn sử dụng một pin dữ liệu khác nhau cho mỗi, nhưng tín hiệu siêu âm có thể gây nhiễu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.