Faire un interrupteur momentané contrôler une bascule


17

Quelles sont les façons les plus simples, les moins chères et les plus petites de faire en sorte qu'un commutateur momentané produise une sortie à bascule à 2 états (commutateur momentané à verrouillage)?

En d'autres termes, le niveau de sortie est continuellement bas et lorsque vous appuyez momentanément sur le bouton / commutateur tactile, la sortie passe en continu haut, puis lorsque vous appuyez à nouveau dessus, il repasse au niveau bas.


Je pense que la meilleure réponse à cela dépend du demandeur et si vous êtes plus à l'aise avec un matériel ou une solution logicielle.
J.Polfer

Cela dépend également de l'emplacement de ce commutateur de sortie et des tensions (états!) Dont vous disposez.
XTL

Juste deux états, haut et bas, comme toute logique numérique. Si vous voulez faire plusieurs états que vous parcourez, je pense que cela nécessiterait un microcontrôleur. De toute façon, vous en auriez probablement un dans votre circuit.
endolith

J'aime la solution avec 2 onduleurs. Vous vous demandez simplement ce qui serait nécessaire pour que cela permute 30V @ 1A?
stevenrcfox

@Overlow: Remplacer le transistor de sortie par un transistor de puissance ou un relais
endolith

Réponses:


9

Voici une autre alternative avec deux onduleurs et anti-rebond:

Deux onduleurs

Pour la sortie logique, seuls les deux onduleurs, RC et résistance de rétroaction sont nécessaires:

entrez la description de l'image ici

NC7WZ14 coûte 0,06 $ avec 2 onduleurs, un petit boîtier à 6 broches et des entrées de déclenchement Schmitt, bien que je pense que ce circuit n'a même pas besoin d'entrées Schmitt à cause du RC. Il peut également piloter 24 mA, vous pouvez donc y connecter directement la LED si vous utilisez une LED pour une raison quelconque.

Également montré ici et ici comme un interrupteur tactile à bascule .

Je pense que la résistance de rétroaction doit être beaucoup plus petite que la résistance centrale pour l'empêcher d'osciller si vous maintenez le bouton enfoncé, car la connexion à basse impédance à la sortie empêchera le condensateur de se charger à la tension moyenne jusqu'à ce que vous lâchiez.

Les variantes sont décrites dans Press ON - Press OFF soft latching circuits :

ET variante de porte


Lorsqu'il est mis sous tension pour la première fois, démarre-t-il avec la sortie activée, désactivée ou aléatoire? En inspectant simplement le circuit, je suppose qu'il s'allumera avec la sortie activée.
Craig McQueen

@CraigMcQueen Lors de sa première mise sous tension, le condensateur aura 0 V à travers. Ainsi, le premier circuit démarrera en position ON. Connectez le condensateur à l'alimentation au lieu de la masse, et il démarrera en position OFF.
endolith

@CraigMcQueen En fait, est-ce garanti? Je ne suis pas sûr. La faible impédance de sortie de l'onduleur dominera sur la résistance de 220 k, il peut donc démarrer dans un état aléatoire.
endolith

@CraigMcQueen Le dernier circuit montré commencera avec un condensateur 0,01 μF 0 V, donc Vout sera 0.
endolith

@endolith Où dans la dernière image le VCC est-il connecté? Je vois du sol et Vout.
Mike

7

Une méthode possible:

Utilisez un RC pour faire rebondir l'interrupteur

Réseau RC connecté à un interrupteur momentané pour rebondir

puis l'introduire dans une bascule D avec la sortie de retour à l'entrée pour mettre en œuvre une bascule T.

Bascule D configurée comme bascule à bascule

La bascule D doit uniquement être déclenchée par front positif et a besoin d'une sortie inversée.

  • Le NC7SZ74 à 8 broches devrait fonctionner, est très petit et coûte 0,12 $ en quantité.
  • Le 74HC74 est une bascule double D avec 14 broches pour 0,05 $.

