Objectifs pédagogiques

Les principaux objectifs de ce sujet de travaux pratique sont :

  • d'expérimenter la mise en œuvre de la conversion numérique analogique (CNA) sur une carte à microcontrôleur ;
  • d'évaluer les caractéristiques des convertisseurs à chaîne de résistors intégrés dans le microcontrôleur de la carte NodeMCU ESP32.

Pour traiter ce sujet de travaux pratiques, il est recommandé d'avoir des connaissances minimales :

  • sur les types de données entiers et décimaux élémentaires utilisables dans le programme téléversé sur la carte à microcontrôleur (cf. le cours, chap. C3‑II  et C3‑V ) ;
  • sur la conversion numérique analogique (cf. le cours, chap. C3‑VII ).

Mise en situation

Montage expérimental

Tous les exercices sont à traiter en laboratoire de physique avec de véritables composants et instruments de mesure, constituant le montage électronique expérimental reproduit sur la figure ci‑dessous (avec le logiciel de schématisation Fritzing) .

Ce montage, à ne pas réaliser immédiatement, comporte :

  • une carte de développement NodeMCU ESP32 de l'assembleur Joy‑It (cf. chap. C1‑III ) ou toute autre carte équivalente (avec un module ESP32) ; elle est fournie avec un cordon USB pour son alimentation électrique et sa liaison au poste de travail (PC) ;
  • deux platines d'essai (breadboard) de taille moyenne, assemblées spécialement pour s'adapter à la largeur de la carte de développement ;
  • divers résistors graphite/céramique 1/4 W max. ;
  • un bouton‑poussoir monostable à 1 contact NO (normally open), 2 × 2 broches ;
  • un condensateur de capacité 100 nF pour limiter les rebonds du signal lors des commutations de contact sur le bouton ;
  • une led rouge d'intensité lumineuse 20 mcd, à lentille ⌀5 mm ;
  • divers fils de connections de type jumper à connecteurs Dupont mâles ;
  • un multimètre numérique portatif (avec une résolution d'au moins 40 000 points pour obtenir des mesures de tension avec une précision meilleure que 1 mV) et des cordons de mesure spéciaux banane‑Dupont pour le raccorder à la platine d'essai.

Remarque : certains composants ne sont pas représentés sur la figure du montage car ils sont utilisés seulement à l'exercice 3.

Les composants sont fournis dans une boîte de TP pour chaque binôme. Tout ce matériel doit être remis soigneusement à l'état initial en fin de séance.

Travail demandé

Effectuer les manipulations en veillant au respect de l'ordre des opérations.

Concernant les câblages, veiller au respect des couleurs des fils de connexion et des résistances.

Sur le poste de travail, enregistrer au fur et à mesure les fichiers dans un répertoire de TP nommé TP_P2-2, lui‑même placé dans un répertoire principal nommé PHYSIQUE, lui‑même placé dans le dossier personnel d'étudiant.

  • En particulier, il faut y placer la feuille de calculs téléchargeable au lien suivant  ; elle est à compléter avec les mesures physiques demandées en cours d'expérimentation.
  • De plus, les fichiers de code source Arduino doivent être placés chacun dans un répertoire de projet homonyme (same basename, cf. chap. C2‑I C).

Attention !

  • Pour des questions de sécurité, le téléversement du programme dans la carte à microcontrôleur doit être effectué avant le câblage du montage. Sinon, on risque d'avoir un comportement inattendu et indésirable du montage lors du raccordement de la carte au poste de travail dû à l'exécution d'un programme installé auparavant.
  • Sur les diagrammes de la feuille de calcul, les courbes vertes représentent les valeurs théoriques attendues. Tout écart important des mesures par rapport aux valeurs de référence doit conduire à une remise en cause des mesures.

Répondre sur cahier ou fichier de texte aux questions qui nécessitent une explication littérale.

  1. Tracé macroscopique de la fonction de transfert du CNA
    1. Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé dacStudy et dedans un fichier homonyme dacStudy.ino. Ouvrir ce fichier avec l'application Arduino IDE et, dans l'éditeur de code, copier‑coller le programme de génération d'une tension analogique donné ci‑dessous.
    2. const int8_t BUTTON_PIN = 4;
      const int8_t DAC_PIN    = 25;
      
      
      void setup()
      {
        Serial.begin(115200);
        Serial.println();
        Serial.flush();
      
        pinMode(BUTTON_PIN, INPUT);
      }
      
      const uint8_t MIN_DAC_VALUE   = 0;
      const uint8_t MAX_DAC_VALUE   = 255;
      const uint8_t MAX_STEP_NUMBER = 10;
      
      uint8_t step         = 0;
      uint8_t previousStep = MAX_STEP_NUMBER;
      uint8_t dacValue     = MIN_DAC_VALUE; 
      
      bool previousButtonLevel = HIGH;
      bool currentButtonLevel  = HIGH;
      
       
      void loop()
      {
        previousButtonLevel = currentButtonLevel;
        currentButtonLevel  = digitalRead(BUTTON_PIN);
       
        if (currentButtonLevel == LOW && previousButtonLevel == HIGH) { // button pushed
          step  = (step + 1) % (MAX_STEP_NUMBER + 1);
        }
      
        if (step != previousStep) {
          previousStep = step;
          dacValue = MIN_DAC_VALUE + round((MAX_DAC_VALUE - MIN_DAC_VALUE) * float(step) / MAX_STEP_NUMBER);
          // dacValue = map(step, 0, MAX_STEP_NUMBER, MIN_DAC_VALUE, MAX_DAC_VALUE); // less balanced than above
          Serial.printf("DAC step: %u \t DAC dacValue: %u\n", step, dacValue);
          dacWrite(DAC_PIN, dacValue);
        }
      }
      
    3. Raccorder la carte au poste de travail et avec le gestionnaire de cartes du logiciel Arduino IDE (accessible via le panneau latéral ou le menu Tools/Boards – cf. chap. C1‑III ), déterminer si la chaîne de compilation des cartes ESP32 développées par Espressif est déjà installée. Si tel n'est pas le cas, effectuer cette installation en cliquant sur le bouton Install. Attention, ne pas installer la chaîne Arduino ESP32 Boards (qui est spécifiques pour les cartes Arduino Nano à module Wi‑Fi ESP32).
    4. Sélectionner le type de carte ESP32 Dev Module (il doit être associé à un port COM/USB numéroté du poste de travail) et procéder au téléversement du programme (s'assurer que l'opération s'est bien déroulée grâce aux options du menu File/Preferences…).
    5. En cas non reconnaissance de la carte, il peut être nécessaire d'installer sur le poste de travail le pilote de l'ASIC CP2102 embarqué sur la carte NodeMCU‑ESP32 (cf. chap. C1‑III ).
    6. Dans l'application Arduino IDE, ouvrir le moniteur série (bouton en haut à droite de la fenêtre – cf. l'icône en figure ci‑contre et le chap. C3‑X C). Dans le menu à droite dans la barre de commande du moniteur, régler la vitesse de transmission en baud de la liaison série conformément à celle codée dans le programme (cf. la ligne nº 7). Vérifier alors qu'une ligne de texte s'affiche : DAC step: 0 ou DAC step: 1. Si besoin, appuyer sur le bouton EN – pour enable – afin de réinitialiser l'exécution du programme (cf. chap. C2‑VIII ).
    7. Débrancher la carte du poste de travail.
    8. Câbler le montage du TP représenté schématiquement supra . Appeler l'enseignant pour vérification avant de raccorder la carte.
    9. Avec le multimètre, relever la valeur de la tension de sortie du CNA puis appuyer sur le bouton‑poussoir pour augmenter la valeur du nombre en entrée Ne (cf. le cours, chap. C3‑VII C). Répéter ainsi les mesures jusqu'à revenir à l'étape 0 et compléter ce faisant les cellules B6 à B16  de la feuille de calcul.
    10. Observer les écarts et erreurs déterminées par la feuille de calcul :
      • l'écart relatif moyen entre les mesures et les valeurs théoriques de la tension de sortie ;
      • l'erreur intrinsèque de linéarité de la courbe des mesures de la tension de sortie ;
      • l'erreur de gain (pente) entre les mesures et les valeurs théoriques de la tension de sortie.
      Remplacer les valeurs des cellules B1 et D1 respectivement par celles des cellules B6 et B16, sachant que ces valeurs sont utilisées dans la feuille de calcul pour compenser les défauts d'origine et de linéarité du CNA (cf. le cours, chap. C3‑VII ) en adaptant ici la courbe théorique. Observer les nouvelles valeurs des écarts et erreurs déterminées par la feuille de calcul. Conclure.
  2. Étude microscopique du milieu de l'échelle de conversion
    1. Sur le poste de travail, modifier le programme en remplaçant les lignes nº 13 & 14 par celles ci‑dessous :
    2. const uint8_t MIN_DAC_VALUE   = 120;
      const uint8_t MAX_DAC_VALUE   = 130;
      
      Téléverser sur la carte cette nouvelle version du programme. Quel est l'impact de ces valeurs sur le déroulement du programme ?
    3. Effectuer les mesures de la tension de sortie du CNA, en procédant comme à l'exercice 1 mais en complétant cette fois les cellules B22 à B32  de la feuille de calcul.
    4. Quel(s) défaut(s) observe‑t‑on au niveau microscopique sur la fonction de transfert du CNA ? En particulier, que se passe‑t‑il entre les valeurs 127 et 128 du nombre en entrée ? Quelle peut être la cause de ce phénomène ?
  3. Application à la variation de luminosité d'une led
    1. Débrancher la carte à microcontrôleur du poste de travail pour la mettre hors‑tension. En plus du voltmètre, raccorder une led rouge entre les broches D25 et GND de la carte, via un deuxième multimètre réglé en milli‑ampèremètre et une résistance de limitation de courant. Appeler l'enseignant pour vérification avant de rebrancher la carte.
    2. Sur le poste de travail, modifier le programme en remplaçant les lignes nº 13 à 15 par celles ci‑dessous :
    3. const uint8_t MIN_DAC_VALUE   = 100;
      const uint8_t MAX_DAC_VALUE   = 255;
      const uint8_t MAX_STEP_NUMBER = 15;
      
      Téléverser sur la carte cette nouvelle version du programme. Quel est l'impact de ces valeurs sur le déroulement du programme ?
    4. En appuyant répétitivement sur le bouton‑poussoir, effectuer les mesures :
      • de la tension de sortie du CNA ;
      • du courant direct traversant la led.
      Pour la luminosité :
      • inscrire la valeur « 0 » tant que la led est éteinte ;
      • inscrire la valeur « 1 » dès qu'elle s'allume ;
      • puis incrémenter cette valeur (+1) puis à chaque fois que la luminosité augmente.
      Quelle est l'allure de la courbe tracée ? À quoi correspond‑elle ?
    5. Au regard des mesures précédentes, conclure quant à l'utilisation d'un CNA pour faire varier la luminosité d'une led.