Я пытаюсь подключить пять ультразвуковых датчиков (точнее, HC-SR04) к плате Arduino для обнаружения препятствий в пяти направлениях (четыре стороны света + одна ось Z). Я прочитал техническое описание HC-SR04 и Arduino Uno и обнаружил, что ультразвуковой датчик потребляет 15 мА в активном состоянии, а Uno может подавать максимум 40 мА через каждый контакт и в общей сложности 200 мА со всех контактов.
Теперь, поскольку у меня нет десяти контактов ввода-вывода ШИМ, я подумал, что, поскольку я буду запускать все датчики одновременно, одного триггерного контакта будет достаточно. Выводы ECHO будут подключены к отдельному выводу ШИМ для каждого модуля.
У меня есть две проблемы здесь (я просто новичок в электронике :)):
Я собираюсь подавать питание на каждый датчик от BEC 5V/2A. Не вызовет ли это перерасход тока на выводах ШИМ Arduino? Если да, то есть ли обходной путь? Может быть, решение на основе транзисторов? (Я прошел базовый курс электроники в колледже, но никогда не имел возможности разработать его самостоятельно.)
Вторая проблема связана с моей конструкцией спускового крючка. Сможет ли один контакт запитать пять датчиков, или падение тока не позволит им сработать (поскольку все они параллельны)? Я предполагаю, что их запускает только напряжение (предположение), и параллельно все будет одинаково, так что это должно работать, верно?
Я искал вокруг, но нашел только информацию о подключении одного датчика к Arduino. Я читал что-то о работе мощных двигателей с Arduino, подавая ток через батарею, поэтому я думаю, что моя первая проблема должна быть в порядке? Но я не уверен, поэтому решил спросить здесь. Спасибо!
Проблема с решениями, связанными с хобби, заключается в том, что документация ограничена и не специфицирована, как коммерческие компоненты или модули.
Вполне возможно, что это может работать, но рекомендуется сделать блок-схему и проконсультироваться с OEM. Имейте в виду, я не знаю, есть ли у них адекватная поддержка для вашего вопроса, поскольку они построены в Китае.
Hobby Services 3002 N. Apollo Dr. Suite 1 Champaign, IL 61822 (217) 398-0007 Электронная почта: хоббисервисы@hobbico.com Интернет-адрес: www.supertigre.com
Похоже, что ваша ультразвуковая нагрузка - TTL, поэтому нет проблем с переключением 5 одновременно с BEC, но мне интересно, учитывали ли вы влияние перекрестных помех при срабатывании одновременно. Они указывают угол обнаружения 15 градусов, но это будет зависеть от угла отражения объектов, которые вы хотите обнаружить. Могут быть проблемы с фазированием при подавлении отражений, например, при наличии 5 твитеров, направленных в комнату. Чтение ответа каждого эха параллельно с подсчетом временных интервалов не будет простым результатом из учебника с негладкими объектами с 5 отправителями.
Вы можете протестировать свою конструкцию ортогональной матрицы с помощью любого генератора импульсов сигнала и посмотреть на сигнал на логическом анализаторе с параллельным портом или осциллографе, чтобы убедиться, что ваша конструкция будет работать.
Силовой привод — это наименьшая из ваших проблем с этими маломощными устройствами. Предотвращение шума от кондуктивных и излучаемых источников будет иметь первостепенное значение, и на первом месте должна быть конструкция массива транспондеров. Я бы потратил некоторое время на тестирование этой части в первую очередь, чтобы определить все электрические, физические, акустические, электромагнитные, тепловые, вибрационные, кондуктивные и излучаемые источники помех и то, как каждый из них влияет на ваши ожидания SONAR с различными объектами. Будет ли он микрофонным с вибрацией или громкими импульсными шумами. Насколько хорошо он подавляет другие источники ультразвукового шума? Изменится ли ширина импульса на выходе TTL Echo в зависимости от уровня сигнала или только времени задержки.
Будете ли вы получать эхо от неправильного отправителя из-за эффектов углового отражения.
Я понимаю, что это немного старая тема, но... У меня есть пара таких, и проблема в том, что для «чтения» результата вы используете pulseIn, который «связывает» Arduino для время эха.
Итак, во-первых, вам нужно установить тайм-аут для pulseIn, например unsigned long pulse_length = pulseIn(iEchoPin, HIGH, 9000); где 9000 — это 9000 микросекунд или 9 миллисекунд, что соответствует примерно 150 см или 5 футам (скорость звука, двойное расстояние, много математических вычислений). Причина наличия тайм-аута заключается в том, что тайм-аут по умолчанию составляет целую секунду, поэтому вы можете ждать результата 1000 миллисекунд или 1 000 000 микросекунд (и получить 0, потому что время ожидания истекло). Так что я поставил 9000 us, что дает мне 150 см, которых достаточно для обнаружения препятствий.
И, во-вторых, я не могу понять, как считывать оба датчика одновременно, так как мой Arduino будет делать только один pulseIn за раз, а эхо от 2-го датчика к тому времени уже вернулось.
И в-третьих, вам нужно подождать некоторое время для любых «вторичных» эхо-сигналов, в техническом описании указано 60 мс, у меня был хороший успех с 40 мс. Но если у меня их 2, мне нужно подождать 40 мс, прежде чем запустить второй, иначе он получит ложное эхо от первого (они смотрят друг на друга примерно на 30 градусов).
Причина, по которой я искал здесь, заключается в том, что я хотел знать, могу ли я использовать один и тот же эхо-вывод для нескольких датчиков SR04 (или, если на то пошло, нескольких ИК-датчиков расстояния). Если я запускаю 1 SR04, а затем считываю «комбинированный» вывод эха, то мне нужен только 1 вывод для чтения любого количества датчиков, но 1 вывод для срабатывания каждого из них.
Другой вариант - изменить контакт на выход, отправить триггер, затем изменить его на вход и выполнить импульсный вход, а один и тот же провод подключить к триггерному и эхо-контактам на плате SR04. Я собираюсь попробовать оба из них. Но хотел посмотреть, делал ли кто-нибудь что-то из этого раньше.
pjc50
моджас
pjc50
моджас
пользователь18480