Qu'est ce qu'un GPIO ? Qu'est-ce qu'un résistance de pull-up et pull-down ? Comment les choisir ?

Introduction

Les GPIO (General purpose input/output) sont des ports d’entrée/sortie qui ont deux fonctionnalités : piloter une sortie à l’état logique “0” ou “1”.

  • L’état logique “0” corresponds au 0 volt ou la masse.
  • L’état logique “1” correspond au 5 volt ou bien au Vcc.

Il faut savoir que piloter une sortie revient à lui fournir une tension en sortie. De plus, le courant peut être entrant (sinking) ou sortant (sourcing).

Contrôler une LED avec le GPIO

a) GPIO avec courant entrant

Voici le schéma d’une LED avec sortie en tension et courant entrant (sinking) :

 Le GPIO contrôle ici le courant entrant, comme le circuit est alimenté par le Vcc, si le GPIO est aussi égale au Vcc, la led n’est pas allumée car il n’y a pas de différence de tension entre l’entrée et la sortie de la LED.

Enfin, si le GPIO vaut 0 volt, alors il y a une différence de tension entre le Vcc et le 0 volt donc la led sera allumée.

b) GPIO avec courant sortant

Voici le schéma d’une LED avec sortie relié à la masse et courant sortant (sourcing) :

 Le GPIO contrôle ici le courant sortant. Comme le circuit est alimenté par la masse, si le GPIO est aussi égale au Vcc, la led est allumée car il y a une différence de tension entre l’entrée et la sortie de la LED.

Enfin, si le GPIO vaut 0 volt, alors il n’y a pas de différence de tension entre le Vcc et le 0 volt donc la led sera éteinte.

Etat d'impédance Z

En électronique, il est rare d’obtenir des valeurs de tension exacte, c’est à dire que l’on obtiendra jamais 5,00 volts mais plutôt 5,01 volts par exemple. Néanmoins la carte Arduino agit que quand les valeurs sont exactes pour dire que l’on est à 0 si c’est du GND ou bien 1 si c’est du Vcc. 

On a donc besoin de fixer des seuils de tension. Cela permet de savoir si la tension vaut 1 ou 0 et de sortir de l’état d’impédance z.

L’état d’impédance z est l’état où la tension se trouve entre le seuil de tension du 1 et du 0. Il faut à tout prix éviter cet état car il est indéterminé.

On fixe donc pour l’état haut d’être au dessus de 0,7*Vcc. C’est à dire que si Vcc = 1 V, si on est au dessus de 0,7 V alors c’est considéré comme 1.

Pour l’état bas, on fixe généralement 0,3*Vcc donc si Vcc=1 V il faut être en dessous de 0,3 V pour être considéré comme 0.

Pour pouvoir atteindre ces zones de certitude, on utilise des résistances de pull-up et pull down. 

La résistance

a) La résistance de pull-up

La résistance de pull-up permet de tirer la tension vers 1 et de sortir de l’état d’impédance z. On va voir un schéma avec un bouton poussoir. Pour que la valeur soit reconnue lorsqu’on appuie sur le bouton poussoir, il nous faut une résistance de pull up.

Avec cette configuration en résistance de pull on a :

  • Bouton poussoir appuyé : GPIO =”0″
  • Bouton poussoir relâché : GPIO= “1”

b) résistance de pull down

La résistance de pull down permet de tirer la tension vers 0 et de sortir de l’état d’impédance z. On va voir un schéma avec un bouton poussoir. Pour que la valeur soit reconnue lorsqu’on appuie sur le bouton poussoir, il nous faut une résistance de pull down.

Avec cette configuration en résistance de pull down on a :

  • Bouton poussoir appuyé : GPIO =”1″
  • Bouton poussoir relâché : GPIO= “0”

Une résistance sert à la limitation de courant. Pour faire votre propre circuit, vous devrez surement déterminer quelle valeur de résistance il vous faut.

c) Calcul de la valeur d’une Résistance

Pour calculer la valeur d’une résistance, on va reprendre les schémas précédents en les adaptant avec une résistance normale :

Avec les caractéristiques suivantes :

  • tension Vcc = 3,3 volts.
  • tension Vgpio = 3,3 volts (Vcc)
  • tension Vled = 2 volts
  • courant I = 10 mA

On va calculer la valeur de la résistance avec une loi des mailles :

On isole Vresistance afin de connaître la valeure de R :

On fait apparaître R grâce à la d’ohm :

On a donc :

On isole R :

D’après les caractéristiques, on remplace par les valeurs :