Introduction

Une photorésistance est un composant électronique permettant de mesurer une intensité lumineuse. c’est une résistance dont la valeur change en fonction de la lumière qu’elle reçoit.

La photorésistance peut-être utilisé pour des projets utilisant la lumière, comme par exemple un détecteur d’obscurité qui allumerait une led à partir d’un certain seuil d’obscurité, ou bien un suiveur de soleil pour les panneaux solaire.

Il existe d’autre capteurs qui permettent de capter de la lumière et de le restituer sous forme de signaux électriques. Vous avez notamment la photodiode et le phototransistor.

Comment cela fonctionne ?

Elle fonctionne avec une résistance : plus elle est éclairé, plus sa résistivité baisse. Cette résistance prend une valeur de 50 kΩ en obscurité et varie jusqu’à 500 Ω en pleine lumière. Pour convertir cette variation de valeur en variation de courant, il faut bien entendu alimenter la résistance.

La photorésistance utilise les broches analogique de la carte arduino. Cela veut dire que l’intensité lumineuse va être transformé en une tension qui sera lu par notre programme.

L' unité de mesure utilisée par la photorésistance

L’unité de mesure de la lumière est le lux. Voici plusieurs exemple de mesure pour que vous ayez une idée :

  • Nuit de plein lune : 0,5 lux
  • Appartement bien éclairé :  [ 200- 400] lux
  • Extérieur par ciel ouvert : [500 à 25000] lux
  • Extérieur en plein soleil [50 000 -100 000] lux

Symbole électrique de la photorésistance

Dans les circuits électroniques, vous verrez le symbole ci-contre pour représenter la photorésistance.

Comment choisir le bon modèle ?

Il est parfois difficile de choisir quelle photorésistance vous avez besoin pour votre projet. Les photorésistances ont toute les mêmes caractéristiques extérieur, ce qui va changer c’est la valeur de la résistance interne et les caractéristiques techniques que l’on peut voir dans le tableau ci dessous : 

ModèleVoltage maximumPuissance MaximumTempérature
GL551615090[-30°;70°]
GL5528150100[-30°;70°]
GL5537-1150 100 [-30°;70°]
GL5537-2150 100 [-30°;70°]
GL5539 150 100 [-30°;70°]
GL5549 150 100 [-30°;70°]

On voit que les valeurs sont largement suffisante pour faire des projets sur arduino, c’est pour cela que la plupart des photorésistances sont vendus dans le même paquet même si elles ont des références différentes.

Néanmoins il y a d’autre manière de choisir sa photorésistance, c’est la différence entre les résistance lumineuse.

Résistance lumineuse

(kilo-ohms)

Résistance

Obscurité

(Méga-Ohms)

Temps de Réponse

entrante

Temps de réponse sortante
5-100.53030
10-2012030
20-3022030
30-5032030
50-10052030
100-200102030

Comment on peut voir sur le tableau, selon le projet que vous allez faire vous allez avoir besoin d’une plus grande précision dans l’obscurité ou bien une résistance plus importante qui va couvrir une plus grande tranche lumineuse, c’est ce qui peut vous faire choisir les différentes résistances. Vous retrouverez ces valeurs sur la fiche technique de la photorésistance que vous avez choisit.

Afficher valeur photorésistance sur le moniteur série

On va maintenant voir comment afficher la valeur de la tension relevée par la photorésistance. On l’affichera sur le moniteur série.

int valeur_photoresistance;
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  valeur_photoresistance = analogRead(A0);   // La photorésistance est branché sur la borne analogique A0
  Serial.println("Voici la valeur de la photoresistance :"); 
  Serial.println(valeur_photoresistance); 
  delay(100);
}

Voici le résultat sur le moniteur série :

Détecteur d'obscurité

On va maintenant voir comment faire un détecteur d’obscurité. Pour cela on va utiliser une photorésistance, et à partir d’un certain seuil d’obscurité que l’on va déterminer, la carte arduino va allumer une led.

Voici le schéma du circuit :

Pour ce projet on a choisit une valeur de détection d’obscurité de 15, ce qui peut être changé en fonction de quand vous voulez que votre led s’allume :

const int led = 8;      
 
void setup() {
  pinMode(led, OUTPUT);
  Serial.begin(9600);
}
 
void loop() {
  int value_photoresistance = analogRead(A0);   // La photorésistance est branché sur la borne analogique A0
  if(value_photoresistance < 15) {            // Si la valeur mesurée < 15 (Pas de lumière)
    Serial.println("-------------");
    digitalWrite(led, HIGH); // On allume la led
    Serial.println("Il fait nuit, on allume la LED !");
    delay(2000);                
  }
  else { 
    Serial.println("-------------");
    Serial.println("Il fait jour, on eteint la LED !");
    digitalWrite(led, LOW);   // On éteint la led
    delay(2000);                
  }    
}

Suiveur solaire

On va maintenant voir comment faire un suiveur solaire. Ce projet peut vous être vraiment utile si vous voulez faire des panneaux solaire qui bouge en fonction du soleil par exemple :

Ici on a fait en sorte que le servomoteur se déplace si la valeur de la lumière est inférieur à “40”, néanmoins cette valeur peut être changé à votre convenance :

#include <Servo.h> // Librairie pour le servomoteur
Servo monServomoteur; // Déclaration du servomoteur
int pos = 0; // Position initiale du servomoteur
     
 
void setup() {
  monServomoteur.attach(9); // Le servomoteur est branché sur la borne A0.
}
 
void loop() {
  int value_photoresistance = analogRead(A0);   // La photorésistance est branché sur la borne analogique A0
  pos = map(value_photoresistance, 1,310,0,180); // On fait un produit en croix avec la valeur de la photorésistance
  monServomoteur.write(pos); // On actualise la position du servomoteur
}