Эта проблема существует уже несколько десятилетий, но я не вижу прямого ответа на нее на этом сайте. Я хочу следующее:
Эта схема просто позволяет проверить состояние кнопки изнутри микроконтроллера. Ничего фантастического. Мои вопросы:
- Есть ли что-нибудь лучше, чем этот простой дизайн?
- Подходит ли значение резистора 100 кОм для наших современных КМОП-устройств, таких как dsPIC30FXXXX, а не для приложений большой мощности?
Ответы:
Во-первых, многие микроконтроллеры и контроллеры цифровых сигналов будут иметь внутренние подтягивающие резисторы. Вот пример, Atmel ATMega164.
Как правило, там будет регистр, который позволяет включать и выключать внутренние подтягивания. Из-за различий в процессе изготовления эти внутренние подтяжки имеют очень широкий диапазон и не являются хорошим выбором, если вам требуется очень тщательный контроль за потреблением тока в приложениях со сверхнизким энергопотреблением. Если важно поддерживать низкое количество компонентов, это простой способ сделать это. Использование внутренних подтягиваний для аппаратного отладки не было бы хорошей идеей, так как невозможно предсказать их точное значение.
Будь то 100к Ω значение адекватно зависит. Если это просто переключатель, который будет периодически переключаться пользователем, то 100к Ω будет хорошим выбором для минимизации энергопотребления. Для вещей, которые будут переключаться быстрее, таких как вращающиеся датчики, процесс, который я бы прошел
Так что, если максимальный ток потребления на вывод GPIO был 10 мА и работал при 5 В:R =Вязнак равно5 В10 м= 500 Ом , Сохранение этого значения R как можно меньше позволит учесть самые острые края и самые высокие частоты переключения.
источник
Вы можете стать проще, чем это.
Просто используйте внутренний подтягивающий / понижающий резистор в вашем микроконтроллере.
100 кОм вполне достаточно, но внутреннее подтягивание может быть немного ниже в некоторых микроконтроллерах, например, в AVR atmega8 это 30-80 кОм для подтяжки сброса и 20-50 кОм для всех остальных выводов ввода / вывода.
источник
На лучшее нельзя ответить без конкретных критериев, по которым вы не предоставили. В большинстве случаев, топология, которую вы показываете, в порядке. Два варианта могут быть «лучше» в зависимости от ситуации:
Многие микроконтроллеры имеют внутренние подтяжки на некоторых своих выводах. Они предназначены именно для такой ситуации. Резистор тогда является внутренним для микро, и вы устанавливаете немного где-нибудь, чтобы включить его. Единственная необходимая внешняя часть - это просто кнопка.
Другой полезный вариант, о котором следует помнить, - это конструкции с низким энергопотреблением, в которых кнопка может быть переключателем, который можно замкнуть на длительное время. В этом случае вы хотите минимизировать длительный средний ток через нагрузочный резистор. Вы делаете его настолько большим, насколько это возможно, но у этого есть ограничения и недостатки, которые делают его слишком большим. Вместо этого вы включаете подтягивание только на несколько мкс за раз, чтобы получить показания кнопки. Если вы проверяете кнопку каждые 1 мс, и подтягивание включено в течение 10 мкс, то средний ток срабатывания уменьшается в 100 раз. С внешним резистором вы используете другой контакт для управления верхней стороной подтягивания. С внутренней подтягиванием вы включаете / отключаете его в прошивке по мере необходимости.
Я уже ответил на это подробно здесь .
источник
Лучше, чем этот простой дизайн? Да. Бросьте кепку на это, и у вас есть простой аппаратный дебаговый переключатель.
Конденсатор будет обычным керамическим колпачком 0,1 мк. Резистор будет 10к. Этот сайт имеет полную информацию о том, почему. Короче говоря, схема отказов предотвращает ложную регистрацию микроконтроллером нескольких нажатий при нажатии кнопки. Настройка резистора / конденсатора сглаживает механическое отскок кнопки, чтобы обеспечить устойчивый переход.
источник
РЕДАКТИРОВАТЬ - комментарий, который я сделал ниже, был предназначен для продолжения того, что Олин сказал позже о схеме с конденсатором, чтобы предположительно добавить дебад. Мне жаль, что это кажется не в том месте - может быть, кто-то может это исправить, потому что я, очевидно, слишком слеп или глуп, чтобы понять, как я должен был это сделать !!
Я согласен с Олином - он не дает хорошего отклика. Я также добавил бы, что замыкание конденсатора может вызвать большой всплеск тока, который может сбросить микропроцессор, если расположение печатной платы не очень хорошее. Некоторым переключателям требуется ток смачивания для правильной и надежной работы, и 100 кОм могут быть слишком высокими для некоторых переключателей (особенно мембранных переключателей).
источник