Article original : Hardware fundamentals: how pull-down and pull-up resistors work
Par Taron Foxworth
Si vous avez déjà câblé un bouton à un Arduino, vous êtes tombé sur ce diagramme :
Au début, cela peut être déroutant. Mes premières pensées : « Pourquoi ai-je besoin d'une résistance ? Je veux simplement qu'il me dise si le bouton est enfoncé. »
Après beaucoup de lectures, il n'y avait pas d'explication simple.
Que se passe-t-il ici
Diagramme 1
Dans ce bouton — AKA un interrupteur — les fils sont en forme de « H ». Mais le milieu n'est pas connecté — ou le circuit n'est pas connecté — jusqu'à ce que nous appuyions sur le bouton.
En réalité, nous voulons lire depuis l'Arduino un 0 lorsque rien n'est connecté et un 1 lorsque le bouton est enfoncé.
Sur l'Arduino, cela s'appelle General Purpose Input Output (GPIO).
Donc, nous pouvons faire quelque chose comme ceci :
Diagramme 2
Nous connectons le positif (5v, 3.3V, ou VCC) au côté gauche du circuit.
Maintenant, lorsque le bouton est enfoncé, le GPIO lira un 1, et tout est bon.
Diagramme 3
Eh bien, non. Regardons à nouveau le Diagramme 2 :
Diagramme 2
Nous voulions un 0 lorsque rien n'est connecté, mais comment pouvez-vous garantir cela ? Actuellement, il n'y a aucun moyen de garantir que le GPIO soit 0.
Il y a aussi des fréquences électromagnétiques dans l'air qui pourraient tirer votre GPIO vers 0 ou 1. Cela pourrait même fluctuer entre les deux ! Ainsi, nous ne pouvons pas être sûrs qu'il s'agit d'un 0 (je suis si mauvais en jeux de mots). Cela est également connu comme un 0 logique.
Une façon d'obtenir un 0 logique est de relier la broche à la masse :
Hourra ! Maintenant, c'est un zéro logique garanti. En appuyant sur le bouton, cela va être 1 maintenant. N'est-ce pas ?
Eh bien, non.
Vous venez de créer un court-circuit. ?
C'est là que la résistance entre en jeu. Pour éviter un court-circuit, nous devons ajouter une résistance à notre circuit. La résistance garde les choses sous contrôle.
L'électricité empruntera le chemin de moindre résistance. Votre GPIO enregistrera maintenant un 1 lorsque le bouton est enfoncé. Comme ceci :
Hourra ! Maintenant, nous travaillons avec quelque chose.
Maintenant, regardons l'inverse : les résistances de pull-up. C'est la même chose mais à l'envers. Lorsque le bouton n'est pas enfoncé, le GPIO enregistrera un 1. Lorsque vous enfoncez le bouton, le GPIO sera 0.
Lorsque le bouton n'est pas enfoncé, nous avons le GPIO connecté au positif (VCC). Ainsi, tout courant qui s'y trouve sera tiré vers le haut de sorte que le GPIO enregistre un 1 logique.
Il est important de noter ici que l'électricité veut toujours aller à la masse. Donc, lorsque nous enfonçons le bouton, le courant qui circule ira à la masse. Ainsi, tout courant qui aurait pu aller au GPIO l'accompagne, laissant le GPIO à un 0 logique.
? La Fin.
Pourquoi ai-je écrit cela ?
J'ai rejoint Losant en septembre 2016 sans expérience matérielle. Chaque kit de démarrage matériel vous donne un bouton sans explication de ce concept. Espérons que cela aide votre ampoule à s'allumer aussi. ?
Cela n'a fait qu'effleurer la surface. Si vous voulez creuser plus profond, consultez ces ressources :
Pull-up Resistors - learn.sparkfun.com _Une autre chose à souligner est que plus la résistance de pull-up est grande, plus la broche est lente à répondre à..._learn.sparkfun.com
J'adore les retours. Alors, s'il vous plaît, faites-moi savoir si cela pourrait être amélioré. Si j'ai complètement manqué la balle sur ce coup, faites-le moi savoir! J'adorerais le rendre meilleur pour les autres.