Comment calculer la valeur requise pour une résistance de rappel?

98

Il existe de nombreux tutoriels qui utilisent une résistance pull-up ou pull-down en conjonction avec un commutateur pour éviter une terre flottante, par exemple:

http://www.arduino.cc/en/Tutorial/button

Beaucoup de ces projets utilisent une résistance de 10K, remarquant simplement que c'est une bonne valeur.

Dans un circuit donné, comment déterminer la valeur appropriée pour une résistance de tirage? Peut-il être calculé ou est-il préférable de le déterminer par expérimentation?

Mark Harrison
la source
J'ai trouvé ce tutoriel de sparkfun une bonne introduction aux résistances pull-up et pull-down . Les réponses apportées à votre question la plus excellente sont excellentes.
Richard Chambers

Réponses:

82

Réponse rapide: L’expérience et l’expérimentation permettent de déterminer la valeur de pullup / pulldown appropriée.

Réponse longue: La résistance de pullup / down est le R dans un circuit de synchronisation RC. La vitesse de transition de votre signal dépendra de R (votre résistance) et de C (la capacité de ce signal). Il est souvent difficile de connaître exactement le temps C, car cela dépend de nombreux facteurs, notamment de la manière dont cette trace est acheminée sur le circuit imprimé. Puisque vous ne connaissez pas C, vous ne pouvez pas savoir ce que R devrait être. C'est là qu'interviennent l'expérience et l'expérimentation.

Voici quelques règles de base pour deviner une bonne valeur de résistance pullup / down:

  • Pour la plupart des choses, 3,3k à 10k ohms fonctionne très bien.
  • Pour les circuits sensibles à la puissance, utilisez une valeur plus élevée. 50k ou même 100k ohms peuvent fonctionner pour de nombreuses applications (mais pas toutes).
  • Pour les circuits sensibles à la vitesse, utilisez une valeur inférieure. 1k ohms est assez commun, alors que des valeurs aussi basses que 200 ohms ne sont pas inconnues.
  • Parfois, comme avec I2C, le "standard" spécifie une valeur spécifique à utiliser. D'autres fois, les notes d'application des puces peuvent recommander une valeur.

la source
10
200 ohms pour un pull-up? Wow, c'est beaucoup de courant de repos.
0x6d64
4
@ 0x6d64 - Vous supposez que le bus est bas au repos.
Connor Wolf
3
Texas Instruments possède une très bonne référence qui explique non seulement comment calculer la valeur d’une résistance de tirage I2C, mais également comment la formule est dérivée. Reportez-vous au rapport intitulé Application de calcul de la résistance d'extraction du bus I2C à l' adresse ti.com/lit/an/slva689/slva689.pdf .
JamieSee
77

Utilisez 10 kΩ, c'est une bonne valeur.

Pour plus de détails, nous devons regarder ce que fait un pull-up. Supposons que vous souhaitiez lire un bouton-poussoir avec un microcontrôleur. Le bouton-poussoir est un commutateur momentané SPST (Single Pole Single Throw). Il possède deux points de connexion connectés ou non. Lorsque le bouton est enfoncé, les deux points sont connectés (le commutateur est fermé). Lorsqu'ils sont relâchés, ils ne sont pas connectés (le commutateur est ouvert). Les microcontrôleurs ne détectent pas de manière inhérente la connexion ou la déconnexion. Ce qu'ils sentent, c'est une tension. Comme ce commutateur n'a que deux états, il est logique d'utiliser une entrée numérique, qui est après tout conçue pour n'être que dans l'un des deux états. Le micro peut détecter directement l'état d'une entrée numérique.

Un pull-up aide à convertir la connexion ouverte / fermée du commutateur en une tension basse ou haute que le microcontrôleur peut détecter. Un côté du commutateur est connecté à la terre et l'autre à l'entrée numérique. Lorsque vous appuyez sur le commutateur, la ligne est forcée à l'état bas, car il le met essentiellement à la terre. Cependant, lorsque le commutateur est relâché, rien ne conduit la ligne à une tension particulière. Il pourrait simplement rester bas, capter d'autres signaux à proximité par couplage capacitif, ou éventuellement flotter à une tension spécifique en raison du très faible courant de fuite traversant l'entrée numérique. Le rôle de la résistance de rappel est de fournir un niveau haut garanti positif lorsque le commutateur est ouvert, tout en lui permettant de mettre en court-circuit la ligne à la masse lorsqu’il est fermé.

La taille de la résistance de rappel est soumise à deux exigences principales. Il doit être suffisamment bas pour tirer solidement la ligne haute, mais assez haut pour ne pas causer trop de courant lorsque le commutateur est fermé. Les deux sont manifestement subjectifs et leur importance relative dépend de la situation. En général, vous faites le pull-up juste assez bas pour vous assurer que la ligne est haute lorsque le commutateur est ouvert, compte tenu de tout ce qui pourrait rendre la ligne basse autrement.

