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 :
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.
- Préparations métrologiques
- Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé
pwmStudyet dedans un fichier homonymepwmStudy.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. - la broche ∼5 sur une carte Uno ;
- la broche ∼4 sur une carte Mega.
- 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…). - 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: 0etc. - 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.
- 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/divet 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 (
posDutypour positive duty cycle) du signal ; - en paramètres verticaux, la valeur moyenne (
average) et la valeur maximale du signal. - Ouvrir la feuille de calcul et sélectionner l'onglet
Uno ‑ Mega D3ouUno 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). - 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
2de la feuille de calcul. Sont‑elles susceptibles de changer pour les mesures suivantes ? - 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 ?
- Mettre le multimètre hors service et le débrancher du montage.
- Étude macroscopique de la MLI
- À 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
BetE; - 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 ). - 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
D21etG21; - 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. - Étude microscopique au milieu de l'échelle de conversion
- Sur le poste de travail, modifier le programme en remplaçant les lignes nº 15 & 16 par celles ci‑dessous :
- 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àB36de la feuille de calcul. - 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 :
- 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 ).
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);
}
}
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. B10 et E10 de la feuille de calcul, reporter les valeurs nulles attendues respectivement pour le rapport cyclique et la tension moyenne du signal. 5 de la feuille de calcul. Pour chacun des trois paramètres mesurés, quel est a priori l'instrument le plus précis ? 50 ms/div, et à chaque fois, relever la valeur moyenne du signal. La reporter sur la feuille de calcul (colonne K). const uint8_t MIN_PWM_VALUE = 120; const uint8_t MAX_PWM_VALUE = 130;
const uint8_t MIN_PWM_VALUE = 0; const uint8_t MAX_PWM_VALUE = 10;