Подключение 2-ух ультразвуковых дальномеров HC-SR04 - ФОРУМ ДВ Робот dvrobot.ru
Суббота, 15.12.2018, 09:53
Главная Мой профиль Регистрация Выход
  • НАШ МАГАЗИН
  • Вы вошли как Гость | Группа "Гости"Приветствую Вас, Гость
    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    • Страница 1 из 1
    • 1
    Модератор форума: Serg, GRACH  
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Подключение 2-ух ультразвуковых дальномеров HC-SR04
    Подключение 2-ух ультразвуковых дальномеров HC-SR04
    vlasov-sergДата: Суббота, 21.06.2014, 18:05 | Сообщение # 1
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 12
    Репутация: 0
    Статус: Offline
    Здравствуйте, в проекте требуется подключить 2 ультразвуковых дальномера. При получении данных от дальномеров принимается решение в какую сторону совершить поворот манипулятору. Возникла проблема судя по работе сразу после включения с левого дальномера приходит значение нуля, и совершается поворот в его сторону, хотя предметов нет. Следующее его значение соответствует расстоянию до стены.
    Вот текст программы для определения расстояния (без кусков на повороты манипулятора):
    //PIN UZD
    int uE1=26; //UZD RIGHT ECHO
    int uT1=27; //UZD RIGHT TRIG
    int uE2=28; //UZD LEFT ECHO
    int uT2=29; //UZD LEFT TRIG
    void setup()
    {
    //SETUP SERIAL
    Serial.begin(9600);
    Serial.println("PROJECT TEST");
    pinMode(uE1, INPUT);
    pinMode(uT1, OUTPUT);
    pinMode(uE2, INPUT);
    pinMode(uT2, OUTPUT);
    }
    void loop()
    {
    //UZD RIGHT
    digitalWrite(uT1, LOW);
    delayMicroseconds(2);
    digitalWrite(uT1, HIGH);
    delayMicroseconds(10);
    digitalWrite(uT1, LOW);
    int d1=pulseIn(uE1, HIGH);
    d1=d1/58;
    //UZD LEFT
    digitalWrite(uT2, LOW);
    delayMicroseconds(2);
    digitalWrite(uT2, HIGH);
    delayMicroseconds(10);
    digitalWrite(uT2, LOW);
    int d2=pulseIn(uE2, HIGH);
    d2=d2/58;
    //COM-PORT SERIAL
    //COM-PORT UZD RIGHT
    Serial.print(d1);
    Serial.print(" ");
    Serial.print("cm UZV RIGHT");
    Serial.print(" ");
    Serial.println(" ");
    //COM-PORT UZD LEFT
    Serial.print(d2);
    Serial.print(" ");
    Serial.print("cm UZV LEFT");
    Serial.print(" ");
    Serial.println(" ");
    if (d1<=20)
    {
    //POVOROT RIGHT
    }
    else if (d2<=20)
    {
    //POVOROT LEFT
    }
    else
    {
    //STOP MANIPULATOR
    }
    }
    Монитор COM-Porta:
    PROJECT TEST
    43 cm UZV RIGHT 
    0 cm UZV LEFT 
    44 cm UZV RIGHT 
    77 cm UZV LEFT 
    44 cm UZV RIGHT 
    68 cm UZV LEFT 
    44 cm UZV RIGHT 
    77 cm UZV LEFT 
    Как видно из монитора COM-Porta: первый опрос правого датчика выдает 43 см, а левый выдает 0 см. В следующий момент все приходит в норму: правый 44 см, левый 77 см.
    Как убрать этот ноль при первом опросе, он портит всю систему. Как только включаю совершает сразу поворот в левую сторону.
     
    vlasov-sergДата: Суббота, 21.06.2014, 21:31 | Сообщение # 2
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 12
    Репутация: 0
    Статус: Offline
    Вопрос решен, все оказалось очень просто.
     
    SergДата: Суббота, 21.06.2014, 21:36 | Сообщение # 3
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    и что было?
     
    vlasov-sergДата: Суббота, 21.06.2014, 22:01 | Сообщение # 4
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 12
    Репутация: 0
    Статус: Offline
    вот такие изменения были сделаны:
    if ((d1<=20) && (d1>0))
    {
    //POVOROT RIGHT
    }
    else if ((d2<=20) && (d2>0))
    {
    //POVOROT LEFT
    }
     
    SergДата: Суббота, 21.06.2014, 22:05 | Сообщение # 5
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    ну это не решение, это обходной путь.
    почему датчик выдает ноль?
    может он неисправен?
    может попробовать поменять датчики местами- будет ли выдавать ноль?
    может изменить очередность опроса- d2, d1?
     
    vlasov-sergДата: Суббота, 21.06.2014, 22:10 | Сообщение # 6
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 12
    Репутация: 0
    Статус: Offline
    это надо у вас  спросить, датчики были приобретены у вас. точнее у магазина dvrobot.

    Сообщение отредактировал vlasov-serg - Суббота, 21.06.2014, 22:26
     
    SergДата: Суббота, 21.06.2014, 22:22 | Сообщение # 7
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    biggrin я ничего не продаю...
     
    vlasov-sergДата: Суббота, 21.06.2014, 22:27 | Сообщение # 8
    3.5 Вольт
    Группа: Пользователи
    Сообщений: 12
    Репутация: 0
    Статус: Offline
    а вообще это может быть из-за того что он не исправен?
     
    SergДата: Суббота, 21.06.2014, 22:32 | Сообщение # 9
    Ампер
    Группа: Модераторы
    Сообщений: 510
    Репутация: 28
    Статус: Offline
    вообще- может.
    а если точнее- где-то ошибка в программе.
    скорее всего датчик не успевает войти в рабочий режим, а у него уже спрашивают расстояние до стенки.
    у датчика тоже есть какой то микроконтроллер внутри.
     
    ФОРУМ ДВ Робот dvrobot.ru » DV ROBOT » Arduino - вопросы и ответы. » Подключение 2-ух ультразвуковых дальномеров HC-SR04
    • Страница 1 из 1
    • 1
    Поиск:

    ДВ Робот - Чат