Заголовок сообщения: Общение с ультразвуковым сонаром HC-SR04
Добавлено: Чт мар 07, 2013 08:49:03
Родился
Зарегистрирован: Вт сен 18, 2012 08:46:06 Сообщений: 13
Рейтинг сообщения:0
Доброго времени суток, уважаемые Коты и Кошечки!
Имеется проблема с довольно известным ультразвуковым сонаром HC-SR04. Проблема чисто программная, а так как по поиску на данном форуме ничего не отыскалось, пришлось создать новую тему в данном разделе.
Что имеется: плата с МК AVR AtMega8A и 4 УЗ сонара HC-SR04, робота-пылесоса.
Робота пылесоса я переделал под свои нужды, выкинув абсолютно всю его внутрянку и вставив свою. Ездить я его научил (где то тут даже была моя проблемная тема про Н-Мост на мосфетах). Теперь нужно сделать "глаза" этому несчастному роботу. Сначала он поворачивал при касаниях с чем либо (стояли 3 кнопки спереди робота), теперь нужно кнопки заменить УЗ сонарами. Вот, вкратце, предыстория.
Принцип работы довольно прост - посылаем лог.1 длительностью 10мкс на вход Trig сонара, и слушаем от него ответ с ноги Echo длительностью от 150мкс до 25мс. Всё просто, вроде бы.
Суть проблемы - не знаю как общаться с УЗ сонарами на языках C/C++. Совсем не знаю. Вообще. Перепробовал вагон и маааааленькую тележку примеров - все (ну не все, 98% только) сводятся к использованию сонара на внешних прерываниях (или работе данного УЗ сонара с ардуино) и не работают в моём случае (хотя я вроде с внешними прерываниями разобрался и всё просто обязано работать). Ни свободных внешних прерываний, ни какой либо ардуино не располагаю (да и ардуино мне не нужна абсолютно).
Вначале думал что спалил все 4 УЗ сонара, чуть не расстроился уже. Но вчера, в рамках эксперимента, скачал демоверсию BASCOM AVR, и попробовал там написать программу для общения с данными УЗ сонарами. И что же вы думаете? Всё работает, все 4 штуки.
Дело в том, что в BASCOM AVR есть расчудеснейшая команда pulseIn, которая измеряет длинну пришедшего на ногу МК сигнала. И она же есть для Arduino. Я пытался её реализовать сам, выдрав из хидеров от ардуино и переделав все тамошние функции на свои. Всё равно не работает. Осцилографом не располагаю, ближайший от меня где то в 55-60 км.
Перерыв необъятные просторы тырнета и не найдя ничего по теме я решил обратиться к вам, в надежде на вашу помощь. Если у кого то завалялся исходный код функции PulseIn не от ардуино - будет вообще шикарно.
зыЖ схему приводить не буду, т.к. она рабочая 100% - BASCOM AVR это показала. Но на этот самый BASCOM переходить очень не хочется - языки С/С++ мне гораздо ближе к душЕ и сердцу, нежели basic.
Ну, если просто длину импульса замерять - так это просто. Заводим необходимый сигнал от сонара на ногу МК AVR, разрешаем прерывание по PIN Change для этого вывода и ждем:) прерывание сработало - запускаем таймер, смотрим что пришло, 0 или 1. если 1, ждем следующего прерывания от PIN Change и смотрим что натикало в таймере если 0, останавливаем и обнуляем таймер, ждем 1.
_________________ Осилит дорогу идущий ---------- Пишу на Си за еду
маленький лайфхак - все сонары можно через диод привести на ОДНУ ногу прерывания, длительногсть которого и будете мерять , ногу подтянуть резюком к земле
А вот триггеры каждого сонара дергать по очереди -
но учтите - сонары очень любопытные вещи...и ничего общего с дальностью до стены у вас не получится - не забывайте про отражение звука .....если перед нами в метре стена под углом 45 градусов - вы не увидите её сонаром....в общем я вам даю свой исходник под мегу 8 и экран 44780 - там оконный фильтр и все ошибки обрабатываются и в сантиметры переводится - поиграйтесь сначала чтобы понять что да как
Вложения:
Комментарий к файлу: Исходник сонара 68_sonar.rar [333.44 KiB]
Скачиваний: 984
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
Добавлено: Сб мар 09, 2013 10:36:54
Родился
Зарегистрирован: Вт сен 18, 2012 08:46:06 Сообщений: 13
Рейтинг сообщения:0
slavokhire5, да, так и надо. Чего то не получилось в первые разы этого у меня просто, но буду мучать дальше.
clawham, да да да, помоему "диодное или" называется такой способ, я так кнопки делал 8 штук на одну ногу прерывания Про отражение звука знаю, сонары - всего лишь один из типов датчиков на роботе. Кнопки соприкосновения со стеной так же будут установлены. Кстати, пробовал баловаться с сонаром когда в BASCOM напрограммировал, отражение при угле чуть больше 45 градусов есть, но на очень небольшом расстоянии. За исходники отдельное огромное спасибо! Изучу, опробую.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения