Страница 1 из 1

Подключение нескольких датчиков HC-SR04

Добавлено: 01 окт 2018, 19:15
Alexnet135
Есть задача отслеживать положение предмета по осям х и y, думаю установить несколько датчиков HC-SR04 в ряд и опрашивать их. Но есть вероятность что при опросе датчики будут ловить сигнал от соседних и выдавать помехи. Как в flprog сделать последовательный опрос датчиков HC-SR04?

Подключение нескольких датчиков HC-SR04

Добавлено: 01 окт 2018, 21:33
AlexCrane
[ref]Alexnet135[/ref], Попробовать вот так
[spoiler]
HC-SR04.png
[/spoiler]

Попробуй может получится, в генераторе нужно установить время которое будет достаточно для опроса датчика

Подключение нескольких датчиков HC-SR04

Добавлено: 01 окт 2018, 22:03
Rovki
Так от самого предмета будут идти отражения во все стороны (датчики) ... :shok:

Подключение нескольких датчиков HC-SR04

Добавлено: 01 окт 2018, 23:07
Labu559
AlexCrane писал(а): 01 окт 2018, 21:33в генераторе нужно установить время которое будет достаточно для опроса датчика
Разрешите уточнить. Блок HC-SR04 повторно, или блоки HC-SR04 последовательно должны включаться в работу (следующее измерение ) с промежутками не менее 50 мсек. В штатном блоке- 100 мсек. Если я понял правильно, это делается для избавления получения эхо от удалённых предметов на расстоянии больше 400 см, или повторно отражённого затухающего сигнала. А выполнение всего кода штатного Блока HC-SR04 полностью происходит в одном цикле ф-и Loop(), не прерываясь, потому "время опроса" или точнее время однократного выполнения кода не фигурирует совершенно, и определяется значением удержания запускающго импульса в HIGH (10 мкс) + таймаут функции pulseIn(pin, value, timeout) где timeout- время ожидания импульса не определён, т.е. значение по умолчанию - одна секунда . А вот строка кода штатного Блока HC-SR04 if (abs((millis() - _ultrasonic1P))>100) - в данной ситуации будет лишней, ведь 100- константа без учёта наличия второго датчика, т.е. условие всегда будет истинно.
А дальше, если ТС определит сколько датчиков должно быть (4-е дистанция вперёд-назад и вверх-вниз или же 2-а горизонталь-вертикаль) то сложить блок из скетча- не составит большого труда.

Подключение нескольких датчиков HC-SR04

Добавлено: 02 окт 2018, 08:50
Alexnet135
Есть комната 3х2 хочу сделать следящую подсветку. По стене 2м расположить 4 датчика 2 с одной 2 с другой на случай если 2 объекта будут на одной плоскости, которые будут задавать координаты свечения. На 3м стене располагаем 4 датчика, которые будут задавать интенсивность в зависимости от удаления. Чтоб эхо датчика не прилетало соседнему необходимо опрашивать их по очереди, пришёл ответ опросил другой и т.д.

Подключение нескольких датчиков HC-SR04

Добавлено: 02 окт 2018, 15:11
AlexCrane
[ref]Labu559[/ref], функция pulseIn тормозит loop до сигнала или тайм аута?

Подключение нескольких датчиков HC-SR04

Добавлено: 02 окт 2018, 22:45
Labu559
AlexCrane писал(а): 02 окт 2018, 15:11функция pulseIn тормозит loop до сигнала или тайм аута?
Ув.[ref]AlexCrane[/ref], я ни в коем случае не программист, и использую в своих примитивных заключениях доступные источники, в данном случае этот. Кроме того, я лучше ориентируюсь в схемах, чем в словесных описаниях. Потому, все ещё надеясь, что правильно понял, как работает HC-SR04 уверен , что алгоритм ТС в сообщении №5 не совсем удачный, так как по моей же, может ошибочной, интерпретации алгоритма работы HC-SR04, для опроса 8-ми датчиков необходимо слишком много времени, за которое движущийся объект поменяет дислокацию. К тому-же ТС не учитывает диаграмму направленности HC-SR04 (30 градусов) и "мертвые" зоны. А на счёт, Вашего вопроса, наверное "тормозит" на мизерное время движения ультразвука к объекту и обратно в данном случае, так как излучатель активируется (8 импульсов) до запуска функции pulseIn(pin, value, timeout) и второй пойманный приемником отклик должен прекратить её (timeout ожидания уровня value на pin). Это если отклика нет, то таймаут будет в 1сек и соответствено тормозить будет на это же время. В данном случае идёт речь о паузах между измерениями или суммарно(delayMicroseconds(10)+timeout+100мсек)х 8 датчиков. Ну как-то так.
P.S. нашёл альтернативу штатному блоку вот здесь. Попробую сделать блок на 5 датчиков из демо-примера, так как Меги у меня нет и мультиплексора тоже.

Пробуйте: Ардуино-библиотека
, [spoiler title=Пользовательский Блок на 5 датчиков,]
MultiSonar5beta(CODE).ubi
[/spoiler] [spoiler title= результаты теста демо проекта,]
MultiSonarTest.png
[/spoiler]номера пинов подключения датчиков указываются в параметрах пользователя, есть вывод в монитор порта (скорость- 115200), дистанция до 3-х метров (такое ТЗ в 5-м сообщении). Испытывал на 2-х датчиках и Nano328p. Результат работы меня не впечатлил, потому не оптимизировал код, не делал описания, нужны фильтры значений. Если подойдёт для Ваших задач,- доделаю как Вам нужно. Удачи!

Подключение нескольких датчиков HC-SR04

Добавлено: 03 окт 2018, 09:54
Alexnet135
Попробовал установить пользовательский блок дальномер нс04 по перерыв. с сайта с корректировкой температуры и перезапуском при зависании. Если ставлю этот блок несколько раз, ставлю разные ноги триггера и общий эхо и включают эти блоки по очереди, то при компеляции ардуино выдаёт ошибку.

Отправлено спустя 7 минут 27 секунд:
На счёт нет ответа на датчике уже писал что помещение 3х2 исходя из этого ответ будет. 2 секунды ожидания сигнала тоже терпимо. Просто я не специалист программирования. В электронике и логических элементах я разбираюсь, но написать скетч или пользовательский блок мне пока не по силам