| Ультразвуковой сонар из HC-SR04 | 
| 
				
			 | 
| 
| Robusta | Дата: Среда, 25.04.2012, 13:43 | Сообщение # 1 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | Здравствуйте! Раз появился форум буду спрашивать здесь   Идея какая: использовать дальномер HC-SR04 в качестве сонара для определения глубины в озере. Мы с отцом заядлые рыбаки и летом частенько выплываем на лодке порыбачить. Так вот порой полезно знать сколько метров до дна и поэтому загорелся желанием смастерить из дальномера сонар. Электронику планирую замуровать в эпоксидку а наружу оставить торчать только передатчик и приемник. Но неуверен что мембраны в них долго протянут под воздействием воды. Может есть какието способы защитить их?
 Добавлено (25.04.2012, 13:43)---------------------------------------------
 а как редактировать пост, а то запятых не хватает?)))
 
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Среда, 25.04.2012, 14:58 | Сообщение # 2 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | интересная идея, а ультразвук не отпугнет рыбу? от контакта с водой можно попробовать обмазать силиконовым герметиком, главное чтобы между водой и мембраной небыло воздушной прослойки   
 с возможностью редактирования попробую вопрос решить.
 
 
 |  
 |  |  |  | 
| 
| Robusta | Дата: Среда, 25.04.2012, 15:17 | Сообщение # 3 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | Спасибо, надо будет попробовать. Отпугнуть не должен, промышленные сонары все на ультразвуке. Такой еще вопрос, как потом перевести длину импульса эха в расстояние до дна? 
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Среда, 25.04.2012, 15:31 | Сообщение # 4 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | Да по той же формуле что и в документации S=F/58 ; S - дистанция в сантиметрах, F - длина импульса в микросекундах. Только с учетом того, что скорость звука в воде почти в 4 раза больше чем на воздухе. (331 м/с против 1348 м/с). Тогда получается S=F/14,5. Предел измерений тоже возрастет с 5 метров до 20
   
 
 |  
 |  |  |  | 
| 
| Robusta | Дата: Четверг, 26.04.2012, 13:18 | Сообщение # 5 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | Привет! Сейчас прикидываю как организовать программу, снова возник вопрос. Какая максимальная частота опроса может быть у датчика? Дело в том что в качестве индикатора у меня будет сдвоенный семисегментник. На него информация выводится в динамическом режиме, по мотивам статьи http://avrproject.ru/publ....2-1-0-9 Как будет лучше организовать опрос датчика и вывод информации чтобы показания не моргали? 
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Четверг, 26.04.2012, 13:40 | Сообщение # 6 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | Больше 5 раз в секунду его опросить наверно уже не получиться, см на временную диаграмму, плюс добавь к этому время за которое звук доберется до препятствия и вернется обратно. 
   
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Четверг, 26.04.2012, 13:45 | Сообщение # 7 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | Опрос думаю лучше привязать на прерывание по переполнению таймера. В основном цикле вывод показаний, по переполнению таймера опрашиваем датчик, преобразуем данные и возвращаемся снова на индикацию. Чтото типа того, что я делал с датчиком 18b20 http://avrproject.ru/publ....-1-0-29 
 
 |  
 |  |  |  | 
