Faça um interruptor momentâneo controlar uma alternância


17

Quais são as maneiras mais simples, baratas e menores de fazer uma troca momentânea produzir uma saída de alternância de 2 estados (chave momentânea com trava)?

Em outras palavras, a saída é baixa continuamente e, quando você pressiona momentaneamente o botão / tato, a saída muda para alta contínua e, quando você pressiona novamente, volta para baixa.


Eu acho que a melhor resposta para isso depende do solicitante e se você está mais à vontade com uma solução de hardware ou software.
J. Polfer

Também depende de onde está esse interruptor de saída e de quais tensões (estados!) Você tem disponível.
XTL

Apenas dois estados, alto e baixo, como qualquer lógica digital. Se você deseja fazer vários estados pelos quais está percorrendo, acho que exigiria um microcontrolador. Você provavelmente teria um no seu circuito de qualquer maneira por isso.
endolith 18/08/10

Eu gosto da solução com 2 inversores. Imaginando o que seria necessário para permitir que isso alternasse 30V @ 1A?
Stevenrcfox

@Overlow: Substituir o transistor de saída, com um transistor de potência ou retransmitir
endolith

Respostas:


9

Aqui está outra alternativa com dois inversores e debouncing:

Dois inversores

Para saída lógica, são necessários apenas os dois inversores, RC e resistor de realimentação:

insira a descrição da imagem aqui

O NC7WZ14 custa US $ 0,06 com 2 inversores, pacote pequeno de 6 pinos e entradas de gatilho Schmitt, embora eu ache que esse circuito nem precise de entradas Schmitt por causa do RC. Além disso, ele pode operar com 24 mA, para que você possa conectar o LED diretamente a ele, se estiver usando um LED por qualquer motivo.

Também mostrado aqui e aqui como um interruptor de toque .

Eu acho que o resistor de feedback precisa ser muito menor que o resistor central para evitar oscilações se você pressionar o botão, porque a conexão de baixa impedância à saída impedirá que o capacitor carregue na tensão média até que você o solte.

As variantes são descritas em Press ON - Pressione OFF : circuitos de travamento suave :

E variante de portão


Quando é ligado pela primeira vez, ele inicia com a saída ativada, desativada ou aleatória? Apenas inspecionando o circuito, acho que ele será ligado com a saída ligada.
Craig McQueen

@CraigMcQueen Quando ligado pela primeira vez, o capacitor terá 0 V através dele. Portanto, o primeiro circuito começará na posição ON. Conecte o capacitor à fonte de alimentação e não ao terra, e ele começará na posição OFF.
Endolith

@CraigMcQueen Na verdade isso é garantido? Não tenho certeza. A baixa impedância de saída do inversor dominará sobre o resistor de 220k, portanto, ele pode iniciar em um estado aleatório.
Endolith

@CraigMcQueen O último circuito mostrado irá começar com 0,01 uF condensador de 0 V, de modo Vout será 0.
endolith

@ endolith Onde na última imagem o VCC está conectado? Eu vejo chão e Vout.
21717 Mike

7

Um método possível:

Use um RC para rejeitar a opção

Rede RC conectada a um interruptor momentâneo para debounce

e, em seguida, alimente-o em um flip-flop D com a saída retornando à entrada para implementar um flip-flop T.

Flip-flop D configurado como alternar flip-flop

O flip-flop D precisa ser apenas ativado por borda positiva e precisa de uma saída invertida.

  • O NC7SZ74 de 8 pinos deve funcionar, é muito pequeno e custa US $ 0,12 em quantidade.
  • O 74HC74 é um flip-flop D duplo com 14 pinos por US $ 0,05.

Há algum problema com isso? O interruptor precisaria ser pressionado por um curto período de tempo para que o tempo de subida disparasse a entrada do relógio, o que provavelmente é bom. Se você pressionar o botão, ele será acionado apenas uma vez, o que é bom. Existe uma maneira melhor de debounce no loop de feedback ou algo assim?


5
Realmente precisa de um buffer de disparo schmitt na entrada do botão (ou se o flip-flop tiver entradas de disparo schmitt que funcionariam também). Caso contrário, o FF poderá oscilar momentaneamente quando a entrada do relógio aumentar lentamente quando o botão for liberado. (Isto pode ser algo mitigada com a seleção cuidadosa da tampa debouncing e resistor, mas nunca eliminado)
Connor Lobo

Você também não pode usar um filtro RC no caminho de feedback para evitar quedas?
endolith 18/08/10

6

Ou você pode fazê-lo com um único microcontrolador minúsculo de 6 pinos e sem outros componentes. Pode custar um pouco mais, mas é mais simples e ocupa menos espaço. Desativar uma troca de software é simples, então é apenas uma maneira de armazenar um booleano se a saída for alta ou baixa. A versão menor deste mcu vem em um pacote de montagem em superfície de 2 mm x 2 mm. Em grandes quantidades, pode ser $ 0,50.

alternar esquema


+1 - Mas acredito que essa parte só vem no SMT.
J. Polfer

1
Sim, mas mesmo o microcontrolador mais barato vai custar mais do que simples lógica digital. É um sistema bastante complexo para executar uma tarefa simples, e você está se abrindo para o mundo dos bugs de software. Além disso, aumenta os custos de produção para programar todos os micro?
endolith 18/08/10

