Ce que vous apprendrez

Les points à développer :

  • Le CD4051?
  • Câblage avec Arduino
  • Le simple code pour le test

Prérequis

Aucun

Contenu du cours

Le CD4051 est un multiplexeur analogique.

Une carte Arduino UNO dispose de 6 entrées analogiques, mais que faire si l’on veut câbler 8 potentiomètres ? Une solution simple serait d’utiliser une carte Arduino Mega2560 qui dispose de 16 entrées analogiques, mais cela pourrait être un peu disproportionné et couteux si le reste du circuit n’est pas très complexe.

Une bien meilleure solution quand on manque d’entrées analogiques (ou numérique), sans pour autant avoir besoin (ou envie) d’utiliser une carte plus « riche » en entrées / sorties, est d’utiliser un (dé)multiplexeur analogique. Dans cet article nous allons voir ensemble le fonctionnement d’un (dé)multiplexeur analogique 8 voies, le CD4051B.

CD4051 Analog Multiplexer: Pinout, Feature, Datasheet

Image: CD4051B

N.B. Le circuit intégré CD4051B existe aussi en version 74HCxxxx sous la référence 74HC4051. C’est le même circuit intégré, seule la technologie utilisée pour le fabriquer est différente. Si vous ne savez pas quoi prendre, achetez un CD4051B.

Le circuit intégré CD4051B est un multiplexeur / démultiplexeur analogique huit voies bidirectionnelles.

Pour faire simple, il s’agit d’une série de huit interrupteurs contrôlés électroniquement et miniaturisés dans un même circuit intégré, avec d’un côté huit connexions indépendantes et de l’autre une connexion commune.

N.B. Le CD4051B se comporte comme un interrupteur, dans les deux sens, cela signifie que l’on peut s’en servir pour connecter plusieurs capteurs à une même entrée analogique ou à l’inverse, connecter plusieurs actionneurs à une même sortie PWM par exemple. Attention, le signal n’est cependant transmis aux broches d’entrées / sorties que lorsque la voie adéquate est active. Si vous envoyez un signal PWM sur la voie n°0, en passant sur la voie n°1, le signal sur la voie n°0 s’arrêtera, comme avec un interrupteur classique.

PS : Une seule voie est active à tout instant t. Il n’est pas possible d’avoir plusieurs voies actives en même temps.

PS : Le CD4051B est conçu pour manipuler des signaux analogiques, mais rien n’empêche de l’utiliser avec des signaux numériques si besoin. C’est même un très bon outil pour connecter facilement un grand nombre de boutons poussoirs par exemple.

  • une broche d’alimentation positive (VDD, de 3 à 20 volts maximum),
  • une broche d’alimentation négative (VEE, optionnelle, uniquement si besoin de mesurer des signaux analogiques inférieurs à 0 volt, à relier à la masse sinon),
  • une masse (VSS),
  • huit broches d’entrées / sorties indépendantes sur lesquelles, connecter ses capteurs / actionneurs,
  • trois broches d’adresses pour sélectionner la voie à connecter (A, B, C),
  • une broche d’activation (INH),
  • une broche d’entrée / sortie commune sur laquelle connecter sa carte Arduino.

Câblage avec Arduino

Pour démontrer l’utilité du CD4051B, je vous propose de faire un montage de démonstration simple, mais efficace.

Voilà le problème à résoudre : 8 potentiomètres, une seule entrée analogique. C’est le cas d’usage parfait pour un CD4051B.

Matériel nécessaire

Pour réaliser ce montage, il va falloir :

  • Une carte Arduino UNO (et son câble USB),
  • Un CD4051B ou 74HC4051,
  • Huit potentiomètres de 10K ohms,
  • Un condensateur de 100 nF (optionnel),
  • Une plaque d’essai et une montagne de fils pour câbler le montage.

Électronique en amateur: Étude de CI: Multiplexeur/Démultiplexeur CD4051

Image: Le câblage sur arduino UNO

Pour faire ce circuit, il faut commencer par relier les broches INH,  A,  B, et  C respectivement aux broches D2,  D3,  D4 et D5 la carte Arduino.

On relie ensuite les broches VSS et VEE à la masse de la carte Arduino (GND) et la broche VDD à la broche 5V de la carte Arduino.

On continue en reliant la broche commune à la broche A0 de la carte Arduino.

N.B. Il est possible d’utiliser n’importe quelle broche numérique pour câbler A, B, C et INH. Le choix des broches D2, D3, D4 et D5 pour ce tutoriel est parfaitement arbitraire, libre à vous de choisir d’autres broches si vous le souhaitez. Vous pouvez aussi choisir d’utiliser une autre broche que la broche A0 de la carte Arduino pour la broche commune du CD4051B.


Le montage est prêt, passons au code !

Le code n’aura qu’un but : lire les huit potentiomètres du montage de démonstration et envoyer sur le port série les valeurs lues pour les afficher sur le PC via le moniteur série.

C

On commence le code comme d’habitude avec les classiques déclarations de broches, au moyen de diverses constantes, à raison d’une constante par broche.

PS : Vous remarquerez que j’ai utilisé un préfixe commun PIN_ pour toutes les broches et un autre PIN_ADDR_ pour les broches d’adresses. Cela rend le code plus simple et agréable à lire.

C

On continue ensuite avec la fonction setup(), qui a trois missions :

  • initialiser les broches d’adresse en sortie et à LOW,
  • initialiser la broche INH en sortie et à LOW, pour activer le CD4051B,

afficher un petit message de bienvenue

C

Vient ensuite la fonction loop(), qui se contente de passer en revue chaque voie du CD4051 via une boucle et de lire puis afficher la valeur de chaque voie.

Un délai d’une seconde vient terminer l’affichage et éviter que le moniteur série côté PC ne croule sous les lignes de texte.

Le code permettant de lire une voie du CD4051B est contenu dans la fonction readAnalogMux(), décrite juste après.

C

La fonction readAnalogMux() ci-dessus permet de lire une voie du CD4051B. Le numéro de voie (entre 0 et 7) est passé en paramètre.

La fonction readAnalogMux() assigne d’abord les broches d’adresses en fonction du numéro de voie. Pour faire cela, j’utilise une petite astuce, la fonction bitRead() permet d’extraire la valeur d’un bit d’une valeur. La fonction bitRead() retourne la valeur 0 ou 1, ce qui correspond exactement aux valeurs de LOW et HIGH. Il suffit donc d’enchaîner trois bitRead() et trois digitalWrite() et le tour est joué.

Une fois les broches d’adresses configurées, il ne reste plus qu’à lire la valeur sur la broche commune avec un appel à la fonction analogRead().

Le code complet avec commentaires:

C

L’extrait de code ci-dessus est disponible en téléchargement sur cette page (le lien de téléchargement en .zip contient le projet Arduino prêt à l’emploi).

Voilà ce que donne le code ci-dessus dans le moniteur série :

Merci pour votre attention !

Comment augmenter les broches analogiques de la carte Arduino Uno avec le multiplexeur analogique CD4051?

Catégorie

Electronique

Durée

01:00:00

Nombre de vidéos

0

Certificat de fin de formation

NON