Высказывания и цитаты:

Во веки веков, и во все времена
Трус, предатель - всегда презираем,
Враг есть враг, и война всё равно есть война,
И темница тесна, и свобода одна...
Владимир Высоцкий

  • 09Ноя
    AVR

    Хорошего всем настроения! Как-то много лет назад в школе юных техников в городе Уссурийске по улице Пушкина, дом 11 мне довелось первый раз побывать. Там были и есть кружки технического рисования, авиамоделирования, радиокружок, автодело, робототехника. Почти все эти кружки ставят себе цель — участие в соревнованиях, и стояла перед ребятами задача: сконструировать машинку, которая будет удовлетворять регламенту следующего соревнования: задача — вытолкнуть за круг противника, при этом самому за этот круг не заехать. Если наша машина будет просто так кататься по кругу, не зная в каком месте находится противник — это будет пустая трата времени, здесь то и помог датчик расстояния Hc-Sr04 HC-SR04Его цена менее 6 долларов на aliexpress. Максимальная дальность измерения расстояния составляет 4 метра с точностью в пару миллиметров — именно такой точности удалось добиться в следующей программе.  Электрическая схема машинки:hc-sr04

    Итак в программе реализован следующий алгоритм — ничего не происходит, пока участник соревнования не нажмет кнопку Start, потом идет выдержка времени 5 секунд, машинка выдает два коротких гудка и начинает выполнять основной цикл программы одну минуту.
    В архиве внизу статьи прилагается datasheet на Hc-Sr04, где можно посмотреть принцип работы и его технические характеристики. В его основе лежит принцип измерения временного интервала между переданным сигналом и отраженным от объекта. Скорость звука в воздухе величина постоянная и составляет 330-340 метров в секунду. Отсюда, расстояние равно скорость звука в воздухе, умноженное на время и деленное на 2, так как сигнал проходит сперва расстояние до объекта, потом в обратную сторону.
    Датчик расстояния управляется по двум проводам — один на выход контроллера Trig (сигнал включения), другой на ввод Echo (здесь используем внешнее прерывание INT по изменению фронта). Время измеряется таймером 2 между 1 и 0 на выводе по которому происходит прерывание INT. Но в программе использован и третий выход микроконтроллера на светодиод — он загорается, когда расстояние меньше заданного, то есть когда он увидел противника. В качестве контроллера я использовал Mega8, программа написана на CodeVisionAVR. В качестве датчика определения границы круга используется трехпроводной с инфракрасной подсветкой и приёмником на микросхеме LM339, купленный на aliexpress по цене 2.5 доллара за штуку.
    Какие задачи слабо реализованы в этом алгоритме — комбинация приемов по выталкиванию противника, для управления моторчиками было бы лучше использовать ШИМ чтобы изменять скорость. Потом оптодатчиков лучше сделать два — спереди на левую и на правую сторону, к тому же сигналы с оптодатчиков получать не дискретные а аналоговые, которые потом обрабатывать АЦП. Остальные хитрости описывать не буду, кроме: эта программа работает в связке с микросхемой L293, которая способна выдавать 1 ампер на моторчик слева и 1 ампер на моторчик справа если у вас 2WD. В качестве моторчика применен сервомотор с редуктором, что обеспечивает неплохие тяговые характеристики при малых габаритах и расходе энергии, но его пришлось переделать. Этой статьи могло бы и не быть — спасибо ребятам из школы юных техников города Уссурийска за то, что собрали и протестировали роботов, нашли необходимую электрическую схему, я лишь написал прошивку для микроконтроллера. И по просьбе ребят со школы, мне пришлось часть кода в архиве удалить, чтобы эту прошивку мог запустить тот, кто допишет код сам. Вот архив с файлами Robot.rar Спрашивайте если что.

2 комментария

WP_Cloudy
  • Михаил Николаевич Мищенко пишет:

    Этих ребят со школы юных техников нужно во Владивосток, и тебя вместе с ними. У нас во Владивостоке, и даже в ДВФУ этого никто не делает. Прошивка для контроллера — это одна из очень главных вещей, над которой я бьюсь как рыба об лёд. Хоть самому репетитора нанимай по этим вещам или езди к такому репетитору. Сам бы хотел своими руками собрать и запрограммировать такую машину. Знать бы только что покупать в Омеге и как это всё выглядит. Ну и ассемблер с С++ соответственно.

  • автор пишет:

    Этот алгоритм трудно понять, поэтому выкладываю файл исходного кода, в котором реализована работа только датчика расстояния. Расстояние срабатывания задается также как и в программе выше — дистанция в сантиметрах. Если какой-то предмет попадает в поле датчика на меньшей дистанции,то загорается светодиод, иначе гаснет.
    исходный код только датчика расстояния со светодиодом

Ваш ответ

Внимание: Модератор оставляет за собой право редактировать или удалять комментарии.

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: