Подключение нескольких ультразвуковых датчиков к одному Arduino

Я пытаюсь подключить пять ультразвуковых датчиков (точнее, HC-SR04) к плате Arduino для обнаружения препятствий в пяти направлениях (четыре стороны света + одна ось Z). Я прочитал техническое описание HC-SR04 и Arduino Uno и обнаружил, что ультразвуковой датчик потребляет 15 мА в активном состоянии, а Uno может подавать максимум 40 мА через каждый контакт и в общей сложности 200 мА со всех контактов.

Теперь, поскольку у меня нет десяти контактов ввода-вывода ШИМ, я подумал, что, поскольку я буду запускать все датчики одновременно, одного триггерного контакта будет достаточно. Выводы ECHO будут подключены к отдельному выводу ШИМ для каждого модуля.

У меня есть две проблемы здесь (я просто новичок в электронике :)):

  1. Я собираюсь подавать питание на каждый датчик от BEC 5V/2A. Не вызовет ли это перерасход тока на выводах ШИМ Arduino? Если да, то есть ли обходной путь? Может быть, решение на основе транзисторов? (Я прошел базовый курс электроники в колледже, но никогда не имел возможности разработать его самостоятельно.)

  2. Вторая проблема связана с моей конструкцией спускового крючка. Сможет ли один контакт запитать пять датчиков, или падение тока не позволит им сработать (поскольку все они параллельны)? Я предполагаю, что их запускает только напряжение (предположение), и параллельно все будет одинаково, так что это должно работать, верно?

Я искал вокруг, но нашел только информацию о подключении одного датчика к Arduino. Я читал что-то о работе мощных двигателей с Arduino, подавая ток через батарею, поэтому я думаю, что моя первая проблема должна быть в порядке? Но я не уверен, поэтому решил спросить здесь. Спасибо!

Звучит разумно: отдельное питание для всех датчиков. Я бы не ожидал, что триггер будет потреблять значительный ток. Тем не менее, я был бы обеспокоен датчиками, обнаруживающими эхо друг друга. Вам нужен ШИМ от обратных контактов, учитывая, что вы просто пытаетесь определить ширину импульса?
Итак, проблема с питанием ясна. В любом случае у меня есть четыре BEC, но один должен работать, верно? Он рассчитан на 5 В и максимальный ток 2 А. И да, мне нужен PWM для обратных контактов. Возврат каждого датчика идет на отдельный контакт на Arduino.
Да, один БЭК на всех, а не по одному на каждого.
Хорошо спасибо! Это помогло. :) И я только что прочитал еще немного - ШИМ не важен. Мне нужно многому научиться. :)
Как насчет срабатывания 2 датчиков с одного порта? они будут потреблять 20 мА, поэтому они должны работать правильно. Надеюсь, что да!

Ответы (2)

Проблема с решениями, связанными с хобби, заключается в том, что документация ограничена и не специфицирована, как коммерческие компоненты или модули.

Вполне возможно, что это может работать, но рекомендуется сделать блок-схему и проконсультироваться с 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 в зависимости от уровня сигнала или только времени задержки.

Будете ли вы получать эхо от неправильного отправителя из-за эффектов углового отражения.

Да, это дешевые китайцы. Но для недорогого проекта, который я только начинаю, это воровство, потому что они не окупятся, если не будут работать или если я не найду им применения (по крайней мере, не сейчас). Я просто руководствуюсь спецификациями, которые где-то читал — я не знаю, сколько тока они на самом деле потребляют, но пока я просто придерживаюсь этих значений.
Это переключатели MOSFET, рассчитанные на это значение, но не указывающие ток возбуждения. Вы можете измерить напряжение привода, подключая по одному, чтобы увидеть, есть ли какая-либо значительная нагрузка. Прицел поможет увидеть любой шум. Но в любом случае я бы написал им за советом.
BEC означает схему выпрямителя батареи, поэтому она предназначена для замены 2-й батареи для радиоприемника от основной батареи сервопривода, и это уже транзисторный (MOSFET) переключатель с ограничениями V и A для нагрузки.
Хм, ладно, это много вещей, которые нужно учитывать, но да, я также думал о перекрестных помехах, но не о других проблемах, которые вы выделили. Что касается проблемы с перекрестными помехами, я думал о включении датчиков по схеме, которая не мешает другим датчикам (возможно, противоположным датчикам или, в худшем случае, по одному за раз). На самом деле я еще не получил их, но я кое-что читал о них. Они кажутся не очень точными, но сейчас я просто смотрю, как все это работает. Это просто модуль робототехники для обнаружения и предотвращения объектов в колледже.
Однако мне придется проверить другие источники шума, как вы упомянули. Я не думал о влиянии вибрации на эти датчики, пока не прочитал ваш пост (и поскольку он будет о движущемся боте...). Я планирую индивидуально протестировать каждый модуль и откалибровать их (не знаю, как, но я найду способ. :D), а затем настроить все это на макетной плате, прежде чем оно попадет в бота.
Осциллограф или логический анализатор кажется необходимым, а затем спроектируйте счетчик временных интервалов в прошивке. Протестируйте с одним датчиком T / R, а затем с несколькими массивами с различными объектами на расстоянии до диапазона. Следите за шумом V+ и земли.
Хорошо, я сделаю это и посмотрю, как это пойдет. Спасибо за помощь! :)
если что-то из этого действительно помогает, +1, где это уместно, является полезным отзывом.

Я понимаю, что это немного старая тема, но... У меня есть пара таких, и проблема в том, что для «чтения» результата вы используете 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. Я собираюсь попробовать оба из них. Но хотел посмотреть, делал ли кто-нибудь что-то из этого раньше.