01) Première expérience avec le circuit intégré MCP3208

Convertir une tension analogique en un nombre binaire ou décimal a depuis les débuts de la robotique généré des difficultés considérables et abouti à des techniques aussi variées que bien pensées. Pas question ici d’aborder les méthodes qui se sont multipliées au fur et à mesure des besoins électroniques et informatiques. Inutile d’aborder les techniques de comparaison de tensions, le codage GRAY, les convertisseurs dichotomiques asynchrones, doubles rampes, flash, et bien d’autres encore, tous ces domaines sont hors sujet. On va se contenter ici de considérer le circuit intégré spécialisé MCP3208 de la Fig2 comme une « boite noire », sans chercher dans le détail comment il effectue sa mission. Toutefois, nous allons en faire une autopsie minimale sur le synoptique de la Fig.3 pour comprendre les protocoles d’utilisation. Déclencher une numérisation commence par forcer un « 0 » sur Chip Sélect pour activer les circuits. Puis MISO va imposer au circuit de Pilotage l’une des entrées en 1 du Multiplexeur qui par l’Aiguillage sera orientée vers le comparateur C. Par l’entremise du Convertisseur Analogique Numérique et de C le registre à décalage va se remplir des 12 Bits binaires. Les valeurs numérisées seront comprises entre 0 et 4096 lorsque la tension analogique de l’entrée 1 aiguillée vers C varie entre 0 et VREF. Puis à la cadence de Clock les 12 Bits par une sortie sérielle MOSI en 4 sont injectés dans un registre à décalage pour fournir la donnée binaire de type int. Nous en savons assez pour comprendre globalement le démonstrateur P01_Premier_test.ino disponible dans le dossier <Programmes Arduino>. La valeur de VREF peut être comprise entre +0.1V et +5Vcc ce qui autorise une grande sensibilité en entrée.
NOTE : Pour des raisons de simplification, nous n’aborderons pas le mode différentiel ou les entrées sont couplées par deux, le signal étant appliqué entre les deux.

Première expérience avec le convertisseur analogique vers numérique.

Tout projet Arduino commence comme on peut le voir sur la Fig.1 sur laquelle est concrétisé le schéma de la Fig.4 donné en page 3. On reconnait en 1 la petite carte Arduino NANO, en 2 un potentiomètre linéaire de valeur quelconque comprise entre 1kΩ et 47kΩ. Enfin en 3 le circuit intégré MCP3208 qui est au cÅ“ur de nos préoccupations. L’écart entre les deux lignes de lyres de part et d’autre de la rainure centrale du bloc d’expérimentations 3 fait exactement la distance qui sépare les broches du boitier DIL du circuit intégré. On peut ainsi l’insérer sans problème sur la plaquette d’expérimentations. Joint à ce tutoriel vous trouverez la notice descriptive MCP3208.pdf  de ce circuit intégré dans le dossier <Documents>.
ompte tenu du fait que fondamentalement pour réaliser un oscilloscope on va utiliser au maximum deux entrés analogiques, vous êtres en droit de vous demander pourquoi ne pas avoir sélectionné un MCP3204. Tout simplement parce que c’est le moins couteux que j’ai trouvé dans le commerce en ligne, sachant que je désirais deux exemplaires. (C’est indispensable, car lors de la découverte et l’expérimentation nous ne sommes jamais à l’abri d’en détruire un par erreur.) Pour vous éviter des recherches ils ont été approvisionnés sur :
https://www.amazon.fr/dp/B00M1NFAZY?psc=1&ref=ppx_yo2ov_dt_b_product_details
>>>> Si seule l’expérimentation de l’oscilloscope vous concerne, cet achat est inutile.
Sachez que je ne suis pas débrouillard sur la toile, vous trouverez certainement mieux. Ceci étant précisé, les deux miens ont fonctionné strictement sans problème, vous pouvez n’en commander qu’un seul. Qui peut le plus peut le moins et cette référence conviendra parfaitement, sachant que vous pouvez opter pour le MCP3204 qui fonctionnera strictement pareil sans aucune modification du logiciel. Revenons au schéma de branchement pour les liaisons avec Arduino. Vous pouvez remarquer la corrélation des couleurs entre les divers éléments et celles de la Fig.3 et en particulier celles des liaisons filaires. (Par exemple le rouge pour VREF etc.) On retrouve en C.S. la ligne (Chip Sélect.) de validation du circuit par un état « 0 » et en vert les deux lignes de pilotage MISO et CLOCK. Enfin, cadencée par CLOCK la ligre de sortie sérielle MOSI qui restitue les 12 BITs de la donnée numérisée. Dans ce premier test VREF est reliée au +Vcc. De ce fait, les CAN vont varier entre 0 et 4093 lorsque la tension mesurée sur l’une des entrées variera entre 0 et +5V. Le canal 8 étant sur GND on devra lire 0. Le canal 7 étant relié au +Vcc indiquera environ 4093. Les entrées entre 3 et 6 étant « laissées en l’air » capteront des tensions électrostatiques quelconques. Enfin, 2 et 3 étant réunies au Potentiomètre afficheront des valeurs couvrant toute la plage de conversion possible en fonction de la position de ce dernier. (Pot : Linéaire et valeur quelconque comprise entre 1kΩ et 47kΩ.) Téléverser maintenant le démonstrateur P01_Premier_test.ino et activer le Moniteur de l’IDE. On obtient des conversions telles que celles de la Fig.5 avec des variations sur le chiffre de poids faible, fluctuations systématiques dans ce domaine. Dans l’exemple visualisé l’ajustement du potentiomètre dépasse un peu la mi-course.

