Cet article explique l’utilité d’une résistance de rappel (pull-up ou pull-down) et détaille sa mise en œuvre avec un Arduino
Un Arduino possède plusieurs entrées numériques ayant deux états :
- État HAUT qui correspond à une entrée à 5 V sur l’Arduino Uno
- État BAS qui correspond à une entrée à 0 V sur l’Arduino Uno
Lorsque la broche d’une entrée numérique n’est pas reliée (interrupteur ouvert par exemple), la tension sur cette entrée est flottante et son état peut varier aléatoirement entre les deux états HAUT et BAS.
Une résistance de rappel permet de figer l’état d’une entrée numérique lorsque elle n’est pas reliée, soit à un état HAUT (dans ce cas la résistance est dite “pull-up”), soit à un état BAS (dans ce cas la résistance est dite “pull-down”).
L’exemple le plus simple à comprendre est la lecture de l’état d’un bouton poussoir ou d’un interrupteur. Si l’interrupteur est relié au 5V, lorqu’il est fermé l’entrée de l’Arduino est bien à l’état HAUT. Par contre lorsque cet interrupteur est ouvert, la broche de l’entrée numérique de l’arduino n’est reliée à rien et son état est flottant et passe donc aléatoirement de l’état HAUT à l’état BAS.
Le microcontrôleur qui équipe l’Arduino intègre des résistances de rappel internes qui évitent l’utilisation de résistances externes. Pour activer la résistance de rappel interne sur une broche donnée, il suffit de l’indiquer grâce à la fonction pinMode. Dans l’exemple ci-dessous, la résistance de rappel interne est activée pour la broche 2.
void setup(){
pinMode (2, INPUT_PULLUP);
}
Résistance “pull-down”
En rajoutant une résistance comme dans le schéma ci-dessous entre l’entrée numérique de l’Arduino et la masse du circuit, l’entrée numérique est figée à 0 V lorsque l’interrupteur est ouvert.
Lorsque l’interrupteur est fermé, l’entrée passe bien à l’état haut et un petit courant de fuite circule dans la résistance (c’est pourquoi il faut choisir une résistance assez forte pour limiter ce courant). En général une résistance de 10 kΩ est utilisée.
Résistance “pull-up”
Le bon exemple d’une résistance “pull-up” est son utilisation pour le RESET du micro-contrôleur ATmega328P contrôlé par sa broche 1.
Comme indiqué dans la documentation du micro-contrôleur, un reset est généré par la mise à l’état BAS (LOW = 0 V) de la broche RESET. Cette broche doit donc être à l’état HAUT (HIGH = 5 V) lorsque le micro-contrôleur fonctionne.
Si nous relions la broche sur le 0 V du circuit, il sera impossible de la faire passer à l’état HAUT. Et si nous relions le broche sur le 5 V du circuit, il sera impossible de la faire passer à l’état BAS…
C’est bien tout l’intérêt d’utiliser une résistance “pull-up” dans ce cas.
Lorsque l’interrupteur (ou une sortie de transistor) est ouvert, la broche sera à 5 V, le reset sera désactivé et donc le micro-contrôleur fonctionnera bien.
Lorsque l’interrupteur sera fermé, la broche sera à 0 V et le reset sera activé.
Voir dans le tutoriel Arduino à faible consommation un exemple d’utilisation de pull-up pour le reset de l’ATmega238P.
Bonjour, le dernier schéma ne devrait -il pas montrer une tension entre la résistance et la terre ?
La resistance a une tension de 5V sur une de ses bornes et de 0V sur l’autre, je ne suis pas certain de saisir votre question.
[…] capteur SI7021 (ou l’équivalent HTU21), un petit régulateur de tension 3.3V ainsi que les résistances de rappel de la liaison […]
[…] bus 1-Wire nécessite d’utiliser une résistance de rappel « pull-up » (voir mon article à ce sujet) de 4,7 […]
Bravo et félicitations pour ces explications claires et nettes ! En tout cas, c’est l’explication la plus nette et juste possible sur la résistance de rappel de pull up et de pull down que je n’aie jamais rencontrée… Bravo !
Merci 😊
Bonjour
Peut-être une petite vidéo avec un bouton poussoir déclenchant une led , avec l’absence de la résistance on voit que la led s’allume n’importe quand juste en passant la main ou en effleurant un fil .
Sinon ça me parait clair et pas trop technique , merci pour le partage et le temps passé.
Merci pour votre commentaire, je vais créer une petite vidéo dans ce sens et la mettre sur ma chaîne YouTube.