Обнаружение неисправности ультразвукового датчика в скетче Arduino
Можно ли написать код в скетче, который проверяет работу ультразвукового датчика? Скажем, если датчик перестал работать, то ардуино оповестит пользователя в последовательном мониторе.
@kickstart7962, 👍1
Обсуждение2 ответа
Во-первых, на этот вопрос сложно ответить, потому что вы не указали название ультразвукового датчика, который используете. Также, как отметил @Majenko, ключ здесь в том, чтобы определить состояние, в котором, по вашему мнению, датчик работает неправильно.
Но если предположить, что вы используете стандартный интерфейс ультразвукового датчика триггера/эхо (HC-SR04 или аналогичный), то единственным возможным решением здесь является мониторинг выходного (эхо) сигнала датчика. Сломанный датчик не будет реагировать на импульсы триггера, поэтому вы не получите эхо-импульсы. Однако эти датчики также не посылают сигнал, если объект находится вне зоны действия датчика.
Таким образом, определить поломку, контролируя выходной сигнал с датчика, можно только в том случае, если вы знаете, что объект всегда будет в зоне действия. В противном случае - вы не сможете наверняка определить, из-за чего не пришел сигнал, является ли это неисправностью датчика, или объект находится слишком далеко от датчика.
Обнаружен сбой триггера ВЫХОДА - заземлен. Добавьте контакт INPUT, подключенный через малосигнальный диод (1N914 / 1n4148) к контакту TRIGGER. Считывайте его значение каждый раз, когда вы устанавливаете TRIGGER HIGH, и он должен показывать HIGH при правильной работе и LOW, когда контакт TRIGGER устройства неисправен, т.е. заземлен устройством.
Обнаружение ВХОДА - неисправность контакта эха - заземление. Подключите схему задержки (RC) между контактами TRIGGER и ECHO. (Я бы также поставил туда диод, чтобы убедиться, что вы не заземлите TRIGGER от неисправного контакта ECHO)
Рассчитайте задержку RC для эмуляции значения ниже минимального ожидаемого расстояния. Каждый раз, когда вы посылаете "ping", вы должны получить ДВА эха - одно от "цепи задержки" и одно реальное. Если вы не получили НИЧЕГО - ваш вывод ECHO неисправен, т.е. заземлен.
Возможно, добавление текущего мониторинга к питанию устройства также можно использовать в качестве индикатора отказа. Потребляемый ток устройства МОЖЕТ отличаться при "пинговании" или в режиме ожидания/неработоспособности.
- Как использовать звуковой датчик LM393 + динамик в Arduino
- Как считать показания датчика звука и включить датчик с датчиком воды, если показания выше порогового значения и при обнаружении воды в течение 2 минут?
- Значения аналогового микрофона не меняются
- Код Arduino для включения светодиода одним хлопком и последующего выключения одним хлопком
- Запуск фрагмента кода на основе функции
- Соответствие шаблону вибрации
- Я не могу установить правильную конфигурацию звукового модуля
- Почему светодиодное состояние ведет себя по-другому?
можно написать код, который сделает практически все, что находится в пределах вычислительной мощности Arduino. ... взаимодействие с ультразвуковыми датчиками вполне в пределах возможностей любого Arduino., @jsotola
Может быть, определение триггера вторым ультразвуковым датчиком или просто мониторинг значений на предмет непредвиденных. Есть ли какая-то особая причина, по которой вы хотите это определить? Какая-то отказоустойчивость? В этом случае самым простым способом может быть просто использование 2 датчиков и сравнение значений., @chrisl
Шаг первый — определить «не работает». Шаг второй — выяснить, как можно определить это состояние и какое дополнительное оборудование может вам понадобиться для его достижения., @Majenko
Какой активный сигнал запускает пинг? ВЫСОКИЙ или НИЗКИЙ? Какой активный эхо-сигнал? ВЫСОКИЙ или НИЗКИЙ? На каком максимальном расстоянии вы обнаруживаете объект? Какова частота, как часто проводятся измерения?, @Jan Hus