Как подключить трехконтактный переключатель включения-выключения для считывания входных данных?

switch wires input

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

Это рассматриваемый коммутатор: E-коммутатор 200MSP4T1B1M1QE

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

Я не хочу ничего приводить в действие в буквальном смысле, я хочу только, чтобы Леонардо считывал выходные данные коммутатора. Конечная цель состоит в том, чтобы две позиции ВКЛЮЧЕНИЯ считывались как отдельные нажатия кнопок (в конечном итоге с использованием библиотеки джойстиков, на случай, если это изменит способ подключения переключателя).

Мои вопросы таковы:

  1. Является ли приведенный выше пример подключения правильным для моего варианта использования?
  2. Считается ли выход коммутатора цифровым или аналоговым?
  3. Не требуется ли провод от коммутатора к GND?

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

, 👍3

Обсуждение

вы можете использовать аналоговый вход и использовать только один вывод ... https://www.instructables.com/id/Analog-Keypad-Backpack/ ... также google " лестница резисторов arduino`, @jsotola


3 ответа


Лучший ответ:

5

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

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

Если вы хотите, чтобы Leonardo считывал состояние переключателя при нажатии 2 отдельных переключателей/кнопок, подключите 2 внешних контакта переключателя к 2 отдельным цифровым входам на Arduino.

Вам нужно заставить каждый вход заземляться или на +5 В, когда он ни к чему не подключен, или он "поплывет", и вы получите полуслучайные высокие и низкие показания.

Я предлагаю установить входные контакты Arduino в режим INPUT_PULLUP. Это соединяет входы внутри через резистор до +5 В. Если вы ничего не подключаете к контакту, он будет отображаться так же ВЫСОКО. Когда кнопка нажата/переключатель закрыт, она показывает НИЗКИЙ уровень. Это может показаться немного запутанным, но это означает, что вам не нужны внешние резисторы.

Затем вы прикрепите их к штифтам к двум внешним штифтам вашего переключателя, а центральный штифт прикрепите к земле (GND).

Если вы повернете переключатель в одну сторону, он соединит один внешний штифт с центральным. Это подключило бы этот вывод Arduino к заземлению, и показания на выводе снизились бы с ВЫСОКОЙ до НИЗКОЙ. Поверните переключатель в другую сторону, и он соединит другой штифт с заземлением, при этом другой штифт опустится от МАКСИМУМА до МИНИМУМА.

Также можно подключить ваши коммутаторы с помощью режима ввода, а не INPUT_PULLUP, и заставить их считывать НИЗКИЙ уровень, когда переключатель открыт, и ВЫСОКИЙ, когда он закрыт, но для этого вам понадобятся внешние понижающие резисторы. (И проводка это будет немного болезненно без макета или платы ПК.)

Чтобы ответить на ваши вопросы:

  1. Является ли приведенный выше пример подключения правильным для моего варианта использования?

Вы не показываете пример подключения. Вы рассказываете о том, как подключить выключатель для непосредственного включения питания пары ламп, без использования микроконтроллера. Здесь это не имеет отношения к делу.

  1. Считается ли выход коммутатора цифровым или аналоговым?

Имело бы смысл использовать его в качестве цифрового входа, так как он нужен вам для того, чтобы вы находились в 2 состояниях: открытом и закрытом.

  1. Не требуется ли провод от коммутатора к GND?

Вам необходимо подключить центральный вывод либо к заземлению +5 В, как описано выше.

,

Смотрите диаграмму в ответе Эдгара. Картинка стоит тысячи слов., @Duncan C

Это именно то, что я искал, спасибо! Я бы сказал, что это лучший ответ. Не то чтобы схемы были плохими, обязательно, но для кого-то с небольшим опытом работы с проводами/схемами диаграммы только больше смущали меня., @Boonswaddle

Если вы чувствуете, что этот (или ответ Эдгара) отвечает на ваш вопрос, вы должны принять его. (Принятие первого/лучшего ответа, который отвечает на ваш вопрос, ожидается на сайтах Stack Exchange.), @Duncan C


4

Я предлагаю такую простую схему:

schematic

Установите для обоих входных данных значение INPUT_PULLUP. Если значение на входе НИЗКОЕ, это означает, что он был заземлен переключателем.


Правка: По просьбе Дункана, вот альтернативная схема с инвертированными полярностями. При общем подключении коммутатора к Vcc входы должны быть установлены в значение INPUT_PULLDOWN. Однако большинство Arduino не поддерживают этот режим из-за отсутствия внутренних спусков. Затем вместо этого нужно использовать внешние спуски и установить контакты для ВВОДА.

schematic

С помощью этой схемы вывод считывается с ВЫСОКОЙ точностью, когда он подключен к +5 В с помощью переключателя.

,

Я не заметил, что Дункан Си опубликовал ответ как раз в то время, когда я готовил свой. Оба ответа одинаковы: один со словами, другой с изображением., @Edgar Bonet

Я не очень часто использовал CircuitLab. Схема оооочень понятна. (проголосовали.) Не могли бы вы также показать альтернативную схему с переключателем, подключенным к +5 В, с понижающими резисторами? Некоторые новички находят " НИЗКИЙ УРОВЕНЬ == включение` сбивающим с толку., @Duncan C

@DuncanC: ХОРОШО, отредактировано в соответствии с вашим запросом., @Edgar Bonet

Почему бы не сохранить вход и не использовать != и==, чтобы определить, в какую сторону расположен переключатель. меньше кода, меньше оборудования., @Gil

@Gil: Я не понимаю. Вы заметили, что это переключатель на 3 позиции? Не могли бы вы опубликовать ответ, расширяющий вашу идею?, @Edgar Bonet

