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 :
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.
- Tracé macroscopique de la fonction de transfert du CNA
- Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé
dacStudyet dedans un fichier homonymedacStudy.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. - 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 C), 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 boutonInstall. Attention, ne pas installer la chaîne Arduino ESP32 Boards (qui est spécifiques pour les cartes Arduino Nano à module Wi‑Fi ESP32). - 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 menuFile/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 :
DAC step: 0ouDAC step: 1. Si besoin, appuyer sur le bouton EN – pour enable – afin de réinitialiser l'exécution du programme (cf. chap. C2‑VIII ). - Câbler le montage du TP représenté schématiquement supra . Appeler l'enseignant pour vérification avant de raccorder la carte.
- 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àB16de la feuille de calcul. - 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.
- Étude microscopique du milieu de l'échelle de conversion
- Sur le poste de travail, modifier le programme en remplaçant les lignes nº 13 & 14 par celles ci‑dessous :
- 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àB32de la feuille de calcul. - Application à la variation de luminosité d'une led
- 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.
- Sur le poste de travail, modifier le programme en remplaçant les lignes nº 13 à 15 par celles ci‑dessous :
- 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.
- 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.
- Au regard des mesures précédentes, conclure quant à l'utilisation d'un CNA pour faire varier la luminosité d'une led.
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);
}
}
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 C) en adaptant ici la courbe théorique. Observer les nouvelles valeurs des écarts et erreurs déterminées par la feuille de calcul. Conclure. const uint8_t MIN_DAC_VALUE = 120; const uint8_t MAX_DAC_VALUE = 130;
127 et 128 du nombre en entrée ? Quelle peut être la cause de ce phénomène ?const uint8_t MIN_DAC_VALUE = 100; const uint8_t MAX_DAC_VALUE = 255; const uint8_t MAX_STEP_NUMBER = 15;