| 
| Robusta | Дата: Пятница, 27.04.2012, 09:09 | Сообщение # 8 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | Спасибо попробую! 
 Добавлено (27.04.2012, 09:08)
 ---------------------------------------------
 Прошу помощи, вчера всю голову сломал. Не могу понять где ошибка. Код опроса дальномера использовал с этого сайта, опрос по таймеру 2 раза в секунду. В главном цикле вывожу показания, только заместо показаний на индикаторе какая-то фигня(
 
 
 Code $regfile = "m8def.dat" $crystal = 1000000
 
 Dim N2 As Integer
 Dim N3 As Integer
 Dim N4 As Integer
 
 Dim M2 As Integer
 Dim M3 As Integer
 Dim M4 As Integer
 
 Dim A As Word
 Dim S As Single
 
 Config Timer1 = Timer , Prescale = 64
 On Timer1 Sonar:
 
 Enable Interrupts
 Enable Timer1
 
 Do
 
 Portd = Lookup(m2 , Dat1)
 Waitms 5
 
 Portd = Lookup(m3 , Dat1)
 Waitms 5
 
 Portd = Lookup(m4 , Dat1)
 Waitms 5
 
 Loop
 
 Sonar:
 
 Portc.0 = 1
 Waitus 15
 Portc.0 = 0
 
 Waitus 10
 Pulsein A , Pinc , 1 , 1
 
 S = A * 0.1725                    'для воды заменить на 0.69
 
 M2 = S
 M3 = S
 M4 = S
 M2 = M2 / 100                    'сотки
 N2 = Abs(m2)
 M3 = M3 Mod 100                    'десятки
 M3 = M3 / 10
 N3 = Abs(m3)
 M4 = M4 Mod 10                    'единицы
 N4 = Abs(m4)
 
 Return
 
 End
 
 Dat1:
 
 Data &B11111001                    '1
 Data &B10100100                    '2
 Data &B10110000                    '3
 Data &B10011001                    '4
 Data &B10010010                    '5
 Data &B10000010                    '6
 Data &B11111000                    '7
 Data &B10000000                    '8
 Data &B10010000                    '9
 Data &B11000000                    '0
 Добавлено (27.04.2012, 09:09)
 ---------------------------------------------
 сейчас набросаю схему подключения для наглядности
 
 
 
 
 Сообщение отредактировал Robusta - Пятница, 27.04.2012, 09:10 |  
 |  |  |  | 
| 
| Robusta | Дата: Пятница, 27.04.2012, 09:24 | Сообщение # 9 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | во схема подключения, индикатор все-таки будет строенный 
 
   
 
 
 
 Сообщение отредактировал Robusta - Пятница, 27.04.2012, 09:24 |  
 |  |  |  | 
| 
| exersizze | Дата: Пятница, 27.04.2012, 09:45 | Сообщение # 10 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | Не увидел в коде конфигурацию портов При выводе разряды не переключаются, поэтому все смешивается в кашу. Надо так
 
 Code Do 
 Portb = &B00000100
 Portd = Lookup(m2 , Dat1)
 Waitms 5
 
 Portb = &B00000010
 Portd = Lookup(m3 , Dat1)
 Waitms 5
 
 Portb = &B00000001
 Portd = Lookup(m4 , Dat1)
 Waitms 5
 
 Loop
 
 |  
 |  |  |  | 
| 
| Robusta | Дата: Пятница, 27.04.2012, 13:43 | Сообщение # 11 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | конфигурация осталась в отдельном файле, вроде и без этого все ясно 
 Code Config Portc.0 = Output Config Portc.1 = Input
 Config Portb = Output
 Config Portd = Output
с отдельным включением разрядов чегото я ступил признаю
  сейчас стало гораздо лучше но все равно на индикаторе мракобесие какоето. пробовал выводить данные в терминал, показания идут правильные а на индикаторе нет
   
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Пятница, 27.04.2012, 18:10 | Сообщение # 12 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | Попробуй вывести на индикатор известное число и глянь что получиться. 
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Пятница, 27.04.2012, 23:23 | Сообщение # 13 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | Нашел багу в коде - неправильно сложены данные в массив, ноль должен идти первым. Вывел на индикатор число 123 
   все нормально :)
 
 
 |  
 |  |  |  | 