Regardons ce qu'il faut pour remonter la ligne. En regardant uniquement l'exigence CC, on découvre le courant de fuite de la ligne d'entrée numérique. L'entrée numérique idéale a une impédance infinie. Les vrais ne le font pas, bien sûr, et l'ampleur qu'ils ne sont pas idéaux est généralement exprimée en tant que courant de fuite maximal pouvant sortir ou pénétrer dans la broche. Supposons que votre micro soit spécifié pour une fuite maximale de 1 µA sur ses broches d'entrée numérique. Étant donné que le pull-up doit maintenir la ligne haute, le pire des cas est de supposer que la broche ressemble à un puits absorbant de 1 µA à la terre. Si vous utilisiez un pullup de 1 MΩ, par exemple, alors 1 µA provoquerait 1 Volt sur la résistance de 1 MΩ. Supposons qu'il s'agit d'un système 5V, ce qui signifie que la broche n'est garantie que jusqu'à 4V. Vous devez maintenant examiner les spécifications d’entrée numérique et voir quelle est la tension minimale requise pour un niveau logique élevé. Cela peut être 80% de Vdd pour certains micros, ce qui serait 4V dans ce cas. Par conséquent, un pullup de 1 MΩ est juste à la marge. Vous avez besoin d'au moins un peu moins que cela pour garantir un comportement correct en raison de considérations relatives au CC.

Cependant, il y a d'autres considérations, qui sont plus difficiles à quantifier. Chaque nœud possède un couplage capacitif avec tous les autres nœuds, bien que la magnitude du couplage diminue avec la distance, de sorte que seuls les nœuds voisins soient pertinents. Si ces autres nœuds ont des signaux, ceux-ci pourraient se coupler à votre entrée numérique. Une valeur plus faible augmente la impédance de la ligne, ce qui réduit la quantité de signal parasite capté. Cela vous donne également un niveau CC minimum garanti plus élevé par rapport au courant de fuite, de sorte qu'il y a plus de place entre ce niveau CC et où l'entrée numérique peut interpréter le résultat comme un niveau logique bas au lieu du niveau logique haut prévu. Alors, combien suffit? Clairement, le pullup de 1 MΩ dans cet exemple n'est pas suffisant (résistance trop élevée). Il est presque impossible de deviner un couplage avec les signaux à proximité, mais je voudrais au moins une marge d'ordre de grandeur sur le cas minimum DC. Cela signifie que je veux au moins un pullup de 100 kΩ ou moins, bien que s'il y ait beaucoup de bruit autour, je voudrais qu'il soit plus bas.

Il y a une autre considération qui conduit le pullup plus bas, c'est le temps de montée. La ligne aura une certaine capacité parasite à la terre, elle décroîtra donc de manière exponentielle vers la valeur d'alimentation au lieu d'y aller instantanément. Disons que toute la capacité parasite ajoute 20 pF. Cela multiplie par deux le pullup de 100 kΩ est de 2 µs. Il faut 3 constantes de temps pour atteindre 95% de la valeur de sédimentation, soit 6 µs dans ce cas. Cela n’a aucune incidence sur le temps passé dans l’homme, alors peu importe cet exemple, mais si vous vouliez utiliser une ligne de bus numérique à un débit de 200 kHz, cela ne fonctionnerait pas.

Examinons maintenant l’autre considération en compétition, à savoir le courant gaspillé lorsque vous appuyez sur le commutateur. Si cette unité ne fonctionne pas sur le secteur ou ne gère pas le courant de manière conséquente, quelques mA n'auront aucune importance. À 5V, il faut 5 kΩ pour tirer 1 mA. C'est en fait "beaucoup" de courant dans certains cas, et bien plus que nécessaire en raison d'autres considérations. S'il s'agit d'un appareil alimenté par batterie et que le commutateur peut être allumé pendant une fraction substantielle du temps, alors chaque µA peut avoir de l'importance et vous devez y réfléchir très attentivement. Dans certains cas, vous pouvez échantillonner le commutateur périodiquement et n'activer le pull-up que pendant un court instant autour de l'échantillon pour minimiser le tirage en cours.

Outre des considérations spéciales telles que le fonctionnement sur batterie, une impédance de 100 kΩ est suffisamment élevée pour me rendre nerveux au sujet de la capture de bruit. 1 mA de courant perdu lorsque l'interrupteur est en marche semble inutilement grand. Donc 500 µA, ce qui signifie que l’impédance de 10 kΩ est à peu près correcte.

Comme je l'ai dit, utilisez 10 kΩ. C'est un bon rapport qualité / prix.

