A quoi ça sert… une résistance de rappel ?

Résistance de rappel - Arduino

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 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.

ATmega328P

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.