Y a-t-il des problèmes avec cela? Le commutateur devrait être maintenu enfoncé pendant une courte période de temps pour que le temps de montée déclenche l'entrée d'horloge, ce qui est probablement bon. Si vous maintenez le bouton enfoncé, il ne se déclenchera qu'une seule fois, ce qui est bien. Existe-t-il un meilleur moyen de rebondir dans la boucle de rétroaction ou quelque chose à la place?


5
A vraiment besoin d'un tampon de déclenchement schmitt sur l'entrée du bouton (ou si la bascule a des entrées de déclenchement schmitt qui fonctionneraient aussi). Sinon, le FF peut osciller momentanément lorsque l'entrée d'horloge monte lentement lorsque le bouton est relâché. (Cela peut être quelque peu atténué avec une sélection minutieuse du capuchon anti-rebond et de la résistance, mais jamais éliminé)
Connor Wolf

Ne pourriez-vous pas également utiliser un filtre RC dans le chemin de rétroaction pour éviter les rebonds?
endolith

6

Ou vous pouvez le faire avec un seul petit microcontrôleur à 6 broches et aucun autre composant. Cela peut coûter un peu plus cher, mais c'est plus simple et prend moins de place. Le rebouncing d'un commutateur dans le logiciel est simple, alors c'est juste une manière de stocker un booléen si la sortie doit être haute ou basse. La plus petite version de ce MCU est livrée dans un boîtier de montage en surface de 2 mm x 2 mm. En grandes quantités, il pourrait être de 0,50 $.

basculer le schéma


+1 - Mais je crois que cette partie n'est disponible qu'en SMT.
J. Polfer du

1
Oui, mais même le microcontrôleur le moins cher va coûter plus cher qu'une simple logique numérique. C'est un système assez complexe pour effectuer une tâche simple, et vous vous ouvrez au monde des bogues logiciels. De plus, cela augmente-t-il les coûts de production pour programmer chaque micro?
endolith

Vous utiliseriez donc la résistance de rappel interne sur PB0 configurée comme entrée numérique, puis la mettriez à la terre pour la déclencher, non? Vous ne devriez pas avoir besoin d'une résistance en série avec le commutateur de cette façon.
endolith

1
@TokenMacGuy Aucun courant ne devrait circuler de PB0 à GND, car PB0 serait une entrée et non une sortie. @endolith correct, l'utilisation du pull-up interne ne nécessite aucun pull-up externe. (De plus, le pull-up n'est pas en série avec le commutateur, avec un pull-up interne ou externe). @sheepsimulator venant en SMT n'est qu'un problème pour l'amateur. Dans ce cas, un ou deux dollars supplémentaires ne seraient pas un problème, et vous pouvez facilement passer au DIP ATtiny25 à 8 broches.
davr

@endolith Cela dépend de l'application, je suppose. Il y a toujours des compromis. Tout sauf l'appareil le plus élémentaire a une sorte de logique. Dire que vous vous ouvrez au monde des bogues logiciels n'est pas si grave ... sans le MCU, vous vous ouvrez aux bogues matériels, car vous construisez une sorte de circuit numérique / analogique pour effectuer la logique.
davr

1

Ce circuit (également décrit ici ) est très bon marché, mais il est plus complexe et prend de la place avec tous les composants. Si les transistors sont comme 0,02 $ en grandes quantités, ce serait peut-être 0,10 $ au total?

Interrupteur à verrouillage à 3 transistors


0,02 $ ... peut-être si vous en achetez 27 000 comme ici: search.digikey.com/scripts/DkSearch/…
davr

1
0,03 $, c'est beaucoup comme 0,02 $ en petites quantités ...
SingleNegationElimination

3904 pour 1,4 cent: newark.com/on-semiconductor/mmbt3904lt1g/… En grandes quantités, les condensateurs sont comme 1 cent et les résistances sont comme 1 / 10e de cent.
endolith

