Заголовок сообщения: Общение с ультразвуковым сонаром 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]
Скачиваний: 986
_________________ Что нас не убило сделало нас осторожней Не доверяйте русским лужам - это может быть вход в метро.
Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
Добавлено: Сб мар 09, 2013 10:36:54
Родился
Зарегистрирован: Вт сен 18, 2012 08:46:06 Сообщений: 13
Рейтинг сообщения:0
slavokhire5, да, так и надо. Чего то не получилось в первые разы этого у меня просто, но буду мучать дальше.
clawham, да да да, помоему "диодное или" называется такой способ, я так кнопки делал 8 штук на одну ногу прерывания Про отражение звука знаю, сонары - всего лишь один из типов датчиков на роботе. Кнопки соприкосновения со стеной так же будут установлены. Кстати, пробовал баловаться с сонаром когда в BASCOM напрограммировал, отражение при угле чуть больше 45 градусов есть, но на очень небольшом расстоянии. За исходники отдельное огромное спасибо! Изучу, опробую.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения