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


17

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

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


Я думаю, что лучший ответ на этот вопрос зависит от того, кто спрашивает, и от того, удобнее ли вам аппаратное или программное решение.
Дж. Полфер

Это также зависит от того, где находится этот выходной переключатель и какие напряжения (состояния!) У вас есть.
XTL

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

Мне нравится решение с 2 инверторами. Просто интересно, что бы потребовалось для включения этого переключения 30В @ 1А?
stevenrcfox

@ Overlow: замените выходной транзистор силовым транзистором или реле
эндолит

Ответы:


9

Вот еще одна альтернатива с двумя инверторами и отключением:

Два инвертора

Для логического выхода требуются только два инвертора, RC и резистор обратной связи:

введите описание изображения здесь

NC7WZ14 стоит $ 0,06 с 2 инверторами, небольшим 6-контактным корпусом и триггерными входами Шмитта, хотя я думаю, что эта схема даже не нуждается во входах Шмитта из-за RC. Также он может выдавать 24 мА, поэтому вы можете подключить светодиод непосредственно к нему, если по какой-либо причине вы используете светодиод.

Также показано здесь и здесь, как тумблер .

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

Варианты описаны в разделе «Нажать ВКЛ.» - «Нажать ВЫКЛ.» Схемы мягкой фиксации :

И вариант ворот


Когда он включается впервые, он запускается с включенным, выключенным или случайным образом выходом? Просто осматривая цепь, я предполагаю, что она включится с включенным выходом.
Крейг МакКуин

@CraigMcQueen При первом включении конденсатор будет иметь напряжение 0 В. Таким образом, первая цепь начнется в положении ON. Подключите конденсатор к источнику питания вместо заземления, и он начнет работать в положении ВЫКЛ.
эндолиты

@CraigMcQueen На самом деле это гарантировано? Я не уверен. Низкий выходной импеданс инвертора будет доминировать над резистором 220 кОм, поэтому он может запуститься в случайном состоянии.
эндолиты

@CraigMcQueen Последние схема , показанная будет начинаться с 0,01 мкФ Конденсатор 0 В, так что Vout будет 0.
эндолиты

@endolith Где на последнем изображении подключен VCC? Я вижу землю и Вут.
Майк

7

Один из возможных методов:

Используйте RC, чтобы отменить переключение

RC-сеть подключена к мгновенному переключателю

и затем подайте его в D-триггер с выходной обратной связью на вход для реализации T-триггера.

Триггер D настроен как триггер

D-триггер должен быть только с положительным фронтом и требует инвертированного вывода.

  • 8-контактный NC7SZ74 должен работать, он очень маленький и стоит 0,12 доллара в количестве.
  • 74HC74 представляет собой двойной D-триггер с 14 выводами по цене $ 0,05.

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


5
Действительно нужен триггерный буфер Шмитта на входе от кнопки (или если триггер имеет триггерные входы Шмитта, которые тоже будут работать). В противном случае FF может на мгновение колебаться, когда вход тактового сигнала медленно увеличивается, когда кнопка отпущена. (Это может быть несколько смягчено тщательным выбором колпака и резистора, но никогда не устраняется)
Коннор Вольф

Не могли бы вы также использовать фильтр RC в пути обратной связи, чтобы предотвратить отскок?
эндолит

6

Или вы можете сделать это с одним крошечным 6-контактным микроконтроллером и без других компонентов. Это может стоить чуть больше, но это проще и занимает меньше места. Отменить переключение в программном обеспечении просто, тогда это просто способ сохранения логического значения, если выходной сигнал будет высоким или низким. Наименьшая версия этого mcu поставляется в корпусе 2 x 2 мм для поверхностного монтажа. В больших количествах это может быть $ 0,50.

переключить схему


+1 - Но я считаю, что эта часть входит только в SMT.
Дж. Полфер

