Кажется, что нет ничего проще, чем ввести в микроконтроллер сигнал с кнопки или концевого датчика. Но, как только ваша система автоматизации или робот “выдвигаются” за пределы комнаты, могут начаться сюрпризы с распознаванием состояния кнопки или концевого выключателя (о них мы рассказывали в одной из предыдущих статей). Что же нужно знать и что важно предпринять, чтобы микроконтроллер не считывал “ложное” состояние кнопки?

Обычно для опроса кнопки или тумблера используют одну из простейших схем (см. рисунок 1а):

Концевики и кнопки: секреты надежного опроса (часть 1)

Резистор и кнопка могут меняться местами, тогда нажатию кнопки будет соотв. лог. “0”.

Зачастую внешний резистор не используют, а в качестве резистора R “программно” подключают внутреннюю “подтяжку” в микроконтроллере (на рисунке 1б показана пунктиром), сопротивление которой составляет несколько десятков кОм. Отметим, что порог переключения входов микроконтроллера (с лог.”1” в лог.”0” и обратно) всегда находится в пределах от 20 до 80% напряжения питания (обычно около 50%). А собственное входное сопротивление у современных микроконтроллеров эквивалентно десяткам мегаом и выше (вернее, ток утечки входа не превышает наноампер, и его влияние обычно можно не учитывать). Поэтому резисторная подтяжка уверенно “притягивает” вход к начальному уровню, очень близкому к 0V (GND). А при нажатии кнопки вход фактически с нулевым сопротивления подключается к “плюсу” питания, и переходит в состояние ”1”.

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

Но если вы опрашиваете концевой выключатель какого-либо силового оборудования, или просто выключатель, изначально рассчитанный на 220 V (да еще, возможно, и уже поработавший), то через определенное время столкнетесь с ложным “обрывом”. МК перестанет распознавать замкнутое состояние выключателя из-за появления окислов на его контактах, почти не пропускающих электрический ток. Бороться с этим несложно – для самоочищения контактов во время их замкнутого состояния нужно обеспечить протекание через них тока определенной силы (5..10 мА) при наличии определенного начального напряжения для “начального пробоя”. Резистор сопротивлением в десятки и даже единицы кОм, при напряжении питания 5 В протекание такого тока нам не обеспечит. Вывод: при работе с такими типами выключателей и датчиков на напряжении 5 В используйте резистор номиналом не выше нескольких сотен ом, например 470 Ом.

Еще одной проблемой окажется “ловля” помех, или наводок – в случае, если вы решите подключить кнопку к микроконтроллеру через длинные провода (от метра и более). На этот раз вы рискуете получить ложные “замыкания” кнопки, происходящие за счет появления в сигнальном проводе кратковременных выбросов, наводимых при коммутации выключателей нагрузок (например, термостата холодильника). А иногда достаточно и мобильного телефона, лежащего рядом с проводом. На уровне “железа” с этой проблемой можно бороться несколькими способами.

Увеличение порога срабатывания входа по току – мы уже произвели, установив сопротивление 470 Ом. Теперь для того, чтобы помеха дала ложное переключение состояния входа, ей нужно вкачать в резистор не менее 2,5 В / 470 Ом = 5,3 мА – а на это способна далеко не каждая помеха. Напряжение 2,5V взято как порог переключения входа (50% напряжения питания от 5 В). Вы можете подставить цифры для вашего микроконтроллера. Отметим, что в промышленных системах используют порог по току от 3 до 15 мА.

Способы дальнейшего повышения помехоустойчивости входов мы опишем в ч.2 этой статьи.

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