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

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

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

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

Ответы (3)

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

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

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

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

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

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

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

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

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