payaem.ru

Паяем — Все о электронике

Робот на шасси танка с ультразвуковым датчиком

Привет.

В этой статье, как вы уже поняли, речь пойдёт о простом роботе на игрушечном танке. Обычная и в то же время интересная игрушка. При помощи ультразвукового датчика обнаруживает и определяет расстояние до препятствий, и объезжает их.

Шаг 1: Материалы

  • HC-SR04 Ультразвуковой датчик
  • Smart Tank
  • Arduino Uno
  • Маленькая макетная плата
  • Отсек с батарейками AA х 4
  • Аккумуляторный отсек — батарейка 9 вольт

Шаг 2: Подключение

Для датчика подключение выполняется следующим образом:

  1. Земля> Arduino Земля
  2. Echo> Вывод 6
  3. Trig> Контакт 5
  4. VCC> 5V

    Для танка:

    1. IB на правой стороне> контакт 8
    2. IA на левой стороне> контакт 9
    3. IA на правой стороне> контакт 10
    4. IB на левой стороне> Контакт 11
    5. VCC с обеих сторон> + аккумуляторного отсека
    6. GND по обе стороны> — отсек батареек и Arduino GND

      Шаг 3: Проверить датчик

      Для датчика:

      В Arduino IDE, выберите Сервис> Serial Monitor. Это указывает расстояние.

      Sketch код

      Шаг 4: Проверка датчика с танком

      Здесь получилось так: если между танком и препятствием больше 30 см то он едет вперёд, а если меньше то начинает сворачивать вправо.

      Немного подкорректировали код. Результат неплохой.

      Код

      Шаг 5: Проверка всего материала

      Сервопривод, который прилагается к этому датчику может вращаться на 180 градусов. Но нам нужно только 90 градусов, поэтому нужно откалибровать сервопривод, чтобы датчик не поворачивался назад.

      Проводка сервопривода:один коричневый провод идёт на Arduino GND, красный 5В и жёлтый на контакт 7.

      Чтобы настроить сервопривод на нужное нам вращение был создан вот такой код, (на примере из библиотеки Arduino), который представлен ниже. Это позволит вам настроить датчик на вращение от 0 до 100 градусов, как раз то что нужно.

      Вот такой код получился:

      Код

      И тут возникла одна проблема: датчик обнаружения срабатывает только один раз, за время когда сервопривод переходит от 0 до 100 градусов. Другими словами нам нужен датчик, который обнаруживает несколько раз за один оборот сервопривода. Как это сделать?

      Шаг 6: Поиск и устранение неисправностей

      После долгих поисков решения проблемы в интернете было решено сделать код таким:

      Код

      Размах сервопривода был разделён на три части. Каждая часть контролирует разные углы.

      Шаг 7: Результат

      Ура! 🙂 Заработало! Тридцати сантиметров запаса расстояния роботу как раз хватает, чтобы обнаружить препятствие и объехать его.

      Вот и всё. До свидания. Удачи вам в ваших проектах.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *