Что такое переключатели, включатели и выключатели, их виды и обозначение


Кнопка является простейшим устройством, при помощи которого можно управлять ходом программы на микроконтроллере, но физически она выполняет очень простую функцию: замыкает и размыкает контакт. Кнопки бывают нескольких типов:
  • С фиксацией – кнопка остаётся нажатой после отпускания, без фиксации – отключается обратно.
  • Нормально разомкнутая (Normal Open, NO) – при нажатии замыкает контакты. Нормально замкнутая (Normal Closed, NC) – при нажатии размыкает контакты.
  • Тактовые кнопки – замыкают или размыкают контакт. У обычных тактовых кнопок ноги соединены вдоль через корпус (см. картинку ниже). Переключатели – обычно имеют три контакта, общий COM, нормально открытый NO и нормально закрытый NC. При отпущенной кнопке замкнута цепь COM-NC, при нажатой замыкается COM-NO.

Подключение и подтяжка

Из урока про цифровые пины вы помните, что микроконтроллер может считывать напряжение со своей ноги. Соответственно кнопка может подать на пин тот уровень, к которому подключена её вторая нога. В том же уроке мы обсуждали, что не подключенный никуда цифровой пин принимает наводки из воздуха, и считанное с него значение будет практически случайным. То есть подключив к пину 5V (сигнал высокого уровня) через кнопку, мы ничего не добьёмся: при нажатой кнопке на пине будет считываться четкий сигнал высокого уровня, а при отпущенной – случайное значение. Для решения этой проблемы существует такое понятие, как подтяжка (pull) пина. Подтяжка выполняется к земле (pull down) или питанию (pull up) микроконтроллера при помощи резистора. Подтяжка выполняется противоположно принимаемому сигналу, т.е. если нужно ловить высокий сигнал, подтяжка выполняется к земле, если ловить нужно сигнал земли – подтяжка выполняется к питанию. Вот два варианта подключения кнопки, с подтяжкой к VCC и GND соответственно:

