Comment fonctionne une photodiode ? Comment l'inclure dans vos projets ?

Introduction

Une photodiode est un composant semi-conducteur ayant la capacité de capter un rayonnement du domaine optique et de le transformer en signal électrique.

Il y a deux autres types de capteur lumineux :

  • la photorésistance qui est une résistance dont la valeur change en fonction de la lumière qu’elle reçoit. 
  • le capteur phototransistor qui joue le même rôle que la photodiode. Néanmoins le phototransistor est plus sensible qu’une photodiode, donc plus précis.

La photodiode peut-être utilisée 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.

Comment fonctionne une photodiode ?

Comme beaucoup de diodes en électronique elle est constituée d’une jonction PN. On peut distinguer trois parties :

  • Une zone de déplétion et de diffusion
  • Région dopée de type N
  • Région dopée de type P.

En absence de polarisation elle crée une tension. Tant dis qu’en polarisation inverse par une alimentation externe, elle crée un courant.

Ces diodes sont conçues pour fonctionner dans des conditions de polarisation inverse, cela signifie que le côté P de la photodiode est associé à la borne négative de la batterie, et le côté N est connecté à la borne positive de la batterie.

Symbole de la photodiode

Le symbole de la photodiode correspond à celui de la diode avec deux flèches vers la diode pour montrer que la lumière entre dans celle-ci.

Vous pouvez retrouvez ces même flèches pour la photorésistance avec une résistance à la place de la diode.

Vous pouvez retrouver le symbole inverse avec une diode et les flèches vers l’extérieur avec la led qui elle émet de la lumière au lieu de la capter.

Les différents types de photodiode

Il existe différents types de photodiode disponibles sur le marché. Elles sont toutes presque semblables, néanmoins quelques différences subsistent que l’on va détailler. Voici les différents types de photodiodes :

A) Photodiode PN

Le premier type de photodiode développé est le type PN. Par rapport aux autres types, ses performances ne sont pas avancées, mais à l’heure actuelle, elle est utilisée dans plusieurs applications. Cette diode est assez petite mais sa sensibilité n’est pas excellente par rapport aux autres.

B) Photodiode PIN

La photodiode PIN est celle qui est le plus utilisée. Cette diode rassemble plus de photons lumineux par rapport à la photodiode PN car la large zone intrinsèque entre les régions P et N permet de collecter plus de lumière.

C) Photodiode d’avalanche

Ce type de diode est utilisé dans les zones à faible éclairage en raison de ses niveaux de gain élevés. Il génère des niveaux de bruit élevés. Cette technologie ne convient donc pas à toutes les applications.

d) Photodiode Schottky

La photodiode Schottky comprend une petite jonction de diode, ce qui signifie qu’il y a une petite capacité de jonction, elle fonctionne donc à des vitesses élevées. Ce type de photodiode est fréquemment utilisé dans les systèmes de communication optique à large bande passante tels que les liaisons à fibres optiques.

Lire la valeur de la photodiode

On va maintenant voir les différents moyens d’obtenir la valeur d’une photodiode. On va d’abord voir comment mesurer la tension aux bornes de la photodiode du voltmètre. La deuxième méthode sera d’utiliser la carte Arduino avec les bornes analogiques et le moniteur série.

a) Le voltmètre

En branchant le voltmètre en parallèle, vous pouvez mesurer la tension de la photodiode en la mettant sous la lumière :

b) Le moniteur série

On peut aussi mesurer la tension donnée par la photodiode grâce à l’analogRead de la carte Arduino.

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

int photodiode = A0;// Lq broche de la photodiode
int Valeur_photodiode = 0; // La valeur de la photodiode

void setup() {
  Serial.begin(9600); // On initialise le moniteur série
  pinMode(photodiode, INPUT); // On initialise la photodiode comme une entrée pour récupérere les valeurs de celle-ci
}
 
void loop() {
   Valeur_photodiode = analogRead(photodiode); // On récupère la mesure de la photodiode
   // On affiche la valeur sur le moniteur série
   Serial.print("La valeur de la tension est :");
   Serial.print(abs(Valeur_photodiode));
   Serial.println(" mv");
   delay(300);// pause entre chaque mesure
}

Allumer led en fonction de la luminosité

On va maintenant voir comment allumer une led en fonction de l’obscurité dans une pièce. Plus la pièce s’assombrit et plus la led va s’allumer et quand le jour revient elle sera complètement éteinte.

int photodiode = A0;// La broche de la photodiode
int Valeur_photodiode = 0; // La valeur de la photodiode
int broche_led=9; // La broche de la led

void setup(void) {
   pinMode(photodiode, INPUT); // On initialise la photodiode comme une entrée pour récupérere les valeurs de celle-ci
   pinMode(broche_led, OUTPUT); // On initialise la led en sortie pour la contrôler
}
 
void loop(void) {
   Valeur_photodiode = analogRead(photodiode); // On récupère la mesure de la photodiode
   Valeur_photodiode = map(Valeur_photodiode, -77,0,0,5); // On convertit cette valeur entre 0V et 5V pour correspondre à la led
   digitalWrite(broche_led,Valeur_photodiode); // On assigne la valeur à la led
}

Suiveur solaire

On va maintenant voir comment modifier la position d’un servomoteur en fonction de la luminosité de la photodiode. Cela peut vous servir pour modifier la position d’un panneau solaire en fonction du soleil par exemple.

#include <Servo.h> // Librairie du servomoteur
int photodiode = A0;// Lq broche de la photodiode
int Valeur_photodiode = 0; // La valeur de la photodiode
Servo Servomoteur; // Le servomoteur

void setup() {
  pinMode(photodiode, INPUT); // On initialise la photodiode comme une entrée pour récupérere les valeurs de celle-ci
  Servomoteur.attach(9); // On initalise le servomoteur sur la borne 9.
}
 
void loop() {
   Valeur_photodiode = analogRead(photodiode); // On récupère la mesure de la photodiode
   Valeur_photodiode = map(Valeur_photodiode, 0,-77,0,180); // On convertit cette valeur entre 0V et 5V pour correspondre à la led
   Servomoteur.write(Valeur_photodiode); // On assigne la valeur au servomoteur
   delay(300);// pause entre chaque mesure
}