Objectifs pédagogiques
Ce sujet de travaux pratiques porte sur différentes technologies de mesure d'éclairement. Les principaux objectifs sont :
- de découvrir l'emploi d'un luxmètre pour mesurer précisément l'éclairement produit par une led d'éclairage dans une boîte opaque (afin qu'elle soit isolée de la lumière ambiante) ;
- de découvrir deux technologies de capteurs de lumière, à savoir :
- le photo‑résistor (en anglais, light‑dependend resistor ou LDR) ;
- le photo‑transistor (il s'agit d'un transistor bipolaire de type NPN dont la base est commandée par la lumière qu'elle reçoit) ;
Ce sujet de travaux pratiques est également l'occasion de mettre en œuvre les techniques de conversion des signaux abordées dans la partie 2 du module :
- la conversion numérique analogique pour générer un courant variable dans la led, sans recourir à la modulation (car sinon, cela impacterait les mesures d'éclairement) ;
- la conversion analogique numérique pour mesurer la tension aux bornes du résistor du pont de mesure – un simple pont diviseur de tension – au sein duquel le capteur est monté.
Pour traiter ce sujet de travaux pratiques, il est nécessaire d'avoir une bonne connaissance du chapitre C3‑VII sur les entrées‑sorties analogiques.
Mise en situation
Montage expérimental
Tous les exercices sont à traiter en laboratoire de physique avec de véritables composants et instruments de mesure. Ils exploitent le montage électronique expérimental reproduit schématiquement sur la figure ci‑dessous.
Ce montage nécessite :
- 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. ;
- deux boutons‑poussoir monostables à 1 contact NO (normally open), 2 × 2 broches ;
- deux condensateurs de capacité 100 nF pour limiter les rebonds du signal lors des commutations de contact sur les boutons ;
- divers cavaliers et fils de connections de type jumper à connecteurs Dupont mâles ;
- deux borniers doubles à vis‑étriers, à pas de 5,08 mm, pour garantir la fiabilité des connexions électriques du circuit de commande de la led ; un tournevis plat à lame 2 mm est fournis pour les manœuvrer ;
- un multimètre numérique portatif (40 000 points).
On dispose également d'un luxmètre de référence HME6310 distribué par la marque Jeulin, dont la notice d'emploi est consultable au lien suivant .
Enfin, ce montage utilise une boîte opaque (un étui de film photographique) dont les parois intérieures sont tapissées de papier blanc afin de réfléchir la lumière émise par la led d'éclairage. Sont compris :
- au fond de la boîte, une led blanche d'intensité lumineuse maximale 20 mcd, à lentille ⌀5 mm à diffusion (translucide) dont les broches traversent la paroi et sont raccordées à des fils sertis d'embouts de câblage pour se raccorder aux platines d'essai ;
- deux couvercles amovibles interchangeables sur lesquels sont respectivement fixés :
- un photo‑résistor de référence GL12528 de diamètre ⌀12 mm, dont la fiche technique est consultable au lien suivant – il est sur le couvercle gris ;
- un photo‑transistor de référence HW5P‑1 dont la fiche technique est consultable au lien suivant – il est sur le couvercle noir ;
- un manchon en mousse de polyéthylène permettant d'obturer la circonférence extérieure du capteur du luxmètre non couverte par la boîte opaque.
Tous les composants sont fournis dans une boîte de TP pour chaque binôme. Ils doivent être utilisés avec précaution et remis soigneusement à leur état initial en fin de séance.
Consignes générales
Durant les manipulations, la boîte opaque doit être placée à l'abri du rayonnement solaire ou de toute source de chaleur, qui pourrait sinon avoir un impact significatif sur les mesures.
De plus, durant tout le processus de mesures, les connexions électriques doivent être le moins possible sollicitées mécaniquement pour ne pas modifier la résistance effective des contacts. Cette consigne est particulièrement importante pour le circuit de commande de la led d'éclairage.
Par ailleurs, le raccordement au pont de mesure des capteurs de lumière montés sur les couvercles doivent être opérés avec le plus grand soin, sans forcer, en repérant bien les puits de la platine d'essai dans lesquels les broches qui traversent les couvercles viennent s'insérer. En effet :
- toute erreur d'implantation provoquera inévitablement une défaillance des mesures ;
- une torsion des broches risque d'entraîner leur rupture et nécessiter un changement du composant, ce qui est difficile à accomplir en séance de travaux pratiques.
Travail demandé
Sur le poste de travail, enregistrer au fur et à mesure les fichiers dans un répertoire de TP nommé TP_P3-4, 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.
- Tout écart important des mesures par rapport aux valeurs attendues 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éparation de la carte et du montage
- Sur le poste de travail, dans le répertoire de TP, créer un répertoire de projet nommé
lightSensorStudyet dedans un fichier homonymelightSensorStudy.ino. Ouvrir ce fichier avec l'application Arduino IDE et, dans l'éditeur de code, copier‑coller le programme d'étude photométrique 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). Procéder alors 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…). - Câbler le montage du TP représenté schématiquement supra . Pour une meilleure ergonomie, par rapport à la figure, quelques adaptations sont possibles en termes d'emplacement des composants sur la platine d'essai.
- les liaisons des broches 3V3 et GND de la carte respectivement aux rails « + » et « − » ;
- les liaisons du pont de mesure (au dessus du résistor de 4,7 k) sauf celle partant de la broche D33, pour ne pas gêner l’empiétement du couvercle de la boîte opaque.
- Sachant le courant usuellement consommé par une led, choisir la position du sélecteur sur le multimètre pour effectuer les mesures de courant.
- du bouton‑poussoir « MOINS » relié à la broche D18 de la carte ;
- du bouton‑poussoir « PLUS » relié à la broche D19 de la carte.
- Laisser la boîte opaque ouverte. Vérifier que les deux couvercles peuvent bien être placés horizontalement à leur point de raccordement au pont de mesure, mais ensuite, ne laisser aucun couvercle monté sur la platine d'essai.
- Calibrage de la valeur minimale de commande de la led d'éclairage
- Mettre en service le multimètre et la carte à microcontrôleur, activer le moniteur série. Appuyer sur le bouton EN de la carte et noter le seuil de la valeur retournée par la fonction
analogReadMilliVolts(cf. la ligne nº 84 du programme) lorsque la tension entre les broches D33 et GND est nulle (puisqu'aucun capteur de lumière n'est branché sur le pont de mesure). - À l'étape 0 du programme, vérifier que la led blanche au fond de la boîte est éteinte ou éventuellement très faiblement allumée. (On rappelle en effet que le CNA d'une carte à module ESP32 génère une tension minimale non nulle, environ 0,1 V – cf. le cours, chap. C3‑VII C.)
- Appuyer sur le bouton « PLUS » pour passer à l'étape 1. Ouvrir la boîte et vérifier que la led commence à briller un peu plus qu'à l'étape 0. Si tel n'est pas le cas, augmenter de
10la valeur de la constanteMIN_DAC_VALUEdéclarée dans le programme à la ligne nº 24. Téléverser cette nouvelle version et recommencer la vérification. - Mesures au luxmètre de l'éclairement produit par la led
- Appuyer sur le bouton « MOINS » pour revenir à l'étape 0 du programme. Mettre en service le luxmètre sur le calibre 2000 lux et ôter le capot de son capteur mobile. Comme schématisé sur la figure ci‑contre, placer la boîte ouverte à l'envers sur le dôme translucide, l'ouverture de la boîte couvrant son centre. Abaisser le manchon pour obturer la périphérie du capteur non couverte par la boîte, en appuyant suffisamment pour garantir l'absence de lumière ambiante parasite lors des mesures.
- Appuyer sur le bouton « PLUS » pour traiter les étapes 1 à 10. Pour chacune, relever sur le premier tableau de la feuille de calcul :
- la valeur en mA du courant direct ID traversant la led (cellules
C4àC13) ; - la valeur en lx de l'éclairement E affichée par le luxmètre (cellules
D4àD13). - Mesures d'éclairement avec le photo‑résistor
- Appuyer sur le bouton « MOINS » pour revenir à l'étape 0 du programme.
- Appuyer sur le bouton « PLUS » pour traiter les étapes 1 à 10. Pour chacune, relever sur le deuxième tableau de la feuille de calcul :
- la valeur en mA du courant direct ID traversant la led (cellules
C18àC27) ; - la valeur en mV de la tension UR aux bornes du résistor du pont de mesure (cellules
E18àE27). - Mesures d'éclairement avec le photo‑transistor
- Appuyer sur le bouton « MOINS » pour revenir à l'étape 0 du programme.
- Appuyer sur le bouton « PLUS » pour traiter les étapes 1 à 10. Pour chacune, relever sur le troisième tableau de la feuille de calcul :
- la valeur en mA du courant direct ID traversant la led (cellules
C32àC41) ; - la valeur en mV de la tension UR aux bornes du résistor du pont de mesure (cellules
E32àE41).
/* All devices pin numbers */
const int8_t LED_PIN = 25; // DAC1
const int8_t MINUS_BUTTON_PIN = 18; // push to decrement step
const int8_t PLUS_BUTTON_PIN = 19; // push to increment step
const int8_t LIGHT_SENSOR_BRIDGE_PIN = 33; // 4.7K resistor
void setup()
{
// LED_PIN controlled by DAC so no pinMode call required
pinMode(MINUS_BUTTON_PIN, INPUT);
pinMode(PLUS_BUTTON_PIN, INPUT);
pinMode(LIGHT_SENSOR_BRIDGE_PIN, ANALOG);
Serial.begin(115200);
Serial.println();
Serial.flush();
}
/* light step management constants and variables */
const uint8_t MIN_DAC_VALUE = 180;
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;
/* button logical level variables */
bool previousPlusButtonLevel = HIGH;
bool currentPlusButtonLevel = HIGH;
bool previousMinusButtonLevel = HIGH;
bool currentMinusButtonLevel = HIGH;
/* measures and statistical constant and variables */
const uint32_t MEASURE_PERIOD = 20; // in ms
const int16_t NB_OF_MEASURES_FOR_DISPLAY = 100;
uint32_t previousMeasureMillis = millis();
int16_t bridgeMeasure = 0;
int32_t sumOfMeasures = 0;
int16_t nbOfMeasures = 0;
int16_t measuresMean = 0;
int16_t measuresMin = 0;
int16_t measuresMax = 0;
int16_t measuresDelta = 0;
int16_t measuresThreshold = 0;
bool isThresholdSet = false;
void loop()
{
/* button management */
updateInput(previousPlusButtonLevel, currentPlusButtonLevel, PLUS_BUTTON_PIN);
updateInput(previousMinusButtonLevel, currentMinusButtonLevel, MINUS_BUTTON_PIN);
if (isFallingEdge(previousPlusButtonLevel, currentPlusButtonLevel)) {
step = constrain(step + 1, 0, MAX_STEP_NUMBER);
}
if (isFallingEdge(previousMinusButtonLevel, currentMinusButtonLevel)) {
step = constrain(step - 1, 0, MAX_STEP_NUMBER);
}
/* light step management */
if (step != previousStep) {
previousStep = step;
dacValue = MIN_DAC_VALUE + round((MAX_DAC_VALUE - MIN_DAC_VALUE) * float(step) / MAX_STEP_NUMBER);
dacWrite(LED_PIN, dacValue);
Serial.printf("Step: %2u \t DAC value: %u\n", step, dacValue);
sumOfMeasures = nbOfMeasures = measuresMax = 0;
measuresMin = 10000;
}
/* measure management */
if (millis() - previousMeasureMillis >= MEASURE_PERIOD) {
previousMeasureMillis = millis();
bridgeMeasure = analogReadMilliVolts(LIGHT_SENSOR_BRIDGE_PIN);
// Compensating the offset default of the ADC converter
if (step == 0 && !isThresholdSet) {
if (measuresThreshold == 0) {
Serial.print("Threshold detection... ");
}
if (bridgeMeasure > measuresThreshold) {
measuresThreshold = bridgeMeasure;
}
else {
isThresholdSet = true;
Serial.printf("ADC threshold = %d\n", measuresThreshold);
}
}
if (bridgeMeasure <= measuresThreshold) {
bridgeMeasure = 0;
}
// Statistical parameters computing
if (bridgeMeasure > measuresMax) {
measuresMax = bridgeMeasure;
}
if (bridgeMeasure < measuresMin) {
measuresMin = bridgeMeasure;
}
nbOfMeasures++;
sumOfMeasures += bridgeMeasure;
}
// Periodic display and reset of statistical parameters
if (nbOfMeasures == NB_OF_MEASURES_FOR_DISPLAY) {
measuresMean = round((float) sumOfMeasures / nbOfMeasures);
measuresDelta = measuresMax - measuresMin;
Serial.printf("\t mean: %4d min: %4d max: %4d delta: %4d\n",
measuresMean, measuresMin, measuresMax, measuresDelta);
sumOfMeasures = nbOfMeasures = measuresMax = 0;
measuresMin = 10000;
}
}
void updateInput(bool & previousLevel, bool & currentLevel, int8_t pin)
{
previousLevel = currentLevel;
currentLevel = digitalRead(pin);
}
bool isFallingEdge(bool previousLevel, bool currentLevel)
{
return currentLevel == LOW && previousLevel == HIGH;
}
Step: 0 etc. La led d'éclairage est pilotée en tension continue par une broche de sortie analogie (via un CNA – cf. TP P2‑2 ) de la carte à microcontrôleur – et non pas en modulation de largeur d'impulsion (MLI – cf. TP P2‑3 ).
Pour mémoire, cette technique présente l'inconvénient d'être non proportionnelle, puisqu'il faut dépasser la tension de seuil de la led. Or cette tension peut varier d'un exemplaire à l'autre. Pour le bon déroulement des mesures ultérieures, la valeur minimale MIN_DAC_VALUE de la commande d'écriture analogique dacWrite, préréglée dans le programme à 180 (cf. la ligne nº 24 dans le programme supra ), va donc devoir être ajustée.
10 la valeur de la constante MIN_DAC_VALUE déclarée dans le programme à la ligne nº 24. Téléverser cette nouvelle version et recommencer la vérification. MIN_DAC_VALUE, modifier en conséquence la cellule B3 de la feuille de calcul, où cette valeur est reportée. Les autres valeurs dans la colonne B seront automatiquement modifiées. Les mesures effectuées dans cette partie doivent permettre de quantifier l'éclairement produit par la led lorsqu'elle est parcourue par un courant donné.
Ces mesures sont cruciales car elles seront exploitées dans les parties suivantes pour déterminer la réponse des capteurs à telle ou telle valeur d'éclairement, calculée par interpolation en fonction du courant mesuré dans le circuit de commande de la led.
0 la feuille de calcul. L'éclairement produit par la led est mesuré avec le photo‑résistor via la tension UR aux bornes du résistor du pont de mesure numérisée par le CAN de la carte à microcontrôleur (broche D33), en appelant la fonction analogReadMilliVolts (cf. la question 2.a supra ).
Pour la bonne qualité des mesures, il est nécessaire de procéder rapidement et de relever de façon concomitante le courant direct traversant la led et la valeur de la tension aux bornes de la résistance du pont de mesure. En effet, la led chauffe un peu la boîte opaque (celle‑ci étant étanche et isolée thermiquement par le manchon), ce qui a un impact sur la valeur ohmique du photo‑résistor.