void setup() { Serial.begin(9600); pinMode(3, INPUT_PULLUP); } void loop() { // выведет 0, если кнопка нажата // и 1, если нет Serial.println(digitalRead(3)); delay(10); }

Типы постов

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

Поэтому из выпускаемых устройств выделяются только основные, имеющие обоснованные технические различия:

  • ПКЕ, с помощью которых осуществляется управление агрегатов металло- и деревообработки промышленного и бытового назначения;
  • ПКУ, предназначенные только для промышленного оборудования, где нет угрозы взрыва;
  • ПКТ, используемые для агрегатов с подъёмно-грузовым механизмом.

Алгоритмы

Отработка нажатия

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

void setup() { Serial.begin(9600); pinMode(3, INPUT_PULLUP); } bool flag = false; void loop() { // читаем инвертированное значение для удобства bool btnState = !digitalRead(3); if (btnState && !flag) { // обработчик нажатия flag = true; Serial.println(«press»); } if (!btnState && flag) { // обработчик отпускания flag = false; //Serial.println(«release»); } }

Дребезг контактов

Кнопка не идеальна, и контакт замыкается не сразу, какое-то время он “дребезжит”. Прогоняя данный алгоритм, система опрашивает кнопку и условия приблизительно за 6 мкс, то есть кнопка опрашивается 166’666 раз в секунду! Этого достаточно, чтобы получить несколько тысяч ложных срабатываний.

Программно можно ввести простейший таймер нажатия, основанный на millis(), время гашения дребезга примем 100 миллисекунд. Вот так будет выглядеть код:

void setup() { Serial.begin(9600); pinMode(3, INPUT_PULLUP); } bool flag = false; uint32_t btnTimer = 0; void loop() { // читаем инвертированное значение для удобства bool btnState = !digitalRead(3); if (btnState && !flag && millis() — btnTimer > 100) { flag = true; btnTimer = millis(); Serial.println(«press»); } if (!btnState && flag && millis() — btnTimer > 100) { flag = false; btnTimer = millis(); //Serial.println(«release»); } }

Рекомендуется конечно же использовать аппаратный способ, так как он не нагружает ядро лишними расчетами. В 99.99% проектов будет достаточно программного антидребезга, так то смело используйте конструкцию с millis().

“Импульсное” удержание

В устройствах с управлением кнопкой очень часто бывает нужна возможность изменения значения как однократно кликом по кнопке, так и “автоматически” с тем же шагом – при удержании. Такой вариант реализуется очень просто, добавлением ещё одного условия в наш предыдущий алгоритм, а именно: если кнопка была нажата, но ещё не отпущена, и прошло времени больше, чем задано – условие вернёт true. В примере ниже периодичность “нажатий” при удержании настроена на 500 миллисекунд (2 раза в секунду):

void setup() { Serial.begin(9600); pinMode(3, INPUT_PULLUP); } bool flag = false; uint32_t btnTimer = 0; void loop() { // читаем инвертированное значение для удобства bool btnState = !digitalRead(3); if (btnState && !flag && millis() — btnTimer > 100) { flag = true; btnTimer = millis(); Serial.println(«press»); } if (btnState && flag && millis() — btnTimer > 500) { btnTimer = millis(); Serial.println(«press hold»); } if (!btnState && flag && millis() — btnTimer > 500) { flag = false; btnTimer = millis(); //Serial.println(«release»); } }

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

Простейший класс кнопки

Вот так предыдущий пример можно сделать классом (мы делали это вот в этом уроке), положить его в отдельный файл (button.h) и пользоваться:

button.h

class button { public: button (byte pin) { _pin = pin; pinMode(_pin, INPUT_PULLUP); } bool click() { bool btnState = digitalRead(_pin); if (!btnState && !_flag && millis() — _tmr >= 100) { _flag = true; _tmr = millis(); return true; } if (!btnState && _flag && millis() — _tmr >= 500) { _tmr = millis (); return true; } if (btnState && _flag) { _flag = false; _tmr = millis(); } return false; } private: byte _pin; uint32_t _tmr; bool _flag; };

И пример с этой “библиотекой”: // файл лежит в одной папке со скетчем #include «button.h» button btn1(3); // указываем пин button btn2(4); void setup() { Serial.begin(9600); } void loop() { // метод click() «срабатывает» однократно при клике // и импульсно при удержании if (btn1.click()) Serial.println(«press 1»); if (btn2.click()) Serial.println(«press 2»); }

Другие возможности кнопки

Кнопка только с виду кажется простым устройством, дающим 0 и 1, но, подключив фантазию и время, можно придумать гораздо больше применений обычной кнопке. В моей библиотеке GyverButton реализовано очень много всяких интересных возможностей по работе с кнопкой, вот список:

  • Работа с нормально замкнутыми и нормально разомкнутыми кнопками
  • Работа с подключением PULL_UP и PULL_DOWN Опрос кнопки с программным антидребезгом контактов (настраиваемое время)
  • Отработка нажатия, удерживания, отпускания, клика по кнопке (+ настройка таймаутов)
  • Отработка одиночного, двойного и тройного нажатия (вынесено отдельно)
  • Отработка любого количества нажатий кнопки (функция возвращает количество нажатий)
  • Функция изменения значения переменной с заданным шагом и заданным интервалом по времени
  • Возможность работы с “виртуальными” кнопками (все возможности библиотеки используются для матричных и резистивных клавиатур)

Подробное описание библиотеки можно почитать в заголовочном файле на странице библиотеки, также там есть много примеров.

Дребезг кнопки ардуино

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

Для устранения дребезга используют программные и аппаратные решения. В двух словах лишь упомянем основные методы подавления дребезга:

  • Добавляем в скетче паузу 10-50 миллисекунд между полкучением значений с пина ардуино.
  • Если мы используем прерывания, то программный метд использоваться не может и мы формируем аппаратную защиту. Простейшая из них – RC фильтр с конденсатором и сопротивлением.
  • Для более точного подавления дребезга используется аппаратный фильтр с использованием триггера шмидта. Этот вариант позволит получить на входе в ардуино сигнал практически идеальной формы.

Более подробную информацию о способах борьбы с дребезгом вы можете найти в этой статье об устранении дребезга кнопок.

Важные страницы

  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

5 / 5 ( 12 голосов )

Типы

Основные типы:

ПКЕ

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

ПКУ

Используется в промышленности

, где нет угрозы возникновения взрыва, а общая концентрация пыли или газа не приведет к выходу из строя такого оборудования.

ПКТ

Применяют при работе с электротехническим оборудованием

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

Правила эксплуатации устройств управления

Многие модели не предназначены для работы во взрывоопасной среде, поэтому перед приобретением стоит ознакомиться с техническими характеристиками. Рабочая температура в помещении или цеху должна быть в пределах -35 – +40°С.

Посты функционируют на различных площадях, которые расположены не выше точки 4300 м над уровнем моря.

Для обеспечения длительной эксплуатации устройств необходимо следить за влажностью среды

(приемлемым показателем считается 50%). Повышенный уровень влаги влияет на состояние контактов, выводит их из строя. Кроме того важно следить за степенью запылённости и загазованности помещения. Большое количество пыли и газов могут спровоцировать возгорание или задымление.

Во время эксплуатации поста не допускать попадания на корпус солнечных лучей, это приведёт к перегреву устройства.

Стоимостные показатели

Стоимость российских кнопочных постов достаточно невысока и зависит в первую очередь от числа кнопок

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

Так, например, цена двухкнопочных приборов «ПКЕ-222-2» находится в диапазоне 250,0…280,0 рублей. Аналогичное устройся имеющую грибообразную кнопку «Стоп» обойдется несколько дороже – 380,0 рублей.

Цена однокнопочных постов не превышает 150 рублей. Шестикнопочный тельферный пульт «ПКТ-60» стоит 300,0 рублей. Аналогичное по количеству кнопок и электрическим параметрам устройство, оборудованное ключом («защита от дурака»), будет стоит на 200,0 рублей дороже.

Светосигнальная арматура

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

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

Рейтинг
( 2 оценки, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]