Deuxième expérience : Modification de VREF.

Comme dans la notice descriptive du fournisseur les valeurs possibles pour VREF ne sont pas clairement explicitées, le mieux consiste encore à les déterminer expérimentalement. Faire défiler huit canaux « brouille » le visuel, on va en téléchargeant P02_Test_de_VREF.ino n’afficher que la numérisation du Canal n°2. Noter au passage que lorsque l’on ordonne des entités, on commence toujours par la n°1. Toutefois, en informatique une sorte de « tradition » fait commencer par zéro. Du coup, dans les programmes l’ordre des canaux va de 0 à 7. On modifie un peu le circuit de la Fig.1 et montré en Fig.7 on se contente d’ajouter un potentiomètre A imposant une deuxième plaquette d’expérimentation B. Le schéma devient celui de la Fig.6 sur lequel VREF maintenant peut varier car elle aussi étant issue de l’ajustement d’un deuxième Potentiomètre. Pour manipuler dans cette expérience on va devoir utiliser un voltmètre qui sera alternativement placé en en V1 ou en V2.
Rien interdit de brancher simultanément deux appareils
s’ils sont disponibles.

Pour commencer, on ajuste V1 à +5Vcc. Puis on ajuste la tension V2 sur la broche 2 du MCP3208 entre 0 et le maximum. On constate dans la fenêtre du Moniteur de l’IDE que la numérisation varie comme dans l’expérience précédente entre 0 et environ 4093. Puis, V1 est ajustée à 2V par exemple. Maintenant, quand on fait varier V2 entre 0 et +2V la variation de la CAN ne change pas. On obtient toutes les nuances entre 0 et environ 4093. Puis, si la tension dépasse celle de VREF, la valeur numérisée talone à cette butée logicielle maximale de 4093.
Reprenons cette expérience, mais cette fois V1 est diminuée à +1V. Faire varier V2 conduit à un comportement analogue. On retrouve la finesse précédente, avec cette fois une saturation à +1V. Il ne me semble pas très utile de descendre pour VREF à moins de 0,1V car j’imagine que les performances du CAN vont se dégrader, et en particulier sa linéarité. Cette manipulation nous enseigne que l’on peut facilement par VREF adapter à notre choix la sensibilité du convertisseur.

La suite est ici.