Il semble que le transistor Q2 ait besoin d'une résistance sur la base pour limiter le courant traversant la base.
Craig McQueen

1

Faites une bascule en T en court-circuitant les entrées d'une bascule jk déclenchée par front positif et connectez la sortie du bouton-poussoir à l'entrée d'horloge de la bascule jk.

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab


0

Je sais que c'est un peu une façon "indirecte" de le faire, mais vous pouvez obtenir un capteur à effet hall comme sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=9312

et juste utiliser un aimant, j'ai découvert (à la dure) que cet effet hall particulier se verrouille, donc il ne fonctionnera pas pour ce dont j'ai besoin, mais il semble en théorie qu'il pourrait fonctionner pour ce que vous recherchez .

Je viens de le brancher sur une planche à pain, je pense que j'ai peut-être utilisé une résistance (cela fait probablement un mois, donc je suis un peu flou sur les détails), et quand je rapproche l'aimant (momentané), il ferme le capteur et là tu vas.


1
Comment voulez-vous le "déverrouiller"? Rapprocher l'aimant du capteur une deuxième fois ne le désengagerait pas, n'est-ce pas?
davr

Je crois que vous devrez inverser la polarité de l'aimant pour le "nettoyer". Je devrai le rebrancher à la maison pour le tester, bien sûr, mais je regarde le temps qu'il faut pour "réinitialiser" si vous coupez le courant. Je pourrais peut-être l'utiliser pour mon projet que j'allais, en coupant le courant pendant la durée spécifiée (à condition que ce ne soit pas trop long)
onaclov2000

0

L'alternative la plus simple consiste à utiliser un interrupteur à bouton-poussoir alternatif.

Si vous ignorez le fait qu'il se verrouille à différentes positions, c'est presque exactement comme un interrupteur momentané. Je comprends que ce n'est pas l'esprit de la question, mais c'est une solution simple et compacte ne nécessitant aucun logiciel ni matériel externe.


0

Je ne sais pas exactement quel est l'objectif final, mais je pensais que je mettrais cela ici:

C'est un excellent petit circuit que j'aime utiliser pour piloter des relais bistables. Il est également assez bon marché à construire.

Appuyer sur l'interrupteur momentané fait basculer l'état du relais et de la LED. Ce n'est pas vraiment difficile de savoir combien de temps vous maintenez le bouton enfoncé. Comme le relais est verrouillé, il ne consommera pas beaucoup de courant la plupart du temps.

Dans cette configuration, la LED s'allume lorsque le relais est dans son état défini et s'éteint lorsque le relais est réinitialisé. Vous pouvez également connecter R7 à la borne + de C3 pour que la LED s'allume lorsque le relais est réinitialisé.

J'aime l'utiliser dans les effets de guitare pour pouvoir contourner ou engager l'appareil avec une pédale momentanée. Bien sûr, un commutateur 3PDT ferait la même chose à lui seul, mais la commutation est plus silencieuse de cette façon (pas de grosse pop) et les commutateurs au pied momentanés au toucher doux sont beaucoup plus agréables que les gros 3PDT.

J'espère que cela t'aides.

Pilote de relais à verrouillage


0

Ne pourriez-vous pas simplement le faire dans un logiciel?

Le bouton sera-t-il une entrée sur un appareil programmable, ou avez-vous besoin de basculer dans le domaine matériel?

En stockant un état de bouton en mémoire, il est assez facile d'utiliser un interrupteur momentané comme bascule.

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
}

Désolé si ce n'est pas le cas, cette réponse dépend évidemment de votre utilisation d'un MCU ou d'une puce programmable.


Personnellement, j'ai besoin d'une solution autonome, mais la question se veut générale.
endolith

1
Oui, c'est certainement la solution judicieuse lorsque vous avez un microprocesseur. Remarque, vous devez également implémenter "debounce" car les commutateurs et les boutons sont bruyants lors de la commutation.
Craig McQueen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.