Джил в чем - то права. С помощью переключателя SPDT вы можете подключить его, чтобы включить один свет, когда он выключает другой. Если вы просто передаете информацию в Arduino, вы можете подключить только один вход и сделать вывод, что состояние другого входа противоположно первому входу., @Duncan C

@DuncanC: Не с 3-позиционным переключателем, к которому подключена операция: позиция 1 (левая, мгновенная): клеммы 2 и 3 подключены, позиция 2 (центр): ничего не подключено, позиция 3 (правая, мгновенная): клеммы 2 и 1 подключены. Смотрите таблицу данных., @Edgar Bonet

О, я и не подозревал, что это был такой переключатель. Я исправляюсь., @Duncan C

Простое отсутствие смещения центра было указано на чертеже и в двух из трех утверждений. Если бы это было так, то потребовалось бы два входа. Это было предположено, потому что я неправильно прочитал его заявление: я хотел бы прочитать вывод переключателя включения-выключения. Однако, если вы посмотрите его ссылку, это DPDT без центра, поэтому, возможно, я был прав. Технический паспорт дает нам множество вариантов. Возможно, этот вопрос нуждается в некотором уточнении., @Gil


-1

Альтернативная Схема

Для включения-выключения-включения MSP-3 и MSP-4 работают следующим образом:

Operation of MSP-3 and MSP-4 switches

Рисунок 1 – Работа коммутаторов MSP-3 и MSP-4.

ПОЗ Соединение MSP-3 MSP-4
1 Терминал 2 - Терминал 3 НА (ВКЛ.)
2 Клемма 2 разомкнута ВЫКЛЮЧЕНО ВЫКЛЮЧЕНО
3 Терминал 2 - Терминал 1 НА (ВКЛ.)

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

  • > 90% Vcc для >> 50 мс означает высокий.
  • < 10% Vcc для > 50 мс означает низкий.< 10% Vcc для >
  • > 45% Vcc и >< 55% Vcc для > 50 мс означает ВЫКЛЮЧЕНО.
  • где-то посередине ничего не изменится.

Connecting SPDT switch to MCU

Рисунок 2 – Подключение переключателя SPDT к MCU.

Бросок против Остановки против Контакта

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

Из рисунка 1 видно, что в сумме получается 2 броска, 3 позиции, 2 контакта и 1 полюс.

Однако некоторые люди путают ситуацию, ошибочно превращая термин “бросок” в “механическую остановку” или “электрический контакт”. Как вы можете видеть в этом примере—как это часто бывает—количество бросков равно количеству контактов, но это не всегда так. Например, если бы был центральный контакт для центральной остановки, было бы три контакта, но все равно только два броска. Возможно, тот факт, что броски и контакты часто равны по количеству, заставил некоторых людей объединять и путать отдельные сущности. И, возможно, то, что количество остановок иногда может равняться количеству контактов, привело некоторых людей к тому, что они тоже смешались и сбили их с толку. Для такого типа переключателя количество бросков всегда на один меньше, чем количество остановок.

Вопросам не помогает спецификация E-Switch 200MSP4T1B1M1QE, показывающая неправильную схему MSP-3, 4 и 5, в которой отсутствует центральный механический упор, который должен быть помечен как ВЫКЛЮЧЕННЫЙ.

Я повторно аннотированный справочную, Рисунок 3, и изменения в следующие проза соблюдать здравый смысл подход Рис. 1, помня о том, что меньшинство людей использовать “бросок” означает “обращаться”, и добавили правильный схемы для МСП-3, 4 и 5. (Оригинал аннотированная версия и прозы была попытка использовать собственные ошибочные номенклатуре спецификации и схемы.)

Annotated datasheet v2

Рисунок 3 – Аннотированная схема данных.

MSP-1, 2 и 6 на самом деле являются переключателями с одним переключением, несмотря на то, что подразумевается в спецификации, которая объединяет описание SPST с переключателями SPDT (что вызвало некоторую путаницу в комментариях о назначении и разнообразии переключателя).

Для приведенного выше примера требуется переключатель MSP-3 вкл-выкл-вкл. Или для имитации мгновенных нажатий кнопок, MSP-4 (вкл.)-выкл.-(вкл.). Оба из них являются однополюсными переключателями двойного хода (SPDT), не потому, что у них 2 электрических контакта, а потому, что у них 2 физических хода.

В контексте ошибочной спецификации броски и контакты ошибочно являются синонимами. Говоря обычным языком, ни броски, ни положения не являются электрическими контактами/клеммами/контактами (хотя в справочнике они также объединены). Однако каждая механическая остановка имеет связанное электрическое подключение/отключение, которое должно быть объяснено в справочнике. К сожалению, в этом случае таблица в таблице данных объединила SPST с SPDT и использовала термин “НЕТ”, чтобы указать, что для типов SPST не существует позиции (MSP-1, MSP-2 и MSP-6). Для MSP-3, 4 и 5 обратите внимание, что POS 2 не имеет связанного контакта/клеммы/вывода на зеленой схеме, рис. 3.

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

Выводы

  1. Броски являются физическими.
  2. Упоры механические.
  3. Контакты являются электрическими.
  4. Такие утверждения, как “Мой контакт-это бросок”, являются бредовыми.
  5. Выводы могут быть лиричными.

Функция Прокрутки Фантома Вниз

Этот ответ вызвал призрачный отклик без каких-либо комментариев, выражающих, почему это оправдано.

Думает ли призрак:

  1. альтернативная схема неверна?
  2. пороговые значения неверны?
  3. допустимо неправильное использование английского языка и изворотливые схемы в таблице данных?

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

,

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перенесен на chat](https://chat.stackexchange.com/rooms/128582/discussion-on-answer-by-tim-how-to-wire-a-three-pin-on-off-on-switch-for-reading)., @Juraj