| 
| exersizze | Дата: Пятница, 27.04.2012, 23:24 | Сообщение # 14 |  |   Группа: Администраторы Сообщений: 720 
 Статус: Offline | рабочий код: 
 Code   $regfile = "m8def.dat" $crystal = 1000000
 
 Config Portc.0 = Output
 Config Portc.1 = Input
 Config Portb = Output
 Config Portd = Output
 
 Dim N2 As Integer
 Dim N3 As Integer
 Dim N4 As Integer
 
 Dim M2 As Integer
 Dim M3 As Integer
 Dim M4 As Integer
 
 Dim A As Word
 Dim S As Single
 
 Config Timer1 = Timer , Prescale = 64
 On Timer1 Sonar:
 
 Enable Interrupts
 Enable Timer1
 
 Do
 
 Portb = &B00000100
 Portd = Lookup(m2 , Dat1)
 Waitms 5
 
 Portb = &B00000010
 Portd = Lookup(m3 , Dat1)
 Waitms 5
 
 Portb = &B00000001
 Portd = Lookup(m4 , Dat1)
 Waitms 5
 Loop
 
 Sonar:
 
 Portc.0 = 1
 Waitus 15
 Portc.0 = 0
 
 Waitus 10
 Pulsein A , Pinc , 1 , 1
 
 S = A * 0.1725                    'для воды заменить на 0.69
 
 M2 = S
 M3 = S
 M4 = S
 M2 = M2 / 100                    'сотки
 N2 = Abs(m2)
 M3 = M3 Mod 100                    'десятки
 M3 = M3 / 10
 N3 = Abs(m3)
 M4 = M4 Mod 10                    'единицы
 N4 = Abs(m4)
 
 Return
 
 End
 
 Dat1:
 
 Data &B11000000                    '0
 Data &B11111001                    '1
 Data &B10100100                    '2
 Data &B10110000                    '3
 Data &B10011001                    '4
 Data &B10010010                    '5
 Data &B10000010                    '6
 Data &B11111000                    '7
 Data &B10000000                    '8
 Data &B10010000                    '9
 
 
 |  
 |  |  |  | 
| 
| Robusta | Дата: Суббота, 28.04.2012, 20:27 | Сообщение # 15 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | exersizze, спасибо огромное! Работает как нужно!! Теперь попробую промазать все силиконкой и провести испытания в воде   
 
 |  
 |  |  |  | 
| 
| pchela5 | Дата: Вторник, 01.05.2012, 18:48 | Сообщение # 16 |  | Группа: Свой человек Сообщений: 84 
 Статус: Offline | Ну что я могу сказать - безумству храбрых поем мы песню. Камрад, мой тебе совет - купи простейший эхолот на ебае или байиконс. Мощности не хватит в данном передатчике - это раз, да и герметизировать устанешь - это два, по комплектующим много не сэкономишь - это три. 
 
 |  
 |  |  |  | 
| 
| Robusta | Дата: Пятница, 04.05.2012, 09:03 | Сообщение # 17 |  | Группа: Проверенные Сообщений: 12 
 Статус: Offline | ради спортивного интереса провел испытания в бочке, излучатель ничем не изолировал, то что измерил похоже на правду, но!! вдруг подумалось, что дно озера далеко не гладкое и не твердое (ил, водоросли и пр.), поэтому сомнения по поводу того что от него отразится звук. надо пробовать) пока с китайскими магазинами не приходилось работать, но все больше убеждаюсь что пора начать
   
 
 |  
 |  |  |  | 
| 
| asd81 | Дата: Воскресенье, 23.02.2014, 17:02 | Сообщение # 18 |  | Группа: Пользователи Сообщений: 1 
 Статус: Offline | Robusta, приветствую. поделитесь пожалуйста описанием работы и конструкции своего глубиномера. в какой среде написана программа, конфигурация фьюзов?  спасибо. 
 
 
 
 Сообщение отредактировал asd81 - Воскресенье, 23.02.2014, 20:00 |  
 |  |  |  | 