1
Да, но даже самый дешевый микроконтроллер обойдется дороже, чем простая цифровая логика. Это довольно сложная система для выполнения простой задачи, и вы открываете себя миру программных ошибок. Кроме того, это увеличивает производственные затраты, чтобы программировать каждый микро?
эндолит

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

1
@TokenMacGuy Ток не должен течь от PB0 к GND, поскольку PB0 будет входом, а не выходом. @endolith правильно, использование внутреннего подтягивания означает отсутствие необходимости внешнего подтягивания. (Кроме того, подтягивание не последовательно с переключателем, с внутренним или внешним подтягиванием). @sheepsimulator, входящий в SMT, - только проблема для любителя. В этом случае дополнительный доллар или два не будет проблемой, и вы можете легко перейти на 8-контактный DIP ATtiny25.
Давр

@endolith Это зависит от приложения, я думаю. Всегда есть компромиссы. Все, кроме самого базового устройства, имеет какую-то логику. Сказать, что вы открываете себя для мира программных ошибок, не так уж и сложно ... без MCU вы открываете себя для аппаратных ошибок, поскольку вы создаете какую-то цифровую / аналоговую схему для выполнения логики.
2010 года

1

Эта схема (также описанная здесь ) очень дешевая, но более сложная и занимает некоторое пространство со всеми компонентами. Если транзисторы в больших количествах стоят около 0,02 доллара, это может быть всего 0,10 доллара?

3-транзисторный блокировочный выключатель


0,02 доллара ... возможно, если вы купите 27 000 из них, как здесь: search.digikey.com/scripts/DkSearch/…
davr

1
$ 0,03 - это очень много, как $ 0,02 в небольших количествах ...
SingleNegationElimination

3904s за 1,4 цента: newark.com/on-semiconductor/mmbt3904lt1g/… В больших количествах конденсаторы равны 1 центу, а резисторы - 1/10 цента.
эндолит

Похоже, что транзистору Q2 нужен резистор на базе, чтобы ограничить ток, протекающий через базу.
Крейг МакКуин


0

Я знаю, что это своего рода «косвенный» способ сделать это, но вы можете получить датчик эффекта Холла, как у sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=9312

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

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


1
Как бы вы "разблокировать" это хотя? Поднесение магнита к датчику во второй раз не приведет к его отключению, не так ли?
Davr

Я полагаю, что вам придется изменить полярность магнита, чтобы «очистить его». Я буду вынужден снова подключить его дома, чтобы проверить его, чтобы убедиться, хотя, однако, я смотрю, сколько времени требуется, чтобы «сбросить» если вы удалите власть. Я мог бы использовать его для своего проекта, который собирался, убивая власть на указанное время (если это не слишком долго)
onaclov2000

0

Самой простой альтернативой является использование переменного кнопочного переключателя.

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


0

Не уверен точно, какова конечная цель, но я думал, что поставлю это там:

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

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

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

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

Надеюсь это поможет.

Блокировка реле водителя


0

Не могли бы вы просто сделать это в программном обеспечении?

Будет ли кнопка входом на программируемом устройстве, или вам нужно сделать переключение в области аппаратного обеспечения?

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

boolean buttonState = false; // store for toggle state, false = off true = on

if(yourButton == HIGH && buttonState == false) // if button is pressed and toggled off
{
     Serial.println("Button Toggled On"); // do something while button is on

     buttonState = true // set button state to on
}

if(yourButton == HIGH && buttonState == true) // if button is pressed and toggled on
{
     Serial.println("Button Toggled Off");  // do something else while button is off

     buttonState = false // set button state to off
}

Извините, если это не так, очевидно, этот ответ зависит от того, используете ли вы MCU или программируемый чип.


Лично мне нужно автономное решение, но вопрос должен быть общим.
эндолит

1
Да, это разумное решение, когда у вас есть микропроцессор. Обратите внимание, вы должны также реализовать «debounce», так как переключатели и кнопки шумят при переключении.
Крейг МакКуин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.