Тактовая кнопка, как подключить правильно к "+" или "-" ???

d2d2696ca82d37c606b17a15899a24ca.jpg

Вы ни когда не задумывались, почему в схемах иногда кнопки подтягивают к »+» питания, а иногда к общему проводу? Если прямо сейчас набрать в поиске: «тактовая кнопка ардуино» — то на большинстве картинок мы увидим именно прямое подключение, когда резистор подключен на землю. Но, если посмотреть схемы без участия ардуино, то ситуация меняется в корне, чаще можно будет встретить инвертированное включение. Так как же будет подключать кнопку правильнее? Давайте вместе попробуем разобраться в этом вопросе!

d37b7d20be032822f9c2dfbcd4eee304.jpeg

Тактовая кнопка является одним из наиболее часто встречающихся устройств дискретного ввода во встраиваемых системах. И даже появление сенсорных экранов все равно их не вытеснило.

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

Чаще всего кнопки устанавливают между выводом микросхемы и общим проводом схемы. Соответственно, при нажатии кнопка может подключать вывод микросхемы на землю, формируя электрический уровень логического нуля.

f6c989fa54ad0e3243f1dd76321588a5.jpg

Чтобы гарантировать устойчивый уровень логической единицы на входе микросхемы, пока кнопка не нажата, необходимо использовать подтягивающий резистор к плюсу питания. Таким образом, если кнопка не нажата, вход микросхемы примет состояние логической единицы. А при нажатии примет логический ноль.

Инвертированное включение кажется не логичным, т.к. логическая единица удерживается на входе микроконтроллера, пока кнопка не нажата.Инвертированное включение кажется не логичным, т.к. логическая единица удерживается на входе микроконтроллера, пока кнопка не нажата.

Обычно сопротивление резистора выбирают 100кОм. Входы CMOS микросхем фактически представляют собой затвор полевого транзистор, сопротивление которого носит емкостной характер, и имеет величину в единицах пикофарад. Если сопротивление подтяжки будет очень большим, то ток, который заряжает входную емкость, может оказаться недостаточным для обеспечения необходимой скорости установки высокого уровня напряжения и его стабильного удержания. Если же сопротивление подтяжки будет очень низким, то это будет дополнительно увеличивать нагрузку на цепи питания при нажатии на кнопку.

Подтягивающий резистор также необходим для предотвращения короткого замыкания между цепями питания при замкнутых контактах кнопки.

8a9616a07135f0ccf707024c5eb35e04.png

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

Прямое включение кнопки. При нажатии микроконтроллер будет считывать логическую единицу. Если кнопка не нажата - то ноль.Прямое включение кнопки. При нажатии микроконтроллер будет считывать логическую единицу. Если кнопка не нажата — то ноль.

И все таки, инвертированное включение кнопки применяется чаще. Рассмотрим причины такого выбора. Предположим , что кнопки выведены на лицевую панель прибора и подключены к печатной плате по средствам жгута проводов или гибким шлейфом. Как правило, все элементы конструкции подключают к нулевому потенциалу схемы управления (на землю).

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

e3581d4107c6a44ac2a89a8e3ca059a2.png

При замыкание проводников в шлейфе в результате механического повреждения для прямого включения кнопок произойдет короткое замыкание между шинами питания. Для инвертированного включения кнопки в аналогичном случае замыкание цепей питания не произойдет. И схема управления получит меньше электрических повреждений.

Пожалуй именно по этой причине я предпочитаю инвертированное включение кнопки, и готов из-за этого терпеть некоторые неудобства при программировании.

4f1e5599224bf8cb2889c3b0b4c4dd8a.png

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

f7b2c87e5a1fcb0eab97e0c3e2a7eef2.png

Самый простой способ борьбы с дребезгом контактов, это подключение параллельно кнопки керамического конденсатора примерно 0,1 мкФ. При нажатии конденсатор мгновенно разряжается через замкнутый контакт кнопки на землю, и не мешает ее срабатыванию.

e43be5909e4515b52bae61bcf4ebad07.jpg

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

f588d615c27b0ac5e1df89865c2c9f93.jpg

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

Самым простым программным способом борьбы с дребезгом контактов является увеличение времени между опросами состояния кнопки. Дополнительная пауза между опросам должна превышать длительность переходных процессов. Тогда программа «не заметит» дребезг и проигнорирует любые кратковременные замыкания кнопки.

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

© Habrahabr.ru