Tutoriel sur la lecture numérique en série - Calcul de la valeur de la résistance

9

Le didacticiel Arduino Digital Read Serial vous guide à travers le câblage d'un simple bouton. Mes questions sont centrées sur la résistance.

Pourquoi la résistance est-elle nécessaire?

Je pense que je comprends cela, mais corrigez-moi si je me trompe. Pour garantir que la broche d'entrée lit un signal bas et ne flotte pas, nous devons connecter la broche à la masse lorsque le bouton n'est pas enfoncé. Lorsque le bouton est enfoncé, nous aurons un signal 5V circulant à la fois sur la broche et sur la terre. La loi de tension de Kirchhoff stipule que la tension totale en boucle fermée doit être égale à zéro, nous devons donc faire face à ce 5V qui coule directement vers la terre. C'est pourquoi nous avons mis une résistance entre le bouton et la masse.

Comment la valeur de la résistance a-t-elle été choisie?

C'est ce sur quoi je ne suis pas clair. La loi d'Ohm stipule que ...

resistance = voltage / current

Il s'agit d'une alimentation 5V et la spécification Arduino Uno indique que la broche fournit 40 mA de courant continu. Donc..

resistance = 5V / 0.04A = 125 Ohms

Dans le didacticiel Digital Read Serial , pourquoi avons-nous une résistance de 10K Ohms? C'est trop exagéré, non? Ce qui mène à une autre question: pouvez-vous jamais mettre trop de résistance en place, si votre seul objectif est d'effacer la tension?

Merci d'avance pour tout commentaire!

Rip Leeb
la source

Réponses:

6

Tu es très proche. La résistance est là pour agir comme une résistance de rappel; Si la broche d'entrée flotte, ce n'est qu'une antenne captant de l'électricité statique aléatoire. La clé est que lorsque le positif est fourni (en appuyant sur le bouton), la source positive doit "submerger" la résistance de rappel afin que la broche d'entrée soit positive.

S'il n'y avait pas de résistance, la broche d'entrée serait en train de lire au milieu d'un chemin direct qui ne favorise ni positif ni négatif. A part le court-circuit direct qui se produirait, quel état l'arduino lirait, je suppose que ce serait soit aléatoire, soit une propriété de l'alimentation; Il lirait probablement encore du terrain.

Avec la résistance, le signal est lu directement connecté au positif, avant la résistance de charge. De cette façon, il sera sûr d'obtenir un signal HIGH.

La taille exacte de la résistance importe peu. Trop petit et vous gaspillez du courant, mais trop de résistance ne fait que déconnecter à nouveau la terre. Il existe un très large éventail de valeurs qui fonctionneront bien entre celles-ci.

Je voudrais noter que lorsqu'une broche Arduino est réglée sur le mode d'entrée, elle ne fournira effectivement aucun courant. Il peut être modélisé en série avec une résistance de 100 mégohms. voir http://arduino.cc/en/Tutorial/DigitalPins pour plus de détails.

BrettAM
la source
2
L'essentiel ici est que si vous n'utilisez pas de résistance, lorsque l'interrupteur est fermé, vous avez court-circuité les +5 volts à la masse. Un court-circuit direct surchargera l'alimentation et déclenchera le circuit de protection sur l'alimentation, provoquant l'arrêt complet de l'Arduino. Vous voulez une résistance d'impédance suffisamment élevée pour maintenir le courant faible. J'utilise généralement une résistance de 100k, ce qui est suffisant pour tirer le signal d'entrée à 0 volts lorsque le commutateur est ouvert, et ne laisse passer que .00005 pas, une quantité triviale de courant. Une résistance de 10k fonctionne également, mais cela permet à 10 fois plus de courant de circuler.
Duncan C
2

Pourquoi la résistance est-elle nécessaire?

Les entrées Arduino ont une résistance très élevée. La fiche de données de l'Atmega328 indique 100 MOhm pour ADC, de telles valeurs élevées sont bonnes, mais ont aussi l'inconvénient de faire face aux effets parasites (résistance, inductance, capacité). Ces effets peuvent également être utilisés comme capteurs de capacité .

Comment la valeur de la résistance a-t-elle été choisie?

La résistance doit avoir une valeur arbitraire, qui est inférieure à la résistance d'entrée. 10k et plus sont bons pour désactiver la fuite d'entrée.

Cependant, vous pouvez également laisser de côté la résistance lorsque vous utilisez les résistances de rappel internes. Dans ce cas, vous traitez avec une logique négative:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

Sur la broche 3, vous mesurerez HIGHet le bouton doit être connecté à la broche et à la terre. La résistance de rappel interne I / 0 a une valeur de 50k.


la source
1

Vous avez déjà obtenu quelques bonnes réponses sur les raisons pour lesquelles une résistance de rappel est nécessaire.

Pour résumer, vous devez connecter l'entrée à la masse pour empêcher l'entrée de flotter de manière semi-aléatoire entre haut et bas. Vous utilisez une résistance de sorte que lorsque vous fermez le commutateur, vous ne créez pas de court-circuit entre l'alimentation + 5V et la masse.

Un autre point, cependant. Les entrées de l'Arduino incluent une résistance de pull-up interne contrôlée par logiciel en option . Si vous configurez d'abord la broche comme entrée, puis écrivez une valeur ÉLEVÉE sur ce port, cela active la résistance de rappel. Cela fait que la broche se lit comme ÉLEVÉE lorsque rien n'y est connecté.

Vous pouvez ensuite connecter votre interrupteur à la masse au lieu de + 5V. Vous devez ensuite modifier la logique de votre code pour traiter une valeur HIGH comme non enfoncée et une valeur LOW comme enfoncée. Cela vous permet de simplifier un peu votre câblage, car vous n'avez pas besoin d'une résistance externe.

Duncan C
la source