Скорость чтения между двумя ультразвуковыми датчиками

Я новичок в Arduino и нуждаюсь в помощи для этого небольшого проекта.

Я пытаюсь построить код Arduino, который считывает скорость объекта, проходящего через два ультразвуковых датчика. Теперь план состоит в том, чтобы перенести первый ультразвуковой датчик после прохождения объекта. Второй датчик затем активирует и ждет, пока объект пройдет. Время, необходимое для достижения второго датчика, будет приведено в уравнение.

Скорость будет рассчитываться на расстояние между двумя ультразвуковыми датчиками, деленное на время, когда объект достигнет второго датчика. Я хотел бы показать скорость, если это возможно, на экране моего компьютера.

Вот мой код. Любая помощь будет оценена:

 int trig1 = 3; //Trig 1
int trig2 = 4; //Trig 2
int echo1 = 5; //echo1
int echo2 = 6; //echo2
int ECHO1;
int ECHO2;
double first_time;
double second_time;
double final_time;
double speed;


void setup()
{
   pinMode(trig1, OUTPUT);  //sets the digital pin 3 as output
   pinMode(trig2, OUTPUT);  //sets the digital pin 4 as output
   pinMode(echo1, INPUT);  //sets the digital pin 5 as input
   pinMode(echo2, INPUT);  //sets the digital pin 6 as input
}

void loop()
{
  ECHO1 = digitalRead(echo1);

  while (ECHO1 == 0)
  {
    digitalWrite(trig1,HIGH);
    delay(100);
    digitalWrite(trig1,LOW);
    ECHO1 = digitalRead(echo1);
  }

  first_time = time();

  ECHO2 = digitalRead(echo2);

  while (ECHO2 == 0)
  {
    digitalWrite(trig2,HIGH);
    delay(100);
    digitalWrite(trig2,LOW);
    ECHO2 = digitalRead(echo2);
  }

  second_time = time();

  final_time = second_time - first_time;

}
2 голоса | спросил flyer3110 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2016 05:24:09 +0300 2016, 05:24:09

2 ответа


3

Есть несколько проблем с этими ультразвуковыми модулями и вашим кодом:

  • Как быстро движутся эти объекты? Если у вас нет никакого отражения, это займет почти 20 мс за одну меру. Поэтому точность будет низкой.
  • Что делать, если объект движется в противоположном направлении?
  • Что делать, если объект застрял между?

и т. д.

В любом случае схема лазерного прерывания (или аналогичная) была бы гораздо более подходящей для этой работы.

Или, если вы хотите использовать ультразвук, вы можете использовать эффект Допплера. Но это невозможно с помощью этих модулей PING))) (или клонов).

ответил KIIV 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2016 10:13:51 +0300 2016, 10:13:51
0

Если я правильно понимаю, вы используете ультразвуковые датчики, такие как световые барьеры.

Скорость измерения с помощью ультразвука будет производиться путем отправки звука по интересующему объекту и измерения времени отраженного звука. Скорость движения звука в воздухе - это как-то постоянный . Вы получите расстояние от объекта * 2. С помощью двух измерений за определенный период времени вы можете определить скорость объекта.

При использовании световых барьеров (инфракрасных) я попытаюсь вызвать прерывания с помощью фотодиодов и измерить время между срабатываниями, описанными вами. Если подключено к тому же прерыванию, направление объекта должно быть неактуальным. Если используются два прерывания, известно даже направление.

ответил tobster 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2016 10:43:15 +0300 2016, 10:43:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132