Есть ли способ проверить с помощью Arduino UNO, подключен ли датчик и готов ли он к считыванию?

Я хотел бы проверить состояние датчиков с помощью Arduino UNO. Например, когда я включаю робота, я хотел бы проверить, все ли датчики подключены и готовы к считыванию или нет. Возможно, один датчик отключен, и я хочу обнаружить эту ситуацию.

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

Любая схема, пояснения и примеры будут очень полезны!

, 👍1

Обсуждение

смотря какой датчик. Существует простое аналоговое соединение, цифровое соединение через spi или i2c.... Будьте немного конкретнее., @Miro Krsjak

на ум приходит скетч сканирования i2c, по крайней мере, для этой шины. вам не нужно запускать его как целый скетч; код внутри показывает, как перебирать устройства на шине, которые можно вызывать из процедуры запуска или чего-то еще..., @dandavis


1 ответ


4

В основном подтягивающий резистор подтягивает линию, когда никто/ничто не делает иначе (например, провод не подключен, или подключен к INPUT, или к шине I2C, которая сейчас ничего не делает...). Если какое-то устройство (или Arduino) устанавливает провод на НИЗКИЙ уровень (0 В, GND, земля), он блокирует резистор, и провод становится НИЗКИМ.

Поэтому значение резистора должно быть достаточно высоким, чтобы любое подключенное устройство могло подавать на провод НИЗКИЙ уровень. Итак, если вы знаете, какой ток может потреблять устройство и какое значение на входе считается НИЗКИМ, то вы можете вычислить минимальное значение резистора по закону Ома (и Vcc, где резистор подключен). Если вы не хотите ничего вычислять, просто поместите 10 кОм между проводом и Vcc, и это, вероятно, будет работать нормально.


Насчет датчика обнаружения - вы должны знать, какой датчик и где должен быть прикреплен (по мере того, как вы конструируете робота). Таким образом, вы просто отправляете любую команду датчику (возможно, чтобы прочитать значение) и смотрите, получаете ли вы ответ, и ответ имеет смысл (например, температура 0-100 градусов по Цельсию или около того). Если он работает нормально, то датчик подключен и может использоваться, в противном случае вы должны остановить робота, зажечь большой красный свет и подождать, пока пользователь починит то, что сломано. Дело также в типе датчика, если ему требуется некоторое время для «загрузки» и ему требуется некоторое время для «установки значения и ответа», чтобы предоставить это время перед тестированием (например, с задержкой()).


Подтягивающие резисторы подходят туда таким образом, что они подключены к Arduino, поэтому, если нет подключения к датчику, то неподключенный контакт не «плавает» (и, возможно, возвращает любое случайное или не случайное значение) , но слабо подтягивается к ВЫСОКОМУ, поэтому, если коннектор сломан / не подключен, то все чтения просто ВЫСОКИЕ, нет связи с датчиком (или какой-либо шум, который мешает обнаружению). Таким образом, вы можете определить статус «нет ответа» и через некоторое время (когда датчик действительно должен ответить, но не ответил) мигать большим красным светом.

,