Используя переключатель SPST в качестве цифрового входа?

10

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

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

Будет ли это работать, если я подключу цифровой вход к резистору, который подключен к заземлению, чтобы при выключенном выключателе он был заземлен, но когда он включен, он не закорачивается - будет ли это работать?

Губка Боб
источник

Ответы:

9

Наиболее обычным решением будет подключение одной стороны коммутатора к земле. Подключите другой к цифровому входу, а также к резистору от 1 до 10 кОм, идущему к положительному источнику питания.

Движение в другую сторону, с резистором понижающего напряжения, как описывает Бруно, возможно, но менее предпочтительно. Многие входы уже имеют степень неявного подтягивания и будут читать «1», если не подключены, хотя и не совсем надежно. Но если ваш коммутатор уже подключен к положительной шине, то выпадение является хорошим решением, хотя многие предпочитают использовать небольшой резистор при подключении логических входов к положительной шине.

Многие микроконтроллеры также имеют внутренние подтягивающие и / или понижающие резисторы на выводах GPIO, которые могут быть включены записью в регистр конфигурации. Если вы управляете входом такого микроконтроллера, вам может вообще не понадобиться внешний подтягивающий / понижающий резистор, хотя не каждый микроконтроллер имеет его.

Крис Страттон
источник
4
Кроме того, если вы используете ОК со встроенными подтягиваниями или опусканиями, рекомендуется включать их на выводы, которые не используются, чтобы поддерживать их в известном состоянии.
Мэтт Янг
На самом деле, для моего проекта проще подключить коммутатор к земле. Поэтому я постараюсь использовать подтягивающий резистор. Спасибо!
Губка Боб
2
Большой! Возвращайтесь, когда хотите спросить нас о «переключении отказов» :)
gbarry
Оказывается, Arduino сделает подтягивание автоматически. Я не уверен, как, но в коде есть цифровой "INPUT_PULLUP", и мне даже не нужен резистор. Это было легко. Кроме того, по поводу отказов переключателя я заметил это, когда отслеживал последовательный выход. Поэтому я просто добавил задержку в 3 мс в коде. Это спасло меня от очередной поездки в магазин. :)
Губка Боб
Если вы посмотрите таблицу данных ATMEGA, то увидите, что в регистр конфигурации можно записать бит, чтобы включить подтягивание. Библиотеки Arduino просто делают его более удобным. Для отказов игнорирование (этого) ввода на некоторое время является обычным курсом, хотя 3 мс может быть немного коротким. Если задержка блокирует всю вашу систему, вам может потребоваться сделать ее короткой, если она игнорирует только этот вход, чем вы можете сделать его немного длиннее, поскольку преднамеренная повторная активация будет еще медленнее.
Крис Страттон
9

Да, это будет работать, как вы описали. Это называется понижающим резистором, потому что он гарантирует, что при разомкнутом контакте цифровой вход находится в логическом состоянии 0 (низкий уровень). Обычно для этой цели вы можете использовать резистор 10 кОм.

Бруно Феррейра
источник
2

Это сработает и даст вам позитивную логику: высокий уровень (логика «1»), когда переключатель замкнут.

Но, как говорит Крис, перевернутая вещь встречается чаще: переключатель подключен к заземлению, а также повышающий (вместо понижающего) резистор к источнику питания. Ваша логика будет инвертирована: логика «1» будет соответствовать открытому переключателю.

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

Если вы хотите внешнее подтягивание, 10 кОм может быть хорошим значением. Вход микроконтроллера может иметь ток утечки до 1 мкА, и тогда 10 кОм будет падать незначительно до 10 мВ. Более низкие значения, конечно, возможны, но имейте в виду, что они будут иметь больший ток на землю, когда переключатель замкнут. Резистор 1 кОм будет потреблять 5 мА при напряжении 5 В, что на самом деле является пустой тратой энергии. Для 10 кОм это только 500 мкА. Для приложений с очень низким энергопотреблением вы можете увеличить значение до 100 кОм, но помните ток утечки; 1 мкА даст падение 100 мВ!

stevenvh
источник