Utilisation de photorésistances avec un microcontrôleur
Texte légal : Points du programme concernés
Classe de 2nde
Mesurer une grandeur physique à l'aide d'un capteur électrique résistif. Produire et utiliser une courbe d'étalonnage reliant la résistance d'un système avec une grandeur d'intérêt (température, pression, intensité lumineuse, etc.). Utiliser un dispositif avec microcontrôleur et capteur.
Objectif
Il s'agit ici d'exploiter les variations de la résistance en fonction de l'intensité lumineuse pour simuler quelques dispositifs automatiques : éclairage automatique, ajustement automatique de la luminosité d'un écran de téléphone, etc...
Comme dans la partie précédente, la photorésistance est montée en pont diviseur de tension afin d'injecter une tension variable dans une entrée analogique de la carte Arduino.
Exemple : Activité élèves - Simuler un dispositif d'ajustement automatique de la luminosité
Cette activité propose de simuler l'adaptation automatique de la luminosité d'un écran de téléphone portable en fonction de l'environnement lumineux extérieur.
Elle est une version modifiée de l'activité proposée dans Le Livre Scolaire de 2nde.
Pour aller plus loin dans les explications, on peut aborder le principe du pont diviseur de tension à travers l'exercice 27 ou 28 de cette page.
On montre dans un premier temps qu'une tension lue sur une entrée analogique de la carte peut être exploitée pour ajuster la luminosité d'une DEL (symbolisant l'écran). On utilise ensuite une photorésistance afin d'automatiser l'ajustement de la luminosité moyennant des ajustements dans le programme.
L'activité est téléchargeable à l'aide des deux liens ci-dessous : en pdf et dans une version éditable au format odt.
Complément : Correction en vidéo de la partie expérimentale et adaptation du programme
Complément : Programme initial à modifier
int pinLed = 3; //Numéro de la sortie numérique alimentant la DEL
int niveau; //Variable réglant la luminosité de la DEL
void setup() {
// put your setup code here, to run once:Serial.begin(9600);
pinMode(pinLed, OUTPUT); //L'E/S est utilisée en SORTIE
}
void loop() {
// put your main code here, to run repeatedly:niveau = map(analogRead(A0), 0, 1024, 0, 255);
/* La sortie alimentant la DEL peut être réglée avec 256 niveaux d'intensité. La lecture du signal en A0 est numérisé avec 1024 niveaux d'intensité. Il faut adapter les deux échelles : La fonction map adapte les deux échelles et stocke la valeur dans la variable niveau */analogWrite(pinLed, niveau); //On commande la sortie numérique avec le niveau correct
Serial.print(analogRead(A0));
Serial.print(" ");
Serial.println(niveau);
}