| 
| oleg105103 | Дата: Пятница, 01.08.2014, 20:53 | Сообщение # 19 |  | Группа: Пользователи Сообщений: 6 
 Статус: Offline | Будьте добры подскажите как конвертировать код в HEX? Только учусь программировать
 Есть CV AVR  Studio 5.1|4.0
 Понимаю что вопрос аматора но пробовал компилировать с помощью AVR  Studio 5.1 при компиляции ошибка и получении asm
 Error 1 $regfile: Unknown instruction or macro C:\Documents and Settings\admin\╨рсюўшщ ёЄюы\AVRAssembler3\AVRAssembler3\AVRAssembler3.asm 1 0 AVRAssembler3
 Error 2 syntax error, unexpected '=' C:\Documents and Settings\admin\╨рсюўшщ ёЄюы\AVRAssembler3\AVRAssembler3\AVRAssembler3.asm 1 0 AVRAssembler3
 
 Что я не так делаю ?
 Заранее спасибо
 
 
 |  
 |  |  |  | 
| 
| max | Дата: Пятница, 01.08.2014, 22:39 | Сообщение # 20 |  |   Группа: Друзья Сообщений: 170 
 Статус: Offline | Это форум по программированию на BASCOM-AVR, поэтому выскакивает ошибка. 
 
 |  
 |  |  |  | 
| 
| oleg105103 | Дата: Пятница, 01.08.2014, 23:43 | Сообщение # 21 |  | Группа: Пользователи Сообщений: 6 
 Статус: Offline | Спасибо за подсказку Правильно ли я понимаю что BASCOM-AVR  работает  с USBasp ?
 Хочу совместить код с соседней ветки http://avrproject.ru/publ....-1-0-51 форума с кодом который тут думаю это возможно ?( хочу вместо жки использовать сегментник )
 Можно ли в BASCOM-AVR скомпилировать файл и потом его сохранить в hex?
 
 
 |  
 |  |  |  | 
| 
| Петр | Дата: Суббота, 02.08.2014, 11:08 | Сообщение # 22 |  | Группа: Проверенные Сообщений: 47 
 Статус: Offline | Да. Прошивка сохранятся в HEX и BIN форматах.Цитата oleg105103 (  ) Можно ли в BASCOM-AVR скомпилировать файл и потом его сохранить в hex?
 
 |  
 |  |  |  | 
| 
| oleg105103 | Дата: Суббота, 02.08.2014, 13:37 | Сообщение # 23 |  | Группа: Пользователи Сообщений: 6 
 Статус: Offline | Спасибо с BASCOM-AVR я не работал но вроде получилось Думаю можно ли слепить два кода вместе в части мигания светодиода и звукового сигнала при приближении объекта ближе чем на 40 см? Часть кода тут http://avrproject.ru/publ....-1-0-51
 
 
 |  
 |  |  |  | 
| 
| oleg105103 | Дата: Понедельник, 04.08.2014, 17:43 | Сообщение # 24 |  | Группа: Пользователи Сообщений: 6 
 Статус: Offline | Собрал прошил но есть достаточно большая погрешность в измерении, в чем может быть проблемма ? может сам модуль ? И ещё после того как я добавил мигание светодиодом при приблищении (более чем на 50 см )  со светодиодом на сегментном индикаторе , начинают поочередно моргать сегменты первый второй третий .
 Светодиод повесил на PotrtC.2
 Под конец перестали гореть сегментники вовсе , в чем может быть причина ? Мож порты сгорели ? но от чего не могу понять
 
 
 |  
 |  |  |  | 
| 
| oleg105103 | Дата: Понедельник, 04.08.2014, 23:57 | Сообщение # 25 |  | Группа: Пользователи Сообщений: 6 
 Статус: Offline | Врет с показаниями просьба  помочь понять из-за чего ? 
 
 |  
 |  |  |  | 
| 
| oleg105103 | Дата: Четверг, 07.08.2014, 23:58 | Сообщение # 26 |  | Группа: Пользователи Сообщений: 6 
 Статус: Offline | Подогнал показания с помощью подбора константы. Хотя это не совсем правильно но сам так и не смог понять почему врет с показаниями. Помогите подцепить ещё один светодиод , а то у меня код при компиляции выдает ошибку
 Хочу сделать чтоб при расстоянии до объекта 40 см срабатывал один светодиод а при расстоянии 20 см ещё дополнительно второй .
 
 
 |  
 |  |  |  |