Vous utilisez le commutateur SPST comme entrée numérique?

10

Je suis nouveau dans le "génie électrique" et je travaille sur un petit projet Arduino. Je veux qu'un commutateur SPST soit utilisé comme entrée numérique sur la carte.

J'ai l'un des câbles de commutation connecté au posatif et l'autre connecté à l'entrée numérique. Le problème est que lorsque vous l'éteignez, je ne peux pas être sûr que l'entrée sera mise à la terre. Comment puis-je m'assurer que l'entrée est mise à la terre lorsque l'interrupteur est éteint?

Cela fonctionnerait-il si je connectais l'entrée numérique à une résistance qui est connectée à la masse, donc lorsque le commutateur est éteint, il sera mis à la terre, mais lorsque le commutateur est activé, il ne court-circuite pas - cela fonctionnerait-il?

Bob l'éponge
la source

Réponses:

9

La solution la plus conventionnelle serait de connecter un côté de l'interrupteur à la terre. Connectez l'autre à l'entrée numérique, ainsi qu'à une résistance entre 1 et 10 K ohms allant à l'alimentation positive.

Aller dans l'autre sens, avec une résistance de rappel comme Bruno le décrit, est possible mais moins préféré. De nombreuses entrées ont déjà un degré de pull-up implicite et liront un «1» si elles ne sont pas connectées, mais pas de manière très fiable. Mais si votre interrupteur est déjà connecté au rail positif, une descente est une bonne solution, bien que beaucoup préfèrent utiliser une petite résistance lors de la connexion des entrées logiques au rail positif.

De nombreux microcontrôleurs ont également des résistances internes pullup et / ou pull down sur les broches GPIO qui peuvent être activées en écrivant dans un registre de configuration. Si vous pilotez une entrée d'un tel microcontrôleur, vous n'aurez peut-être pas du tout besoin d'une résistance de tirage haut / bas externe, bien que tous les microcontrôleurs ne soient pas équipés de ces derniers.

Chris Stratton
la source
4
De plus, si vous utilisez un uC avec des pull-ups ou des pull-ups intégrés, il est recommandé de les activer sur des broches qui ne sont pas utilisées pour les garder dans un état connu.
Matt Young
C'est en fait plus facile, pour mon projet de connecter l'interrupteur à la terre. Je vais donc essayer d'utiliser une résistance pull up. Merci!
Sponge Bob
2
Génial! Revenez quand vous voudrez nous poser des questions sur "Switch Bounce" :)
gbarry
Il s'avère qu'Arduino fera un pullup automatiquement. Je ne sais pas comment, mais dans le code il y a un "INPUT_PULLUP" numérique et je n'ai même pas besoin d'une résistance. C'était facile. De plus, à propos du rebond du commutateur, je l'ai remarqué lorsque je surveillais la sortie série. J'ai donc ajouté un délai de 3 ms dans le code. Cela m'a évité un autre voyage au magasin. :)
Sponge Bob
Si vous parcourez la fiche technique ATMEGA, vous verrez qu'il y a un bout qui peut être écrit dans un registre de configuration pour activer le pullup. Les bibliothèques Arduino le rendent simplement plus pratique. Pour le rebond, ignorer (cette) entrée pendant un certain temps est un cours habituel, bien que 3 ms puissent être un peu courts. Si le retard bloque tout votre système, vous devrez peut-être le garder court, s'il ne fait qu'ignorer cette entrée, vous pouvez le rendre un peu plus long, car les réactivations intentionnelles seraient encore plus lentes.
Chris Stratton
9

Oui, cela fonctionnerait comme vous l'avez décrit. C'est ce qu'on appelle une résistance de rappel car elle garantit que lorsque le contact est ouvert, l'entrée numérique est à l'état logique 0 (faible). Habituellement, vous pouvez utiliser une résistance de 10 KΩ à cet effet.

Bruno Ferreira
la source
2

Cela fonctionnera et vous donnera une logique positive: un niveau élevé (logique "1") lorsque l'interrupteur est fermé.

Mais comme le dit Chris, la chose inversée est plus courante: un interrupteur connecté à la terre et une résistance de pull-up (au lieu de pull-down) à l'alimentation. Votre logique sera inversée: un "1" logique correspondra à un interrupteur ouvert.

Une bonne raison de la version pull-up est que la plupart des microcontrôleurs les ont intégrés, et vous pouvez les activer / désactiver en fonction de vos besoins. Certains microcontrôleurs ont également des menus déroulants configurables, mais ceux-ci sont moins courants.

Si vous voulez un pull-up externe, 10 kΩ peuvent être une bonne valeur. L'entrée d'un microcontrôleur peut avoir un courant de fuite allant jusqu'à 1 µA, puis 10 kΩ chuteront de 10 mV négligeables. Des valeurs plus faibles sont certainement possibles, mais gardez à l'esprit qu'elles auront un courant à la terre plus important lorsque l'interrupteur est fermé. Une résistance de 1 kΩ consommera 5 mA avec une alimentation de 5 V, ce qui est vraiment une perte de puissance. Pour le 10 kΩ, ce n'est que 500 µA. Pour les applications à très faible puissance, vous pouvez augmenter la valeur à 100 kΩ, mais n'oubliez pas le courant de fuite; 1 µA donnera une chute de 100 mV!

stevenvh
la source