Objectifs pédagogiques
Les principaux objectifs de ce sujet de travaux pratique sont :
- d'expérimenter la mise en œuvre de la conversion analogique numérique (CAN) sur une carte à microcontrôleur ;
- d'évaluer les caractéristiques du convertisseur à approximations successives intégré dans le microcontrôleur de la carte Arduino Uno.
C'est aussi l'occasion de découvrir un composant électronique : le potentiomètre, qui permet à l'utilisateur de faire varier de façon continue une consigne exprimée par une tension d'entrée analogique.
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, nécessite :
- une carte Arduino Uno R3 ou équivalente (microprocesseur à cœur AVR 8 bits), avec un cordon USB pour son alimentation électrique et sa liaison au poste de travail (PC) ;
- une platine d'essai (breadboard) de taille moyenne ;
- un potentiomètre rotatif 10 tours à bouton gradué (50 divisions par tour) et compte‑tour, de résistance totale 10 kΩ ;
- un résistor graphite/céramique 1/4 W max. de valeur ohmique nominale 100 kΩ (non représenté ci‑contre car utilisé seulement à l'exercice 3) ;
- 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.
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-1, 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.
- Découverte du potentiomètre – Fonction caractéristique
- Raccorder temporairement les 3 fils de connexion du potentiomètre sur respectivement 3 colonnes différentes de puits de la platine d'essai. À l'aide du multimètre réglé en position ohmmètre (Ω), identifier alors les bornes du potentiomètre ① (première extrémité du résistor bobiné interne), ② (curseur mobile), ③ (deuxième extrémité du résistor bobiné interne) – et donc les couleurs des fils auxquels elles sont raccordées.
- Mesurer la résistance entre les bornes ① et ② (curseur) du potentiomètre à chaque tour entier du bouton rotatif, en prenant soin de lire attentivement les unités affichées par l'instrument (ne pas confondre les kΩ et les Ω !) Saisir les valeurs en kΩ dans les cellules
C4àC14de la feuille de calcul. - Observer le diagramme de la fonction caractéristique du potentiomètre (résistance selon de l'angle de rotation effectué sur le bouton). Cette fonction est‑elle linéaire ?
- Mettre le multimètre hors service pour économiser sa batterie et rembobiner le potentiomètre en début de course dans le sens horaire (au zéro du premier tour).
- Tracé macroscopique de la fonction de transfert du CAN
- Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé
adcStudyet dedans un fichier homonymeadcStudy.ino. Ouvrir ce fichier avec l'application Arduino IDE et, dans l'éditeur de code, copier‑coller le programme de lecture d'une tension analogique ci‑dessous. - Câbler le montage du TP représenté schématiquement supra mais au poste de travail. Appeler l'enseignant pour vérification avant toute mise en service.
- Rebrancher la carte au poste de travail. 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º 5). Vérifier alors que :
- la valeur
0s'affiche de façon répétée lorsque le bouton du potentiomètre est en début de course ; - la valeur
1023s'affiche de façon répétée lorsque le bouton du potentiomètre est en fin de course. - Compte tenu du nombre de tours de la course du potentiomètre et du nombre de divisions par tour sur la graduation du bouton :
- À quel intervalle de valeurs de Ns correspond approximativement une rotation de un tour sur le bouton gradué ? À quel intervalle de tension cela correspond‑il ?
- À quel intervalle de valeurs de Ns correspond approximativement une rotation de une division sur le bouton gradué ? À quel intervalle de tension cela correspond‑il ?
- Remettre le potentiomètre dans sa position initiale (bouton en début de course dans le sens horaire). Effectuer les mesures demandées du nombre en sortie Ns du convertisseur (affiché dans le moniteur série) en ajustant le bouton du potentiomètre et en lisant l'affichage du multimètre, pour cibler approximativement (cf. la remarque ci‑dessous) les valeurs de consigne de la tension d'entrée Ue inscrites dans le tableau. Compléter les lignes
22à32, colonnesBetC, de la fiche de calcul. - Au regard des mesures obtenues et de l'allure du diagramme de la fonction de transfert, que peut‑on conclure en termes de défauts macroscopiques potentiels du CAN du modèle de carte Arduino expérimenté ? (cf. le cours, chap. C3‑VII C)
- Étude microscopique des seuils de la fonction de transfert
- Débrancher la carte du poste de travail et modifier le câblage en rajoutant un résistor de 100 kΩ en série entre la borne ③ du potentiomètre et la broche 5V de la carte Arduino. Appeler l'enseignant pour valider ce montage.
- Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé
adcStepStudyet dans ce répertoire un fichier homonyme nomméadcStepStudy.ino. Y copier‑coller le programme de détection des seuils du CAN ci‑dessous : - En partant du début de la course dans le sens horaire, tourner très lentement le bouton du potentiomètre jusqu'à ce que l'indication «
step» s'affiche aussi régulièrement que possible dans le moniteur série. Relever alors la valeur de la tension d'entrée Ue sur le multimètre et la saisir dans la celluleB40de la feuille de calcul. C'est le seuil de la marche nº 1 de la fonction de transfert du CAN. - Au regard des dernières mesures et de celles de l'exercice 2, que peut‑on conclure en termes de défauts potentiels du CAN du modèle de carte Arduino expérimenté ? (cf. le cours, chap. C3‑VII C)
- * Analyser le code source du programme de détection de seuils.
- Quel est le rôle des lignes nº 5 à 20 ?
- Comment la détection d'un seuil est‑elle déterminée ? (cf. la ligne nº 22)
const int8_t POTENTIOMETER_PIN = A0;
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.flush();
delay(1000);
}
void loop()
{
Serial.println(analogRead(POTENTIOMETER_PIN));
delay(1000);
}
Outils de l'application, sélectionner le type de carte et le port USB de connexion. Téléverser le programme et s'assurer que l'opération s'est bien déroulée (cocher préalablement les paramètres d'information « Show verbose » dans le menu File/Preferences…). Débrancher la carte
C17 de la feuille de calcul. Vérifier alors que toutes les cellules de couleurs vertes s'affichent sans erreur et que les courbes de référence de numérisation de la tension apparaissent en vert sur les diagrammes.
const int8_t POTENTIOMETER_PIN = A0;
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.flush();
delay(1000);
}
const int NB_OF_READING = 50;
void loop()
{
long sumOfValues = 0;
for (int i = 1; i <= NB_OF_READING; i++) {
sumOfValues += analogRead(POTENTIOMETER_PIN);
delay(20);
}
float meanValue = sumOfValues / (float) NB_OF_READING;
if (abs(meanValue + 0.5 - ceil(meanValue)) < 0.1) { // step detection criteria
Serial.print("Step ");
}
else {
Serial.println(int(round(meanValue)));
}
}
B39) 2 à 10 de Ns (cellules B41 à B49).