Например TDA7294

Форум РадиоКот • Просмотр темы - Общение с ультразвуковым сонаром HC-SR04
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 26, 2025 13:41:41

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Общение с ультразвуковым сонаром 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.

Заранее спасибо за ответы!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
СообщениеДобавлено: Чт мар 07, 2013 09:00:32 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Пн сен 26, 2011 13:48:25
Сообщений: 202
Откуда: Харьков
Рейтинг сообщения: 0
Ну, если просто длину импульса замерять - так это просто. Заводим необходимый сигнал от сонара на ногу МК AVR, разрешаем прерывание по PIN Change для этого вывода и ждем:)
прерывание сработало - запускаем таймер, смотрим что пришло, 0 или 1.
если 1, ждем следующего прерывания от PIN Change и смотрим что натикало в таймере
если 0, останавливаем и обнуляем таймер, ждем 1.

_________________
Осилит дорогу идущий
----------
Пишу на Си за еду


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
СообщениеДобавлено: Чт мар 07, 2013 10:30:39 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
маленький лайфхак - все сонары можно через диод привести на ОДНУ ногу прерывания, длительногсть которого и будете мерять , ногу подтянуть резюком к земле

А вот триггеры каждого сонара дергать по очереди -

но учтите - сонары очень любопытные вещи...и ничего общего с дальностью до стены у вас не получится - не забывайте про отражение звука .....если перед нами в метре стена под углом 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 градусов есть, но на очень небольшом расстоянии. За исходники отдельное огромное спасибо! Изучу, опробую.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
СообщениеДобавлено: Ср май 22, 2013 15:47:34 
Грызет канифоль

Зарегистрирован: Пт апр 05, 2013 09:55:02
Сообщений: 252
Рейтинг сообщения: 0
что-то не получается с этим модулем.

алгоритм такой:

8 МГц частота МК
предделитель таймера 8
прерывание по совпадению. OCR1A=1; // т.е. частота прерываний 1 МГц
DDRC = 0xff;
DDRB=0x00;
далее так:

void send_pulse(){
PORTC.7=1 ;
delay_ms(10); // start pulse
PORTC.7=0;
}


interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
if (PINB.2==0)
{
TCCR1B &= ~(1<<CS10);
TIMSK &= ~(1 << OCIE1A);
TCNT1=0;
count_ultra=0;
}
else{
count_ultra++;
}

}

ну и выводим на экран значение count_ultra

такую хрень он мне выводит. что я не так делаю?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
СообщениеДобавлено: Пт май 24, 2013 15:14:58 
Грызет канифоль

Зарегистрирован: Пт апр 05, 2013 09:55:02
Сообщений: 252
Рейтинг сообщения: 0
не выходит разобраться с этим модулем чертовым.

основа отсюда: http://extremeelectronics.co.in/avr-tut ... -tutorial/

получаем время импульса (мк работает 16 МГц):
Спойлер#define US_PORT PORTB
#define US_PIN PINB
#define US_POS PORTB.2

//PORTA0
void getPulseWidth(){
long i;

//Wait for the rising edge
for(i=0;i<600000;i++)
{
if(!(US_PIN & (1<<US_POS))) continue; else break;
}

if(i==600000)
meter= 0xffff; //Indicates time out

//High Edge Found

//Setup Timer1
TCCR1A=0x00;
TCCR1B=(1<<CS11); //Prescaler = Fcpu/8
TCNT1=0x00; //Init counter

//Now wait for the falling edge
for(i=0;i<600000;i++)
{
if(US_PIN & (1<<US_POS))
{
if(TCNT1 > 60000) break; else continue;
}
else
break;
}

if(i==600000)
meter = 0xffff; //Indicates time out

//Falling edge found

meter=TCNT1;

//Stop Timer
TCCR1B=0X00;

if(meter > 60000)
meter =0xfffe; //No obstacle
else
meter = (meter>>1);
}

void send_pulse(){
PORTC.7=1 ;
delay_ms(10); // start pulse
PORTC.7=0;
}



ну и в цикле main

send_pulse();
getPulseWidth();
meter=meter/58;
sprintf(a,"%u",meter);
print(a,50,100) ;


итог: ноль внимания. фунт презрения. все время одно и тоже значение 1129.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
СообщениеДобавлено: Вс май 26, 2013 14:41:34 
Грызет канифоль

Зарегистрирован: Пт апр 05, 2013 09:55:02
Сообщений: 252
Рейтинг сообщения: 0
clawham писал(а):
.в общем я вам даю свой исходник под мегу 8

спасибо. модуль ожил и стал работать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
СообщениеДобавлено: Сб авг 10, 2013 19:03:46 
Родился

Зарегистрирован: Пт фев 01, 2013 06:34:31
Сообщений: 5
Рейтинг сообщения: 0
.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Общение с ультразвуковым сонаром HC-SR04
СообщениеДобавлено: Чт фев 13, 2014 10:31:35 
Родился

Зарегистрирован: Чт фев 13, 2014 10:29:10
Сообщений: 1
Рейтинг сообщения: 0
Здравствуйте!
А можно мне тоже рабочий пример с этим измерителем, а то вожусь второй день, а толку немного)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y