mardi 15 juillet 2014

Étude de CI: Multiplexeur/Démultiplexeur CD4051

Aujourd'hui, je vous propose d'étudier le fonctionnement du circuit intégré CD4051  (ou de son équivalent 74HC4051), qui est un multiplexeur/démultiplexeur à 8 voies.

Un multiplexeur achemine le signal de l'une de ses multiples entrées à une sortie unique, alors qu'un démultiplexeur achemine l'état de son unique entrée à une de ses multiples sorties.  Le 4051 peut être utilisé, au choix, comme multiplexeur ou comme démultiplexeur.

À vos breadboards!

Comme toujours, la meilleure façon de s'assurer qu'on a bien compris, c'est de faire des tests!   Si vous disposez d'un CD4051, insérez-le dans un breadboard et voyons ce que ça donne.

Commençons par alimenter le CI.  La version CD4051 acceptera n'importe quelle tension d'alimentation continue située entre 3 V et 16 V (2 V à10 V pour le 74HC4051 et 4.5 V à 5.5 V pour le 74HCT4051).  Je vais faire mon expérience avec une alimentation de 5 V qui sera donc reproductible sur toutes les saveurs de 4051.


Donc la pin 16 "Vcc" sera reliée à la borne positive de la source de 5 V et la pin 8 "GND" sera reliée à la masse.  La pin 7 "Vee" est l'alimentation négative que nous relierons également a la masse (ça nous oblige à nous limiter à des signaux d'entrée variant entre 0 et 5 V).

La pin E "Enable" est "active low":  il faut donc la relier à la masse pour que le CI soit fonctionnel (on la relie à 5 V si on désire désactiver le CI).



Exploration du mode multiplexeur

En mode multiplexeur, le 4051 comporte 8 entrées analogiques (numérotées Y0 à Y7 sur l'illustration ci-haut) et une seule sortie analogique (la pin numéro 3, symbolisée par un Z sur le schéma).  Nous pouvons décider quelle entrée verra son signal acheminé à la sortie en contrôlant l'état des pins numérique S0, S1 et S2 (pins 11-10-9).

Nous allons donc soumettre chacune des 8 entrées Y0, Y1 etc. à une tension analogique variant entre 0 et 5 V.  Un potentiomètre constitue une façon simple d'y arriver.

 
... Bon, c'est vrai que 8 potentiomètres, ça fait un peu lourd si tout ce qu'on veut est tester le fonctionnement du CI, alors n'hésitez pas à relier certaines entrées directement à 0 V ou 5 V pour limiter un peu le nombre de potentiomètres...

On utilisera un voltmètre (non illustré) pour mesurer la tension à la sortie Z (pin 3).

Il nous reste un dernier détail:  indiquer laquelle de nos 8 entrées aura l'honneur de voir son signal être acheminé vers la sortie.  Ce sont les pins S2, S1 et S0 (9-10-11) qui nous permettrons d'effectuer ce contrôle.

Supposons que nous voulons que la sortie soit à la même tension que l'entrée Y0:  nous reproduisons le nombre 0 en binaire:   S2 = 0, S1 = 0 et S0 = 0 (donc vous reliez les pins 9, 10 et 11 à la masse). Vous devriez alors constater au moyen du voltmètre que la sortie est au même potentiel que l'entrée Y0 (si vous tournez le potentiomètre qui est reliée à Y0, ça fait varier la tension de sortie).


Supposons maintenant c'est l'entrée Y3 que vous désirez acheminer vers la sortie.  En binaire, le nombre 3 s'écrit 011.   Il s'agit de reproduire ce nombre binaire au moyen des entrées S0 à S2:    S2 = 0, S1 = 1, S0 = 1 (donc vous reliez S0 et S1 à 5 V et laissez S2 relié à la masse).  Vous devriez maintenant constater au moyen du voltmètre que c'est maintenant le potentiomètre relié à Y3 qui contrôle le signal de sortie.



Voici, en résumé, la table de vérité du multiplexeur:

Si S2 = 0, S1 = 0 et S0 = 0, alors Z = Y0
Si S2 = 0, S1= 0 et S0 = 1, alors Z = Y1
Si S2 = 0, S1 = 1 et S0 = 0, alors Z = Y2
Si S2 = 0, S1 = 1 et S0 = 1, alors Z = Y3
Si S2 = 1, S1 = 0 et S0 = 0, alors Z = Y4
Si S2 = 1, S1 = 0 et S0 = 1, alors Z = Y5
Si S2 = 1, S1 = 1 et S0 = 0, alors Z = Y6
Si S2 = 1, S1 = 1 et S0 = 1 alors Z = Y7

Application:  augmenter le nombre d'entrées analogiques de l'Arduino

Une utilisation intéressante du CD4051, c'est qu'il permet de brancher 8 capteurs analogiques différents sur une seule entrée analogique de l'Arduino, ce qui peut s'avérer intéressant dans certaines applications pour lesquelles les 6 entrées analogiques de l'Arduino sont insuffisantes.

Il s'agit de remplacer le voltmètre du circuit ci-dessus par une entrée analogique de l'Arduino (A0, par exemple), et de contrôler les pins S0, S1 et S2 du CD4051 par des sorties numériques de l'Arduino (par exemple les pins 5,6 et 7).  L'arduino peut aussi servir d'alimentation (à moins que vos capteurs utilisent une trop grande intensité de courant, auquel cas vous conservez votre alimentation externe de 5 V en reliant sa borne négative au GND de l'Arduino).


Si vous avez bien compris le principe de fonctionnement du CD4051, le sketch ci-dessous ne devrait comporter aucun mystère pour vous:

Exploration du mode démultiplexeur

En mode démultiplexeur, il n'y a qu'une seule entrée (la pin 3, symbolisée par Z, qui était la sortie en mode multiplexeur), et le signal analogique de cette entrée unique sera transmis à une des 8 sorties (Y0, Y1, etc.) selon l'état des des pins numérique S0, S1 et S2 (pins 11-10-9).

Dans l'illustration ci-dessous, un potentiomètre contrôle la tension de l'entrée Z (pin 3) et puisque S2 = 1, S1 = 0 et S0= 0 (nombre binaire 100 = 4), c'est la sortie Y4 (donc la pin 1) qui prendra une tension de même valeur que celle de l'entrée Z (à ce moment, toutes les autres sorties sont à 0V).


Notez que le CD4051 n'est doté d'aucune mémoire:  aussitôt que vous modifiez l'état des pins S0-S1-S2 pour changer la sortie active, la sortie Y4 reprend une tension nulle.

Yves Pelletier (Twitter: @ElectroAmateur)

5 commentaires:

  1. le composant que tu utilise est un multiplexeur d'entrées analogique?
    peut on en utiliser plusieurs avec des capteurs infrarouge en cascade?

    RépondreSupprimer
  2. Salut,
    Juste un petit détail qui me chagrine : Le 4051 a besoin d'un (court) délai entre le moment ou on lui demande de changer d'adresse et le moment ou le changement est effectif.
    Il serait donc plus prudent d'ajouter un petit délai d'environ 100µs après avoir défini son adresse, pour être sur et certain de bien lire la bonne information !

    RépondreSupprimer
    Réponses
    1. Le temps de commutation est de 1.2 microsecondes ... seulement !

      Supprimer
  3. DelayMicroseconds(2) suffit donc, si besoin....

    RépondreSupprimer
  4. C'est quoi "toutes les saveurs du CD4051" ? Ca se mange ?

    RépondreSupprimer