Objectifs pédagogiques

Les principaux objectifs de ce sujet de travaux pratique sont :

  • d'expérimenter la mise en œuvre de la modulation de largeur d'impulsion (MLI) sur une carte à microcontrôleur ;
  • d'évaluer les caractéristiques de modulation du microcontrôleur intégré à la carte Arduino Uno ;
  • d'évaluer la bonne adéquation de cette technique à la variation de luminosité d'une led (résultats à comparer à ceux obtenus à l'exercice 3 du sujet de TP P2‑2 ).

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. les chap. C3‑II  et C3‑V ) ;
  • sur la modulation de largeur d'impulsion (cf. 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 schématiquement sur la figure ci‑dessous (NB : la modélisation du montage faite sous Tinkercad a pour seul but d'obtenir cette schématisation du circuit, car les performances en simulation de l'application sont insuffisantes pour observer les phénomènes physiques consécutifs aux manipulations proposées).

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

  • une carte de développement Arduino Uno ou toute autre carte équivalente (à cœur AVR) ; elle est fournie avec un cordon USB pour son alimentation électrique et sa liaison au poste de travail (PC) ;
  • une platine d'essai (breadboard) de taille moyenne ;
  • 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 oscilloscope numérique USB 2 voies, typiquement un Digilent Anolog Discovery AD3 et son application dédiée Waveform ;
  • 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.

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-3, 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. Préparations métrologiques
    1. Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé pwmStudy et dedans un fichier homonyme pwmStudy.ino. Ouvrir ce fichier avec l'application Arduino IDE et, dans l'éditeur de code, copier‑coller le programme de modulation de tension de sortie ci‑dessous.
    2. const int8_t BUTTON_PIN = 2;
      const int8_t PWM_PIN    = 3; // test also pin number 5 (Uno board) or 4 (Mega board)
      
      
      void setup()
      {
        Serial.begin(115200);
        Serial.println();
        Serial.flush();
      
        pinMode(BUTTON_PIN, INPUT);
        pinMode(PWM_PIN,    OUTPUT);
      }
      
      const uint8_t MIN_PWM_VALUE   = 0;
      const uint8_t MAX_PWM_VALUE   = 255;
      const uint8_t MAX_STEP_NUMBER = 10;
      
      uint8_t step         = 0;
      uint8_t previousStep = MAX_STEP_NUMBER;
      uint8_t pwmValue     = MIN_PWM_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;
      		pwmValue = MIN_PWM_VALUE + round((MAX_PWM_VALUE - MIN_PWM_VALUE) * float(step) / MAX_STEP_NUMBER);
          char display[25] = "";
          sprintf(display, "Step: %2u \tPWM value: %u", step, pwmValue);
          Serial.println(display);
          analogWrite(PWM_PIN, pwmValue);
        }
      }
      
      Selon les indications de l'enseignant, modifier éventuellement la ligne nº 2 du programme pour utiliser, à la place de la broche ∼3 :
      • la broche ∼5 sur une carte Uno ;
      • la broche ∼4 sur une carte Mega.
      Ces broches ont la particularité d'opérer la MLI avec une fréquence double de celle qui est appliquée à la broche sélectionnée par défaut (cf. chap. C3‑VII ).
    3. Raccorder la carte au poste de travail et, dans l'application Arduino IDE, sélectionner le type de carte (il doit être associé à un port COM/USB numéroté du poste de travail). 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…).
    4. 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 : Step: 0 etc.
    5. Débrancher la carte.
    6. Câbler le montage du TP représenté schématiquement supra  en se raccordant à la voie nº 1 de l'oscilloscope (cf. le sujet de TP P1‑3 ) mais sans le mettre en service, et sans raccorder encore la carte Arduino au poste de travail.
    7. Attention ! Pour la sortie en MLI reliée à la led et aux instruments de mesure (fils oranges), utiliser à la place de la broche ∼3 la broche ∼5 (carte Uno) ou ∼4(carte Mega) si le programme a été modifié à la question a).
      Appeler l'enseignant pour vérification.
    8. Rebrancher la carte Arduino, brancher l'oscilloscope au poste de travail et lancer son application Waveform. Sur cette dernière, activer la voie nº 1 (désactiver la voie nº 2) puis :
      • paramétrer la synchronisation (trigger) en mode automatique sur front montant de niveau 1 V ;
      • paramétrer l'amplification à 1 V/div et la base de temps à 2 ms/div ;
      • ajouter à l'affichage les mesures définies suivantes :
        • en paramètres horizontaux, la fréquence, de la période et le rapport cyclique (posDuty pour positive duty cycle) du signal ;
        • en paramètres verticaux, la valeur moyenne (average) et la valeur maximale du signal.
      Mettre la voie nº 1 en mode RUN et vérifier qu'on obtient un oscillogramme plat à 0 V (c'est‑à‑dire, à step 0 sur le moniteur série) et des mesures très variables (générées par le bruit sur la voie). Expliquer pourquoi.
    9. Ouvrir la feuille de calcul et sélectionner l'onglet Uno ‑ Mega D3 ou Uno D5 ‑ Mega D4 à compléter, en fonction du numéro de broche utilisé en MLI qui est codé dans le programme (et choisi à la question a).
    10. Dans les cellules B10 et E10 de la feuille de calcul, reporter les valeurs nulles attendues respectivement pour le rapport cyclique et la tension moyenne du signal.
    11. Appuyer sur le bouton‑poussoir autant de fois que nécessaire pour que, sur le moniteur série, s'affiche une ligne de texte commençant par Step: 1.
      • Sur l'oscilloscope, quel type de signal observe‑t‑on ? Quels sont les valeurs des paramètres de fréquence, de période et de valeur maximale mesurées ? Reporter ces valeurs sur la ligne 2 de la feuille de calcul. Sont‑elles susceptibles de changer pour les mesures suivantes ?
      • Effectuer les mêmes mesures avec le multimètre et les reporter sur la ligne 5 de la feuille de calcul. Pour chacun des trois paramètres mesurés, quel est a priori l'instrument le plus précis ?
      • Sur l'oscilloscope, observer maintenant les valeurs des paramètres de la tension moyenne et du rapport cyclique du signal. Comparer avec celle affichée par le multimètre. Ces valeurs sont‑elles stables ? Encore une fois, quel instrument est le plus précis ?
      • Augmenter la valeur de la base de temps progressivement avec les valeurs standards jusqu'à 50 ms/div, et à chaque fois, relever la valeur moyenne du signal. La reporter sur la feuille de calcul (colonne K).
      Conclure, en justifiant la réponse, quant à la valeur de la base de temps à régler pour effectuer les mesures suivantes.
    12. Mettre le multimètre hors service et le débrancher du montage.
  2. Étude macroscopique de la MLI
    1. À partir des réglages établis à l'exercice précédents, pour les dix valeurs codées inscrites sur la feuille de calcul, relever :
      • les mesures affichées par l'oscilloscope du rapport cyclique et de la tension moyenne du signal – à inscrire respectivement en colonnes B et E ;
      • une indication numérique qualitative du niveau de luminosité de la led, en partant de la valeur 1 et en procédant par incrémentation unitaire (+1) à chaque augmentation visible – à inscrire en colonne H (même principe qu'au TP P2‑2 ).
    2. 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 du rapport cyclique et de la tension moyenne – consignées respectivement dans les cellule D21 et G21 ;
      • l'erreur intrinsèque de linéarité de la courbe des mesures de la tension de sortie – consignée dans la cellule I23 ;
      • l'erreur de gain (pente) entre les mesures et les valeurs théoriques de la tension de sortie – consignée dans la cellule I24.
      Conclure.
  3. Étude microscopique au milieu de l'échelle de conversion
    1. Sur le poste de travail, modifier le programme en remplaçant les lignes nº 15 & 16 par celles ci‑dessous :
    2. const uint8_t MIN_PWM_VALUE   = 120;
      const uint8_t MAX_PWM_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 valeur moyenne du signal de tension, en procédant comme à l'exercice 2 mais en complétant cette fois les cellules B26 à B36  de la feuille de calcul.
    4. Quels défauts observe‑t‑on au niveau microscopique sur la fonction de transfert de la MLI ?
    5. Durant ces essais, les variations de la luminosité de la led sont‑elles perceptibles ? Recommencer cette observation après avoir remplacé les lignes nº 15 & 16 par celles ci‑dessous :
    6. const uint8_t MIN_PWM_VALUE   = 0;
      const uint8_t MAX_PWM_VALUE   = 10;
      
      Observer également l'allure de l'oscillogramme en changeant éventuellement la valeur de la base de temps. Que constate‑t‑on ?
    7. Au regard des mesures précédentes, conclure quant à l'utilisation de la MLI pour faire varier la luminosité d'une led. Comparer avec les résultats obtenus avec un CNA (sujet de TP P2‑2 ).