Então você usaria o resistor de pull-up interno no PB0 configurado como uma entrada digital e aterraria para acioná-lo, certo? Você não precisa de um resistor em série com o interruptor dessa maneira.
endolith 18/08/10

1
@TokenMacGuy Nenhuma corrente deve fluir do PB0 para o GND, pois o PB0 seria uma entrada, não uma saída. @ endolith correto, usando o pull-up interno significa que não há necessidade de pull-up externo. (Além disso, o pull-up não está em série com o switch, com um pull-up interno ou externo). O @sheepsimulator chegando no SMT é apenas um problema para os entusiastas. Nesse caso, um dólar ou dois extra não seria um problema, e você pode facilmente avançar para o DIP ATtiny25 de 8 pinos.
davr

@ endolith Depende da aplicação, eu acho. Sempre há trocas. Tudo, menos o dispositivo mais básico, tem algum tipo de lógica. Dizer que você se abre para o mundo dos bugs de software não é grande coisa ... sem o mcu você se abre para bugs de hardware, pois está construindo algum tipo de circuito digital / analógico para executar a lógica.
davr

1

Esse circuito (também descrito aqui ) é muito barato, mas é mais complexo e ocupa algum espaço com todos os componentes. Se os transistores custassem US $ 0,02 em grandes quantidades, seria talvez US $ 0,10 no total?

Interruptor de travamento de 3 transistores


$ 0,02 ... talvez se você comprar 27.000 deles como aqui: search.digikey.com/scripts/DkSearch/…
davr

1
$ 0,03 é um lote terrível como $ 0,02 em pequenas quantidades ...
SingleNegationElimination

3904s por 1,4 centavos: newark.com/on-semiconductor/mmbt3904lt1g/… Em grandes quantidades, os capacitores são de 1 centavo e os resistores de 1/10 de centavo.
Endolith 18/08/10

Parece que o transistor Q2 precisa de um resistor na base, para limitar a corrente que flui através da base.
Craig McQueen

1

Faça um flip-flop em T encurtando as entradas de um flip-flop jk positivo acionado por borda e conecte a saída do botão à entrada de relógio do flip-flop jk.

esquemático

simular este circuito - esquemático criado usando o CircuitLab


0

Eu sei que é meio uma maneira "indireta" de fazê-lo, mas você pode obter um sensor de efeito hall, como o sparkfun possui: http://www.sparkfun.com/commerce/product_info.php?products_id=9312

e apenas use um ímã, eu descobri (da maneira mais difícil) que esse efeito hall específico está travando, então não funcionará para o que eu preciso, mas parece que, em teoria, poderia funcionar para o que você está procurando .

Acabei de conectá-lo a uma tábua de pão, acho que posso ter usado um resistor (provavelmente já faz um mês, estou um pouco confuso com os detalhes) e, quando movo o ímã para perto (momentâneo), fecha o sensor e lá Você vai.


1
Como você "destravaria" isso? Trazer o ímã para perto do sensor uma segunda vez não o desativa, não é?
davr

Eu acredito que você teria que reverter a polaridade do ímã para "limpá-lo". Eu terei que conectá-lo novamente em casa para testá-lo para ter certeza, no entanto, estou analisando quanto tempo leva para "redefinir" se você remover a energia. Eu poderia ser capaz de usá-lo para o meu projeto que eu ia, matando energia para o tempo especificado (desde que não seja muito longo)
onaclov2000

0

A alternativa mais fácil é usar um botão de pressão alternado.

Se você ignorar o fato de que ele trava em posições diferentes, é quase exatamente como um interruptor momentâneo. Entendo que esse não é o espírito da pergunta, mas é uma solução simples e compacta que não requer software nem hardware externo.


0

Não tenho certeza exatamente qual é o objetivo final, mas pensei em divulgar isso:

Este é um ótimo pequeno circuito que eu gosto de usar para acionar relés biestáveis. É muito barato construir também.

Pressionar a chave momentânea alterna o estado do relé e o LED. Não é muito exigente quanto tempo você mantém pressionado o botão. Como o relé está travando, ele não consumirá muita corrente na maioria das vezes.

Nesta configuração, o LED acenderá quando o relé estiver na condição definida e apagará quando o relé for redefinido. Você também pode conectar o R7 ao terminal + do C3 para acender o LED quando o relé for reiniciado.

Eu gosto de usar isso em efeitos de guitarra para que eu possa ignorar ou ativar o dispositivo com um pedal momentâneo. É claro que um switch 3PDT faria a mesma coisa por si só, mas o switch é mais silencioso dessa maneira (sem pop grande) e os pedais momentâneos de toque suave parecem muito melhores do que os grandes 3PDT.

Espero que isto ajude.

Driver de retransmissão de travamento


0

Você não poderia apenas fazer isso em software?

O botão será uma entrada em um dispositivo programável ou você precisa fazer a alternância no domínio do hardware?

Armazenando um estado de botão na memória, é muito fácil usar uma chave momentânea como uma alternância.

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
}

Desculpe se isso está errado, obviamente esta resposta depende de você usar um MCU ou chip programável.


Pessoalmente, preciso de uma solução autônoma, mas a pergunta deve ser geral.
endolith 18/08/10

1
Sim, essa é certamente a solução sensata quando você tem um microprocessador. Observe que você também deve implementar "debounce", pois os botões e as teclas são barulhentos ao alternar.
22717 Craig McQueen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.