Olin Lathrop
la source
1
De plus, certains commutateurs, par exemple les commutateurs de type «tact» courants, ne sont spécifiés que pour un courant très faible, par exemple 1 mA. Notez que 10k (à 5V ou moins) satisfait à cette exigence, mais il ne faut pas oublier que des valeurs de résistance plus faibles sont considérées.
Wouter van Ooijen
1
@Wouter - mes commutateurs tactiles préférés ont non seulement un maximum de 50 mA (1 mA me semble faible), mais aussi un minimum. Pour maintenir les contacts propres, je place un condensateur en parallèle de l'interrupteur, l'idée étant que le pic de courant de court-circuit lors de la commutation garde les contacts propres. Malgré la spécification d’une durée de vie de 100 000 cycles, nous n’avons eu aucun problème à les utiliser jusqu’à 200 000 cycles.
Stévenvh
@stevenvh Pourriez-vous expliquer davantage le condensateur en parallèle avec le commutateur? Comment se fait-il que le courant initial de court-circuit maintienne les contacts propres?
Abdullah Kahraman
Cette situation pourrait entraîner un couplage capacitif excessif affectant la valeur de la résistance de rappel. Cela semble fou, mais ça ne l'est pas. J'ai une sortie de trois états désagréable, que je lis avec un CAN. Un seul tableau, un pull-up de 220k est suffisant pour que tous les trois états puissent être lus par le CAN. Sur un autre tableau (plus serré), il me faut un pull-up de 100 km. Je pensais que je prenais des pilules folles toute la matinée.
Leroy105
23

D'abord, ce genre de tutoriels est inutile, ils ne vous apprendront pas l'électronique. Vous devez apprendre à dessiner un schéma , le câblage vient ensuite.
Donc, faute du schéma, je devais le tirer moi-même du schéma de câblage. OK, ce n’était pas si difficile, mais lorsque vous dessinez le schéma, vous voyez quelque chose qui manque: à quoi le commutateur de contact se connecte-t-il? Vous devez savoir cela pour répondre à votre question. Je suppose que c'est une entrée numérique du microcontrôleur, mais il n'y a aucun moyen de le savoir.

Il existe deux situations: commutateur de contact ouvert et commutateur fermé.

A l'état fermé, l'entrée du microcontrôleur est connectée à la masse, ce qui signifie que le niveau bas est atteint. Un courant traversera également la résistance. Un bon schéma vous aurait dit qu'une extrémité de la résistance est connectée à + 5V, le commutateur de contact connecte l'autre extrémité à la terre. Voyons si une résistance de 10k fera l'affaire. Ensuite, le courant traversant la résistance est égal à = 500 A. Cela semble raisonnable. Voyons si ça va aussi quand l'interrupteur est ouvert. Ω5V10kΩμ

Dans l'état d'ouverture du commutateur, nous pouvons l'ignorer et prétendre qu'il n'y a que la résistance entre V + et l'entrée du microcontrôleur. Nous savons par expérience, ou, mieux, parce que nous avons regardé vers le haut dans la fiche technique que lorsque vous appliquez une tension à une entrée de micro - contrôleurs , il y aura DECOULER très peu de courant, souvent inférieur à 1 A. Supposons que c'est 1 A Ensuite, la chute de tension à travers la résistance sera de 1 A 10k = 10mV. La tension sur l'entrée sera alors de 4,99V. C'est probablement OK, mais faisons notre travail correctement. Si vous aviez un schéma (je pense que vous l'avez maintenant, n'est-ce pas?), Vous saurez quel type de microcontrôleur est. Je sais qu'Arduino est AVR, alors jeμμμ×ΩFiche technique AVR aléatoire . Les caractéristiques électriques indiquent qu’un niveau d’entrée élevé doit être au moins égal à 0,6 (page 320). C'est 3V, donc le 4.99V est sans danger. × VDD

Et si nous avions choisi une valeur de résistance différente? Une valeur inférieure signifierait moins de chute de tension et la tension d'entrée serait même supérieure à 4,99V. Mais alors, il y aurait plus de courant à travers la résistance lorsque l'interrupteur est fermé, et c'est quelque chose que vous ne voulez pas.
Une valeur de résistance plus élevée serait OK lorsque l'interrupteur est fermé, car il y aurait moins de courant, mais la tension d'entrée sur le microcontrôleur sera inférieure à 4,99V. Nous avons une marge de sécurité ici, donc une valeur légèrement supérieure pourrait convenir.

conclusion

  1. Le 10k convient aux situations de commutateur ouvert et fermé.Ω
  2. Apprendre à dessiner des schémas et lire des fiches techniques
stevenvh
la source
7
Je ne dirais pas que c'est inutile, en fait, les schémas de câblage réalisés avec Fritzing sont probablement maintenant plus courants que les schémas lorsqu'il s'agit d'Arduino. Le public doit être pris en compte.
Dave Newton