Utilisation de photorésistances avec un microcontrôleur

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.

ExempleActivité é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.

Simulation d'un dispositif d'ajustement automatique de la luminosité à l'aide d'une photorésistanceInformations[1]

ComplémentCorrection en vidéo de la partie expérimentale et adaptation du programme

Adaptation automatique de luminosité avec une carte ArduinoInformations[2]

ComplémentProgramme initial à modifier

1
int pinLed = 3;  //Numéro de la sortie numérique alimentant la DEL
2
int niveau;      //Variable réglant la luminosité de la DEL
3
void setup() {
4
  // put your setup code here, to run once:
5
  Serial.begin(9600);
6
  pinMode(pinLed, OUTPUT);  //L'E/S est utilisée en SORTIE
7
}
8
9
void loop() {
10
  // put your main code here, to run repeatedly:
11
  niveau = map(analogRead(A0), 0, 1024, 0, 255);
12
  
13
  /*
14
  La sortie alimentant la DEL peut être réglée avec 256 niveaux d'intensité.
15
  La lecture du signal en A0 est numérisé avec 1024 niveaux d'intensité.
16
  Il faut adapter les deux échelles : La fonction map adapte les deux échelles et stocke
17
  la valeur dans la variable niveau
18
  */
19
  
20
  analogWrite(pinLed, niveau);  //On commande la sortie numérique avec le niveau correct
21
  
22
  Serial.print(analogRead(A0));
23
  Serial.print("       ");
24
  Serial.println(niveau);
25
}